CDiandanPageUI.cpp 106 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106
  1. #include "../pch/pch.h"
  2. #include "CDiandanPageUI.h"
  3. #include "../control/ControlEx.h"
  4. #include "../tool/CSqlite3.h"
  5. #include "../wnd/CDiandanNatureWnd.h"
  6. #include "../wnd/CMemoWnd.h"
  7. #include "../wnd/CYouhuiShowWnd.h"
  8. #include "../wnd/CMemberLoginWnd.h"
  9. #include "../wnd/CSaomaYouhuiquanWnd.h"
  10. #include "../wnd/CSaomaShangpinquanWnd.h"
  11. #include "../wnd/CSaomaCikaWnd.h"
  12. #include "../wnd/CSaomaQuanyikaWnd.h"
  13. #include "../wnd/CCanpaiWnd.h"
  14. #include "../wnd/CWeixinzhifuShoukuanWnd.h"
  15. #include "../wnd/CHuiyuanShoukuanWnd.h"
  16. #include "../wnd/CXianjinShoukuanWnd.h"
  17. #include "../wnd/CFulikaShoukuanWnd.h"
  18. #include "../wnd/CZidingyiShoukuanWnd.h"
  19. #include "../wnd/CChengzhongWnd.h"
  20. #include "../wnd/CGuadanWnd.h"
  21. #include "../wnd/CNumInputWnd.h"
  22. #include "../wnd/CHuiyuanInfoShowWnd.h"
  23. #include "../print/CPosPrinter.h"
  24. #include "../tool/CShuangpingTool.h"
  25. #include "../worker/CChengzhongWorker.h"
  26. #include "../worker/CDiandanAIShibieWorker.h"
  27. CDiandanPageUI::CDiandanPageUI()
  28. {
  29. }
  30. CDiandanPageUI::~CDiandanPageUI()
  31. {
  32. }
  33. void CDiandanPageUI::InitControl()
  34. {
  35. }
  36. //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
  37. void CDiandanPageUI::InitShow()
  38. {
  39. //先初始化商品分类
  40. this->InitFoodtypeShow();
  41. //再初始化商品显示
  42. this->InitFoodShow();
  43. //初始化结算页面相关的展示,把所有活动清零
  44. this->InitJiesuanShow();
  45. //计算所有活动优惠,并且调整所有与价格相关的展示
  46. this->UpdateJiesuanInfo();
  47. //展示选购页面
  48. this->ShowXuangouPage();
  49. if (m_is_zidingyizhifu_init == false)
  50. {
  51. //初始化结算页面的支付方式
  52. this->InitJiesuanZhifu();
  53. m_is_zidingyizhifu_init = true;
  54. }
  55. CHorizontalLayoutUI* chegnzhongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_page_chengzhong_layout")));
  56. if (CSetting::GetInstance()->GetParam("setting_dianzicheng_is_lianjie") == "0")
  57. {
  58. chegnzhongLayout->SetVisible(false);
  59. m_is_dianzicheng_lianjie = false;
  60. }
  61. else
  62. {
  63. chegnzhongLayout->SetVisible(true);
  64. m_is_dianzicheng_lianjie = true;
  65. //刷新一下重量显示
  66. this->HandleChengzhongValueChange();
  67. }
  68. }
  69. void CDiandanPageUI::RefreshShow()
  70. {
  71. //清空当前订单的信息
  72. m_cur_diandan_order.RefreshDiandanInfo();
  73. //初始化商品显示(因为这里要刷新商品库存状态)
  74. this->InitFoodShow();
  75. //初始化结算页面相关的展示,把所有活动清零
  76. this->InitJiesuanShow();
  77. //渲染左侧购物车(包含了调用UpdateJiesuanInfo重新计算价格)
  78. this->UpdateShopcartShow();
  79. //展示选购页面
  80. this->ShowXuangouPage();
  81. }
  82. void CDiandanPageUI::InitFoodtypeShow()
  83. {
  84. //初始化商品渲染相关的信息
  85. m_foodtypeLayout = static_cast<CContainerUI*>(this->FindSubControl(_T("diandan_fenlei_layout")));
  86. m_foodtypeLayout->RemoveAll();
  87. std::string is_ai_shibie = CSetting::GetInstance()->GetParam("setting_is_ai_recognition_open");
  88. if (is_ai_shibie == "1")
  89. {
  90. m_is_ai_shibie = true;
  91. }
  92. else
  93. {
  94. m_is_ai_shibie = false;
  95. }
  96. CSqlite3 sqlite;
  97. m_nFoodpackageNum = sqlite.GetFoodpackageNum();
  98. m_types = sqlite.GetFoodtypes(); //只包含收银机显示的分类
  99. if (m_is_ai_shibie == true)
  100. {
  101. m_cur_type_id = "ai";
  102. }
  103. else if (m_nFoodpackageNum > 0)
  104. {
  105. //默认选中的分类是商品套餐
  106. m_cur_type_id = "taocan";
  107. }
  108. else
  109. {
  110. //没有套餐,默认选中第一个商品分类
  111. if (m_types.size() > 0)
  112. {
  113. m_cur_type_id = m_types[0].id;
  114. }
  115. }
  116. m_curFoodtypeOption = NULL;
  117. if (is_ai_shibie == "1")
  118. {
  119. CDialogBuilder builder;
  120. CDialogBuilderCallbackEx cb;
  121. CFoodtypeOptionUI * pItem = static_cast<CFoodtypeOptionUI *>(builder.Create(_T("foodtype_option.xml"), (UINT)0, &cb, m_pManager));
  122. pItem->SetName(L"AI识别结果");
  123. pItem->SetTypeId("ai");
  124. pItem->SetGroup(L"diandan_foodtype");
  125. m_foodtypeLayout->Add(pItem);
  126. if (m_cur_type_id == "ai")
  127. {
  128. m_curFoodtypeOption = pItem;
  129. }
  130. }
  131. //先判断有没有套餐分类
  132. if (m_nFoodpackageNum > 0)
  133. {
  134. CDialogBuilder builder;
  135. CDialogBuilderCallbackEx cb;
  136. CFoodtypeOptionUI* pItem = static_cast<CFoodtypeOptionUI*>(builder.Create(_T("foodtype_option.xml"), (UINT)0, &cb, m_pManager));
  137. pItem->SetName(L"商品套餐");
  138. pItem->SetTypeId("taocan");
  139. pItem->SetTaocan();
  140. pItem->SetGroup(L"diandan_foodtype");
  141. m_foodtypeLayout->Add(pItem);
  142. if (m_cur_type_id == "taocan")
  143. {
  144. m_curFoodtypeOption = pItem;
  145. }
  146. }
  147. //接下来开始处理商品分类
  148. for (std::vector<CFoodType>::iterator it = m_types.begin(); it != m_types.end(); it++)
  149. {
  150. CFoodType type = *it;
  151. CDialogBuilder builder;
  152. CDialogBuilderCallbackEx cb;
  153. CFoodtypeOptionUI* pItem = static_cast<CFoodtypeOptionUI*>(builder.Create(_T("foodtype_option.xml"), (UINT)0, &cb, m_pManager));
  154. pItem->SetName(CLewaimaiString::UTF8ToUnicode(type.name));
  155. pItem->SetTypeId(type.id);
  156. pItem->SetGroup(L"diandan_foodtype");
  157. m_foodtypeLayout->Add(pItem);
  158. if (m_cur_type_id == type.id)
  159. {
  160. m_curFoodtypeOption = pItem;
  161. }
  162. }
  163. if (m_curFoodtypeOption != NULL)
  164. {
  165. m_curFoodtypeOption->Selected(true, true);
  166. }
  167. UpdateFoodtypePos();
  168. }
  169. void CDiandanPageUI::UpdateFoodtypePos()
  170. {
  171. int nFoodtypeNum = m_types.size();
  172. if (m_is_ai_shibie == true)
  173. {
  174. nFoodtypeNum++;
  175. }
  176. if (m_nFoodpackageNum > 0)
  177. {
  178. nFoodtypeNum++;
  179. }
  180. //添加支付方式
  181. int nWidth = m_nPageWidth;
  182. if (nWidth == 0)
  183. {
  184. return;
  185. }
  186. //根据宽度计算每行显示的数量
  187. int nMeihangNum = (nWidth - 491) / 140;
  188. int num = 0;
  189. CContainerUI* pFenleiLayout = static_cast<CContainerUI*>(this->FindSubControl(_T("diandan_fenlei_layout")));
  190. for (int i = 0; i < nFoodtypeNum; i++)
  191. {
  192. CFoodtypeOptionUI* curItem = static_cast<CFoodtypeOptionUI*>(pFenleiLayout->GetItemAt(i));
  193. int curRow = num / nMeihangNum + 1;
  194. int curCol = num % nMeihangNum + 1;
  195. RECT rect;
  196. rect.left = (curCol - 1) * 140 + 10;
  197. rect.right = rect.left + 130;
  198. rect.top = (curRow - 1) * 52 + 10;
  199. rect.bottom = rect.top + 42;
  200. // 强制设置固定大小和位置
  201. SIZE size;
  202. size.cx = rect.left;
  203. size.cy = rect.top;
  204. curItem->SetFixedXY(size);
  205. curItem->SetFixedWidth(rect.right - rect.left);
  206. curItem->SetFixedHeight(rect.bottom - rect.top);
  207. num++;
  208. }
  209. //调整区域高度
  210. int lastRow = (num - 1) / nMeihangNum + 1;
  211. pFenleiLayout->SetFixedHeight(lastRow * 52 + 10);
  212. //处理滚动条问题
  213. CVerticalLayoutUI* pFenleiScrollLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_fenlei_layout_scrolllayout")));
  214. if (lastRow > 2)
  215. {
  216. lastRow = 2;
  217. }
  218. pFenleiScrollLayout->SetFixedHeight(lastRow * 52 + 10);
  219. SIZE size;
  220. size.cx = 0;
  221. size.cy = 0;
  222. pFenleiScrollLayout->SetScrollPos(size);
  223. }
  224. void CDiandanPageUI::InitFoodShow()
  225. {
  226. std::string setting_xianshi_is_youtu = CSetting::GetInstance()->GetParam("setting_xianshi_is_youtu");
  227. m_foodLayout = static_cast<CTileLayoutUI*>(this->FindSubControl(_T("diandan_foodlist")));
  228. m_foodLayout->RemoveAll();
  229. std::wstring xml_name;
  230. if (setting_xianshi_is_youtu == "1")
  231. {
  232. SIZE itemsize;
  233. itemsize.cx = 130;
  234. itemsize.cy = 200;
  235. m_foodLayout->SetItemSize(itemsize);
  236. xml_name = _T("diandan_fooditem_youtu.xml");
  237. }
  238. else if (setting_xianshi_is_youtu == "2")
  239. {
  240. SIZE itemsize;
  241. itemsize.cx = 230;
  242. itemsize.cy = 90;
  243. m_foodLayout->SetItemSize(itemsize);
  244. xml_name = _T("diandan_fooditem_youtu_2.xml");
  245. }
  246. else if (setting_xianshi_is_youtu == "3")
  247. {
  248. SIZE itemsize;
  249. itemsize.cx = 140;
  250. itemsize.cy = 120;
  251. m_foodLayout->SetItemSize(itemsize);
  252. xml_name = _T("diandan_fooditem_youtu_3.xml");
  253. }
  254. else
  255. {
  256. SIZE itemsize;
  257. itemsize.cx = 140;
  258. itemsize.cy = 100;
  259. m_foodLayout->SetItemSize(itemsize);
  260. xml_name = _T("diandan_fooditem_wutu.xml");
  261. }
  262. //如果当前一个分类都没有,那么就不处理了
  263. if (m_cur_type_id == "")
  264. {
  265. return;
  266. }
  267. else if (m_cur_type_id == "ai")
  268. {
  269. //把AI识别的结果展示出来
  270. std::string ai_name = CDiandanAIShibieWorker::GetInstance()->GetShibieFoodname();
  271. if (ai_name == "Unknown" || ai_name == "")
  272. {
  273. return;
  274. }
  275. CSqlite3 sqlite;
  276. std::vector<CFood> foodlist = sqlite.GetFoodByFoodname(ai_name);
  277. for (std::vector<CFood>::iterator it = foodlist.begin(); it != foodlist.end(); it++)
  278. {
  279. CFood food = *it;
  280. CDialogBuilder builder;
  281. CDialogBuilderCallbackEx cb;
  282. CDiandanFoodItemUI * pItem = static_cast<CDiandanFoodItemUI *>(builder.Create(xml_name.c_str(), (UINT)0, &cb, m_pManager));
  283. pItem->SetYoutuModel(setting_xianshi_is_youtu);
  284. pItem->SetFoodInfo(food);
  285. pItem->UpdateShow();
  286. m_foodLayout->Add(pItem);
  287. }
  288. }
  289. else if (m_cur_type_id == "taocan")
  290. {
  291. //选择的是套餐分类
  292. CSqlite3 sqlite;
  293. std::vector<CFoodpackage> foodlist = sqlite.GetFoodpackages(true);
  294. for (std::vector<CFoodpackage>::iterator it = foodlist.begin(); it != foodlist.end(); it++)
  295. {
  296. CFoodpackage food = *it;
  297. CDialogBuilder builder;
  298. CDialogBuilderCallbackEx cb;
  299. CDiandanFoodItemUI* pItem = static_cast<CDiandanFoodItemUI*>(builder.Create(xml_name.c_str(), (UINT)0, &cb, m_pManager));
  300. pItem->SetYoutuModel(setting_xianshi_is_youtu);
  301. pItem->SetFoodpackageInfo(food);
  302. pItem->UpdateShow();
  303. m_foodLayout->Add(pItem);
  304. }
  305. }
  306. else if (m_cur_type_id == "sousuo")
  307. {
  308. if (CLewaimaiString::is_only_number(m_sousuo_foodname))
  309. {
  310. //说明是纯数字,按商品条码来搜索
  311. CSqlite3 sqlite;
  312. CFood food;
  313. bool ret = sqlite.GetFoodByBarcode(m_sousuo_foodname, food);
  314. if (ret)
  315. {
  316. CDialogBuilder builder;
  317. CDialogBuilderCallbackEx cb;
  318. CDiandanFoodItemUI* pItem = static_cast<CDiandanFoodItemUI*>(builder.Create(xml_name.c_str(), (UINT)0, &cb, m_pManager));
  319. pItem->SetYoutuModel(setting_xianshi_is_youtu);
  320. pItem->SetFoodInfo(food);
  321. pItem->UpdateShow();
  322. m_foodLayout->Add(pItem);
  323. }
  324. }
  325. else
  326. {
  327. //当商品名字来搜索
  328. CSqlite3 sqlite;
  329. std::vector<CFood> foodlist = sqlite.GetFoodByFoodname(m_sousuo_foodname);
  330. for (std::vector<CFood>::iterator it = foodlist.begin(); it != foodlist.end(); it++)
  331. {
  332. CFood food = *it;
  333. CDialogBuilder builder;
  334. CDialogBuilderCallbackEx cb;
  335. CDiandanFoodItemUI* pItem = static_cast<CDiandanFoodItemUI*>(builder.Create(xml_name.c_str(), (UINT)0, &cb, m_pManager));
  336. pItem->SetYoutuModel(setting_xianshi_is_youtu);
  337. pItem->SetFoodInfo(food);
  338. pItem->UpdateShow();
  339. m_foodLayout->Add(pItem);
  340. }
  341. }
  342. }
  343. else
  344. {
  345. //选择的是普通商品分类
  346. CSqlite3 sqlite;
  347. std::vector<CFood> foodlist = sqlite.GetFoodByTypeid(m_cur_type_id);
  348. for (std::vector<CFood>::iterator it = foodlist.begin(); it != foodlist.end(); it++)
  349. {
  350. CFood food = *it;
  351. CDialogBuilder builder;
  352. CDialogBuilderCallbackEx cb;
  353. CDiandanFoodItemUI* pItem = static_cast<CDiandanFoodItemUI*>(builder.Create(xml_name.c_str(), (UINT)0, &cb, m_pManager));
  354. pItem->SetYoutuModel(setting_xianshi_is_youtu);
  355. pItem->SetFoodInfo(food);
  356. pItem->UpdateShow();
  357. m_foodLayout->Add(pItem);
  358. }
  359. }
  360. }
  361. //仅仅初始化结算相关的显示(比如折扣、优惠、价格等)
  362. void CDiandanPageUI::InitJiesuanShow()
  363. {
  364. //先清空会员登录状态
  365. this->ClickMemberLogout();
  366. m_is_member_zhekou = false;
  367. m_member_zhekou_value = 10;
  368. //再重新设置牌号
  369. m_canpai = "";
  370. CButtonUI* pCanpaiEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_canpaihao")));
  371. pCanpaiEdit->SetText(L"输入餐牌号");
  372. //整单备注
  373. CLabelUI* pLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_label_zhengdanbeizhu")));
  374. pLabel->SetText(L"整单备注:");
  375. //再初始化取单数量
  376. RefreshGuadanNum();
  377. //先初始化折扣值
  378. CEditUI* pZhekouEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_zhekou_value")));
  379. pZhekouEdit->SetText(L"100");
  380. //再初始化加价
  381. m_jiajia = 0;
  382. CEditUI* pJiajiaEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_jiajia_value")));
  383. pJiajiaEdit->SetText(L"0");
  384. //初始化优惠
  385. m_rengong_youhui = 0;
  386. CEditUI* pYouhuiEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_youhui_value")));
  387. pYouhuiEdit->SetText(L"0");
  388. //优惠券
  389. m_is_youhuiquan = false;
  390. CLabelUI* pYouhuiquanEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_youhuiquan_status")));
  391. pYouhuiquanEdit->SetText(L"未使用");
  392. CButtonUI* pYouhuiquanCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_youhuiquan_btn_cancel")));
  393. pYouhuiquanCancel->SetVisible(false);
  394. //商品券
  395. m_is_shangpinquan = false;
  396. CLabelUI* pShangpinEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_shangpinquan_status")));
  397. pShangpinEdit->SetText(L"未使用");
  398. CButtonUI* pShangpinquanCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_shangpinquan_btn_cancel")));
  399. pShangpinquanCancel->SetVisible(false);
  400. //次卡
  401. m_is_cika = false;
  402. CLabelUI* pCikaEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_cika_status")));
  403. pCikaEdit->SetText(L"未使用");
  404. CButtonUI* pCikaCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_cika_btn_cancel")));
  405. pCikaCancel->SetVisible(false);
  406. //权益卡
  407. m_is_quanyika = false;
  408. CLabelUI* pQuanyikaEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_quanyika_status")));
  409. pQuanyikaEdit->SetText(L"未使用");
  410. CButtonUI* pQuanyikaCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_quanyika_btn_cancel")));
  411. pQuanyikaCancel->SetVisible(false);
  412. //抹零
  413. std::string diandan_moling_type = CSetting::GetInstance()->GetParam("diandan_moling_type");
  414. m_moling_type = atoi(diandan_moling_type.c_str());
  415. if (m_moling_type == 0)
  416. {
  417. CCheckBoxUI* pMolingCheck = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("diandan_jiesuan_moling_bumoling")));
  418. pMolingCheck->Selected(true, false);
  419. }
  420. else if (m_moling_type == 1)
  421. {
  422. CCheckBoxUI* pMolingCheck = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("diandan_jiesuan_moling_molingdaojiao")));
  423. pMolingCheck->Selected(true, false);
  424. }
  425. else if (m_moling_type == 2)
  426. {
  427. CCheckBoxUI* pMolingCheck = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("diandan_jiesuan_moling_molingdaoyuan")));
  428. pMolingCheck->Selected(true, false);
  429. }
  430. }
  431. void CDiandanPageUI::InitJiesuanZhifu()
  432. {
  433. CHorizontalLayoutUI* pZhifufangshiLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_layout")));
  434. int num = 0;
  435. CHorizontalLayoutUI* pWeixinLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_weixinzhifu")));
  436. if (CShopinfo::GetInstance()->m_is_online_pay_open == "1")
  437. {
  438. //展示微信支付,并且调整位置
  439. pWeixinLayout->SetVisible(true);
  440. num++;
  441. }
  442. else
  443. {
  444. pZhifufangshiLayout->RemoveAt(num);
  445. }
  446. //会员支付
  447. CHorizontalLayoutUI* pHuiyuanLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_huiyuan")));
  448. if (CShopinfo::GetInstance()->m_is_vip_pay_open == "1")
  449. {
  450. pHuiyuanLayout->SetVisible(true);
  451. num++;
  452. }
  453. else
  454. {
  455. pZhifufangshiLayout->RemoveAt(num);
  456. }
  457. //现金支付
  458. CHorizontalLayoutUI* pXianjinLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_xianjin")));
  459. if (CShopinfo::GetInstance()->m_is_cash_pay_open == "1")
  460. {
  461. pXianjinLayout->SetVisible(true);
  462. num++;
  463. }
  464. else
  465. {
  466. pZhifufangshiLayout->RemoveAt(num);
  467. }
  468. /*
  469. //购物卡
  470. CHorizontalLayoutUI* pGouwukaLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_gouwuka")));
  471. if (CShopinfo::GetInstance()->m_is_giftcard_pay_open == "1")
  472. {
  473. pGouwukaLayout->SetVisible(true);
  474. num++;
  475. }
  476. else
  477. {
  478. pGouwukaLayout->SetVisible(false);
  479. }
  480. //美食城临时卡
  481. CHorizontalLayoutUI* pMeishichengLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_meishicheng")));
  482. if (CShopinfo::GetInstance()->m_is_food_town_card_pay_open == "1")
  483. {
  484. pMeishichengLayout->SetVisible(true);
  485. num++;
  486. }
  487. else
  488. {
  489. pMeishichengLayout->SetVisible(false);
  490. }
  491. */
  492. //福利卡
  493. CHorizontalLayoutUI* pFulikaLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_fulika")));
  494. if (CShopinfo::GetInstance()->m_is_open_fulika_pay == "1")
  495. {
  496. pFulikaLayout->SetVisible(true);
  497. num++;
  498. }
  499. else
  500. {
  501. pZhifufangshiLayout->RemoveAt(num);
  502. }
  503. //接着添加自定义支付的
  504. for (std::vector<SelfPay>::iterator it = CShopinfo::GetInstance()->m_self_pay.begin(); it != CShopinfo::GetInstance()->m_self_pay.end(); it++)
  505. {
  506. SelfPay selfpay = *it;
  507. if (selfpay.is_open == "1")
  508. {
  509. CButtonUI* newButton = new CButtonUI();
  510. newButton->SetFixedWidth(120);
  511. newButton->SetFixedHeight(80);
  512. newButton->SetText(CLewaimaiString::UTF8ToUnicode(selfpay.name).c_str());
  513. newButton->SetBorderSize(1);
  514. newButton->SetBorderColor(0xFFC1C1C1);
  515. newButton->SetBkColor(0xFFF7F7F7);
  516. //设置定义属性,在点击按钮的时候好区分
  517. newButton->SetAttribute(L"name", L"diandan_jiesuan_zhifufangshi_zidingyi_btn");
  518. newButton->AddCustomAttribute(L"selfpay_id", CLewaimaiString::UTF8ToUnicode(selfpay.id).c_str());
  519. newButton->SetAttribute(L"float", L"true");
  520. //必须先Add,才能调用下面的SetPos,否则无效
  521. pZhifufangshiLayout->Add(newButton);
  522. num++;
  523. }
  524. }
  525. m_nZhiufuNum = num;
  526. }
  527. void CDiandanPageUI::UpdateJiesuanZhifuPos()
  528. {
  529. //添加支付方式
  530. int nWidth = m_nPageWidth;
  531. if (nWidth == 0)
  532. {
  533. return;
  534. }
  535. int nZhangdanWidth;
  536. if (m_is_yincangyouhui == true)
  537. {
  538. nZhangdanWidth = nWidth - 491 - 5;
  539. }
  540. else
  541. {
  542. nZhangdanWidth = nWidth - 491 - 331 - 5;
  543. }
  544. if (nZhangdanWidth < 300)
  545. {
  546. nZhangdanWidth = 300;
  547. }
  548. CVerticalLayoutUI* pZhangdanLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(L"diandan_page_jiesuan_zhangdan_layout"));
  549. pZhangdanLayout->SetFixedWidth(nZhangdanWidth);
  550. //根据宽度计算每行显示的数量
  551. int nMeihangNum = (nZhangdanWidth) / 144;
  552. if (nMeihangNum < 1)
  553. {
  554. nMeihangNum = 1;
  555. }
  556. int num = 0;
  557. CHorizontalLayoutUI* pZhifufangshiLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_layout")));
  558. for (int i = 0; i < m_nZhiufuNum; i++)
  559. {
  560. CButtonUI* curItem = static_cast<CButtonUI*>(pZhifufangshiLayout->GetItemAt(i));
  561. int curRow = num / nMeihangNum + 1;
  562. int curCol = num % nMeihangNum + 1;
  563. RECT rect;
  564. rect.left = (curCol - 1) * 140 + 20;
  565. rect.right = rect.left + 120;
  566. rect.top = (curRow - 1) * 100 + 20;
  567. rect.bottom = rect.top + 80;
  568. // 强制设置固定大小和位置
  569. SIZE size;
  570. size.cx = rect.left;
  571. size.cy = rect.top;
  572. curItem->SetFixedXY(size);
  573. curItem->SetFixedWidth(rect.right - rect.left);
  574. curItem->SetFixedHeight(rect.bottom - rect.top);
  575. num++;
  576. }
  577. //调整区域高度
  578. int lastRow = (num - 1) / nMeihangNum + 1;
  579. pZhifufangshiLayout->SetFixedHeight(lastRow * 105);
  580. }
  581. //展示结算页面,隐藏选购页面
  582. void CDiandanPageUI::ShowJiesuanPage()
  583. {
  584. //先隐藏商品页面
  585. CVerticalLayoutUI* pFoodLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_food_layout")));
  586. pFoodLayout->SetVisible(false);
  587. //隐藏结算按钮
  588. CHorizontalLayoutUI* pPayLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_pay_layout")));
  589. pPayLayout->SetVisible(false);
  590. //再展示结算页面
  591. CHorizontalLayoutUI* pJiesuanLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_layout")));
  592. pJiesuanLayout->SetVisible(true);
  593. //展示继续加菜的按钮
  594. CButtonUI* pJiacaiBtn = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_jixujiacai")));
  595. pJiacaiBtn->SetVisible(true);
  596. //更新结算按钮位置
  597. UpdateJiesuanZhifuPos();
  598. }
  599. //展示选购页面,隐藏结算页面
  600. void CDiandanPageUI::ShowXuangouPage()
  601. {
  602. //先展示商品页面
  603. CVerticalLayoutUI* pFoodLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_food_layout")));
  604. pFoodLayout->SetVisible(true);
  605. //展示结算按钮
  606. CHorizontalLayoutUI* pPayLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_pay_layout")));
  607. pPayLayout->SetVisible(true);
  608. //再隐藏结算页面
  609. CHorizontalLayoutUI* pJiesuanLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_layout")));
  610. pJiesuanLayout->SetVisible(false);
  611. //隐藏继续加菜的按钮
  612. CButtonUI* pJiacaiBtn = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_jixujiacai")));
  613. pJiacaiBtn->SetVisible(false);
  614. }
  615. //只是刷新取单数量
  616. void CDiandanPageUI::RefreshGuadanNum()
  617. {
  618. size_t guadan_num = m_guadan_orders.size();
  619. CLabelUI* pNum = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_qudan_num")));
  620. if (guadan_num > 0)
  621. {
  622. //有挂单的
  623. pNum->SetText(std::to_wstring(guadan_num).c_str());
  624. pNum->SetVisible(true);
  625. }
  626. else
  627. {
  628. //没有挂单的
  629. pNum->SetVisible(false);
  630. }
  631. }
  632. //处理按钮点击类事件
  633. void CDiandanPageUI::HandleClickMsg(TNotifyUI& msg)
  634. {
  635. CDuiString name = msg.pSender->GetName();
  636. if (name == L"diandan_fooditem")
  637. {
  638. CDiandanFoodItemUI* fooditemUI = static_cast<CDiandanFoodItemUI*>(msg.pSender);
  639. m_cur_click_food_item = fooditemUI;
  640. this->ClickFoodAction();
  641. }
  642. else if (name == L"btn_diandan_jia")
  643. {
  644. this->ClickAdd();
  645. }
  646. else if (name == L"btn_diandan_jian")
  647. {
  648. this->ClickDel();
  649. }
  650. else if (name == L"btn_diandan_shanchu")
  651. {
  652. this->ClickRemove();
  653. }
  654. else if (name == L"btn_diandan_guige")
  655. {
  656. this->ClickGuige();
  657. }
  658. else if (name == L"btn_diandan_qingkong")
  659. {
  660. //纯粹用于调试物理键盘
  661. //CSystem::ShowKeyboardDeviceNames();
  662. this->ClickQingkong();
  663. }
  664. else if (name == L"btn_diandan_zhengdanbeizhu")
  665. {
  666. this->ClickZhengdanMemo();
  667. }
  668. else if (name == L"btn_diandan_gengduozhifu_pay")
  669. {
  670. //点击更多支付
  671. this->ClickGengduoPay();
  672. }
  673. else if (name == L"btn_diandan_jixujiacai")
  674. {
  675. //点击继续加菜
  676. this->ShowXuangouPage();
  677. }
  678. else if (name == L"btn_diandan_chakanyouhui")
  679. {
  680. //点击查看优惠
  681. this->ClickChakanYouhui();
  682. }
  683. else if (name == L"btn_diandan_dabao")
  684. {
  685. //点击打包
  686. this->ClickDabao();
  687. }
  688. else if (name == L"btn_diandan_member_login")
  689. {
  690. //点击会员登录
  691. this->ClickMemberLogin();
  692. }
  693. else if (name == L"diandan_jiesuan_zhekou_value")
  694. {
  695. //点击整单折扣
  696. this->ClickZhekou();
  697. }
  698. else if (name == L"diandan_jiesuan_jiajia_value")
  699. {
  700. //点击加价
  701. this->ClickJiajia();
  702. }
  703. else if (name == L"diandan_jiesuan_youhui_value")
  704. {
  705. //点击人工优惠
  706. this->ClickRengongyouhui();
  707. }
  708. else if (name == L"diandan_jiesuan_youhuiquan_btn")
  709. {
  710. //点击扫码优惠券
  711. this->ClickSaomaYouhuiquan();
  712. }
  713. else if (name == L"diandan_jiesuan_shangpinquan_btn")
  714. {
  715. //点击扫码商品券
  716. this->ClickSaomaShangpinquan();
  717. }
  718. else if (name == L"diandan_jiesuan_cika_btn")
  719. {
  720. //点击扫码次卡
  721. this->ClickSaomaCika();
  722. }
  723. else if (name == L"diandan_jiesuan_quanyika_btn")
  724. {
  725. //点击扫码权益卡
  726. this->ClickSaomaQuanyika();
  727. }
  728. else if (name == L"btn_diandan_canpaihao")
  729. {
  730. //点击餐牌号
  731. this->ClickCanpai();
  732. }
  733. else if (name == L"btn_diandan_weixinzhifu_pay" || name == L"diandan_jiesuan_zhifufangshi_weixinzhifu_btn")
  734. {
  735. //点击微信支付
  736. this->StartWeixinzhifuShoukuan();
  737. }
  738. else if (name == L"btn_diandan_huiyuanzhifu_pay" || name == L"diandan_jiesuan_zhifufangshi_huiyuan_btn")
  739. {
  740. //点击会员收款
  741. this->StartHuiyuanShoukuan();
  742. }
  743. else if (name == L"btn_diandan_xianjinzhifu_pay" || name == L"diandan_jiesuan_zhifufangshi_xianjin_btn")
  744. {
  745. //点击现金收款
  746. this->StartXianjinShoukuan();
  747. }
  748. else if (name == L"diandan_jiesuan_zhifufangshi_fulika_btn")
  749. {
  750. //福利卡收款
  751. this->StartFulikaShoukuan();
  752. }
  753. else if (name == L"diandan_jiesuan_zhifufangshi_zidingyi_btn")
  754. {
  755. //自定义支付
  756. std::wstring name = msg.pSender->GetText();
  757. std::wstring selfpay_id = msg.pSender->GetCustomAttribute(L"selfpay_id");
  758. this->StartZidingyiShoukuan(name, selfpay_id);
  759. }
  760. else if (name == L"diandan_food_search_clear")
  761. {
  762. CEditUI* m_pEdit = static_cast<CEditUI*>(m_pManager->FindControl(_T("diandan_food_search_edit")));
  763. m_pEdit->SetText(L"");
  764. StopSerachFood();
  765. }
  766. else if (name == L"btn_diandan_cundan")
  767. {
  768. this->ClickCundan();
  769. }
  770. else if (name == L"btn_diandan_qudan")
  771. {
  772. this->ClickQudan();
  773. }
  774. else if (name == L"btn_diandan_qianxiang")
  775. {
  776. CPosPrinter printer;
  777. printer.OpenQianxiang();
  778. }
  779. else if (name == L"diandan_jiesuan_youhuiquan_btn_cancel")
  780. {
  781. this->ClickQuxiaoYouhuiquan();
  782. }
  783. else if (name == L"diandan_jiesuan_shangpinquan_btn_cancel")
  784. {
  785. this->ClickQuxiaoShangpinquan();
  786. }
  787. else if (name == L"diandan_jiesuan_quanyika_btn_cancel")
  788. {
  789. this->ClickQuxiaoQuanyika();
  790. }
  791. else if (name == L"diandan_jiesuan_cika_btn_cancel")
  792. {
  793. this->ClickQuxiaoCika();
  794. }
  795. else if (name == L"diandan_jiesuan_yincangyouhui_btn")
  796. {
  797. this->YincangYouhui();
  798. }
  799. else if (name == L"diandan_jiesuan_xianshiyouhui_btn")
  800. {
  801. this->XianshiYouhui();
  802. }
  803. else if (name == L"diandan_page_member_out_btn")
  804. {
  805. this->ClickMemberLogout();
  806. }
  807. else if (name == L"diandan_page_member_info_btn")
  808. {
  809. this->ClickMemberInfoShow();
  810. }
  811. else if (name == L"diandan_page_aixuexi_btn")
  812. {
  813. this->ClickAixuexi();
  814. }
  815. else if (name == L"diandan_page_chengzhong_zhiling")
  816. {
  817. this->ZhiLing();
  818. }
  819. else if (name == L"diandan_page_chengzhong_qupi")
  820. {
  821. this->Qupi();
  822. }
  823. }
  824. //处理option切换事件
  825. void CDiandanPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
  826. {
  827. CDuiString name = msg.pSender->GetName();
  828. COptionUI* curOption = static_cast<COptionUI*>(msg.pSender);
  829. std::wstring groupname = curOption->GetGroup();
  830. if (groupname == L"diandan_foodtype")
  831. {
  832. //商品分类切换
  833. CFoodtypeOptionUI* typeUI = static_cast<CFoodtypeOptionUI*>(curOption);
  834. std::string id = typeUI->GetTypeId();
  835. if (m_cur_type_id != id)
  836. {
  837. //切换了商品分类
  838. m_curFoodtypeOption = static_cast<CFoodtypeOptionUI*>(msg.pSender);
  839. m_cur_type_id = id;
  840. this->InitFoodShow();
  841. return;
  842. }
  843. }
  844. else if (groupname == L"diandan_jiesuan_moling")
  845. {
  846. if (name == _T("diandan_jiesuan_moling_bumoling"))
  847. {
  848. m_moling_type = 0;
  849. CSetting::GetInstance()->SetParam("diandan_moling_type", "0");
  850. UpdateJiesuanInfo();
  851. }
  852. else if (name == _T("diandan_jiesuan_moling_molingdaojiao"))
  853. {
  854. m_moling_type = 1;
  855. CSetting::GetInstance()->SetParam("diandan_moling_type", "1");
  856. UpdateJiesuanInfo();
  857. }
  858. else if (name == _T("diandan_jiesuan_moling_molingdaoyuan"))
  859. {
  860. m_moling_type = 2;
  861. CSetting::GetInstance()->SetParam("diandan_moling_type", "2");
  862. UpdateJiesuanInfo();
  863. }
  864. }
  865. }
  866. //处理下拉框、radio的切换事件
  867. void CDiandanPageUI::HandleItemSelectMsg(TNotifyUI& msg)
  868. {
  869. }
  870. //处理编辑框输入内容改变事件
  871. void CDiandanPageUI::HandleTextChangedMsg(TNotifyUI& msg)
  872. {
  873. CDuiString name = msg.pSender->GetName();
  874. if (name == L"diandan_food_search_edit")
  875. {
  876. //商品搜索框的输入事件
  877. CEditUI* m_pEdit = static_cast<CEditUI*>(m_pManager->FindControl(_T("diandan_food_search_edit")));
  878. std::wstring ws_Value = m_pEdit->GetText();
  879. std::string strValue = CLewaimaiString::UnicodeToUTF8(ws_Value);
  880. if (strValue.length() == 0)
  881. {
  882. //搜索词被清空了,退出搜索
  883. this->StopSerachFood();
  884. }
  885. else
  886. {
  887. //搜索词没清空,进入搜索
  888. this->StartSearchFood(strValue);
  889. }
  890. }
  891. }
  892. //处理扫码枪捕捉到的扫码信息
  893. void CDiandanPageUI::HandleTextCapture(std::string content)
  894. {
  895. if (m_is_show_modal_wnd == true)
  896. {
  897. m_curModalWnd->HandleTextCapture(content);
  898. return;
  899. }
  900. //没有任何弹框,那么就是按扫描商品条码来处理
  901. bool ret = this->SaomiaoBarcode(content);
  902. if (ret == true)
  903. {
  904. //已经找到了条码,那么就处理完了
  905. return;
  906. }
  907. if (content.length() != 12 && content.length() != 13 && content.length() != 17 && content.length() != 18)
  908. {
  909. //位数不对,那肯定不是称重条码
  910. }
  911. else
  912. {
  913. //如果没有找到条码,就找一下是不是称重的标签秤的码,这个时候要对码进行各种分析了
  914. ret = this->BiaoqianchengSaomaBarcode(content);
  915. if (ret == true)
  916. {
  917. return;
  918. }
  919. }
  920. //代码走到这里,肯定不是条码了,也不是称重码,判断是不是付款码
  921. std::string s_Fukuanma = content;
  922. int length = s_Fukuanma.size();
  923. if (length != 18 && length != 19)
  924. {
  925. //肯定不是付款码
  926. m_pMainWnd->ShowToast(L"无效的条码!");
  927. return;
  928. }
  929. for (int i = 0; i < length; i++)
  930. {
  931. char c = *(s_Fukuanma.c_str() + i);
  932. if (isdigit(c) == 0)
  933. {
  934. //不是数字
  935. m_pMainWnd->ShowToast(L"无效的条码!");
  936. return;
  937. }
  938. }
  939. if (s_Fukuanma.find("10") == 0 \
  940. || s_Fukuanma.find("11") == 0 \
  941. || s_Fukuanma.find("12") == 0 \
  942. || s_Fukuanma.find("13") == 0 \
  943. || s_Fukuanma.find("14") == 0 \
  944. || s_Fukuanma.find("15") == 0)
  945. {
  946. //微信付款码
  947. }
  948. else if (s_Fukuanma.find("25") == 0 \
  949. || s_Fukuanma.find("26") == 0 \
  950. || s_Fukuanma.find("27") == 0 \
  951. || s_Fukuanma.find("28") == 0 \
  952. || s_Fukuanma.find("29") == 0 \
  953. || s_Fukuanma.find("30") == 0)
  954. {
  955. //支付宝付款码
  956. }
  957. else if (s_Fukuanma.find("62") == 0)
  958. {
  959. //云闪付付款码
  960. }
  961. else
  962. {
  963. m_pMainWnd->ShowToast(L"无效的条码!");
  964. return;
  965. }
  966. //代码能走到这里,说明肯定就是付款码了,默认唤起支付
  967. this->StartWeixinzhifuShoukuan(content);
  968. }
  969. bool CDiandanPageUI::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
  970. {
  971. if (uMsg == WM_MYHOTKEY_WEIXIN_SHOUKUAN)
  972. {
  973. StartWeixinzhifuShoukuan();
  974. return true;
  975. }
  976. else if (uMsg == WM_MYHOTKEY_HUIYUAN_DENGLU)
  977. {
  978. ClickMemberLogin();
  979. return true;
  980. }
  981. else if (uMsg == WM_MYHOTKEY_HUIYUAN_SHOUKUAN)
  982. {
  983. StartHuiyuanShoukuan();
  984. return true;
  985. }
  986. else if (uMsg == WM_MYHOTKEY_XIANJIN_SHOUKUAN)
  987. {
  988. StartXianjinShoukuan();
  989. return true;
  990. }
  991. else if (uMsg == WM_AI_RECOGNITION_SUCCESS)
  992. {
  993. HandleDiandanAIShibieResult();
  994. return true;
  995. }
  996. else if (uMsg == WM_CHENGZHONG_SUCCESS)
  997. {
  998. HandleChengzhongValueChange();
  999. return true;
  1000. }
  1001. return false;
  1002. }
  1003. void CDiandanPageUI::UpdateShopcartShow()
  1004. {
  1005. //先保留选中
  1006. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1007. int nIndex = pList->GetCurSel();
  1008. //先清空
  1009. pList->RemoveAll();
  1010. int nItemNum = m_cur_diandan_order.getItemNum();
  1011. for (int i = 0; i < nItemNum; i++)
  1012. {
  1013. CDiandanOrderItem item = m_cur_diandan_order.getDiandanOrderItem(i);
  1014. CDialogBuilder builder;
  1015. CListContainerElementUI* pEle = static_cast<CListContainerElementUI*>(builder.Create(_T("diandan_cart_item.xml"), (UINT)0, NULL, m_pManager));
  1016. pList->Add(pEle);
  1017. if (item.m_is_taocan)
  1018. {
  1019. CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
  1020. pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
  1021. CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
  1022. pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
  1023. CLabelUI* pPrice = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_price")));
  1024. pPrice->SetText(CLewaimaiString::UTF8ToUnicode(item.show_price).c_str());
  1025. CLabelUI* pNature = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_nature")));
  1026. pEle->SetFixedHeight(84);
  1027. pNature->SetVisible(true);
  1028. pNature->SetText(CLewaimaiString::UTF8ToUnicode(item.getNatureShow()).c_str());
  1029. }
  1030. else
  1031. {
  1032. CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
  1033. pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
  1034. CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
  1035. pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
  1036. CLabelUI* pPrice = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_price")));
  1037. pPrice->SetText(CLewaimaiString::UTF8ToUnicode(item.show_price).c_str());
  1038. CLabelUI* pNature = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_nature")));
  1039. if (item.is_nature)
  1040. {
  1041. pEle->SetFixedHeight(84);
  1042. pNature->SetVisible(true);
  1043. pNature->SetText(CLewaimaiString::UTF8ToUnicode(item.getNatureShow()).c_str());
  1044. }
  1045. else
  1046. {
  1047. pEle->SetFixedHeight(42);
  1048. pNature->SetVisible(false);
  1049. }
  1050. }
  1051. }
  1052. //保留选中
  1053. if (nIndex != -1 && pList->GetCount() > 0)
  1054. {
  1055. if (nIndex <= pList->GetCount() - 1)
  1056. {
  1057. pList->SelectItem(nIndex, false);
  1058. }
  1059. else
  1060. {
  1061. pList->SelectItem(pList->GetCount() - 1, false);
  1062. }
  1063. }
  1064. //更新结算信息
  1065. UpdateJiesuanInfo();
  1066. }
  1067. void CDiandanPageUI::UpdateJiesuanInfo()
  1068. {
  1069. //先按所有的价格公式规则,计算一次价格
  1070. //(基础商品价格+属性价格-商品券-次卡(抵扣金额、抵扣商品)-会员商品优惠)*店铺折扣*分等级会员折扣*权益卡折扣*次卡折扣-满减优惠-次卡满减-优惠券+加价-优惠-抹零+开台费+打包费+茶位费
  1071. //先计算基础商品价格(不包含任何优惠活动等情况下的实际金额,已包含商品属性价格)
  1072. double jichu_price = m_cur_diandan_order.getTotalPrice();
  1073. //这个是临时变量,表示每次优惠过后的实时价格
  1074. double cur_price = jichu_price;
  1075. double total_youhui = 0;
  1076. //判断是否有商品券,如果有的话把金额抵扣掉
  1077. m_shangpinquan_youhui = 0;
  1078. if (m_is_shangpinquan)
  1079. {
  1080. //判断当前购物车商品,是否有满足对应商品券使用要求的
  1081. bool ret = m_cur_diandan_order.UseShangpinquan(m_shangpinquan_foodid, m_shangpinquan_youhui);
  1082. total_youhui += m_shangpinquan_youhui;
  1083. }
  1084. //判断次卡
  1085. m_cika_youhui = 0;
  1086. if (m_is_cika)
  1087. {
  1088. //对次卡进行处理
  1089. if (m_cika_deduct_type == "0")
  1090. {
  1091. }
  1092. else if (m_cika_deduct_type == "1")
  1093. {
  1094. }
  1095. else if (m_cika_deduct_type == "2")
  1096. {
  1097. m_cika_youhui = atof(m_cika_offer_value.c_str());
  1098. }
  1099. else if (m_cika_deduct_type == "3")
  1100. {
  1101. //这种情况是次卡跟商品券一样抵扣商品\
  1102. bool ret;
  1103. if (m_is_shangpinquan && m_shangpinquan_foodid == m_cika_bind_foods_id)
  1104. {
  1105. ret = m_cur_diandan_order.UseCikaDikou(m_cika_bind_foods_id, m_cika_youhui, true);
  1106. }
  1107. else
  1108. {
  1109. ret = m_cur_diandan_order.UseCikaDikou(m_cika_bind_foods_id, m_cika_youhui, false);
  1110. }
  1111. }
  1112. total_youhui += m_cika_youhui;
  1113. }
  1114. //判断会员商品优惠
  1115. m_total_member_youhui = 0;
  1116. if (m_is_member)
  1117. {
  1118. m_total_member_youhui = m_cur_diandan_order.getTotalMemberYouhui(m_member_level);
  1119. }
  1120. total_youhui += m_total_member_youhui;
  1121. cur_price = jichu_price - total_youhui;
  1122. //再判断整单折扣
  1123. CEditUI* pZhekouEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_zhekou_value")));
  1124. std::wstring ws_zhekou = pZhekouEdit->GetText();
  1125. int zhekouValue = atoi(CLewaimaiString::UnicodeToUTF8(ws_zhekou).c_str());
  1126. m_zhekou_value = zhekouValue;
  1127. if (zhekouValue == 100)
  1128. {
  1129. m_zhekou_youhui = 0;
  1130. }
  1131. else
  1132. {
  1133. m_zhekou_youhui = (100 - zhekouValue) * cur_price / 100.00;
  1134. total_youhui += m_zhekou_youhui;
  1135. cur_price = cur_price - m_zhekou_youhui;
  1136. }
  1137. //再判断分等级会员折扣
  1138. m_member_zhekou_youhui = 0;
  1139. std::vector<DiscountInfo> member_discount_info = CShopinfo::GetInstance()->m_discount_info;
  1140. for (std::vector<DiscountInfo>::iterator it = member_discount_info.begin(); it != member_discount_info.end(); it++)
  1141. {
  1142. DiscountInfo info = *it;
  1143. if (info.member_level == m_member_level)
  1144. {
  1145. if (info.is_discount == "1")
  1146. {
  1147. m_is_member_zhekou = true;
  1148. m_member_zhekou_value = info.discount_value;
  1149. double member_discount = atof(info.discount_value.c_str());
  1150. if (abs(member_discount - 10) < 0.0001)
  1151. {
  1152. m_member_zhekou_youhui = 0;
  1153. }
  1154. else
  1155. {
  1156. m_member_zhekou_youhui = (10 - member_discount) * cur_price / 10.00;
  1157. total_youhui += m_member_zhekou_youhui;
  1158. cur_price -= m_member_zhekou_youhui;
  1159. }
  1160. break;
  1161. }
  1162. }
  1163. }
  1164. //再判断权益卡折扣
  1165. m_quanyika_youhui = 0;
  1166. if (m_is_quanyika == true)
  1167. {
  1168. double quanyika_zhekou = atof(m_quanyika_discount.c_str());
  1169. if (abs(quanyika_zhekou - 10) < 0.0001)
  1170. {
  1171. m_quanyika_youhui = 0;
  1172. }
  1173. else
  1174. {
  1175. m_quanyika_youhui = (10 - quanyika_zhekou) * cur_price / 10.00;
  1176. total_youhui += m_quanyika_youhui;
  1177. cur_price -= m_quanyika_youhui;
  1178. }
  1179. }
  1180. //次卡折扣
  1181. if (m_is_cika)
  1182. {
  1183. //对次卡进行处理
  1184. if (m_cika_deduct_type == "0")
  1185. {
  1186. double cika_zhekou = atof(m_cika_discount_value.c_str());
  1187. if (abs(cika_zhekou - 10) < 0.0001)
  1188. {
  1189. m_cika_youhui = 0;
  1190. }
  1191. else
  1192. {
  1193. m_cika_youhui = (10 - cika_zhekou) * cur_price / 10.00;
  1194. total_youhui += m_cika_youhui;
  1195. cur_price -= m_cika_youhui;
  1196. }
  1197. }
  1198. }
  1199. //满减优惠
  1200. m_manjian_youhui = 0;
  1201. if (CShopinfo::GetInstance()->m_open_promotion == "1")
  1202. {
  1203. //开启了满减,进行判断
  1204. std::vector<Promotion> promotion = CShopinfo::GetInstance()->m_promotion;
  1205. for (std::vector<Promotion>::iterator it = promotion.begin(); it != promotion.end(); it++)
  1206. {
  1207. Promotion cur = *it;
  1208. if (jichu_price >= cur.amount)
  1209. {
  1210. m_manjian_youhui = cur.discount;
  1211. total_youhui += m_manjian_youhui;
  1212. cur_price -= m_manjian_youhui;
  1213. break;
  1214. }
  1215. }
  1216. }
  1217. //次卡满减
  1218. if (m_is_cika)
  1219. {
  1220. //对次卡进行处理
  1221. if (m_cika_deduct_type == "1")
  1222. {
  1223. std::vector<std::string> manjian = CLewaimaiString::Split(m_cika_full_reduce_value, ",");
  1224. double amount = atof(manjian[0].c_str());
  1225. double value = atof(manjian[1].c_str());
  1226. if (jichu_price >= amount)
  1227. {
  1228. m_cika_youhui = value;
  1229. total_youhui += m_cika_youhui;
  1230. cur_price -= m_cika_youhui;
  1231. }
  1232. }
  1233. }
  1234. //优惠券
  1235. m_youhuiquan_youhui = 0;
  1236. if (m_is_youhuiquan)
  1237. {
  1238. time_t deadline = CLewaimaiTime::StringToDatetime(m_coupon_deadline);
  1239. time_t now = time(NULL);
  1240. if (deadline > now)
  1241. {
  1242. if (jichu_price >= atof(m_coupon_basic_price.c_str()))
  1243. {
  1244. m_youhuiquan_youhui = atof(m_coupon_value.c_str());
  1245. total_youhui += m_youhuiquan_youhui;
  1246. cur_price -= m_youhuiquan_youhui;
  1247. }
  1248. }
  1249. }
  1250. //加价
  1251. m_jiajia = 0;
  1252. CEditUI* pJiajiaEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_jiajia_value")));
  1253. std::wstring ws_jiajia = pJiajiaEdit->GetText();
  1254. m_jiajia = atof(CLewaimaiString::UnicodeToUTF8(ws_jiajia).c_str());
  1255. cur_price += m_jiajia;
  1256. //人工优惠
  1257. m_rengong_youhui = 0;
  1258. CEditUI* pYouhuiEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_youhui_value")));
  1259. std::wstring ws_rengong_youhui = pYouhuiEdit->GetText();
  1260. m_rengong_youhui = atof(CLewaimaiString::UnicodeToUTF8(ws_rengong_youhui).c_str());
  1261. total_youhui += m_rengong_youhui;
  1262. cur_price -= m_rengong_youhui;
  1263. //开台费
  1264. m_kaitai = 0;
  1265. //打包费
  1266. m_dabao = m_cur_diandan_order.getDabaoMoney();
  1267. cur_price += m_dabao;
  1268. //茶位费
  1269. m_chawei = 0;
  1270. //抹零
  1271. m_moling_youhui = 0;
  1272. if (m_moling_type == 0)
  1273. {
  1274. }
  1275. else if (m_moling_type == 1)
  1276. {
  1277. double new_price = (int)(cur_price * 10) / 10.0;
  1278. m_moling_youhui = cur_price - new_price;
  1279. total_youhui += m_moling_youhui;
  1280. cur_price = new_price;
  1281. }
  1282. else if (m_moling_type == 2)
  1283. {
  1284. double new_price = (int)(cur_price);
  1285. m_moling_youhui = cur_price - new_price;
  1286. total_youhui += m_moling_youhui;
  1287. cur_price = new_price;
  1288. }
  1289. if (cur_price < 0)
  1290. {
  1291. cur_price = 0;
  1292. }
  1293. m_cur_total_price = cur_price;
  1294. m_total_youhui = total_youhui;
  1295. //至此优惠全部处理完了,开始刷新各个地方的展示
  1296. //先刷新优惠展示
  1297. CHorizontalLayoutUI* pYouhuiLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_page_youhui_tishi_layout")));
  1298. CLabelUI* pYouhuiLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_youhui_tishi")));
  1299. if (total_youhui > 0)
  1300. {
  1301. std::wstring youhuilabel = L"已优惠 " + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(total_youhui, 2)) + L" 元";
  1302. pYouhuiLabel->SetText(youhuilabel.c_str());
  1303. pYouhuiLayout->SetVisible(true);
  1304. }
  1305. else
  1306. {
  1307. pYouhuiLayout->SetVisible(false);
  1308. }
  1309. //再刷新打包费展示
  1310. CLabelUI* pOtherPriceLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_otherprice")));
  1311. if (m_dabao > 0)
  1312. {
  1313. std::wstring ws_dabaofei = L"打包费 " + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_dabao, 2)) + L" 元";
  1314. pOtherPriceLabel->SetText(ws_dabaofei.c_str());
  1315. }
  1316. else
  1317. {
  1318. pOtherPriceLabel->SetText(L"");
  1319. }
  1320. //再刷新总价展示
  1321. CLabelUI* pTotalPrice = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_totalprice")));
  1322. pTotalPrice->SetText((L"总价:¥" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(cur_price, 2))).c_str());
  1323. //再刷新账单明细展示
  1324. CVerticalLayoutUI* pmingxiLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhangdanmingxi_jiage_layout")));
  1325. pmingxiLayout->RemoveAll();
  1326. int item_num = 0;
  1327. //先显示基础价格
  1328. if (true)
  1329. {
  1330. CDialogBuilder builder;
  1331. CDialogBuilderCallbackEx cb;
  1332. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1333. pmingxiLayout->Add(pItem);
  1334. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1335. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1336. pName->SetText(L"商品原价:");
  1337. pValue->SetText((CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(jichu_price, 2)) + L"元").c_str());
  1338. item_num++;
  1339. }
  1340. //开始展示各种优惠
  1341. if (m_shangpinquan_youhui > 0)
  1342. {
  1343. CDialogBuilder builder;
  1344. CDialogBuilderCallbackEx cb;
  1345. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1346. pmingxiLayout->Add(pItem);
  1347. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1348. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1349. pName->SetText(L"商品券优惠:");
  1350. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_shangpinquan_youhui, 2)) + L"元").c_str());
  1351. item_num++;
  1352. }
  1353. if (m_cika_youhui > 0)
  1354. {
  1355. CDialogBuilder builder;
  1356. CDialogBuilderCallbackEx cb;
  1357. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1358. pmingxiLayout->Add(pItem);
  1359. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1360. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1361. pName->SetText(L"次卡优惠:");
  1362. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_cika_youhui, 2)) + L"元").c_str());
  1363. item_num++;
  1364. }
  1365. if (m_total_member_youhui > 0)
  1366. {
  1367. CDialogBuilder builder;
  1368. CDialogBuilderCallbackEx cb;
  1369. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1370. pmingxiLayout->Add(pItem);
  1371. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1372. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1373. pName->SetText(L"商品会员价优惠:");
  1374. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_total_member_youhui, 2)) + L"元").c_str());
  1375. item_num++;
  1376. }
  1377. if (m_zhekou_youhui > 0)
  1378. {
  1379. CDialogBuilder builder;
  1380. CDialogBuilderCallbackEx cb;
  1381. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1382. pmingxiLayout->Add(pItem);
  1383. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1384. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1385. pName->SetText(L"整单折扣优惠:");
  1386. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_zhekou_youhui, 2)) + L"元").c_str());
  1387. item_num++;
  1388. }
  1389. if (m_member_zhekou_youhui > 0)
  1390. {
  1391. CDialogBuilder builder;
  1392. CDialogBuilderCallbackEx cb;
  1393. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1394. pmingxiLayout->Add(pItem);
  1395. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1396. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1397. pName->SetText(L"会员整单折扣优惠:");
  1398. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_member_zhekou_youhui, 2)) + L"元").c_str());
  1399. item_num++;
  1400. }
  1401. if (m_quanyika_youhui > 0)
  1402. {
  1403. CDialogBuilder builder;
  1404. CDialogBuilderCallbackEx cb;
  1405. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1406. pmingxiLayout->Add(pItem);
  1407. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1408. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1409. pName->SetText(L"权益卡优惠:");
  1410. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_quanyika_youhui, 2)) + L"元").c_str());
  1411. item_num++;
  1412. }
  1413. if (m_manjian_youhui > 0)
  1414. {
  1415. CDialogBuilder builder;
  1416. CDialogBuilderCallbackEx cb;
  1417. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1418. pmingxiLayout->Add(pItem);
  1419. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1420. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1421. pName->SetText(L"满减优惠:");
  1422. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_manjian_youhui, 2)) + L"元").c_str());
  1423. item_num++;
  1424. }
  1425. if (m_youhuiquan_youhui > 0)
  1426. {
  1427. CDialogBuilder builder;
  1428. CDialogBuilderCallbackEx cb;
  1429. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1430. pmingxiLayout->Add(pItem);
  1431. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1432. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1433. pName->SetText(L"优惠券优惠:");
  1434. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_youhuiquan_youhui, 2)) + L"元").c_str());
  1435. item_num++;
  1436. }
  1437. if (m_rengong_youhui > 0)
  1438. {
  1439. CDialogBuilder builder;
  1440. CDialogBuilderCallbackEx cb;
  1441. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1442. pmingxiLayout->Add(pItem);
  1443. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1444. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1445. pName->SetText(L"人工优惠:");
  1446. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_rengong_youhui, 2)) + L"元").c_str());
  1447. item_num++;
  1448. }
  1449. if (m_moling_youhui > 0)
  1450. {
  1451. CDialogBuilder builder;
  1452. CDialogBuilderCallbackEx cb;
  1453. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1454. pmingxiLayout->Add(pItem);
  1455. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1456. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1457. pName->SetText(L"抹零优惠:");
  1458. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_moling_youhui, 2)) + L"元").c_str());
  1459. item_num++;
  1460. }
  1461. //然后处理加价的各种
  1462. if (m_dabao > 0)
  1463. {
  1464. CDialogBuilder builder;
  1465. CDialogBuilderCallbackEx cb;
  1466. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1467. pmingxiLayout->Add(pItem);
  1468. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1469. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1470. pName->SetText(L"打包费:");
  1471. pValue->SetText((L"+" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_dabao, 2)) + L"元").c_str());
  1472. item_num++;
  1473. }
  1474. if (m_jiajia > 0)
  1475. {
  1476. CDialogBuilder builder;
  1477. CDialogBuilderCallbackEx cb;
  1478. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1479. pmingxiLayout->Add(pItem);
  1480. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1481. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1482. pName->SetText(L"人工加价:");
  1483. pValue->SetText((L"+" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_jiajia, 2)) + L"元").c_str());
  1484. item_num++;
  1485. }
  1486. pmingxiLayout->SetFixedHeight(item_num * 40);
  1487. CLabelUI* pYingshou = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_total_yingshou")));
  1488. pYingshou->SetText((L"应收金额:" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(cur_price, 2)) + L"元").c_str());
  1489. //同步更新副屏的显示内容
  1490. CShuangpingTool::GetInstance()->UpdateShow(m_cur_diandan_order, total_youhui, cur_price, m_dabao);
  1491. }
  1492. void CDiandanPageUI::ClickFoodAction()
  1493. {
  1494. bool is_taocan = m_cur_click_food_item->GetIsTaocan();
  1495. if (is_taocan)
  1496. {
  1497. //点击套餐之后的处理逻辑
  1498. CFoodpackage foodpackageinfo = m_cur_click_food_item->GetFoodpackageInfo();
  1499. CDiandanOrderItem clickItem;
  1500. clickItem.foodpackage_id = foodpackageinfo.id;
  1501. clickItem.foodpackage_name = foodpackageinfo.name;
  1502. clickItem.price = foodpackageinfo.price;
  1503. clickItem.is_dabao = false;
  1504. clickItem.dabao_money = foodpackageinfo.dabao_money;
  1505. clickItem.num = "1";
  1506. //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
  1507. clickItem.SetFoodpackageInfo(m_cur_click_food_item->GetFoodpackageInfo());
  1508. clickItem.SetIsTaocan(true);
  1509. if (m_is_show_modal_wnd == true)
  1510. {
  1511. return;
  1512. }
  1513. //先弹框进行选择属性
  1514. CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(1);
  1515. pNatureFrame->SetFoodItemUI(m_cur_click_food_item);
  1516. if (pNatureFrame != NULL)
  1517. {
  1518. m_is_show_modal_wnd = true;
  1519. m_curModalWnd = pNatureFrame;
  1520. pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1521. pNatureFrame->SetIcon(IDI_ICON_DUILIB);
  1522. pNatureFrame->CenterWindow();
  1523. UINT ret = pNatureFrame->ShowModal();
  1524. if (ret == IDOK)
  1525. {
  1526. //保存选择的属性
  1527. std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
  1528. clickItem.natureSelectedArray = natureSelectedArray;
  1529. m_is_show_modal_wnd = false;
  1530. delete pNatureFrame;
  1531. }
  1532. else
  1533. {
  1534. m_is_show_modal_wnd = false;
  1535. delete pNatureFrame;
  1536. return;
  1537. }
  1538. }
  1539. //商品没有商品属性
  1540. bool is_add_new = false;
  1541. int index = m_cur_diandan_order.AddItem(clickItem, is_add_new);
  1542. this->UpdateShopcartShow();
  1543. }
  1544. else
  1545. {
  1546. //点击普通商品之后的处理逻辑
  1547. CFood foodinfo = m_cur_click_food_item->GetFoodInfo();
  1548. if (foodinfo.stockvalid == "1" && atof(foodinfo.stock.c_str()) < 0.001)
  1549. {
  1550. //库存为0了,不做任何处理
  1551. m_pMainWnd->ShowToast(L"该商品已售完");
  1552. return;
  1553. }
  1554. CDiandanOrderItem clickItem;
  1555. clickItem.food_id = foodinfo.id;
  1556. clickItem.food_name = foodinfo.name;
  1557. clickItem.type_id = foodinfo.type_id;
  1558. clickItem.price = foodinfo.price;
  1559. clickItem.is_dabao = false;
  1560. clickItem.dabao_money = foodinfo.dabao_money;
  1561. clickItem.num = "1";
  1562. if (foodinfo.member_price_used == "1")
  1563. {
  1564. clickItem.is_member_price_used = true;
  1565. }
  1566. else
  1567. {
  1568. clickItem.is_member_price_used = false;
  1569. }
  1570. //处理会员价的json
  1571. std::string member_price_json = foodinfo.member_price_json;
  1572. rapidjson::Document document;
  1573. document.Parse(member_price_json.c_str());
  1574. rapidjson::Value& member_price = document;
  1575. for (rapidjson::SizeType i = 0; i < member_price.Size(); ++i)
  1576. {
  1577. rapidjson::Value& member_price_info = member_price[i];
  1578. MemberPrice newPirce;
  1579. newPirce.id = CLewaimaiJson::ToString(member_price_info["id"]);
  1580. newPirce.level = CLewaimaiJson::ToString(member_price_info["level"]);
  1581. newPirce.price = CLewaimaiJson::ToString(member_price_info["price"]);
  1582. clickItem.m_member_price.push_back(newPirce);
  1583. }
  1584. //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
  1585. clickItem.SetFoodInfo(m_cur_click_food_item->GetFoodInfo());
  1586. clickItem.SetIsTaocan(false);
  1587. if (foodinfo.is_weight == "1")
  1588. {
  1589. if (m_is_dianzicheng_lianjie == false)
  1590. {
  1591. //设置中心未连接电子秤
  1592. m_pMainWnd->ShowToast(L"未连接电子秤,请检查连接设置");
  1593. return;
  1594. }
  1595. clickItem.is_weight = true;
  1596. //这里要判断是直接区域称重,还是先弹框再称重
  1597. CLabelUI* pLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_label_chengzhong_value")));
  1598. std::wstring ws_weight_value = pLabel->GetText();
  1599. std::string s_weight_value = CLewaimaiString::UnicodeToUTF8(ws_weight_value);
  1600. if (atof(s_weight_value.c_str()) < 0.001)
  1601. {
  1602. //如果重量为0了,说明还没有称重,这时候要弹出称重框进行称重
  1603. if (m_is_show_modal_wnd == true)
  1604. {
  1605. return;
  1606. }
  1607. //这里要弹出称重框,不弹属性框
  1608. CChengzhongWnd* pChengzhongFrame = new CChengzhongWnd();
  1609. if (pChengzhongFrame != NULL)
  1610. {
  1611. m_is_show_modal_wnd = true;
  1612. m_curModalWnd = pChengzhongFrame;
  1613. pChengzhongFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1614. pChengzhongFrame->SetIcon(IDI_ICON_DUILIB);
  1615. pChengzhongFrame->CenterWindow();
  1616. pChengzhongFrame->SetTitle(CLewaimaiString::UTF8ToUnicode(foodinfo.name));
  1617. UINT ret = pChengzhongFrame->ShowModal();
  1618. if (ret == IDOK)
  1619. {
  1620. std::string weight = pChengzhongFrame->m_weight;
  1621. if (atof(weight.c_str()) < 0.001)
  1622. {
  1623. return;
  1624. }
  1625. clickItem.num = weight;
  1626. m_is_show_modal_wnd = false;
  1627. delete pChengzhongFrame;
  1628. }
  1629. else
  1630. {
  1631. m_is_show_modal_wnd = false;
  1632. delete pChengzhongFrame;
  1633. return;
  1634. }
  1635. }
  1636. }
  1637. else
  1638. {
  1639. //如果重量不为0了,说明已经称重了,这时候直接使用这个重量
  1640. clickItem.num = s_weight_value;
  1641. }
  1642. }
  1643. else
  1644. {
  1645. clickItem.is_weight = false;
  1646. if (foodinfo.is_nature == "1")
  1647. {
  1648. //商品有商品属性
  1649. clickItem.is_nature = true;
  1650. if (m_is_show_modal_wnd == true)
  1651. {
  1652. return;
  1653. }
  1654. //先弹框进行选择属性
  1655. CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(1);
  1656. pNatureFrame->SetFoodItemUI(m_cur_click_food_item);
  1657. if (pNatureFrame != NULL)
  1658. {
  1659. m_is_show_modal_wnd = true;
  1660. m_curModalWnd = pNatureFrame;
  1661. pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1662. pNatureFrame->SetIcon(IDI_ICON_DUILIB);
  1663. pNatureFrame->CenterWindow();
  1664. UINT ret = pNatureFrame->ShowModal();
  1665. if (ret == IDOK)
  1666. {
  1667. //保存选择的属性
  1668. std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
  1669. clickItem.natureSelectedArray = natureSelectedArray;
  1670. m_is_show_modal_wnd = false;
  1671. delete pNatureFrame;
  1672. }
  1673. else
  1674. {
  1675. m_is_show_modal_wnd = false;
  1676. delete pNatureFrame;
  1677. return;
  1678. }
  1679. }
  1680. }
  1681. }
  1682. //商品没有商品属性
  1683. bool is_add_new = false;
  1684. int index = m_cur_diandan_order.AddItem(clickItem, is_add_new);
  1685. this->UpdateShopcartShow();
  1686. }
  1687. }
  1688. void CDiandanPageUI::ClickAdd()
  1689. {
  1690. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1691. int nIndex = pList->GetCurSel();
  1692. if (nIndex == -1)
  1693. {
  1694. return;
  1695. }
  1696. m_cur_diandan_order.AddNum(nIndex);
  1697. this->UpdateShopcartShow();
  1698. }
  1699. void CDiandanPageUI::ClickDel()
  1700. {
  1701. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1702. int nIndex = pList->GetCurSel();
  1703. if (nIndex == -1)
  1704. {
  1705. return;
  1706. }
  1707. bool is_del = m_cur_diandan_order.DelNum(nIndex);
  1708. this->UpdateShopcartShow();
  1709. if (m_cur_diandan_order.getItemNum() == 0)
  1710. {
  1711. ShowXuangouPage();
  1712. }
  1713. }
  1714. void CDiandanPageUI::ClickRemove()
  1715. {
  1716. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1717. int nIndex = pList->GetCurSel();
  1718. if (nIndex == -1)
  1719. {
  1720. return;
  1721. }
  1722. m_cur_diandan_order.Remove(nIndex);
  1723. this->UpdateShopcartShow();
  1724. if (m_cur_diandan_order.getItemNum() == 0)
  1725. {
  1726. ShowXuangouPage();
  1727. }
  1728. }
  1729. void CDiandanPageUI::ClickGuige()
  1730. {
  1731. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1732. int nIndex = pList->GetCurSel();
  1733. if (nIndex == -1)
  1734. {
  1735. return;
  1736. }
  1737. bool is_taocan = m_cur_diandan_order.getDiandanOrderItem(nIndex).m_is_taocan;
  1738. if (is_taocan)
  1739. {
  1740. if (m_is_show_modal_wnd == true)
  1741. {
  1742. return;
  1743. }
  1744. //弹出属性框,开始重新选择属性
  1745. CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(2);
  1746. pNatureFrame->SetDiandanOrderItem(m_cur_diandan_order.getDiandanOrderItem(nIndex));
  1747. if (pNatureFrame != NULL)
  1748. {
  1749. m_is_show_modal_wnd = true;
  1750. m_curModalWnd = pNatureFrame;
  1751. pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1752. pNatureFrame->SetIcon(IDI_ICON_DUILIB);
  1753. pNatureFrame->CenterWindow();
  1754. UINT ret = pNatureFrame->ShowModal();
  1755. if (ret == IDOK)
  1756. {
  1757. //保存选择的属性
  1758. std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
  1759. m_cur_diandan_order.UpdateItemGuige(nIndex, natureSelectedArray);
  1760. m_is_show_modal_wnd = false;
  1761. delete pNatureFrame;
  1762. this->UpdateShopcartShow();
  1763. }
  1764. else
  1765. {
  1766. m_is_show_modal_wnd = false;
  1767. delete pNatureFrame;
  1768. return;
  1769. }
  1770. }
  1771. }
  1772. else
  1773. {
  1774. bool is_nature = m_cur_diandan_order.getDiandanOrderItem(nIndex).is_nature;
  1775. if (!is_nature)
  1776. {
  1777. //当前商品没有商品属性
  1778. return;
  1779. }
  1780. //弹出属性框,开始重新选择属性
  1781. CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(2);
  1782. pNatureFrame->SetDiandanOrderItem(m_cur_diandan_order.getDiandanOrderItem(nIndex));
  1783. if (pNatureFrame != NULL)
  1784. {
  1785. pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1786. pNatureFrame->SetIcon(IDI_ICON_DUILIB);
  1787. pNatureFrame->CenterWindow();
  1788. UINT ret = pNatureFrame->ShowModal();
  1789. if (ret == IDOK)
  1790. {
  1791. //保存选择的属性
  1792. std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
  1793. m_cur_diandan_order.UpdateItemGuige(nIndex, natureSelectedArray);
  1794. delete pNatureFrame;
  1795. this->UpdateShopcartShow();
  1796. }
  1797. else
  1798. {
  1799. return;
  1800. }
  1801. }
  1802. }
  1803. }
  1804. void CDiandanPageUI::ClickDabao()
  1805. {
  1806. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1807. int nIndex = pList->GetCurSel();
  1808. if (nIndex == -1)
  1809. {
  1810. return;
  1811. }
  1812. m_cur_diandan_order.SetDabao(nIndex);
  1813. this->UpdateShopcartShow();
  1814. }
  1815. void CDiandanPageUI::ClickQingkong()
  1816. {
  1817. m_cur_diandan_order.Clear();
  1818. this->UpdateShopcartShow();
  1819. ShowXuangouPage();
  1820. }
  1821. //点击存单之后的逻辑
  1822. void CDiandanPageUI::ClickCundan()
  1823. {
  1824. if (m_cur_diandan_order.getItemNum() == 0)
  1825. {
  1826. //没有选任何商品
  1827. return;
  1828. }
  1829. m_cur_diandan_order.m_guadan_time = CLewaimaiTime::DatetimeToString(time(NULL));
  1830. m_guadan_orders.push_back(m_cur_diandan_order);
  1831. //挂单之后,刷新所有显示
  1832. RefreshShow();
  1833. }
  1834. //点击取单之后的逻辑
  1835. void CDiandanPageUI::ClickQudan()
  1836. {
  1837. if (m_guadan_orders.size() == 0)
  1838. {
  1839. return;
  1840. }
  1841. if (m_is_show_modal_wnd == true)
  1842. {
  1843. return;
  1844. }
  1845. CGuadanWnd* pQudanDlg = new CGuadanWnd();
  1846. if (pQudanDlg != NULL)
  1847. {
  1848. m_is_show_modal_wnd = true;
  1849. m_curModalWnd = pQudanDlg;
  1850. pQudanDlg->SetGuadanOrders(m_guadan_orders);
  1851. pQudanDlg->SetPageUI(this);
  1852. pQudanDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1853. pQudanDlg->SetIcon(IDI_ICON_DUILIB);
  1854. pQudanDlg->CenterWindow();
  1855. pQudanDlg->SetTitle(L"取单");
  1856. UINT ret = pQudanDlg->ShowModal();
  1857. if (ret == IDOK)
  1858. {
  1859. //取单成功逻辑处理
  1860. int nQudanNum = pQudanDlg->m_nQudanNum;
  1861. //先对当前的数据进行清空
  1862. RefreshShow();
  1863. //然后保存取单的订单
  1864. m_cur_diandan_order = m_guadan_orders[nQudanNum];
  1865. m_guadan_orders.erase(m_guadan_orders.begin() + nQudanNum);
  1866. RefreshGuadanNum();
  1867. //然后展示购物车
  1868. this->UpdateShopcartShow();
  1869. m_is_show_modal_wnd = false;
  1870. delete pQudanDlg;
  1871. }
  1872. else
  1873. {
  1874. RefreshGuadanNum();
  1875. m_is_show_modal_wnd = false;
  1876. delete pQudanDlg;
  1877. return;
  1878. }
  1879. }
  1880. }
  1881. void CDiandanPageUI::ClickZhengdanMemo()
  1882. {
  1883. if (m_is_show_modal_wnd == true)
  1884. {
  1885. return;
  1886. }
  1887. CMemoWnd* pMemoDlg = new CMemoWnd();
  1888. if (pMemoDlg != NULL)
  1889. {
  1890. m_is_show_modal_wnd = true;
  1891. m_curModalWnd = pMemoDlg;
  1892. pMemoDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1893. pMemoDlg->SetIcon(IDI_ICON_DUILIB);
  1894. pMemoDlg->CenterWindow();
  1895. pMemoDlg->SetTitle(L"整单备注");
  1896. UINT ret = pMemoDlg->ShowModal();
  1897. if (ret == IDOK)
  1898. {
  1899. //保存选择的属性
  1900. std::string sMemo = pMemoDlg->getContent();
  1901. //渲染整单备注的展示
  1902. CLabelUI* pLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_label_zhengdanbeizhu")));
  1903. pLabel->SetText((L"整单备注:" + CLewaimaiString::UTF8ToUnicode(sMemo)).c_str());
  1904. //保存备注,提交订单的时候用
  1905. m_cur_diandan_order.SetMemo(sMemo);
  1906. m_is_show_modal_wnd = false;
  1907. delete pMemoDlg;
  1908. }
  1909. else
  1910. {
  1911. m_is_show_modal_wnd = false;
  1912. delete pMemoDlg;
  1913. return;
  1914. }
  1915. }
  1916. }
  1917. void CDiandanPageUI::ClickGengduoPay()
  1918. {
  1919. if (m_cur_diandan_order.getItemNum() == 0)
  1920. {
  1921. m_pMainWnd->ShowToast(L"请先选择商品再支付");
  1922. return;
  1923. }
  1924. ShowJiesuanPage();
  1925. }
  1926. void CDiandanPageUI::ClickChakanYouhui()
  1927. {
  1928. if (m_is_show_modal_wnd == true)
  1929. {
  1930. return;
  1931. }
  1932. //弹框展示所有的优惠
  1933. CYouhuiShowWnd* pYouhuiDlg = new CYouhuiShowWnd();
  1934. if (pYouhuiDlg != NULL)
  1935. {
  1936. m_is_show_modal_wnd = true;
  1937. m_curModalWnd = pYouhuiDlg;
  1938. pYouhuiDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1939. pYouhuiDlg->SetIcon(IDI_ICON_DUILIB);
  1940. pYouhuiDlg->CenterWindow();
  1941. pYouhuiDlg->SetYouhuiValue(m_shangpinquan_youhui, m_cika_youhui, m_total_member_youhui, m_zhekou_youhui, m_member_zhekou_youhui, m_quanyika_youhui, m_manjian_youhui, m_youhuiquan_youhui, m_rengong_youhui, m_moling_youhui);
  1942. UINT ret = pYouhuiDlg->ShowModal();
  1943. if (ret == IDOK)
  1944. {
  1945. m_is_show_modal_wnd = false;
  1946. delete pYouhuiDlg;
  1947. }
  1948. else
  1949. {
  1950. m_is_show_modal_wnd = false;
  1951. delete pYouhuiDlg;
  1952. return;
  1953. }
  1954. }
  1955. }
  1956. void CDiandanPageUI::ClickMemberLogin()
  1957. {
  1958. if (m_is_show_modal_wnd == true)
  1959. {
  1960. return;
  1961. }
  1962. if (m_is_member == true)
  1963. {
  1964. m_pMainWnd->ShowToast(L"会员已登录!");
  1965. }
  1966. CMemberLoginWnd* pMemberLoginDlg = new CMemberLoginWnd();
  1967. if (pMemberLoginDlg != NULL)
  1968. {
  1969. m_is_show_modal_wnd = true;
  1970. m_curModalWnd = pMemberLoginDlg;
  1971. pMemberLoginDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1972. pMemberLoginDlg->SetIcon(IDI_ICON_DUILIB);
  1973. pMemberLoginDlg->CenterWindow();
  1974. UINT ret = pMemberLoginDlg->ShowModal();
  1975. if (ret == IDOK)
  1976. {
  1977. //这说明会员登录成功了
  1978. m_is_member = true;
  1979. m_member_name = pMemberLoginDlg->m_name;
  1980. m_member_level = pMemberLoginDlg->m_member_level;
  1981. m_member_level_name = pMemberLoginDlg->m_member_level_name;
  1982. m_member_id = pMemberLoginDlg->m_member_id;
  1983. m_card_no = pMemberLoginDlg->m_card_no;
  1984. m_balance = pMemberLoginDlg->m_balance;
  1985. m_phone = pMemberLoginDlg->m_phone;
  1986. m_birthday = pMemberLoginDlg->m_birthday;
  1987. m_sex = pMemberLoginDlg->m_sex;
  1988. m_address = pMemberLoginDlg->m_address;
  1989. m_is_card = pMemberLoginDlg->m_is_card;
  1990. m_point = pMemberLoginDlg->m_point;
  1991. m_open_no_card_payment = pMemberLoginDlg->m_open_no_card_payment;
  1992. m_pay_password = pMemberLoginDlg->m_pay_password;
  1993. m_freeze = pMemberLoginDlg->m_freeze;
  1994. m_card_identify = pMemberLoginDlg->m_card_identify;
  1995. CLabelUI* pMemberInfo = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_member_name")));
  1996. std::wstring memberInfo = L"会员:" + CLewaimaiString::UTF8ToUnicode(m_member_name);
  1997. pMemberInfo->SetText(memberInfo.c_str());
  1998. CButtonUI* pMemberLoginBtn = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_member_login")));
  1999. pMemberLoginBtn->SetVisible(false);
  2000. this->FindSubControl(_T("diandan_page_member_info"))->SetVisible(true);
  2001. this->UpdateJiesuanInfo();
  2002. m_is_show_modal_wnd = false;
  2003. delete pMemberLoginDlg;
  2004. }
  2005. else
  2006. {
  2007. m_is_show_modal_wnd = false;
  2008. delete pMemberLoginDlg;
  2009. return;
  2010. }
  2011. }
  2012. }
  2013. //处理会员退出登陆
  2014. void CDiandanPageUI::ClickMemberLogout()
  2015. {
  2016. m_is_member = false;
  2017. CButtonUI* pMemberLoginBtn = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_member_login")));
  2018. pMemberLoginBtn->SetVisible(true);
  2019. this->FindSubControl(_T("diandan_page_member_info"))->SetVisible(false);
  2020. this->UpdateJiesuanInfo();
  2021. }
  2022. void CDiandanPageUI::ClickMemberInfoShow()
  2023. {
  2024. if (m_is_show_modal_wnd == true)
  2025. {
  2026. return;
  2027. }
  2028. CHuiyuanInfoShowWnd* pMemberLoginDlg = new CHuiyuanInfoShowWnd();
  2029. if (pMemberLoginDlg != NULL)
  2030. {
  2031. m_is_show_modal_wnd = true;
  2032. m_curModalWnd = pMemberLoginDlg;
  2033. pMemberLoginDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  2034. pMemberLoginDlg->SetIcon(IDI_ICON_DUILIB);
  2035. pMemberLoginDlg->CenterWindow();
  2036. pMemberLoginDlg->SetHuiyuanInfo(m_member_name, m_member_level, m_member_level_name, m_card_no, m_balance, m_phone, \
  2037. m_birthday, m_sex, m_address, m_is_card, m_point, m_open_no_card_payment, m_pay_password, m_freeze, m_card_identify);
  2038. UINT ret = pMemberLoginDlg->ShowModal();
  2039. if (ret == IDOK)
  2040. {
  2041. m_is_show_modal_wnd = false;
  2042. delete pMemberLoginDlg;
  2043. }
  2044. else
  2045. {
  2046. m_is_show_modal_wnd = false;
  2047. delete pMemberLoginDlg;
  2048. return;
  2049. }
  2050. }
  2051. }
  2052. void CDiandanPageUI::ClickZhekou()
  2053. {
  2054. if (m_is_show_modal_wnd == true)
  2055. {
  2056. return;
  2057. }
  2058. CNumInputWnd* pNumDlg = new CNumInputWnd();
  2059. if (pNumDlg != NULL)
  2060. {
  2061. m_is_show_modal_wnd = true;
  2062. m_curModalWnd = pNumDlg;
  2063. pNumDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  2064. pNumDlg->SetIcon(IDI_ICON_DUILIB);
  2065. pNumDlg->CenterWindow();
  2066. pNumDlg->SetTitle(L"输入折扣值");
  2067. pNumDlg->SetAttention(L"请输入折扣值(1到100之间的整数)");
  2068. pNumDlg->SetRange(1, 100);
  2069. UINT ret = pNumDlg->ShowModal();
  2070. if (ret == IDOK)
  2071. {
  2072. //这说明折扣输入了
  2073. std::string zhekou = pNumDlg->GetNum();
  2074. CButtonUI* pZhekouEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_zhekou_value")));
  2075. pZhekouEdit->SetText(CLewaimaiString::UTF8ToUnicode(zhekou).c_str());
  2076. this->UpdateJiesuanInfo();
  2077. m_is_show_modal_wnd = false;
  2078. delete pNumDlg;
  2079. }
  2080. else
  2081. {
  2082. m_is_show_modal_wnd = false;
  2083. delete pNumDlg;
  2084. return;
  2085. }
  2086. }
  2087. }
  2088. void CDiandanPageUI::ClickJiajia()
  2089. {
  2090. if (m_is_show_modal_wnd == true)
  2091. {
  2092. return;
  2093. }
  2094. CNumInputWnd* pNumDlg = new CNumInputWnd();
  2095. if (pNumDlg != NULL)
  2096. {
  2097. m_is_show_modal_wnd = true;
  2098. m_curModalWnd = pNumDlg;
  2099. pNumDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  2100. pNumDlg->SetIcon(IDI_ICON_DUILIB);
  2101. pNumDlg->CenterWindow();
  2102. pNumDlg->SetTitle(L"输入加价金额");
  2103. pNumDlg->SetAttention(L"请输入加价金额(0到1000之间的整数)");
  2104. pNumDlg->SetRange(0, 1000);
  2105. UINT ret = pNumDlg->ShowModal();
  2106. if (ret == IDOK)
  2107. {
  2108. //这说明加价金额输入了
  2109. std::string jiajia = pNumDlg->GetNum();
  2110. CButtonUI* pJiajiaEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_jiajia_value")));
  2111. pJiajiaEdit->SetText(CLewaimaiString::UTF8ToUnicode(jiajia).c_str());
  2112. this->UpdateJiesuanInfo();
  2113. m_is_show_modal_wnd = false;
  2114. delete pNumDlg;
  2115. }
  2116. else
  2117. {
  2118. m_is_show_modal_wnd = false;
  2119. delete pNumDlg;
  2120. return;
  2121. }
  2122. }
  2123. }
  2124. void CDiandanPageUI::ClickRengongyouhui()
  2125. {
  2126. if (m_is_show_modal_wnd == true)
  2127. {
  2128. return;
  2129. }
  2130. CNumInputWnd* pNumDlg = new CNumInputWnd();
  2131. if (pNumDlg != NULL)
  2132. {
  2133. m_is_show_modal_wnd = true;
  2134. m_curModalWnd = pNumDlg;
  2135. pNumDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  2136. pNumDlg->SetIcon(IDI_ICON_DUILIB);
  2137. pNumDlg->CenterWindow();
  2138. pNumDlg->SetTitle(L"输入优惠金额");
  2139. pNumDlg->SetAttention(L"请输入优惠金额(0到1000之间的整数)");
  2140. pNumDlg->SetRange(0, 1000);
  2141. UINT ret = pNumDlg->ShowModal();
  2142. if (ret == IDOK)
  2143. {
  2144. //这说明优惠金额输入了
  2145. std::string youhui = pNumDlg->GetNum();
  2146. CButtonUI* pYouhuiEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_youhui_value")));
  2147. pYouhuiEdit->SetText(CLewaimaiString::UTF8ToUnicode(youhui).c_str());
  2148. this->UpdateJiesuanInfo();
  2149. m_is_show_modal_wnd = false;
  2150. delete pNumDlg;
  2151. }
  2152. else
  2153. {
  2154. m_is_show_modal_wnd = false;
  2155. delete pNumDlg;
  2156. return;
  2157. }
  2158. }
  2159. }
  2160. void CDiandanPageUI::ClickSaomaYouhuiquan()
  2161. {
  2162. if (m_is_show_modal_wnd == true)
  2163. {
  2164. return;
  2165. }
  2166. CSaomaYouhuiquanWnd* pSaomaYouhuiquanDlg = new CSaomaYouhuiquanWnd();
  2167. if (pSaomaYouhuiquanDlg != NULL)
  2168. {
  2169. m_is_show_modal_wnd = true;
  2170. m_curModalWnd = pSaomaYouhuiquanDlg;
  2171. pSaomaYouhuiquanDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  2172. pSaomaYouhuiquanDlg->SetIcon(IDI_ICON_DUILIB);
  2173. pSaomaYouhuiquanDlg->CenterWindow();
  2174. pSaomaYouhuiquanDlg->SetTitle(L"扫码使用优惠券");
  2175. UINT ret = pSaomaYouhuiquanDlg->ShowModal();
  2176. if (ret == IDOK)
  2177. {
  2178. //这说明优惠券核销成功了
  2179. m_is_youhuiquan = true;
  2180. m_youhuiquan_id = pSaomaYouhuiquanDlg->m_coupon_id;
  2181. m_coupon_basic_price = pSaomaYouhuiquanDlg->m_coupon_basic_price;
  2182. m_coupon_deadline = pSaomaYouhuiquanDlg->m_coupon_deadline;
  2183. m_coupon_value = pSaomaYouhuiquanDlg->m_coupon_value;
  2184. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_youhuiquan_status")));
  2185. pYouhuiEdit->SetText(L"已使用");
  2186. CButtonUI* pYouhuiquanCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_youhuiquan_btn_cancel")));
  2187. pYouhuiquanCancel->SetVisible(true);
  2188. this->UpdateJiesuanInfo();
  2189. m_is_show_modal_wnd = false;
  2190. delete pSaomaYouhuiquanDlg;
  2191. }
  2192. else
  2193. {
  2194. m_is_show_modal_wnd = false;
  2195. delete pSaomaYouhuiquanDlg;
  2196. return;
  2197. }
  2198. }
  2199. }
  2200. //点击扫码商品券
  2201. void CDiandanPageUI::ClickSaomaShangpinquan()
  2202. {
  2203. if (m_is_show_modal_wnd == true)
  2204. {
  2205. return;
  2206. }
  2207. CSaomaShangpinquanWnd* pSaomaShangpinquanDlg = new CSaomaShangpinquanWnd();
  2208. if (pSaomaShangpinquanDlg != NULL)
  2209. {
  2210. m_is_show_modal_wnd = true;
  2211. m_curModalWnd = pSaomaShangpinquanDlg;
  2212. pSaomaShangpinquanDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  2213. pSaomaShangpinquanDlg->SetIcon(IDI_ICON_DUILIB);
  2214. pSaomaShangpinquanDlg->CenterWindow();
  2215. pSaomaShangpinquanDlg->SetTitle(L"扫码使用商品券");
  2216. UINT ret = pSaomaShangpinquanDlg->ShowModal();
  2217. if (ret == IDOK)
  2218. {
  2219. //这说明商品券核销成功了
  2220. m_is_shangpinquan = true;
  2221. m_shangpinquan_lewaimai_customer_id = pSaomaShangpinquanDlg->m_lewaimai_customer_id;
  2222. m_shangpinquan_id = pSaomaShangpinquanDlg->m_goodscoupon_id;
  2223. m_shangpinquan_name = pSaomaShangpinquanDlg->m_goods_coupon_name;
  2224. m_shangpinquan_foodid = pSaomaShangpinquanDlg->m_bind_foods_id;
  2225. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_shangpinquan_status")));
  2226. pYouhuiEdit->SetText(L"已使用");
  2227. CButtonUI* pShangpinquanCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_shangpinquan_btn_cancel")));
  2228. pShangpinquanCancel->SetVisible(true);
  2229. this->UpdateJiesuanInfo();
  2230. m_is_show_modal_wnd = false;
  2231. delete pSaomaShangpinquanDlg;
  2232. }
  2233. else
  2234. {
  2235. m_is_show_modal_wnd = false;
  2236. delete pSaomaShangpinquanDlg;
  2237. return;
  2238. }
  2239. }
  2240. }
  2241. //点击扫码权益卡
  2242. void CDiandanPageUI::ClickSaomaQuanyika()
  2243. {
  2244. if (m_is_show_modal_wnd == true)
  2245. {
  2246. return;
  2247. }
  2248. CSaomaQuanyikaWnd* pSaomaQuanyikaDlg = new CSaomaQuanyikaWnd();
  2249. if (pSaomaQuanyikaDlg != NULL)
  2250. {
  2251. m_is_show_modal_wnd = true;
  2252. m_curModalWnd = pSaomaQuanyikaDlg;
  2253. pSaomaQuanyikaDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  2254. pSaomaQuanyikaDlg->SetIcon(IDI_ICON_DUILIB);
  2255. pSaomaQuanyikaDlg->CenterWindow();
  2256. pSaomaQuanyikaDlg->SetTitle(L"扫码使用权益卡");
  2257. UINT ret = pSaomaQuanyikaDlg->ShowModal();
  2258. if (ret == IDOK)
  2259. {
  2260. //这说明权益卡核销成功了
  2261. m_is_quanyika = true;
  2262. m_quanyika_discount = pSaomaQuanyikaDlg->m_discount;
  2263. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_quanyika_status")));
  2264. pYouhuiEdit->SetText(L"已使用");
  2265. CButtonUI* pQuanyikaCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_quanyika_btn_cancel")));
  2266. pQuanyikaCancel->SetVisible(true);
  2267. this->UpdateJiesuanInfo();
  2268. m_is_show_modal_wnd = false;
  2269. delete pSaomaQuanyikaDlg;
  2270. }
  2271. else
  2272. {
  2273. m_is_show_modal_wnd = false;
  2274. delete pSaomaQuanyikaDlg;
  2275. return;
  2276. }
  2277. }
  2278. }
  2279. //点击取消使用优惠券
  2280. void CDiandanPageUI::ClickQuxiaoYouhuiquan()
  2281. {
  2282. m_is_youhuiquan = false;
  2283. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_youhuiquan_status")));
  2284. pYouhuiEdit->SetText(L"未使用");
  2285. CButtonUI* pYouhuiquanCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_youhuiquan_btn_cancel")));
  2286. pYouhuiquanCancel->SetVisible(false);
  2287. }
  2288. //点击取消商品券
  2289. void CDiandanPageUI::ClickQuxiaoShangpinquan()
  2290. {
  2291. m_is_shangpinquan = false;
  2292. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_shangpinquan_status")));
  2293. pYouhuiEdit->SetText(L"未使用");
  2294. CButtonUI* pShangpinquanCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_shangpinquan_btn_cancel")));
  2295. pShangpinquanCancel->SetVisible(false);
  2296. }
  2297. //点击取消权益卡
  2298. void CDiandanPageUI::ClickQuxiaoQuanyika()
  2299. {
  2300. m_is_quanyika = false;
  2301. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_quanyika_status")));
  2302. pYouhuiEdit->SetText(L"未使用");
  2303. CButtonUI* pQuanyikaCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_quanyika_btn_cancel")));
  2304. pQuanyikaCancel->SetVisible(false);
  2305. }
  2306. //点击取消次卡
  2307. void CDiandanPageUI::ClickQuxiaoCika()
  2308. {
  2309. m_is_cika = false;
  2310. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_cika_status")));
  2311. pYouhuiEdit->SetText(L"未使用");
  2312. CButtonUI* pCikaCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_cika_btn_cancel")));
  2313. pCikaCancel->SetVisible(false);
  2314. }
  2315. //点击扫码次卡
  2316. void CDiandanPageUI::ClickSaomaCika()
  2317. {
  2318. if (m_is_show_modal_wnd == true)
  2319. {
  2320. return;
  2321. }
  2322. CSaomaCikaWnd* pSaomaCikaDlg = new CSaomaCikaWnd();
  2323. if (pSaomaCikaDlg != NULL)
  2324. {
  2325. m_is_show_modal_wnd = true;
  2326. m_curModalWnd = pSaomaCikaDlg;
  2327. pSaomaCikaDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  2328. pSaomaCikaDlg->SetIcon(IDI_ICON_DUILIB);
  2329. pSaomaCikaDlg->CenterWindow();
  2330. pSaomaCikaDlg->SetTitle(L"扫码使用次卡");
  2331. UINT ret = pSaomaCikaDlg->ShowModal();
  2332. if (ret == IDOK)
  2333. {
  2334. //这说明商品券核销成功了
  2335. m_is_cika = true;
  2336. m_cika_lewaimai_customer_id = pSaomaCikaDlg->m_cika_lewaimai_customer_id;
  2337. m_cika_id = pSaomaCikaDlg->m_timescoupon_id;
  2338. m_cika_deduct_type = pSaomaCikaDlg->m_deduct_type;
  2339. m_cika_discount = pSaomaCikaDlg->m_discount;
  2340. m_cika_discount_value = pSaomaCikaDlg->m_discount_value;
  2341. m_cika_full_reduce = pSaomaCikaDlg->m_full_reduce;
  2342. m_cika_full_reduce_value = pSaomaCikaDlg->m_full_reduce_value;
  2343. m_cika_offer = pSaomaCikaDlg->m_offer;
  2344. m_cika_offer_value = pSaomaCikaDlg->m_offer_value;
  2345. m_cika_bind_foods_id = pSaomaCikaDlg->m_bind_foods_id;
  2346. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_cika_status")));
  2347. pYouhuiEdit->SetText(L"已使用");
  2348. CButtonUI* pCikaCancel = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_cika_btn_cancel")));
  2349. pCikaCancel->SetVisible(true);
  2350. this->UpdateJiesuanInfo();
  2351. m_is_show_modal_wnd = false;
  2352. delete pSaomaCikaDlg;
  2353. }
  2354. else
  2355. {
  2356. m_is_show_modal_wnd = false;
  2357. delete pSaomaCikaDlg;
  2358. return;
  2359. }
  2360. }
  2361. }
  2362. void CDiandanPageUI::ClickCanpai()
  2363. {
  2364. if (m_is_show_modal_wnd == true)
  2365. {
  2366. return;
  2367. }
  2368. CCanpaiWnd* pCanpaiDlg = new CCanpaiWnd();
  2369. if (pCanpaiDlg != NULL)
  2370. {
  2371. m_is_show_modal_wnd = true;
  2372. m_curModalWnd = pCanpaiDlg;
  2373. pCanpaiDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  2374. pCanpaiDlg->SetIcon(IDI_ICON_DUILIB);
  2375. pCanpaiDlg->CenterWindow();
  2376. pCanpaiDlg->SetTitle(L"输入餐牌号");
  2377. UINT ret = pCanpaiDlg->ShowModal();
  2378. if (ret == IDOK)
  2379. {
  2380. //这说明折扣输入了
  2381. std::string canpai = pCanpaiDlg->getContent();
  2382. m_canpai = canpai;
  2383. CButtonUI* pCanpaiEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_canpaihao")));
  2384. pCanpaiEdit->SetText((L"餐牌号 " + CLewaimaiString::UTF8ToUnicode(canpai)).c_str());
  2385. this->UpdateJiesuanInfo();
  2386. m_is_show_modal_wnd = false;
  2387. delete pCanpaiDlg;
  2388. }
  2389. else
  2390. {
  2391. m_is_show_modal_wnd = false;
  2392. delete pCanpaiDlg;
  2393. return;
  2394. }
  2395. }
  2396. }
  2397. //获取通用参数,任何支付方式都要用到的参数,个性化参数在弹框里面处理
  2398. //参考文档 http://apidoc.zhipuzi.com/index.php/home/item/show?item_id=4
  2399. std::map<std::string, std::string> CDiandanPageUI::GetSendorderParams()
  2400. {
  2401. std::map<std::string, std::string> params;
  2402. params["order_no"] = CRandomHelper::GetRandString(20);
  2403. //构建food_list参数
  2404. params["food_list"] = m_cur_diandan_order.getDiandanFoodlistParam();
  2405. params["foodpackage_array"] = m_cur_diandan_order.getDiandanTaocanParam();
  2406. params["person_num"] = "1";
  2407. params["table_name"] = m_canpai;
  2408. params["note"] = m_cur_diandan_order.GetMemo();
  2409. params["dabao_price"] = CLewaimaiString::DoubleToString(m_dabao, 2);
  2410. params["food_price"] = CLewaimaiString::DoubleToString(m_cur_diandan_order.getTotalPrice(), 2);
  2411. params["total_price"] = CLewaimaiString::DoubleToString(m_cur_diandan_order.getTotalPrice() + m_dabao, 2);
  2412. CEditUI* pZhekouEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_zhekou_value")));
  2413. std::wstring ws_zhekou = pZhekouEdit->GetText();
  2414. params["discount"] = CLewaimaiString::UnicodeToUTF8(ws_zhekou);
  2415. params["coupon"] = CLewaimaiString::DoubleToString(m_rengong_youhui, 2);
  2416. params["price_plus"] = CLewaimaiString::DoubleToString(m_jiajia, 2);
  2417. params["price_moling"] = CLewaimaiString::DoubleToString(m_moling_youhui, 2);
  2418. params["yingshou_value"] = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  2419. params["shishou_value"] = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  2420. params["zhaoling_value"] = "0";
  2421. params["zhifu_type"] = "";
  2422. if (m_is_youhuiquan)
  2423. {
  2424. params["coupon_id"] = m_youhuiquan_id;
  2425. }
  2426. if (m_is_cika)
  2427. {
  2428. params["timescoupon_id"] = m_cika_id;
  2429. params["lewaimai_customer_id"] = m_cika_lewaimai_customer_id;
  2430. }
  2431. if (m_is_shangpinquan)
  2432. {
  2433. params["goodscoupon_id"] = m_shangpinquan_id;
  2434. }
  2435. if (m_is_quanyika)
  2436. {
  2437. params["is_eq_card_discount"] = "1";
  2438. params["eq_card_discount_value"] = m_quanyika_discount;
  2439. }
  2440. else
  2441. {
  2442. params["is_eq_card_discount"] = "0";
  2443. }
  2444. if (m_is_member)
  2445. {
  2446. params["member_id"] = m_member_id;
  2447. params["member_level"] = m_member_level;
  2448. if (m_is_member_zhekou)
  2449. {
  2450. params["member_level_value"] = m_member_zhekou_value;
  2451. }
  2452. else
  2453. {
  2454. params["member_level_value"] = 10;
  2455. }
  2456. }
  2457. if (m_is_cika == true)
  2458. {
  2459. params["time_coupon_type"] = m_cika_deduct_type;
  2460. params["time_coupon_discount_value"] = m_cika_discount_value;
  2461. params["time_coupon_full_reduce_value"] = m_cika_full_reduce_value;
  2462. params["time_coupon_offer_value"] = m_cika_offer_value;
  2463. params["time_coupon_band_food_value"] = CLewaimaiString::DoubleToString(m_cika_youhui, 2);
  2464. }
  2465. if (m_is_shangpinquan)
  2466. {
  2467. params["goods_coupon_band_food_value"] = CLewaimaiString::DoubleToString(m_shangpinquan_youhui, 2);
  2468. }
  2469. if (m_manjian_youhui > 0)
  2470. {
  2471. params["promotion_value"] = CLewaimaiString::DoubleToString(m_manjian_youhui, 2);
  2472. }
  2473. if (m_youhuiquan_youhui > 0)
  2474. {
  2475. params["coupon_value"] = CLewaimaiString::DoubleToString(m_youhuiquan_youhui, 2);
  2476. }
  2477. if (m_total_member_youhui > 0)
  2478. {
  2479. params["member_delete"] = CLewaimaiString::DoubleToString(m_total_member_youhui, 2);
  2480. }
  2481. if (m_member_zhekou_youhui > 0)
  2482. {
  2483. params["member_discount_money"] = CLewaimaiString::DoubleToString(m_member_zhekou_youhui, 2);
  2484. }
  2485. if (m_zhekou_youhui > 0)
  2486. {
  2487. params["shop_discount_money"] = CLewaimaiString::DoubleToString(m_zhekou_youhui, 2);
  2488. }
  2489. if (m_cika_youhui > 0)
  2490. {
  2491. params["timescoupon_discount_money"] = CLewaimaiString::DoubleToString(m_cika_youhui, 2);
  2492. }
  2493. if (m_quanyika_youhui > 0)
  2494. {
  2495. params["eq_card_discount_money"] = CLewaimaiString::DoubleToString(m_quanyika_youhui, 2);
  2496. }
  2497. params["total_delete_money"] = CLewaimaiString::DoubleToString(m_total_youhui, 2);
  2498. return params;
  2499. }
  2500. void CDiandanPageUI::StartWeixinzhifuShoukuan(std::string fukuanma)
  2501. {
  2502. if (m_is_show_modal_wnd == true)
  2503. {
  2504. return;
  2505. }
  2506. if (m_cur_diandan_order.getItemNum() == 0)
  2507. {
  2508. m_pMainWnd->ShowToast(L"请先选择商品再支付");
  2509. return;
  2510. }
  2511. CWeixinzhifuShoukuanWnd* pShoukuanWnd = new CWeixinzhifuShoukuanWnd;
  2512. if (pShoukuanWnd != NULL)
  2513. {
  2514. m_is_show_modal_wnd = true;
  2515. m_curModalWnd = pShoukuanWnd;
  2516. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  2517. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  2518. pShoukuanWnd->CenterWindow();
  2519. std::string format_string = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  2520. std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
  2521. pShoukuanWnd->InitMoney(watchValue);
  2522. //这里要对提交订单的参数进行组装,然后方便请求
  2523. pShoukuanWnd->SetCommonParams(GetSendorderParams());
  2524. if (fukuanma != "")
  2525. {
  2526. pShoukuanWnd->InitFukuanma(fukuanma);
  2527. }
  2528. UINT ret = pShoukuanWnd->ShowModal();
  2529. if (ret == IDOK)
  2530. {
  2531. int fukuanma_type = pShoukuanWnd->m_fukuanma_type;
  2532. std::string zhifu_type;
  2533. if (fukuanma_type == 1)
  2534. {
  2535. zhifu_type = "weixinzhifu";
  2536. }
  2537. else if (fukuanma_type == 2)
  2538. {
  2539. zhifu_type = "zhifubao";
  2540. }
  2541. else if (fukuanma_type == 3)
  2542. {
  2543. zhifu_type = "yunshanfu";
  2544. }
  2545. //说明收款成功了,需要进行一些后续的处理
  2546. this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, zhifu_type);
  2547. m_pMainWnd->ShowToast(L"收款成功!");
  2548. }
  2549. else
  2550. {
  2551. int a = 1;
  2552. }
  2553. m_is_show_modal_wnd = false;
  2554. delete pShoukuanWnd;
  2555. }
  2556. }
  2557. void CDiandanPageUI::StartHuiyuanShoukuan()
  2558. {
  2559. if (m_is_show_modal_wnd == true)
  2560. {
  2561. return;
  2562. }
  2563. if (m_cur_diandan_order.getItemNum() == 0)
  2564. {
  2565. m_pMainWnd->ShowToast(L"请先选择商品再支付");
  2566. return;
  2567. }
  2568. if (m_is_member == false)
  2569. {
  2570. m_pMainWnd->ShowToast(L"请先登录会员再使用会员支付");
  2571. return;
  2572. }
  2573. CHuiyuanShoukuanWnd* pShoukuanWnd = new CHuiyuanShoukuanWnd();
  2574. if (pShoukuanWnd != NULL)
  2575. {
  2576. m_is_show_modal_wnd = true;
  2577. m_curModalWnd = pShoukuanWnd;
  2578. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  2579. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  2580. pShoukuanWnd->CenterWindow();
  2581. std::string format_string = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  2582. std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
  2583. pShoukuanWnd->InitMoney(watchValue);
  2584. //把会员登录的信息传递进去
  2585. pShoukuanWnd->SetMemberInfo(m_member_id, m_card_no, m_balance, m_member_name, m_member_level_name);
  2586. //这里要对提交订单的参数进行组装,然后方便请求
  2587. pShoukuanWnd->SetCommonParams(GetSendorderParams());
  2588. /*
  2589. if (m_is_start_catch && m_catch_string.length() == 18)
  2590. {
  2591. pShoukuanWnd->InitFukuanma(m_catch_string);
  2592. }
  2593. }*/
  2594. UINT ret = pShoukuanWnd->ShowModal();
  2595. if (ret == IDOK)
  2596. {
  2597. std::string balance = pShoukuanWnd->m_balance;
  2598. std::string member_number = pShoukuanWnd->m_member_number;
  2599. //说明收款成功了,需要进行一些后续的处理
  2600. this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, "huiyuanzhifu", balance, member_number);
  2601. m_pMainWnd->ShowToast(L"收款成功!");
  2602. }
  2603. m_is_show_modal_wnd = false;
  2604. delete pShoukuanWnd;
  2605. }
  2606. }
  2607. //开始进行现金收款
  2608. void CDiandanPageUI::StartXianjinShoukuan()
  2609. {
  2610. if (m_is_show_modal_wnd == true)
  2611. {
  2612. return;
  2613. }
  2614. if (m_cur_diandan_order.getItemNum() == 0)
  2615. {
  2616. m_pMainWnd->ShowToast(L"请先选择商品再支付");
  2617. return;
  2618. }
  2619. CXianjinShoukuanWnd* pShoukuanWnd = new CXianjinShoukuanWnd();
  2620. if (pShoukuanWnd != NULL)
  2621. {
  2622. m_is_show_modal_wnd = true;
  2623. m_curModalWnd = pShoukuanWnd;
  2624. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  2625. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  2626. pShoukuanWnd->CenterWindow();
  2627. std::string format_string = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  2628. std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
  2629. pShoukuanWnd->InitMoney(watchValue);
  2630. //这里要对提交订单的参数进行组装,然后方便请求
  2631. pShoukuanWnd->SetCommonParams(GetSendorderParams());
  2632. /*
  2633. if (m_is_start_catch && m_catch_string.length() == 18)
  2634. {
  2635. pShoukuanWnd->InitFukuanma(m_catch_string);
  2636. }
  2637. }*/
  2638. UINT ret = pShoukuanWnd->ShowModal();
  2639. if (ret == IDOK)
  2640. {
  2641. m_shishou_value = pShoukuanWnd->m_shishou;
  2642. m_zhaoling_value = pShoukuanWnd->m_zhaoling;
  2643. //说明收款成功了,需要进行一些后续的处理
  2644. this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, "xianjinzhifu");
  2645. m_pMainWnd->ShowToast(L"收款成功!");
  2646. }
  2647. m_is_show_modal_wnd = false;
  2648. delete pShoukuanWnd;
  2649. }
  2650. }
  2651. void CDiandanPageUI::StartFulikaShoukuan()
  2652. {
  2653. if (m_is_show_modal_wnd == true)
  2654. {
  2655. return;
  2656. }
  2657. if (m_cur_diandan_order.getItemNum() == 0)
  2658. {
  2659. m_pMainWnd->ShowToast(L"请先选择商品再支付");
  2660. return;
  2661. }
  2662. CFulikaShoukuanWnd* pShoukuanWnd = new CFulikaShoukuanWnd();
  2663. if (pShoukuanWnd != NULL)
  2664. {
  2665. m_is_show_modal_wnd = true;
  2666. m_curModalWnd = pShoukuanWnd;
  2667. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  2668. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  2669. pShoukuanWnd->CenterWindow();
  2670. std::string format_string = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  2671. std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
  2672. pShoukuanWnd->InitMoney(watchValue);
  2673. //这里要对提交订单的参数进行组装,然后方便请求
  2674. pShoukuanWnd->SetCommonParams(GetSendorderParams());
  2675. /*
  2676. if (m_is_start_catch && m_catch_string.length() == 18)
  2677. {
  2678. pShoukuanWnd->InitFukuanma(m_catch_string);
  2679. }
  2680. }*/
  2681. UINT ret = pShoukuanWnd->ShowModal();
  2682. if (ret == IDOK)
  2683. {
  2684. //说明收款成功了,需要进行一些后续的处理
  2685. this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, "fulikazhifu");
  2686. m_pMainWnd->ShowToast(L"收款成功!");
  2687. }
  2688. m_is_show_modal_wnd = false;
  2689. delete pShoukuanWnd;
  2690. }
  2691. }
  2692. void CDiandanPageUI::StartZidingyiShoukuan(std::wstring name, std::wstring selfpay_id)
  2693. {
  2694. if (m_is_show_modal_wnd == true)
  2695. {
  2696. return;
  2697. }
  2698. if (m_cur_diandan_order.getItemNum() == 0)
  2699. {
  2700. m_pMainWnd->ShowToast(L"请先选择商品再支付");
  2701. return;
  2702. }
  2703. CZidingyiShoukuanWnd* pShoukuanWnd = new CZidingyiShoukuanWnd();
  2704. if (pShoukuanWnd != NULL)
  2705. {
  2706. m_is_show_modal_wnd = true;
  2707. m_curModalWnd = pShoukuanWnd;
  2708. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  2709. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  2710. pShoukuanWnd->CenterWindow();
  2711. std::string format_string = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  2712. std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
  2713. pShoukuanWnd->InitMoney(watchValue);
  2714. //这里要对提交订单的参数进行组装,然后方便请求
  2715. pShoukuanWnd->SetCommonParams(GetSendorderParams());
  2716. /*
  2717. if (m_is_start_catch && m_catch_string.length() == 18)
  2718. {
  2719. pShoukuanWnd->InitFukuanma(m_catch_string);
  2720. }
  2721. }*/
  2722. pShoukuanWnd->SetZidingyiName(name);
  2723. pShoukuanWnd->SetZidingyiId(selfpay_id);
  2724. UINT ret = pShoukuanWnd->ShowModal();
  2725. if (ret == IDOK)
  2726. {
  2727. //说明收款成功了,需要进行一些后续的处理
  2728. this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, "zidingyizhifu");
  2729. m_pMainWnd->ShowToast(L"收款成功!");
  2730. }
  2731. m_is_show_modal_wnd = false;
  2732. delete pShoukuanWnd;
  2733. }
  2734. }
  2735. void CDiandanPageUI::UpdateFoodStock(std::string food_stock)
  2736. {
  2737. rapidjson::Document doc;
  2738. rapidjson::Document::AllocatorType &allocator = doc.GetAllocator(); //获取分配器
  2739. Value& data = CLewaimaiJson::StringToJson(food_stock, allocator);
  2740. for (rapidjson::SizeType i = 0; i < data.Size(); ++i)
  2741. {
  2742. std::string food_id = data[i]["food_id"].GetString();
  2743. std::string stock = data[i]["stock"].GetString();
  2744. CSqlite3 sqlite;
  2745. sqlite.UpdateFoodStock(food_id, stock);
  2746. }
  2747. }
  2748. //扫描了商品条码的逻辑处理
  2749. bool CDiandanPageUI::SaomiaoBarcode(std::string barcode)
  2750. {
  2751. CSqlite3 sqlite;
  2752. CFood foodinfo;
  2753. bool ret = sqlite.GetFoodByBarcode(barcode, foodinfo);
  2754. if (ret == false)
  2755. {
  2756. //说明没找到对应的商品条码
  2757. return false;
  2758. }
  2759. //这里说明找到了,那么处理添加购物车逻辑,扫码的情况下,这里不管有没有属性,都按没属性处理,不管有没有称重都按没称重处理(以后标签秤可能会修改)
  2760. if (foodinfo.stockvalid == "1" && atof(foodinfo.stock.c_str()) < 1)
  2761. {
  2762. //库存为0了,不做任何处理
  2763. m_pMainWnd->ShowToast(L"该商品已售完");
  2764. //只要找到了就返回true
  2765. return true;
  2766. }
  2767. CDiandanOrderItem clickItem;
  2768. clickItem.food_id = foodinfo.id;
  2769. clickItem.food_name = foodinfo.name;
  2770. clickItem.type_id = foodinfo.type_id;
  2771. clickItem.price = foodinfo.price;
  2772. clickItem.is_dabao = false;
  2773. clickItem.dabao_money = foodinfo.dabao_money;
  2774. clickItem.num = "1";
  2775. if (foodinfo.member_price_used == "1")
  2776. {
  2777. clickItem.is_member_price_used = true;
  2778. }
  2779. else
  2780. {
  2781. clickItem.is_member_price_used = false;
  2782. }
  2783. //处理会员价的json
  2784. std::string member_price_json = foodinfo.member_price_json;
  2785. rapidjson::Document document;
  2786. document.Parse(member_price_json.c_str());
  2787. rapidjson::Value& member_price = document;
  2788. for (rapidjson::SizeType i = 0; i < member_price.Size(); ++i)
  2789. {
  2790. rapidjson::Value& member_price_info = member_price[i];
  2791. MemberPrice newPirce;
  2792. newPirce.id = CLewaimaiJson::ToString(member_price_info["id"]);
  2793. newPirce.level = CLewaimaiJson::ToString(member_price_info["level"]);
  2794. newPirce.price = CLewaimaiJson::ToString(member_price_info["price"]);
  2795. clickItem.m_member_price.push_back(newPirce);
  2796. }
  2797. //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
  2798. clickItem.SetFoodInfo(foodinfo);
  2799. clickItem.SetIsTaocan(false);
  2800. clickItem.is_weight = false;
  2801. clickItem.is_nature = false;
  2802. //商品没有商品属性
  2803. bool is_add_new = false;
  2804. int index = m_cur_diandan_order.AddItem(clickItem, is_add_new);
  2805. this->UpdateShopcartShow();
  2806. return true;
  2807. }
  2808. bool CDiandanPageUI::BiaoqianchengSaomaBarcode(std::string barcode)
  2809. {
  2810. //先根据设置,分辨条码格式
  2811. std::string bianma;
  2812. std::string money;
  2813. std::string weight;
  2814. std::string jiaoyan;
  2815. std::string setting_tiaomacheng_geshi = CSetting::GetInstance()->GetParam("setting_tiaomacheng_geshi");
  2816. if (setting_tiaomacheng_geshi == "1")
  2817. {
  2818. if (barcode.length() != 12 && barcode.length() != 13)
  2819. {
  2820. //与该模式长度不匹配
  2821. return false;
  2822. }
  2823. if (barcode.length() == 12)
  2824. {
  2825. barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
  2826. }
  2827. //13位【FWWWWWWEEEEEC】
  2828. bianma = barcode.substr(1, 6);
  2829. money = barcode.substr(7, 5);
  2830. jiaoyan = barcode.substr(12, 1);
  2831. }
  2832. else if (setting_tiaomacheng_geshi == "2")
  2833. {
  2834. if (barcode.length() != 12 && barcode.length() != 13)
  2835. {
  2836. //与该模式长度不匹配
  2837. return false;
  2838. }
  2839. if (barcode.length() == 12)
  2840. {
  2841. barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
  2842. }
  2843. //13位【FWWWWWWNNNNNC】
  2844. bianma = barcode.substr(1, 6);
  2845. weight = barcode.substr(7, 5);
  2846. jiaoyan = barcode.substr(12, 1);
  2847. }
  2848. else if (setting_tiaomacheng_geshi == "3")
  2849. {
  2850. if (barcode.length() != 12 && barcode.length() != 13)
  2851. {
  2852. //与该模式长度不匹配
  2853. return false;
  2854. }
  2855. if (barcode.length() == 12)
  2856. {
  2857. barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
  2858. }
  2859. //13位【FFWWWWWEEEEEC】
  2860. bianma = barcode.substr(2, 5);
  2861. money = barcode.substr(7, 5);
  2862. jiaoyan = barcode.substr(12, 1);
  2863. }
  2864. else if (setting_tiaomacheng_geshi == "4")
  2865. {
  2866. if (barcode.length() != 12 && barcode.length() != 13)
  2867. {
  2868. //与该模式长度不匹配
  2869. return false;
  2870. }
  2871. if (barcode.length() == 12)
  2872. {
  2873. barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
  2874. }
  2875. //13位【FFWWWWWNNNNNC】
  2876. bianma = barcode.substr(2, 5);
  2877. weight = barcode.substr(7, 5);
  2878. jiaoyan = barcode.substr(12, 1);
  2879. }
  2880. else if (setting_tiaomacheng_geshi == "5")
  2881. {
  2882. if (barcode.length() != 17 && barcode.length() != 18)
  2883. {
  2884. //与该模式长度不匹配
  2885. return false;
  2886. }
  2887. if (barcode.length() == 17)
  2888. {
  2889. barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
  2890. }
  2891. //18位【FWWWWWWEEEEENNNNNC】
  2892. bianma = barcode.substr(1, 6);
  2893. money = barcode.substr(7, 5);
  2894. weight = barcode.substr(12, 5);
  2895. jiaoyan = barcode.substr(17, 1);
  2896. }
  2897. else if (setting_tiaomacheng_geshi == "6")
  2898. {
  2899. if (barcode.length() != 17 && barcode.length() != 18)
  2900. {
  2901. //与该模式长度不匹配
  2902. return false;
  2903. }
  2904. if (barcode.length() == 17)
  2905. {
  2906. barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
  2907. }
  2908. //18位【FWWWWWWNNNNNEEEEEC】
  2909. bianma = barcode.substr(1, 6);
  2910. weight = barcode.substr(7, 5);
  2911. money = barcode.substr(12, 5);
  2912. jiaoyan = barcode.substr(17, 1);
  2913. }
  2914. else if (setting_tiaomacheng_geshi == "7")
  2915. {
  2916. if (barcode.length() != 17 && barcode.length() != 18)
  2917. {
  2918. //与该模式长度不匹配
  2919. return false;
  2920. }
  2921. if (barcode.length() == 17)
  2922. {
  2923. barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
  2924. }
  2925. //18位【FFWWWWWEEEEENNNNNC】
  2926. bianma = barcode.substr(2, 5);
  2927. money = barcode.substr(7, 5);
  2928. weight = barcode.substr(12, 5);
  2929. jiaoyan = barcode.substr(17, 1);
  2930. }
  2931. else if (setting_tiaomacheng_geshi == "8")
  2932. {
  2933. if (barcode.length() != 17 && barcode.length() != 18)
  2934. {
  2935. //与该模式长度不匹配
  2936. return false;
  2937. }
  2938. if (barcode.length() == 17)
  2939. {
  2940. barcode = CLewaimaiString::BuZifuLeft(barcode, 1, '0');
  2941. }
  2942. //18位【FFWWWWWNNNNNEEEEEC】
  2943. bianma = barcode.substr(2, 5);
  2944. weight = barcode.substr(7, 5);
  2945. money = barcode.substr(12, 5);
  2946. jiaoyan = barcode.substr(17, 1);
  2947. }
  2948. //先检查编码是否存在,如果编码不存在直接返回false
  2949. int i_bianma = atoi(bianma.c_str());
  2950. if (i_bianma < 1)
  2951. {
  2952. return false;
  2953. }
  2954. CFood foodinfo;
  2955. CSqlite3 sqlite;
  2956. bool ret = sqlite.GetFoodByPluBianma(std::to_string(i_bianma), foodinfo);
  2957. if (ret == false)
  2958. {
  2959. //没找到这个商品
  2960. return false;
  2961. }
  2962. //走到这里是找到商品了,那么就开始计算价格和重量
  2963. double d_money = 0;
  2964. double d_weight = 0;
  2965. //如果有价格,优先用价格
  2966. if (money.length() > 0)
  2967. {
  2968. //这个出来的单位是分,要把单位转成员
  2969. d_money = atof(money.c_str());
  2970. d_money = d_money / 100;
  2971. //根据价格计算重量
  2972. d_weight = d_money / atof(foodinfo.price.c_str());
  2973. }
  2974. else if (weight.length() > 0)
  2975. {
  2976. //这个单位是克,要转化成千克
  2977. d_weight = atof(weight.c_str());
  2978. d_weight = d_weight / 1000;
  2979. //有重量了,其实不需要计算价格,价格加到购物车的时候会自己计算
  2980. }
  2981. else
  2982. {
  2983. //价格和重量都没有,这是异常情况
  2984. return false;
  2985. }
  2986. if (foodinfo.stockvalid == "1" && atof(foodinfo.stock.c_str()) < d_weight)
  2987. {
  2988. //库存为0了,不做任何处理
  2989. m_pMainWnd->ShowToast(L"该商品已售完");
  2990. //只要找到了就返回true
  2991. return true;
  2992. }
  2993. CDiandanOrderItem clickItem;
  2994. clickItem.food_id = foodinfo.id;
  2995. clickItem.food_name = foodinfo.name;
  2996. clickItem.type_id = foodinfo.type_id;
  2997. clickItem.price = foodinfo.price;
  2998. clickItem.is_dabao = false;
  2999. clickItem.dabao_money = foodinfo.dabao_money;
  3000. clickItem.num = CLewaimaiString::DoubleToString(d_weight, 3); //重量保留3位小数
  3001. if (foodinfo.member_price_used == "1")
  3002. {
  3003. clickItem.is_member_price_used = true;
  3004. }
  3005. else
  3006. {
  3007. clickItem.is_member_price_used = false;
  3008. }
  3009. //处理会员价的json
  3010. std::string member_price_json = foodinfo.member_price_json;
  3011. rapidjson::Document document;
  3012. document.Parse(member_price_json.c_str());
  3013. rapidjson::Value& member_price = document;
  3014. for (rapidjson::SizeType i = 0; i < member_price.Size(); ++i)
  3015. {
  3016. rapidjson::Value& member_price_info = member_price[i];
  3017. MemberPrice newPirce;
  3018. newPirce.id = member_price_info["id"].GetString();
  3019. newPirce.level = member_price_info["level"].GetString();
  3020. newPirce.price = member_price_info["price"].GetString();
  3021. clickItem.m_member_price.push_back(newPirce);
  3022. }
  3023. //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
  3024. clickItem.SetFoodInfo(foodinfo);
  3025. clickItem.SetIsTaocan(false);
  3026. clickItem.is_weight = true;
  3027. clickItem.is_nature = false;
  3028. //商品没有商品属性
  3029. bool is_add_new = false;
  3030. int index = m_cur_diandan_order.AddItem(clickItem, is_add_new);
  3031. this->UpdateShopcartShow();
  3032. return true;
  3033. }
  3034. //开始搜索某个商品名字
  3035. void CDiandanPageUI::StartSearchFood(std::string foodname)
  3036. {
  3037. //展示删除按钮
  3038. CButtonUI* pClear = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_food_search_clear")));
  3039. pClear->SetVisible(true);
  3040. //隐藏商品分类展示
  3041. CVerticalLayoutUI* pFoodtype = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_fenlei_layout_scrolllayout")));
  3042. pFoodtype->SetVisible(false);
  3043. if (m_cur_type_id != "sousuo")
  3044. {
  3045. m_type_id_before_sousuo = m_cur_type_id;
  3046. }
  3047. m_cur_type_id = "sousuo";
  3048. m_sousuo_foodname = foodname;
  3049. CLabelUI* pTishi = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_food_search_tishi")));
  3050. pTishi->SetVisible(false);
  3051. this->InitFoodShow();
  3052. }
  3053. //停止搜索商品
  3054. void CDiandanPageUI::StopSerachFood()
  3055. {
  3056. //隐藏删除按钮
  3057. CButtonUI* pClear = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_food_search_clear")));
  3058. pClear->SetVisible(false);
  3059. //展示商品分类展示
  3060. CVerticalLayoutUI* pFoodtype = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_fenlei_layout_scrolllayout")));
  3061. pFoodtype->SetVisible(true);
  3062. m_cur_type_id = m_type_id_before_sousuo;
  3063. CLabelUI* pTishi = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_food_search_tishi")));
  3064. pTishi->SetVisible(true);
  3065. this->InitFoodShow();
  3066. }
  3067. void CDiandanPageUI::StartWorkAfterShoukuan(std::string kucunstring, std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)
  3068. {
  3069. //针对现金收款成功,单独做一个打开钱箱的判断处理
  3070. if (shoukuan_type == "xianjinzhifu")
  3071. {
  3072. std::string setting_is_diannei_xianjin_qianxiang = CSetting::GetInstance()->GetParam("setting_is_diannei_xianjin_qianxiang");
  3073. if (setting_is_diannei_xianjin_qianxiang == "1")
  3074. {
  3075. //打开钱箱
  3076. CPosPrinter printer;
  3077. printer.OpenQianxiang();
  3078. }
  3079. }
  3080. //更新商品库存
  3081. this->UpdateFoodStock(kucunstring);
  3082. //处理打印
  3083. CDiandanOrder order = this->GetPrintOrderinfo(take_food_code, show_trade_no, shoukuan_type, balance, member_number);
  3084. CPosPrinter printer;
  3085. printer.PrintDiandanOrder(order);
  3086. //最后才初始化页面信息
  3087. RefreshShow();
  3088. }
  3089. CDiandanOrder CDiandanPageUI::GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)
  3090. {
  3091. m_cur_diandan_order.shopname = CShopinfo::GetInstance()->m_shop_name;
  3092. m_cur_diandan_order.take_food_code = take_food_code;
  3093. m_cur_diandan_order.show_trade_no = show_trade_no;
  3094. m_cur_diandan_order.balance = balance;
  3095. m_cur_diandan_order.member_number = member_number;
  3096. if (shoukuan_type == "weixinzhifu")
  3097. {
  3098. m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"微信支付");
  3099. }
  3100. else if (shoukuan_type == "zhifubao")
  3101. {
  3102. m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"支付宝");
  3103. }
  3104. else if (shoukuan_type == "yunshanfu")
  3105. {
  3106. m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"云闪付");
  3107. }
  3108. else if (shoukuan_type == "huiyuanzhifu")
  3109. {
  3110. m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"会员支付");
  3111. }
  3112. else if (shoukuan_type == "xianjinzhifu")
  3113. {
  3114. m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"现金支付");
  3115. }
  3116. else if (shoukuan_type == "fulikazhifu")
  3117. {
  3118. m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"福利卡支付");
  3119. }
  3120. else if (shoukuan_type == "zidingyizhifu")
  3121. {
  3122. m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"自定义支付");
  3123. }
  3124. m_cur_diandan_order.order_from = 1;
  3125. m_cur_diandan_order.init_time = CLewaimaiTime::DatetimeToString(time(NULL));
  3126. m_cur_diandan_order.m_shangpinquan_youhui = CLewaimaiString::DoubleToString(m_shangpinquan_youhui, 2);
  3127. m_cur_diandan_order.m_cika_youhui = CLewaimaiString::DoubleToString(m_cika_youhui, 2);
  3128. m_cur_diandan_order.m_total_member_youhui = CLewaimaiString::DoubleToString(m_total_member_youhui, 2);
  3129. m_cur_diandan_order.m_zhekou_youhui = CLewaimaiString::DoubleToString(m_zhekou_youhui, 2);
  3130. m_cur_diandan_order.m_member_zhekou_youhui = CLewaimaiString::DoubleToString(m_member_zhekou_youhui, 2);
  3131. m_cur_diandan_order.m_quanyika_youhui = CLewaimaiString::DoubleToString(m_quanyika_youhui, 2);
  3132. m_cur_diandan_order.m_manjian_youhui = CLewaimaiString::DoubleToString(m_manjian_youhui, 2);
  3133. m_cur_diandan_order.m_youhuiquan_youhui = CLewaimaiString::DoubleToString(m_youhuiquan_youhui, 2);
  3134. m_cur_diandan_order.m_rengong_youhui = CLewaimaiString::DoubleToString(m_rengong_youhui, 2);
  3135. m_cur_diandan_order.m_moling_youhui = CLewaimaiString::DoubleToString(m_moling_youhui, 2);
  3136. m_cur_diandan_order.m_jiajia = CLewaimaiString::DoubleToString(m_jiajia, 2);
  3137. m_cur_diandan_order.m_shishou_value = m_shishou_value;
  3138. m_cur_diandan_order.m_zhaoling_value = m_zhaoling_value;
  3139. m_cur_diandan_order.m_zhekou_value = m_zhekou_value;
  3140. m_cur_diandan_order.m_dabao_money = CLewaimaiString::DoubleToString(m_cur_diandan_order.getDabaoMoney(), 2);
  3141. m_cur_diandan_order.m_total_price = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  3142. m_cur_diandan_order.m_canpai = m_canpai;
  3143. for (std::vector<CDiandanOrderItem>::iterator it = m_cur_diandan_order.m_items.begin(); it != m_cur_diandan_order.m_items.end(); it++)
  3144. {
  3145. CDiandanOrderItemPrint itemPrint;
  3146. itemPrint.m_food_name = it->getNameWanzhengShow();
  3147. itemPrint.m_quantity = it->num;
  3148. itemPrint.m_item_price = it->getSinglePrice();
  3149. itemPrint.m_type_id = it->type_id;
  3150. if (it->m_is_taocan == true)
  3151. {
  3152. itemPrint.is_taocan = true;
  3153. }
  3154. m_cur_diandan_order.m_items_print.push_back(itemPrint);
  3155. if (it->m_is_taocan == true)
  3156. {
  3157. //开始保存套餐里面的商品详情,主要用于厨房打印
  3158. CFoodpackage foodpackageinfo;
  3159. foodpackageinfo = it->GetFoodpackageInfo();
  3160. std::string nature = foodpackageinfo.nature;
  3161. rapidjson::Document document;
  3162. document.Parse(nature.c_str());
  3163. if (document.HasParseError())
  3164. {
  3165. //属性json报错,直接不处理了
  3166. continue;
  3167. }
  3168. rapidjson::Value& data = document;
  3169. //接下来要把这个套餐的详情也保存下来
  3170. for (std::vector<FoodNatureSelectValue>::iterator it_2 = it->natureSelectedArray.begin(); it_2 != it->natureSelectedArray.end(); it_2++)
  3171. {
  3172. std::string food_id = data[it_2->nNameIndex]["value"][it_2->m_nature_selects[0].nature_select_index].GetString();
  3173. //要根据商品ID找出商品的名字
  3174. CFood foodinfo;
  3175. CSqlite3 sqlite;
  3176. bool is_found = sqlite.GetFoodById(food_id, foodinfo);
  3177. if (!is_found)
  3178. {
  3179. continue;
  3180. }
  3181. CDiandanOrderItemPrint foodpackageitemPrint;
  3182. foodpackageitemPrint.m_food_name = foodinfo.name;
  3183. foodpackageitemPrint.m_quantity = it->num;
  3184. foodpackageitemPrint.m_item_price = foodinfo.price;
  3185. foodpackageitemPrint.m_type_id = foodinfo.type_id;
  3186. foodpackageitemPrint.is_taocan = false;
  3187. foodpackageitemPrint.is_taocan_item = true;
  3188. m_cur_diandan_order.m_items_print.push_back(foodpackageitemPrint);
  3189. }
  3190. }
  3191. }
  3192. return m_cur_diandan_order;
  3193. }
  3194. void CDiandanPageUI::SetPos(RECT rc, bool bNeedInvalidate)
  3195. {
  3196. m_nPageWidth = rc.right - rc.left;
  3197. if (m_nPageWidth + 91 < 1260)
  3198. {
  3199. //小屏幕上,默认隐藏优惠区域
  3200. this->YincangYouhui();
  3201. }
  3202. else
  3203. {
  3204. this->XianshiYouhui();
  3205. }
  3206. //拖动窗口的时候,更新位置
  3207. UpdateJiesuanZhifuPos();
  3208. //更新分类位置
  3209. UpdateFoodtypePos();
  3210. CContainerUI::SetPos(rc, bNeedInvalidate);
  3211. }
  3212. //隐藏优惠区域
  3213. void CDiandanPageUI::YincangYouhui()
  3214. {
  3215. m_is_yincangyouhui = true;
  3216. this->FindSubControl(L"diandan_jiesuan_youhui_layout")->SetVisible(false);
  3217. this->FindSubControl(L"diandan_jiesuan_youhui_line")->SetVisible(false);
  3218. this->FindSubControl(L"diandan_jiesuan_yincangyouhui_btn")->SetVisible(false);
  3219. this->FindSubControl(L"diandan_jiesuan_xianshiyouhui_btn")->SetVisible(true);
  3220. UpdateJiesuanZhifuPos();
  3221. }
  3222. //显示优惠区域
  3223. void CDiandanPageUI::XianshiYouhui()
  3224. {
  3225. m_is_yincangyouhui = false;
  3226. this->FindSubControl(L"diandan_jiesuan_youhui_layout")->SetVisible(true);
  3227. this->FindSubControl(L"diandan_jiesuan_youhui_line")->SetVisible(true);
  3228. this->FindSubControl(L"diandan_jiesuan_yincangyouhui_btn")->SetVisible(true);
  3229. this->FindSubControl(L"diandan_jiesuan_xianshiyouhui_btn")->SetVisible(false);
  3230. UpdateJiesuanZhifuPos();
  3231. }
  3232. void CDiandanPageUI::HandleDiandanAIShibieResult()
  3233. {
  3234. if (m_cur_type_id == "ai")
  3235. {
  3236. this->InitFoodShow();
  3237. }
  3238. }
  3239. void CDiandanPageUI::HandleChengzhongValueChange()
  3240. {
  3241. std::string weight = CChengzhongWorker::GetInstance()->GetWeight();
  3242. CControlUI* pWendingStatus = static_cast<CControlUI*>(this->FindSubControl(_T("diandan_page_status_chengzhong_wending")));
  3243. if (CChengzhongWorker::GetInstance()->GetIsWending() == true)
  3244. {
  3245. pWendingStatus->SetBkImage(L"deng_on.png");
  3246. }
  3247. else
  3248. {
  3249. pWendingStatus->SetBkImage(L"deng_off.png");
  3250. }
  3251. CLabelUI* pLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_label_chengzhong_value")));
  3252. pLabel->SetText(CLewaimaiString::UTF8ToUnicode(weight).c_str());
  3253. }
  3254. void CDiandanPageUI::ClickAixuexi()
  3255. {
  3256. this->m_pMainWnd->SwitchPage(CMainWnd::AIXUEXI);
  3257. }
  3258. void CDiandanPageUI::ZhiLing()
  3259. {
  3260. std::string setting_dianzicheng_xinghao = CSetting::GetInstance()->GetParam("setting_dianzicheng_xinghao");
  3261. if (setting_dianzicheng_xinghao == "dahua_acs")
  3262. {
  3263. m_pMainWnd->ShowToast(L"大华ACS电子秤不支持置零操作,请在秤上操作");
  3264. return;
  3265. }
  3266. CChengzhongWorker::GetInstance()->Zhiling();
  3267. }
  3268. void CDiandanPageUI::Qupi()
  3269. {
  3270. std::string setting_dianzicheng_xinghao = CSetting::GetInstance()->GetParam("setting_dianzicheng_xinghao");
  3271. if (setting_dianzicheng_xinghao == "dahua_acs")
  3272. {
  3273. m_pMainWnd->ShowToast(L"大华ACS电子秤不支持去皮操作,请在秤上操作");
  3274. return;
  3275. }
  3276. CChengzhongWorker::GetInstance()->Qupi();
  3277. }