CDiandanPageUI.cpp 64 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445
  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/CZhekouWnd.h"
  10. #include "../wnd/CRengongYouhuiWnd.h"
  11. #include "../wnd/CJiajiaWnd.h"
  12. #include "../wnd/CSaomaYouhuiquanWnd.h"
  13. #include "../wnd/CSaomaShangpinquanWnd.h"
  14. #include "../wnd/CSaomaCikaWnd.h"
  15. #include "../wnd/CSaomaQuanyikaWnd.h"
  16. #include "../wnd/CCanpaiWnd.h"
  17. #include "../wnd/CWeixinzhifuShoukuanWnd.h"
  18. #include "../wnd/CHuiyuanShoukuanWnd.h"
  19. #include "../wnd/CXianjinShoukuanWnd.h"
  20. #include "../wnd/CFulikaShoukuanWnd.h"
  21. CDiandanPageUI::CDiandanPageUI()
  22. {
  23. }
  24. CDiandanPageUI::~CDiandanPageUI()
  25. {
  26. }
  27. //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
  28. void CDiandanPageUI::InitShow()
  29. {
  30. //根据店铺设置,初始化结算信息
  31. this->InitJiesuanInfo();
  32. //初始化商品渲染相关的信息
  33. m_foodLayout = static_cast<CTileLayoutUI*>(this->FindSubControl(_T("diandan_foodlist")));
  34. m_foodtypeLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_fenlei_layout")));
  35. CSqlite3 sqlite;
  36. m_nFoodpackageNum = sqlite.GetFoodpackageNum();
  37. m_types = sqlite.GetFoodtypes(); //只包含收银机显示的分类
  38. if (m_nFoodpackageNum > 0)
  39. {
  40. //默认选中的分类是商品套餐
  41. m_cur_type_id = "taocan";
  42. }
  43. else
  44. {
  45. //没有套餐,默认选中第一个商品分类
  46. if (m_types.size() > 0)
  47. {
  48. m_cur_type_id = m_types[0].id;
  49. }
  50. }
  51. //先初始化商品分类
  52. this->InitFoodtypeShow();
  53. //如果不是一个分类都没有,选中第一个分类
  54. if (m_cur_type_id != "")
  55. {
  56. CFoodtypeOptionUI* curTypeUI = static_cast<CFoodtypeOptionUI*>(m_foodtypeLayout->GetItemAt(0));
  57. curTypeUI->Selected(true, false);
  58. }
  59. this->RefreshFoodlist();
  60. }
  61. //初始化结算页面的信息
  62. void CDiandanPageUI::InitJiesuanInfo()
  63. {
  64. CShopinfo shopinfo = CShopinfo::m_shopinfo;
  65. //清空购物车
  66. m_cur_diandan_order.Clear();
  67. this->ClearDiandanOrderItemShow();
  68. //先清空会员登录状态
  69. m_is_member = false;
  70. CButtonUI* pMemberLoginBtn = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_member_login")));
  71. pMemberLoginBtn->SetVisible(true);
  72. CLabelUI* pMemberInfo = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_member_info")));
  73. pMemberInfo->SetVisible(false);
  74. m_is_member_zhekou = false;
  75. m_member_zhekou_value = 10;
  76. //再重新设置牌号
  77. m_canpai = "";
  78. CButtonUI* pCanpaiEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_canpaihao")));
  79. pCanpaiEdit->SetText(L"输入餐牌号");
  80. //先初始化折扣值
  81. CEditUI* pZhekouEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_zhekou_value")));
  82. pZhekouEdit->SetText(L"100");
  83. //再初始化加价
  84. m_jiajia = 0;
  85. CEditUI* pJiajiaEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_jiajia_value")));
  86. pJiajiaEdit->SetText(L"0");
  87. //初始化优惠
  88. m_rengong_youhui = 0;
  89. CEditUI* pYouhuiEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_youhui_value")));
  90. pYouhuiEdit->SetText(L"0");
  91. //优惠券
  92. m_is_youhuiquan = false;
  93. CLabelUI* pYouhuiquanEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_youhuiquan_status")));
  94. pYouhuiquanEdit->SetText(L"未使用");
  95. //商品券
  96. m_is_shangpinquan = false;
  97. CLabelUI* pShangpinEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_shangpinquan_status")));
  98. pShangpinEdit->SetText(L"未使用");
  99. //次卡
  100. m_is_cika = false;
  101. CLabelUI* pCikaEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_cika_status")));
  102. pCikaEdit->SetText(L"未使用");
  103. //权益卡
  104. m_is_quanyika = false;
  105. CLabelUI* pQuanyikaEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_quanyika_status")));
  106. pQuanyikaEdit->SetText(L"未使用");
  107. //抹零
  108. m_moling_type = 0;
  109. CCheckBoxUI* pMolingCheck = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("diandan_jiesuan_moling_bumoling")));
  110. pMolingCheck->Selected(true, false);
  111. //调整所有与价格相关的展示
  112. UpdateJiesuanInfo();
  113. //添加支付方式
  114. CHorizontalLayoutUI* pZhifufangshiLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_layout")));
  115. int num = 0;
  116. CHorizontalLayoutUI* pWeixinLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_weixinzhifu")));
  117. if (shopinfo.m_is_online_pay_open == "1")
  118. {
  119. //展示微信支付,并且调整位置
  120. pWeixinLayout->SetVisible(true);
  121. int curRow = num / 3 + 1;
  122. int curCol = num % 3 + 1;
  123. RECT rect;
  124. rect.left = (curCol - 1) * 200 + 20;
  125. rect.right = rect.left + 180;
  126. rect.top = (curRow - 1) * 100 + 20;
  127. rect.bottom = rect.top + 80;
  128. pWeixinLayout->SetFloat(true);
  129. pWeixinLayout->SetPos(rect);
  130. num++;
  131. }
  132. else
  133. {
  134. pWeixinLayout->SetVisible(false);
  135. }
  136. //会员支付
  137. CHorizontalLayoutUI* pHuiyuanLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_huiyuan")));
  138. if (shopinfo.m_is_vip_pay_open == "1")
  139. {
  140. pHuiyuanLayout->SetVisible(true);
  141. int curRow = num / 3 + 1;
  142. int curCol = num % 3 + 1;
  143. RECT rect;
  144. rect.left = (curCol - 1) * 200 + 20;
  145. rect.right = rect.left + 180;
  146. rect.top = (curRow - 1) * 100 + 20;
  147. rect.bottom = rect.top + 80;
  148. pHuiyuanLayout->SetFloat(true);
  149. pHuiyuanLayout->SetPos(rect);
  150. num++;
  151. }
  152. else
  153. {
  154. pHuiyuanLayout->SetVisible(false);
  155. }
  156. //现金支付
  157. CHorizontalLayoutUI* pXianjinLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_xianjin")));
  158. if (shopinfo.m_is_cash_pay_open == "1")
  159. {
  160. pXianjinLayout->SetVisible(true);
  161. int curRow = num / 3 + 1;
  162. int curCol = num % 3 + 1;
  163. RECT rect;
  164. rect.left = (curCol - 1) * 200 + 20;
  165. rect.right = rect.left + 180;
  166. rect.top = (curRow - 1) * 100 + 20;
  167. rect.bottom = rect.top + 80;
  168. pXianjinLayout->SetFloat(true);
  169. pXianjinLayout->SetPos(rect);
  170. num++;
  171. }
  172. else
  173. {
  174. pXianjinLayout->SetVisible(false);
  175. }
  176. //购物卡
  177. CHorizontalLayoutUI* pGouwukaLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_gouwuka")));
  178. if (shopinfo.m_is_giftcard_pay_open == "1")
  179. {
  180. pGouwukaLayout->SetVisible(true);
  181. int curRow = num / 3 + 1;
  182. int curCol = num % 3 + 1;
  183. RECT rect;
  184. rect.left = (curCol - 1) * 200 + 20;
  185. rect.right = rect.left + 180;
  186. rect.top = (curRow - 1) * 100 + 20;
  187. rect.bottom = rect.top + 80;
  188. pGouwukaLayout->SetFloat(true);
  189. pGouwukaLayout->SetPos(rect);
  190. num++;
  191. }
  192. else
  193. {
  194. pGouwukaLayout->SetVisible(false);
  195. }
  196. //美食城临时卡
  197. CHorizontalLayoutUI* pMeishichengLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_meishicheng")));
  198. if (shopinfo.m_is_food_town_card_pay_open == "1")
  199. {
  200. pMeishichengLayout->SetVisible(true);
  201. int curRow = num / 3 + 1;
  202. int curCol = num % 3 + 1;
  203. RECT rect;
  204. rect.left = (curCol - 1) * 200 + 20;
  205. rect.right = rect.left + 180;
  206. rect.top = (curRow - 1) * 100 + 20;
  207. rect.bottom = rect.top + 80;
  208. pMeishichengLayout->SetFloat(true);
  209. pMeishichengLayout->SetPos(rect);
  210. num++;
  211. }
  212. else
  213. {
  214. pMeishichengLayout->SetVisible(false);
  215. }
  216. //福利卡
  217. CHorizontalLayoutUI* pFulikaLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhifufangshi_fulika")));
  218. if (shopinfo.m_is_open_fulika_pay == "1")
  219. {
  220. pFulikaLayout->SetVisible(true);
  221. int curRow = num / 3 + 1;
  222. int curCol = num % 3 + 1;
  223. RECT rect;
  224. rect.left = (curCol - 1) * 200 + 20;
  225. rect.right = rect.left + 180;
  226. rect.top = (curRow - 1) * 100 + 20;
  227. rect.bottom = rect.top + 80;
  228. pFulikaLayout->SetFloat(true);
  229. pFulikaLayout->SetPos(rect);
  230. num++;
  231. }
  232. else
  233. {
  234. pFulikaLayout->SetVisible(false);
  235. }
  236. //接着添加自定义支付的
  237. for (std::vector<SelfPay>::iterator it = shopinfo.m_self_pay.begin(); it != shopinfo.m_self_pay.end(); it++)
  238. {
  239. SelfPay selfpay = *it;
  240. if (selfpay.is_open == "1")
  241. {
  242. CButtonUI* newButton = new CButtonUI();
  243. newButton->SetFixedWidth(180);
  244. newButton->SetFixedHeight(80);
  245. newButton->SetText(CLewaimaiString::UTF8ToUnicode(selfpay.name).c_str());
  246. newButton->SetBorderSize(1);
  247. newButton->SetBorderColor(0xFFC1C1C1);
  248. newButton->SetBkColor(0xFFF7F7F7);
  249. //设置定义属性,在点击按钮的时候好区分
  250. newButton->SetAttribute(L"name", L"diandan_jiesuan_zhifufangshi_zidingyi_btn");
  251. newButton->AddCustomAttribute(L"selfpay_id", CLewaimaiString::UTF8ToUnicode(selfpay.id).c_str());
  252. //必须先Add,才能调用下面的SetPos,否则无效
  253. pZhifufangshiLayout->Add(newButton);
  254. int curRow = num / 3 + 1;
  255. int curCol = num % 3 + 1;
  256. RECT rect;
  257. rect.left = (curCol - 1) * 200 + 20;
  258. rect.right = rect.left + 180;
  259. rect.top = (curRow - 1) * 100 + 20;
  260. rect.bottom = rect.top + 80;
  261. newButton->SetFloat(true);
  262. newButton->SetPos(rect);
  263. num++;
  264. }
  265. }
  266. //调整区域高度
  267. int lastRow = (num - 1) / 3 + 1;
  268. pZhifufangshiLayout->SetFixedHeight(lastRow * 105);
  269. //默认展示选购页面
  270. ShowXuangouPage();
  271. }
  272. //处理按钮点击类事件
  273. void CDiandanPageUI::HandleClickMsg(TNotifyUI& msg)
  274. {
  275. CDuiString name = msg.pSender->GetName();
  276. if (name == L"diandan_fooditem")
  277. {
  278. CDiandanFoodItemUI* fooditemUI = static_cast<CDiandanFoodItemUI*>(msg.pSender);
  279. m_cur_click_food_item = fooditemUI;
  280. this->ClickFoodAction();
  281. }
  282. else if (name == L"btn_diandan_jia")
  283. {
  284. this->ClickAdd();
  285. }
  286. else if (name == L"btn_diandan_jian")
  287. {
  288. this->ClickDel();
  289. }
  290. else if (name == L"btn_diandan_shanchu")
  291. {
  292. this->ClickRemove();
  293. }
  294. else if (name == L"btn_diandan_guige")
  295. {
  296. this->ClickGuige();
  297. }
  298. else if (name == L"btn_diandan_qingkong")
  299. {
  300. this->ClickQingkong();
  301. }
  302. else if (name == L"btn_diandan_zhengdanbeizhu")
  303. {
  304. this->ClickZhengdanMemo();
  305. }
  306. else if (name == L"btn_diandan_gengduozhifu_pay")
  307. {
  308. //点击更多支付
  309. this->ClickGengduoPay();
  310. }
  311. else if (name == L"btn_diandan_jixujiacai")
  312. {
  313. //点击继续加菜
  314. this->JixuJiacai();
  315. }
  316. else if (name == L"btn_diandan_chakanyouhui")
  317. {
  318. //点击查看优惠
  319. this->ClickChakanYouhui();
  320. }
  321. else if (name == L"btn_diandan_dabao")
  322. {
  323. //点击打包
  324. this->ClickDabao();
  325. }
  326. else if (name == L"btn_diandan_member_login")
  327. {
  328. //点击会员登录
  329. this->ClickMemberLogin();
  330. }
  331. else if (name == L"diandan_jiesuan_zhekou_value")
  332. {
  333. //点击整单折扣
  334. this->ClickZhekou();
  335. }
  336. else if (name == L"diandan_jiesuan_jiajia_value")
  337. {
  338. //点击加价
  339. this->ClickJiajia();
  340. }
  341. else if (name == L"diandan_jiesuan_youhui_value")
  342. {
  343. //点击人工优惠
  344. this->ClickRengongyouhui();
  345. }
  346. else if (name == L"diandan_jiesuan_youhuiquan_btn")
  347. {
  348. //点击扫码优惠券
  349. this->ClickSaomaYouhuiquan();
  350. }
  351. else if (name == L"diandan_jiesuan_shangpinquan_btn")
  352. {
  353. //点击扫码商品券
  354. this->ClickSaomaShangpinquan();
  355. }
  356. else if (name == L"diandan_jiesuan_cika_btn")
  357. {
  358. //点击扫码次卡
  359. this->ClickSaomaCika();
  360. }
  361. else if (name == L"diandan_jiesuan_quanyika_btn")
  362. {
  363. //点击扫码权益卡
  364. this->ClickSaomaQuanyika();
  365. }
  366. else if (name == L"btn_diandan_canpaihao")
  367. {
  368. //点击餐牌号
  369. this->ClickCanpai();
  370. }
  371. else if (name == L"btn_diandan_weixinzhifu_pay" || name == L"diandan_jiesuan_zhifufangshi_weixinzhifu_btn")
  372. {
  373. //点击微信支付
  374. this->StartWeixinzhifuShoukuan();
  375. }
  376. else if (name == L"btn_diandan_huiyuanzhifu_pay" || name == L"diandan_jiesuan_zhifufangshi_huiyuan_btn")
  377. {
  378. //点击会员收款
  379. this->StartHuiyuanShoukuan();
  380. }
  381. else if (name == L"btn_diandan_xianjinzhifu_pay" || name == L"diandan_jiesuan_zhifufangshi_xianjin_btn")
  382. {
  383. //点击现金收款
  384. this->StartXianjinShoukuan();
  385. }
  386. else if (name == L"diandan_jiesuan_zhifufangshi_fulika_btn")
  387. {
  388. //福利卡收款
  389. this->StartFulikaShoukuan();
  390. }
  391. }
  392. //处理option切换事件
  393. void CDiandanPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
  394. {
  395. CDuiString name = msg.pSender->GetName();
  396. COptionUI* curOption = static_cast<COptionUI*>(msg.pSender);
  397. std::wstring groupname = curOption->GetGroup();
  398. if (groupname == L"diandan_foodtype")
  399. {
  400. //商品分类切换
  401. CFoodtypeOptionUI* typeUI = static_cast<CFoodtypeOptionUI*>(curOption);
  402. std::string id = typeUI->GetTypeId();
  403. m_cur_type_id = id;
  404. this->RefreshFoodlist();
  405. return;
  406. }
  407. else if (groupname == L"diandan_jiesuan_moling")
  408. {
  409. if (name == _T("diandan_jiesuan_moling_bumoling"))
  410. {
  411. m_moling_type = 0;
  412. UpdateJiesuanInfo();
  413. }
  414. else if (name == _T("diandan_jiesuan_moling_molingdaojiao"))
  415. {
  416. m_moling_type = 1;
  417. UpdateJiesuanInfo();
  418. }
  419. else if (name == _T("diandan_jiesuan_moling_molingdaoyuan"))
  420. {
  421. m_moling_type = 2;
  422. UpdateJiesuanInfo();
  423. }
  424. }
  425. }
  426. //处理下拉框、radio的切换事件
  427. void CDiandanPageUI::HandleItemSelectMsg(TNotifyUI& msg)
  428. {
  429. }
  430. //处理编辑框输入内容改变事件
  431. void CDiandanPageUI::HandleTextChangedMsg(TNotifyUI& msg)
  432. {
  433. CDuiString name = msg.pSender->GetName();
  434. }
  435. void CDiandanPageUI::InitFoodtypeShow()
  436. {
  437. //先判断有没有套餐分类
  438. if (m_nFoodpackageNum > 0)
  439. {
  440. CDialogBuilder builder;
  441. CDialogBuilderCallbackEx cb;
  442. CFoodtypeOptionUI* pItem = static_cast<CFoodtypeOptionUI*>(builder.Create(_T("foodtype_option.xml"), (UINT)0, &cb, m_pManager));
  443. pItem->SetName(L"商品套餐");
  444. pItem->SetTypeId("taocan");
  445. pItem->SetTaocan();
  446. pItem->SetGroup(L"diandan_foodtype");
  447. m_foodtypeLayout->Add(pItem);
  448. }
  449. //接下来开始处理商品分类
  450. for (std::vector<CFoodType>::iterator it = m_types.begin(); it != m_types.end(); it++)
  451. {
  452. CFoodType type = *it;
  453. CDialogBuilder builder;
  454. CDialogBuilderCallbackEx cb;
  455. CFoodtypeOptionUI* pItem = static_cast<CFoodtypeOptionUI*>(builder.Create(_T("foodtype_option.xml"), (UINT)0, &cb, m_pManager));
  456. pItem->SetName(CLewaimaiString::UTF8ToUnicode(type.name));
  457. pItem->SetTypeId(type.id);
  458. pItem->SetGroup(L"diandan_foodtype");
  459. m_foodtypeLayout->Add(pItem);
  460. }
  461. }
  462. void CDiandanPageUI::RefreshFoodlist()
  463. {
  464. m_foodLayout->RemoveAll();
  465. //如果当前一个分类都没有,那么就不处理了
  466. if (m_cur_type_id == "")
  467. {
  468. return;
  469. }
  470. else if (m_cur_type_id == "taocan")
  471. {
  472. //选择的是套餐分类
  473. CSqlite3 sqlite;
  474. std::vector<CFoodpackage> foodlist = sqlite.GetFoodpackages(true);
  475. for (std::vector<CFoodpackage>::iterator it = foodlist.begin(); it != foodlist.end(); it++)
  476. {
  477. CFoodpackage food = *it;
  478. CDialogBuilder builder;
  479. CDialogBuilderCallbackEx cb;
  480. CDiandanFoodItemUI* pItem = static_cast<CDiandanFoodItemUI*>(builder.Create(_T("diandan_fooditem.xml"), (UINT)0, &cb, m_pManager));
  481. pItem->SetFoodpackageInfo(food);
  482. pItem->UpdateShow();
  483. m_foodLayout->Add(pItem);
  484. }
  485. }
  486. else
  487. {
  488. CSqlite3 sqlite;
  489. std::vector<CFood> foodlist = sqlite.GetFoodByTypeid(m_cur_type_id);
  490. for (std::vector<CFood>::iterator it = foodlist.begin(); it != foodlist.end(); it++)
  491. {
  492. CFood food = *it;
  493. CDialogBuilder builder;
  494. CDialogBuilderCallbackEx cb;
  495. CDiandanFoodItemUI* pItem = static_cast<CDiandanFoodItemUI*>(builder.Create(_T("diandan_fooditem.xml"), (UINT)0, &cb, m_pManager));
  496. pItem->SetFoodInfo(food);
  497. pItem->UpdateShow();
  498. m_foodLayout->Add(pItem);
  499. }
  500. }
  501. }
  502. void CDiandanPageUI::AddDiandanOrderItemShow(int index)
  503. {
  504. CDiandanOrderItem item = m_cur_diandan_order.getDiandanOrderItem(index);
  505. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  506. CDialogBuilder builder;
  507. CListContainerElementUI* pEle = static_cast<CListContainerElementUI*>(builder.Create(_T("diandan_cart_item.xml"), (UINT)0, NULL, m_pManager));
  508. pList->Add(pEle);
  509. if (item.m_is_taocan)
  510. {
  511. CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
  512. pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
  513. CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
  514. pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
  515. CLabelUI* pPrice = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_price")));
  516. pPrice->SetText(CLewaimaiString::UTF8ToUnicode(item.show_price).c_str());
  517. CLabelUI* pNature = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_nature")));
  518. pEle->SetFixedHeight(84);
  519. pNature->SetVisible(true);
  520. pNature->SetText(CLewaimaiString::UTF8ToUnicode(item.getNatureShow()).c_str());
  521. }
  522. else
  523. {
  524. CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
  525. pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
  526. CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
  527. pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
  528. CLabelUI* pPrice = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_price")));
  529. pPrice->SetText(CLewaimaiString::UTF8ToUnicode(item.show_price).c_str());
  530. CLabelUI* pNature = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_nature")));
  531. if (item.is_nature)
  532. {
  533. pEle->SetFixedHeight(84);
  534. pNature->SetVisible(true);
  535. pNature->SetText(CLewaimaiString::UTF8ToUnicode(item.getNatureShow()).c_str());
  536. }
  537. else
  538. {
  539. pEle->SetFixedHeight(42);
  540. pNature->SetVisible(false);
  541. }
  542. }
  543. //更新结算信息
  544. UpdateJiesuanInfo();
  545. }
  546. void CDiandanPageUI::UpdateDiandanOrderItemShow(int index)
  547. {
  548. CDiandanOrderItem item = m_cur_diandan_order.getDiandanOrderItem(index);
  549. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  550. CListContainerElementUI* pEle = static_cast<CListContainerElementUI*>(pList->GetItemAt(index));
  551. if (item.m_is_taocan)
  552. {
  553. CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
  554. pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
  555. CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
  556. pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
  557. CLabelUI* pPrice = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_price")));
  558. pPrice->SetText(CLewaimaiString::UTF8ToUnicode(item.show_price).c_str());
  559. CLabelUI* pNature = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_nature")));
  560. pEle->SetFixedHeight(84);
  561. pNature->SetVisible(true);
  562. pNature->SetText(CLewaimaiString::UTF8ToUnicode(item.getNatureShow()).c_str());
  563. }
  564. else
  565. {
  566. CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
  567. pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
  568. CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
  569. pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
  570. CLabelUI* pPrice = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_price")));
  571. pPrice->SetText(CLewaimaiString::UTF8ToUnicode(item.show_price).c_str());
  572. CLabelUI* pNature = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_nature")));
  573. if (item.is_nature)
  574. {
  575. pEle->SetFixedHeight(84);
  576. pNature->SetVisible(true);
  577. pNature->SetText(CLewaimaiString::UTF8ToUnicode(item.getNatureShow()).c_str());
  578. }
  579. else
  580. {
  581. pEle->SetFixedHeight(42);
  582. pNature->SetVisible(false);
  583. }
  584. }
  585. //更新结算信息
  586. UpdateJiesuanInfo();
  587. }
  588. void CDiandanPageUI::DelDiandanOrderItemShow(int index)
  589. {
  590. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  591. pList->RemoveAt(index);
  592. //更新结算信息
  593. UpdateJiesuanInfo();
  594. }
  595. void CDiandanPageUI::ClearDiandanOrderItemShow()
  596. {
  597. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  598. pList->RemoveAll();
  599. //更新结算信息
  600. UpdateJiesuanInfo();
  601. }
  602. void CDiandanPageUI::UpdateJiesuanInfo()
  603. {
  604. //先按所有的价格公式规则,计算一次价格
  605. //(基础商品价格+属性价格-商品券-次卡(抵扣金额、抵扣商品)-会员商品优惠)*店铺折扣*分等级会员折扣*权益卡折扣*次卡折扣-满减优惠-次卡满减-优惠券+加价-优惠-抹零+开台费+打包费+茶位费
  606. //先计算基础商品价格(不包含任何优惠活动等情况下的实际金额,已包含商品属性价格)
  607. double jichu_price = m_cur_diandan_order.getTotalPrice();
  608. //这个是临时变量,表示每次优惠过后的实时价格
  609. double cur_price = jichu_price;
  610. double totol_youhui = 0;
  611. //判断是否有商品券,如果有的话把金额抵扣掉
  612. m_shangpinquan_youhui = 0;
  613. if (m_is_shangpinquan)
  614. {
  615. //判断当前购物车商品,是否有满足对应商品券使用要求的
  616. bool ret = m_cur_diandan_order.UseShangpinquan(m_shangpinquan_foodid, m_shangpinquan_youhui);
  617. totol_youhui += m_shangpinquan_youhui;
  618. }
  619. //判断次卡
  620. m_cika_youhui = 0;
  621. if (m_is_cika)
  622. {
  623. //对次卡进行处理
  624. if (m_cika_deduct_type == "0")
  625. {
  626. }
  627. else if (m_cika_deduct_type == "1")
  628. {
  629. }
  630. else if (m_cika_deduct_type == "2")
  631. {
  632. m_cika_youhui = atof(m_cika_offer_value.c_str());
  633. }
  634. else if (m_cika_deduct_type == "3")
  635. {
  636. //这种情况是次卡跟商品券一样抵扣商品\
  637. bool ret;
  638. if (m_is_shangpinquan && m_shangpinquan_foodid == m_cika_bind_foods_id)
  639. {
  640. ret = m_cur_diandan_order.UseCikaDikou(m_cika_bind_foods_id, m_cika_youhui, true);
  641. }
  642. else
  643. {
  644. ret = m_cur_diandan_order.UseCikaDikou(m_cika_bind_foods_id, m_cika_youhui, false);
  645. }
  646. }
  647. totol_youhui += m_cika_youhui;
  648. }
  649. //判断会员商品优惠
  650. //先按假数据
  651. m_total_member_youhui = 0;
  652. if (m_is_member)
  653. {
  654. m_total_member_youhui = m_cur_diandan_order.getTotalMemberYouhui(m_member_level);
  655. }
  656. totol_youhui += m_total_member_youhui;
  657. //再判断整单折扣
  658. cur_price = jichu_price - totol_youhui;
  659. double old_cur_price = cur_price;
  660. CEditUI* pZhekouEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_zhekou_value")));
  661. wstring ws_zhekou = pZhekouEdit->GetText();
  662. int zhekouValue = atoi(CLewaimaiString::UnicodeToUTF8(ws_zhekou).c_str());
  663. cur_price = (double)(cur_price * zhekouValue) / 100.00;
  664. //保留2位小数
  665. cur_price = (int)(cur_price * 100) / 100.00;
  666. m_zhekou_youhui = old_cur_price - cur_price;
  667. totol_youhui += m_zhekou_youhui;
  668. //再判断分等级会员折扣
  669. m_member_zhekou_youhui = 0;
  670. m_member_level_id = "3138";
  671. std::vector<DiscountInfo> member_discount_info = CShopinfo::m_shopinfo.m_discount_info;
  672. for (std::vector<DiscountInfo>::iterator it = member_discount_info.begin(); it != member_discount_info.end(); it++)
  673. {
  674. DiscountInfo info = *it;
  675. if (info.level_id == m_member_level_id)
  676. {
  677. if (info.is_discount == "1")
  678. {
  679. m_is_member_zhekou = true;
  680. m_member_zhekou_value = info.discount_value;
  681. double member_discount = atof(info.discount_value.c_str());
  682. //这里最多是10折
  683. double old_cur_price_member_discount = cur_price;
  684. cur_price = (double)(cur_price * member_discount) / 10.00;
  685. //保留2位小数
  686. cur_price = (int)(cur_price * 100) / 100.00;
  687. m_member_zhekou_youhui = old_cur_price_member_discount - cur_price;
  688. totol_youhui += m_member_zhekou_youhui;
  689. break;
  690. }
  691. }
  692. }
  693. //再判断权益卡折扣
  694. m_quanyika_youhui = 0;
  695. if (m_is_quanyika == true)
  696. {
  697. double quanyika_zhekou = atof(m_quanyika_discount.c_str());
  698. //这里最多是10折
  699. double old_cur_price_quanyika_discount = cur_price;
  700. cur_price = (double)(cur_price * quanyika_zhekou) / 10.00;
  701. //保留2位小数
  702. cur_price = (int)(cur_price * 100) / 100.00;
  703. m_quanyika_youhui = old_cur_price_quanyika_discount - cur_price;
  704. totol_youhui += m_quanyika_youhui;
  705. }
  706. //次卡折扣
  707. if (m_is_cika)
  708. {
  709. //对次卡进行处理
  710. if (m_cika_deduct_type == "0")
  711. {
  712. double cika_zhekou = atof(m_cika_discount_value.c_str());
  713. //这里最多是10折
  714. double old_cur_price_cika_discount = cur_price;
  715. cur_price = (double)(cur_price * cika_zhekou) / 10.00;
  716. //保留2位小数
  717. cur_price = (int)(cur_price * 100) / 100.00;
  718. m_cika_youhui = old_cur_price_cika_discount - cur_price;
  719. totol_youhui += m_cika_youhui;
  720. }
  721. }
  722. //满减优惠
  723. m_manjian_youhui = 0;
  724. if (CShopinfo::m_shopinfo.m_open_promotion == "1")
  725. {
  726. //开启了满减,进行判断
  727. std::vector<Promotion> promotion = CShopinfo::m_shopinfo.m_promotion;
  728. for (std::vector<Promotion>::iterator it = promotion.begin(); it != promotion.end(); it++)
  729. {
  730. Promotion cur = *it;
  731. if (jichu_price >= cur.amount)
  732. {
  733. m_manjian_youhui = cur.discount;
  734. totol_youhui += m_manjian_youhui;
  735. cur_price -= m_manjian_youhui;
  736. break;
  737. }
  738. }
  739. }
  740. //次卡满减
  741. if (m_is_cika)
  742. {
  743. //对次卡进行处理
  744. if (m_cika_deduct_type == "1")
  745. {
  746. std::vector<std::string> manjian = CLewaimaiString::Split(m_cika_full_reduce_value, ",");
  747. double amount = atof(manjian[0].c_str());
  748. double value = atof(manjian[1].c_str());
  749. if (jichu_price >= amount)
  750. {
  751. m_cika_youhui = value;
  752. totol_youhui += m_cika_youhui;
  753. cur_price -= m_cika_youhui;
  754. }
  755. }
  756. }
  757. //优惠券
  758. m_youhuiquan_youhui = 0;
  759. if (m_is_youhuiquan)
  760. {
  761. time_t deadline = CLewaimaiTime::StringToDatetime(m_coupon_deadline);
  762. time_t now = time(NULL);
  763. if (deadline > now)
  764. {
  765. if (jichu_price >= atof(m_coupon_basic_price.c_str()))
  766. {
  767. m_youhuiquan_youhui = atof(m_coupon_value.c_str());
  768. totol_youhui += m_youhuiquan_youhui;
  769. cur_price -= m_youhuiquan_youhui;
  770. }
  771. }
  772. }
  773. //加价
  774. m_jiajia = 0;
  775. CEditUI* pJiajiaEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_jiajia_value")));
  776. wstring ws_jiajia = pJiajiaEdit->GetText();
  777. m_jiajia = atof(CLewaimaiString::UnicodeToUTF8(ws_jiajia).c_str());
  778. cur_price += m_jiajia;
  779. //人工优惠
  780. m_rengong_youhui = 0;
  781. CEditUI* pYouhuiEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_youhui_value")));
  782. wstring ws_rengong_youhui = pYouhuiEdit->GetText();
  783. m_rengong_youhui = atof(CLewaimaiString::UnicodeToUTF8(ws_rengong_youhui).c_str());
  784. totol_youhui += m_rengong_youhui;
  785. cur_price -= m_rengong_youhui;
  786. //开台费
  787. m_kaitai = 0;
  788. //打包费
  789. m_dabao = m_cur_diandan_order.getDabaoMoney();
  790. cur_price += m_dabao;
  791. //茶位费
  792. m_chawei = 0;
  793. //抹零
  794. m_moling_youhui = 0;
  795. if (m_moling_type == 0)
  796. {
  797. }
  798. else if (m_moling_type == 1)
  799. {
  800. double new_price = (int)(cur_price * 10) / 10.0;
  801. m_moling_youhui = cur_price - new_price;
  802. totol_youhui += m_moling_youhui;
  803. cur_price = new_price;
  804. }
  805. else if (m_moling_type == 2)
  806. {
  807. double new_price = (int)(cur_price);
  808. m_moling_youhui = cur_price - new_price;
  809. totol_youhui += m_moling_youhui;
  810. cur_price = new_price;
  811. }
  812. if (cur_price < 0)
  813. {
  814. cur_price = 0;
  815. }
  816. m_cur_total_price = cur_price;
  817. m_total_youhui = totol_youhui;
  818. //至此优惠全部处理完了,开始刷新各个地方的展示
  819. //先刷新优惠展示
  820. CHorizontalLayoutUI* pYouhuiLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_page_youhui_tishi_layout")));
  821. CLabelUI* pYouhuiLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_youhui_tishi")));
  822. if (totol_youhui > 0)
  823. {
  824. wstring youhuilabel = L"已优惠 " + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(totol_youhui, 2)) + L" 元";
  825. pYouhuiLabel->SetText(youhuilabel.c_str());
  826. pYouhuiLayout->SetVisible(true);
  827. }
  828. else
  829. {
  830. pYouhuiLayout->SetVisible(false);
  831. }
  832. //再刷新打包费展示
  833. CLabelUI* pOtherPriceLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_otherprice")));
  834. if (m_dabao > 0)
  835. {
  836. std::wstring ws_dabaofei = L"打包费 " + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_dabao, 2)) + L" 元";
  837. pOtherPriceLabel->SetText(ws_dabaofei.c_str());
  838. }
  839. else
  840. {
  841. pOtherPriceLabel->SetText(L"");
  842. }
  843. //再刷新总价展示
  844. CLabelUI* pTotalPrice = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_totalprice")));
  845. pTotalPrice->SetText((L"总价:¥" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(cur_price, 2))).c_str());
  846. //再刷新账单明细展示
  847. CVerticalLayoutUI* pmingxiLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_zhangdanmingxi_jiage_layout")));
  848. pmingxiLayout->RemoveAll();
  849. int item_num = 0;
  850. //先显示基础价格
  851. if (true)
  852. {
  853. CDialogBuilder builder;
  854. CDialogBuilderCallbackEx cb;
  855. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  856. pmingxiLayout->Add(pItem);
  857. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  858. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  859. pName->SetText(L"商品原价:");
  860. pValue->SetText((CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(jichu_price, 2)) + L"元").c_str());
  861. item_num++;
  862. }
  863. //开始展示各种优惠
  864. if (m_shangpinquan_youhui > 0)
  865. {
  866. CDialogBuilder builder;
  867. CDialogBuilderCallbackEx cb;
  868. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  869. pmingxiLayout->Add(pItem);
  870. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  871. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  872. pName->SetText(L"商品券优惠:");
  873. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_shangpinquan_youhui, 2)) + L"元").c_str());
  874. item_num++;
  875. }
  876. if (m_cika_youhui > 0)
  877. {
  878. CDialogBuilder builder;
  879. CDialogBuilderCallbackEx cb;
  880. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  881. pmingxiLayout->Add(pItem);
  882. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  883. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  884. pName->SetText(L"次卡优惠:");
  885. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_cika_youhui, 2)) + L"元").c_str());
  886. item_num++;
  887. }
  888. if (m_total_member_youhui > 0)
  889. {
  890. CDialogBuilder builder;
  891. CDialogBuilderCallbackEx cb;
  892. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  893. pmingxiLayout->Add(pItem);
  894. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  895. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  896. pName->SetText(L"商品会员价优惠:");
  897. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_total_member_youhui, 2)) + L"元").c_str());
  898. item_num++;
  899. }
  900. if (m_zhekou_youhui > 0)
  901. {
  902. CDialogBuilder builder;
  903. CDialogBuilderCallbackEx cb;
  904. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  905. pmingxiLayout->Add(pItem);
  906. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  907. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  908. pName->SetText(L"整单折扣优惠:");
  909. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_zhekou_youhui, 2)) + L"元").c_str());
  910. item_num++;
  911. }
  912. if (m_member_zhekou_youhui > 0)
  913. {
  914. CDialogBuilder builder;
  915. CDialogBuilderCallbackEx cb;
  916. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  917. pmingxiLayout->Add(pItem);
  918. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  919. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  920. pName->SetText(L"会员整单折扣优惠:");
  921. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_member_zhekou_youhui, 2)) + L"元").c_str());
  922. item_num++;
  923. }
  924. if (m_quanyika_youhui > 0)
  925. {
  926. CDialogBuilder builder;
  927. CDialogBuilderCallbackEx cb;
  928. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  929. pmingxiLayout->Add(pItem);
  930. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  931. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  932. pName->SetText(L"权益卡优惠:");
  933. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_quanyika_youhui, 2)) + L"元").c_str());
  934. item_num++;
  935. }
  936. if (m_manjian_youhui > 0)
  937. {
  938. CDialogBuilder builder;
  939. CDialogBuilderCallbackEx cb;
  940. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  941. pmingxiLayout->Add(pItem);
  942. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  943. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  944. pName->SetText(L"满减优惠:");
  945. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_manjian_youhui, 2)) + L"元").c_str());
  946. item_num++;
  947. }
  948. if (m_youhuiquan_youhui > 0)
  949. {
  950. CDialogBuilder builder;
  951. CDialogBuilderCallbackEx cb;
  952. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  953. pmingxiLayout->Add(pItem);
  954. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  955. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  956. pName->SetText(L"优惠券优惠:");
  957. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_youhuiquan_youhui, 2)) + L"元").c_str());
  958. item_num++;
  959. }
  960. if (m_rengong_youhui > 0)
  961. {
  962. CDialogBuilder builder;
  963. CDialogBuilderCallbackEx cb;
  964. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  965. pmingxiLayout->Add(pItem);
  966. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  967. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  968. pName->SetText(L"人工优惠:");
  969. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_rengong_youhui, 2)) + L"元").c_str());
  970. item_num++;
  971. }
  972. if (m_moling_youhui > 0)
  973. {
  974. CDialogBuilder builder;
  975. CDialogBuilderCallbackEx cb;
  976. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  977. pmingxiLayout->Add(pItem);
  978. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  979. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  980. pName->SetText(L"抹零优惠:");
  981. pValue->SetText((L"-" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_moling_youhui, 2)) + L"元").c_str());
  982. item_num++;
  983. }
  984. //然后处理加价的各种
  985. if (m_dabao > 0)
  986. {
  987. CDialogBuilder builder;
  988. CDialogBuilderCallbackEx cb;
  989. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  990. pmingxiLayout->Add(pItem);
  991. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  992. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  993. pName->SetText(L"打包费:");
  994. pValue->SetText((L"+" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_dabao, 2)) + L"元").c_str());
  995. item_num++;
  996. }
  997. if (m_jiajia > 0)
  998. {
  999. CDialogBuilder builder;
  1000. CDialogBuilderCallbackEx cb;
  1001. CHorizontalLayoutUI* pItem = static_cast<CHorizontalLayoutUI*>(builder.Create(_T("diandan_zhangdanmingxi_item.xml"), (UINT)0, &cb, m_pManager));
  1002. pmingxiLayout->Add(pItem);
  1003. CLabelUI* pName = static_cast<CLabelUI*>(pItem->FindSubControl(_T("name")));
  1004. CLabelUI* pValue = static_cast<CLabelUI*>(pItem->FindSubControl(_T("value")));
  1005. pName->SetText(L"人工加价:");
  1006. pValue->SetText((L"+" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_jiajia, 2)) + L"元").c_str());
  1007. item_num++;
  1008. }
  1009. pmingxiLayout->SetFixedHeight(item_num * 40);
  1010. CLabelUI* pYingshou = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_total_yingshou")));
  1011. pYingshou->SetText((L"应收金额:" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(cur_price, 2)) + L"元").c_str());
  1012. }
  1013. //展示结算页面,隐藏选购页面
  1014. void CDiandanPageUI::ShowJiesuanPage()
  1015. {
  1016. //先隐藏商品页面
  1017. CVerticalLayoutUI* pFoodLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_food_layout")));
  1018. pFoodLayout->SetVisible(false);
  1019. //隐藏结算按钮
  1020. CHorizontalLayoutUI* pPayLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_pay_layout")));
  1021. pPayLayout->SetVisible(false);
  1022. //再展示结算页面
  1023. CHorizontalLayoutUI* pJiesuanLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_layout")));
  1024. pJiesuanLayout->SetVisible(true);
  1025. //展示继续加菜的按钮
  1026. CButtonUI* pJiacaiBtn = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_jixujiacai")));
  1027. pJiacaiBtn->SetVisible(true);
  1028. }
  1029. //展示选购页面,隐藏结算页面
  1030. void CDiandanPageUI::ShowXuangouPage()
  1031. {
  1032. //先展示商品页面
  1033. CVerticalLayoutUI* pFoodLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_food_layout")));
  1034. pFoodLayout->SetVisible(true);
  1035. //展示结算按钮
  1036. CHorizontalLayoutUI* pPayLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_pay_layout")));
  1037. pPayLayout->SetVisible(true);
  1038. //再隐藏结算页面
  1039. CHorizontalLayoutUI* pJiesuanLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_layout")));
  1040. pJiesuanLayout->SetVisible(false);
  1041. //隐藏继续加菜的按钮
  1042. CButtonUI* pJiacaiBtn = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_jixujiacai")));
  1043. pJiacaiBtn->SetVisible(false);
  1044. }
  1045. void CDiandanPageUI::ClickFoodAction()
  1046. {
  1047. bool is_taocan = m_cur_click_food_item->GetIsTaocan();
  1048. if (is_taocan)
  1049. {
  1050. //点击套餐之后的处理逻辑
  1051. CFoodpackage foodpackageinfo = m_cur_click_food_item->GetFoodpackageInfo();
  1052. CDiandanOrderItem clickItem;
  1053. clickItem.foodpackage_id = foodpackageinfo.id;
  1054. clickItem.foodpackage_name = foodpackageinfo.name;
  1055. clickItem.price = foodpackageinfo.price;
  1056. clickItem.is_dabao = false;
  1057. clickItem.dabao_money = foodpackageinfo.dabao_money;
  1058. clickItem.num = "1";
  1059. //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
  1060. clickItem.SetFoodpackageInfo(m_cur_click_food_item->GetFoodpackageInfo());
  1061. clickItem.SetIsTaocan(true);
  1062. //先弹框进行选择属性
  1063. CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(1);
  1064. pNatureFrame->SetFoodItemUI(m_cur_click_food_item);
  1065. if (pNatureFrame != NULL)
  1066. {
  1067. pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1068. pNatureFrame->SetIcon(IDI_ICON_DUILIB);
  1069. pNatureFrame->CenterWindow();
  1070. UINT ret = pNatureFrame->ShowModal();
  1071. if (ret == IDOK)
  1072. {
  1073. //保存选择的属性
  1074. std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
  1075. clickItem.natureSelectedArray = natureSelectedArray;
  1076. delete pNatureFrame;
  1077. }
  1078. else
  1079. {
  1080. delete pNatureFrame;
  1081. return;
  1082. }
  1083. }
  1084. //商品没有商品属性
  1085. bool is_add_new = false;
  1086. int index = m_cur_diandan_order.AddItem(clickItem, is_add_new);
  1087. if (is_add_new)
  1088. {
  1089. //说明是新增了一项,要刷新一下购物车展示
  1090. this->AddDiandanOrderItemShow(index);
  1091. }
  1092. else
  1093. {
  1094. //没有新增,而是修改了一项
  1095. this->UpdateDiandanOrderItemShow(index);
  1096. }
  1097. }
  1098. else
  1099. {
  1100. //点击普通商品之后的处理逻辑
  1101. CFood foodinfo = m_cur_click_food_item->GetFoodInfo();
  1102. CDiandanOrderItem clickItem;
  1103. clickItem.food_id = foodinfo.id;
  1104. clickItem.food_name = foodinfo.name;
  1105. clickItem.type_id = foodinfo.type_id;
  1106. clickItem.price = foodinfo.price;
  1107. clickItem.is_dabao = false;
  1108. clickItem.dabao_money = foodinfo.dabao_money;
  1109. clickItem.num = "1";
  1110. if (foodinfo.member_price_used == "1")
  1111. {
  1112. clickItem.is_member_price_used = true;
  1113. }
  1114. else
  1115. {
  1116. clickItem.is_member_price_used = false;
  1117. }
  1118. //处理会员价的json
  1119. std::string member_price_json = foodinfo.member_price_json;
  1120. rapidjson::Document document;
  1121. document.Parse(member_price_json.c_str());
  1122. rapidjson::Value& member_price = document;
  1123. for (rapidjson::SizeType i = 0; i < member_price.Size(); ++i)
  1124. {
  1125. rapidjson::Value& member_price_info = member_price[i];
  1126. MemberPrice newPirce;
  1127. newPirce.id = member_price_info["id"].GetString();
  1128. newPirce.level = member_price_info["level"].GetString();
  1129. newPirce.price = member_price_info["price"].GetString();
  1130. clickItem.m_member_price.push_back(newPirce);
  1131. }
  1132. if (foodinfo.is_weight == "1")
  1133. {
  1134. clickItem.is_weight = true;
  1135. }
  1136. else
  1137. {
  1138. clickItem.is_weight = false;
  1139. }
  1140. //把当前点击商品的信息,保存到orderitem里面,方便后面修改规格的时候使用
  1141. clickItem.SetFoodInfo(m_cur_click_food_item->GetFoodInfo());
  1142. clickItem.SetIsTaocan(false);
  1143. if (foodinfo.is_nature == "1")
  1144. {
  1145. //商品有商品属性
  1146. clickItem.is_nature = true;
  1147. //先弹框进行选择属性
  1148. CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(1);
  1149. pNatureFrame->SetFoodItemUI(m_cur_click_food_item);
  1150. if (pNatureFrame != NULL)
  1151. {
  1152. pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1153. pNatureFrame->SetIcon(IDI_ICON_DUILIB);
  1154. pNatureFrame->CenterWindow();
  1155. UINT ret = pNatureFrame->ShowModal();
  1156. if (ret == IDOK)
  1157. {
  1158. //保存选择的属性
  1159. std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
  1160. clickItem.natureSelectedArray = natureSelectedArray;
  1161. delete pNatureFrame;
  1162. }
  1163. else
  1164. {
  1165. delete pNatureFrame;
  1166. return;
  1167. }
  1168. }
  1169. }
  1170. //商品没有商品属性
  1171. bool is_add_new = false;
  1172. int index = m_cur_diandan_order.AddItem(clickItem, is_add_new);
  1173. if (is_add_new)
  1174. {
  1175. //说明是新增了一项,要刷新一下购物车展示
  1176. this->AddDiandanOrderItemShow(index);
  1177. }
  1178. else
  1179. {
  1180. //没有新增,而是修改了一项
  1181. this->UpdateDiandanOrderItemShow(index);
  1182. }
  1183. }
  1184. }
  1185. void CDiandanPageUI::ClickAdd()
  1186. {
  1187. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1188. int nIndex = pList->GetCurSel();
  1189. if (nIndex == -1)
  1190. {
  1191. return;
  1192. }
  1193. m_cur_diandan_order.AddNum(nIndex);
  1194. //没有新增,而是修改了一项
  1195. this->UpdateDiandanOrderItemShow(nIndex);
  1196. }
  1197. void CDiandanPageUI::ClickDel()
  1198. {
  1199. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1200. int nIndex = pList->GetCurSel();
  1201. if (nIndex == -1)
  1202. {
  1203. return;
  1204. }
  1205. bool is_del = m_cur_diandan_order.DelNum(nIndex);
  1206. //如果是删掉了,那么就刷新显示
  1207. if (is_del)
  1208. {
  1209. this->DelDiandanOrderItemShow(nIndex);
  1210. }
  1211. else
  1212. {
  1213. this->UpdateDiandanOrderItemShow(nIndex);
  1214. }
  1215. }
  1216. void CDiandanPageUI::ClickRemove()
  1217. {
  1218. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1219. int nIndex = pList->GetCurSel();
  1220. if (nIndex == -1)
  1221. {
  1222. return;
  1223. }
  1224. m_cur_diandan_order.Remove(nIndex);
  1225. this->DelDiandanOrderItemShow(nIndex);
  1226. }
  1227. void CDiandanPageUI::ClickGuige()
  1228. {
  1229. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1230. int nIndex = pList->GetCurSel();
  1231. if (nIndex == -1)
  1232. {
  1233. return;
  1234. }
  1235. bool is_taocan = m_cur_diandan_order.getDiandanOrderItem(nIndex).m_is_taocan;
  1236. if (is_taocan)
  1237. {
  1238. //弹出属性框,开始重新选择属性
  1239. CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(2);
  1240. pNatureFrame->SetDiandanOrderItem(m_cur_diandan_order.getDiandanOrderItem(nIndex));
  1241. if (pNatureFrame != NULL)
  1242. {
  1243. pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1244. pNatureFrame->SetIcon(IDI_ICON_DUILIB);
  1245. pNatureFrame->CenterWindow();
  1246. UINT ret = pNatureFrame->ShowModal();
  1247. if (ret == IDOK)
  1248. {
  1249. //保存选择的属性
  1250. std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
  1251. m_cur_diandan_order.UpdateItemGuige(nIndex, natureSelectedArray);
  1252. delete pNatureFrame;
  1253. //然后要刷新这个item的显示
  1254. this->UpdateDiandanOrderItemShow(nIndex);
  1255. }
  1256. else
  1257. {
  1258. return;
  1259. }
  1260. }
  1261. }
  1262. else
  1263. {
  1264. bool is_nature = m_cur_diandan_order.getDiandanOrderItem(nIndex).is_nature;
  1265. if (!is_nature)
  1266. {
  1267. //当前商品没有商品属性
  1268. return;
  1269. }
  1270. //弹出属性框,开始重新选择属性
  1271. CDiandanNatureWnd* pNatureFrame = new CDiandanNatureWnd(2);
  1272. pNatureFrame->SetDiandanOrderItem(m_cur_diandan_order.getDiandanOrderItem(nIndex));
  1273. if (pNatureFrame != NULL)
  1274. {
  1275. pNatureFrame->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1276. pNatureFrame->SetIcon(IDI_ICON_DUILIB);
  1277. pNatureFrame->CenterWindow();
  1278. UINT ret = pNatureFrame->ShowModal();
  1279. if (ret == IDOK)
  1280. {
  1281. //保存选择的属性
  1282. std::vector<FoodNatureSelectValue> natureSelectedArray = pNatureFrame->GetNatureSelectedArray();
  1283. m_cur_diandan_order.UpdateItemGuige(nIndex, natureSelectedArray);
  1284. delete pNatureFrame;
  1285. //然后要刷新这个item的显示
  1286. this->UpdateDiandanOrderItemShow(nIndex);
  1287. }
  1288. else
  1289. {
  1290. return;
  1291. }
  1292. }
  1293. }
  1294. }
  1295. void CDiandanPageUI::ClickDabao()
  1296. {
  1297. CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
  1298. int nIndex = pList->GetCurSel();
  1299. if (nIndex == -1)
  1300. {
  1301. return;
  1302. }
  1303. m_cur_diandan_order.SetDabao(nIndex);
  1304. //没有新增,而是修改了一项
  1305. this->UpdateDiandanOrderItemShow(nIndex);
  1306. }
  1307. void CDiandanPageUI::ClickQingkong()
  1308. {
  1309. m_cur_diandan_order.Clear();
  1310. this->ClearDiandanOrderItemShow();
  1311. }
  1312. void CDiandanPageUI::ClickZhengdanMemo()
  1313. {
  1314. CMemoWnd* pMemoDlg = new CMemoWnd();
  1315. if (pMemoDlg != NULL)
  1316. {
  1317. pMemoDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1318. pMemoDlg->SetIcon(IDI_ICON_DUILIB);
  1319. pMemoDlg->CenterWindow();
  1320. pMemoDlg->SetTitle(L"整单备注");
  1321. UINT ret = pMemoDlg->ShowModal();
  1322. if (ret == IDOK)
  1323. {
  1324. //保存选择的属性
  1325. std::string sMemo = pMemoDlg->getMemo();
  1326. //渲染整单备注的展示
  1327. CLabelUI* pLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_label_zhengdanbeizhu")));
  1328. pLabel->SetText((L"整单备注:" + CLewaimaiString::UTF8ToUnicode(sMemo)).c_str());
  1329. //保存备注,提交订单的时候用
  1330. m_cur_diandan_order.SetMemo(sMemo);
  1331. delete pMemoDlg;
  1332. }
  1333. else
  1334. {
  1335. delete pMemoDlg;
  1336. return;
  1337. }
  1338. }
  1339. }
  1340. void CDiandanPageUI::ClickGengduoPay()
  1341. {
  1342. if (m_cur_diandan_order.getItemNum() == 0)
  1343. {
  1344. m_pMainWnd->ShowToast(L"请先选择商品再结算");
  1345. return;
  1346. }
  1347. ShowJiesuanPage();
  1348. }
  1349. void CDiandanPageUI::JixuJiacai()
  1350. {
  1351. //先显示商品页面
  1352. CVerticalLayoutUI* pFoodLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("diandan_food_layout")));
  1353. pFoodLayout->SetVisible(true);
  1354. //显示结算按钮
  1355. CHorizontalLayoutUI* pPayLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_pay_layout")));
  1356. pPayLayout->SetVisible(true);
  1357. //再隐藏结算页面
  1358. CHorizontalLayoutUI* pJiesuanLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_jiesuan_layout")));
  1359. pJiesuanLayout->SetVisible(false);
  1360. //隐藏继续加菜的按钮
  1361. CButtonUI* pJiacaiBtn = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_jixujiacai")));
  1362. pJiacaiBtn->SetVisible(false);
  1363. }
  1364. void CDiandanPageUI::ClickChakanYouhui()
  1365. {
  1366. //弹框展示所有的优惠
  1367. CYouhuiShowWnd* pYouhuiDlg = new CYouhuiShowWnd();
  1368. if (pYouhuiDlg != NULL)
  1369. {
  1370. pYouhuiDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1371. pYouhuiDlg->SetIcon(IDI_ICON_DUILIB);
  1372. pYouhuiDlg->CenterWindow();
  1373. 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);
  1374. UINT ret = pYouhuiDlg->ShowModal();
  1375. if (ret == IDOK)
  1376. {
  1377. }
  1378. else
  1379. {
  1380. delete pYouhuiDlg;
  1381. return;
  1382. }
  1383. }
  1384. }
  1385. void CDiandanPageUI::ClickMemberLogin()
  1386. {
  1387. CMemberLoginWnd* pMemberLoginDlg = new CMemberLoginWnd();
  1388. if (pMemberLoginDlg != NULL)
  1389. {
  1390. pMemberLoginDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1391. pMemberLoginDlg->SetIcon(IDI_ICON_DUILIB);
  1392. pMemberLoginDlg->CenterWindow();
  1393. pMemberLoginDlg->SetTitle(L"会员登录");
  1394. UINT ret = pMemberLoginDlg->ShowModal();
  1395. if (ret == IDOK)
  1396. {
  1397. //这说明会员登录成功了
  1398. m_is_member = true;
  1399. m_member_name = pMemberLoginDlg->m_member_name;
  1400. m_member_level = pMemberLoginDlg->m_member_level;
  1401. m_member_level_name = pMemberLoginDlg->m_member_level_name;
  1402. CButtonUI* pMemberLoginBtn = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_member_login")));
  1403. pMemberLoginBtn->SetVisible(false);
  1404. CLabelUI* pMemberInfo = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_member_info")));
  1405. std::wstring memberInfo = L"会员:" + CLewaimaiString::UTF8ToUnicode(m_member_name) + L"【" + CLewaimaiString::UTF8ToUnicode(m_member_level_name) + L"】";
  1406. pMemberInfo->SetText(memberInfo.c_str());
  1407. pMemberInfo->SetVisible(true);
  1408. this->UpdateJiesuanInfo();
  1409. delete pMemberLoginDlg;
  1410. }
  1411. else
  1412. {
  1413. delete pMemberLoginDlg;
  1414. return;
  1415. }
  1416. }
  1417. }
  1418. void CDiandanPageUI::ClickZhekou()
  1419. {
  1420. CZhekouWnd* pZhekouDlg = new CZhekouWnd();
  1421. if (pZhekouDlg != NULL)
  1422. {
  1423. pZhekouDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1424. pZhekouDlg->SetIcon(IDI_ICON_DUILIB);
  1425. pZhekouDlg->CenterWindow();
  1426. pZhekouDlg->SetTitle(L"输入折扣值");
  1427. UINT ret = pZhekouDlg->ShowModal();
  1428. if (ret == IDOK)
  1429. {
  1430. //这说明折扣输入了
  1431. std::string zhekou = pZhekouDlg->getContent();
  1432. CButtonUI* pZhekouEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_zhekou_value")));
  1433. pZhekouEdit->SetText(CLewaimaiString::UTF8ToUnicode(zhekou).c_str());
  1434. this->UpdateJiesuanInfo();
  1435. delete pZhekouDlg;
  1436. }
  1437. else
  1438. {
  1439. delete pZhekouDlg;
  1440. return;
  1441. }
  1442. }
  1443. }
  1444. void CDiandanPageUI::ClickJiajia()
  1445. {
  1446. CjiajiaWnd* pJiajiaDlg = new CjiajiaWnd();
  1447. if (pJiajiaDlg != NULL)
  1448. {
  1449. pJiajiaDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1450. pJiajiaDlg->SetIcon(IDI_ICON_DUILIB);
  1451. pJiajiaDlg->CenterWindow();
  1452. pJiajiaDlg->SetTitle(L"输入加价金额");
  1453. UINT ret = pJiajiaDlg->ShowModal();
  1454. if (ret == IDOK)
  1455. {
  1456. //这说明折扣输入了
  1457. std::string jiajia = pJiajiaDlg->getContent();
  1458. CButtonUI* pJiajiaEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_jiajia_value")));
  1459. pJiajiaEdit->SetText(CLewaimaiString::UTF8ToUnicode(jiajia).c_str());
  1460. this->UpdateJiesuanInfo();
  1461. delete pJiajiaDlg;
  1462. }
  1463. else
  1464. {
  1465. delete pJiajiaDlg;
  1466. return;
  1467. }
  1468. }
  1469. }
  1470. void CDiandanPageUI::ClickRengongyouhui()
  1471. {
  1472. CRengongYouhuiWnd* pYouhuiDlg = new CRengongYouhuiWnd();
  1473. if (pYouhuiDlg != NULL)
  1474. {
  1475. pYouhuiDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1476. pYouhuiDlg->SetIcon(IDI_ICON_DUILIB);
  1477. pYouhuiDlg->CenterWindow();
  1478. pYouhuiDlg->SetTitle(L"输入优惠金额");
  1479. UINT ret = pYouhuiDlg->ShowModal();
  1480. if (ret == IDOK)
  1481. {
  1482. //这说明折扣输入了
  1483. std::string youhui = pYouhuiDlg->getContent();
  1484. CButtonUI* pYouhuiEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("diandan_jiesuan_youhui_value")));
  1485. pYouhuiEdit->SetText(CLewaimaiString::UTF8ToUnicode(youhui).c_str());
  1486. this->UpdateJiesuanInfo();
  1487. delete pYouhuiDlg;
  1488. }
  1489. else
  1490. {
  1491. delete pYouhuiDlg;
  1492. return;
  1493. }
  1494. }
  1495. }
  1496. void CDiandanPageUI::ClickSaomaYouhuiquan()
  1497. {
  1498. CSaomaYouhuiquanWnd* pSaomaYouhuiquanDlg = new CSaomaYouhuiquanWnd();
  1499. if (pSaomaYouhuiquanDlg != NULL)
  1500. {
  1501. pSaomaYouhuiquanDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1502. pSaomaYouhuiquanDlg->SetIcon(IDI_ICON_DUILIB);
  1503. pSaomaYouhuiquanDlg->CenterWindow();
  1504. pSaomaYouhuiquanDlg->SetTitle(L"扫码使用优惠券");
  1505. UINT ret = pSaomaYouhuiquanDlg->ShowModal();
  1506. if (ret == IDOK)
  1507. {
  1508. //这说明优惠券核销成功了
  1509. m_is_youhuiquan = true;
  1510. m_youhuiquan_id = pSaomaYouhuiquanDlg->m_coupon_id;
  1511. m_coupon_basic_price = pSaomaYouhuiquanDlg->m_coupon_basic_price;
  1512. m_coupon_deadline = pSaomaYouhuiquanDlg->m_coupon_deadline;
  1513. m_coupon_value = pSaomaYouhuiquanDlg->m_coupon_value;
  1514. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_youhuiquan_status")));
  1515. pYouhuiEdit->SetText(L"已使用");
  1516. this->UpdateJiesuanInfo();
  1517. delete pSaomaYouhuiquanDlg;
  1518. }
  1519. else
  1520. {
  1521. delete pSaomaYouhuiquanDlg;
  1522. return;
  1523. }
  1524. }
  1525. }
  1526. //点击扫码商品券
  1527. void CDiandanPageUI::ClickSaomaShangpinquan()
  1528. {
  1529. CSaomaShangpinquanWnd* pSaomaShangpinquanDlg = new CSaomaShangpinquanWnd();
  1530. if (pSaomaShangpinquanDlg != NULL)
  1531. {
  1532. pSaomaShangpinquanDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1533. pSaomaShangpinquanDlg->SetIcon(IDI_ICON_DUILIB);
  1534. pSaomaShangpinquanDlg->CenterWindow();
  1535. pSaomaShangpinquanDlg->SetTitle(L"扫码使用商品券");
  1536. UINT ret = pSaomaShangpinquanDlg->ShowModal();
  1537. if (ret == IDOK)
  1538. {
  1539. //这说明商品券核销成功了
  1540. m_is_shangpinquan = true;
  1541. m_shangpinquan_id = pSaomaShangpinquanDlg->m_goodscoupon_id;
  1542. m_shangpinquan_name = pSaomaShangpinquanDlg->m_goods_coupon_name;
  1543. m_shangpinquan_foodid = pSaomaShangpinquanDlg->m_bind_foods_id;
  1544. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_shangpinquan_status")));
  1545. pYouhuiEdit->SetText(L"已使用");
  1546. this->UpdateJiesuanInfo();
  1547. delete pSaomaShangpinquanDlg;
  1548. }
  1549. else
  1550. {
  1551. delete pSaomaShangpinquanDlg;
  1552. return;
  1553. }
  1554. }
  1555. }
  1556. //点击扫码权益卡
  1557. void CDiandanPageUI::ClickSaomaQuanyika()
  1558. {
  1559. CSaomaQuanyikaWnd* pSaomaQuanyikaDlg = new CSaomaQuanyikaWnd();
  1560. if (pSaomaQuanyikaDlg != NULL)
  1561. {
  1562. pSaomaQuanyikaDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1563. pSaomaQuanyikaDlg->SetIcon(IDI_ICON_DUILIB);
  1564. pSaomaQuanyikaDlg->CenterWindow();
  1565. pSaomaQuanyikaDlg->SetTitle(L"扫码使用权益卡");
  1566. UINT ret = pSaomaQuanyikaDlg->ShowModal();
  1567. if (ret == IDOK)
  1568. {
  1569. //这说明权益卡核销成功了
  1570. m_is_quanyika = true;
  1571. m_quanyika_discount = pSaomaQuanyikaDlg->m_discount;
  1572. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_quanyika_status")));
  1573. pYouhuiEdit->SetText(L"已使用");
  1574. this->UpdateJiesuanInfo();
  1575. delete pSaomaQuanyikaDlg;
  1576. }
  1577. else
  1578. {
  1579. delete pSaomaQuanyikaDlg;
  1580. return;
  1581. }
  1582. }
  1583. }
  1584. //点击扫码次卡
  1585. void CDiandanPageUI::ClickSaomaCika()
  1586. {
  1587. CSaomaCikaWnd* pSaomaCikaDlg = new CSaomaCikaWnd();
  1588. if (pSaomaCikaDlg != NULL)
  1589. {
  1590. pSaomaCikaDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1591. pSaomaCikaDlg->SetIcon(IDI_ICON_DUILIB);
  1592. pSaomaCikaDlg->CenterWindow();
  1593. pSaomaCikaDlg->SetTitle(L"扫码使用次卡");
  1594. UINT ret = pSaomaCikaDlg->ShowModal();
  1595. if (ret == IDOK)
  1596. {
  1597. //这说明商品券核销成功了
  1598. m_is_cika = true;
  1599. m_cika_id = pSaomaCikaDlg->m_timescoupon_id;
  1600. m_cika_deduct_type = pSaomaCikaDlg->m_deduct_type;
  1601. m_cika_discount = pSaomaCikaDlg->m_discount;
  1602. m_cika_discount_value = pSaomaCikaDlg->m_discount_value;
  1603. m_cika_full_reduce = pSaomaCikaDlg->m_full_reduce;
  1604. m_cika_full_reduce_value = pSaomaCikaDlg->m_full_reduce_value;
  1605. m_cika_offer = pSaomaCikaDlg->m_offer;
  1606. m_cika_offer_value = pSaomaCikaDlg->m_offer_value;
  1607. m_cika_bind_foods_id = pSaomaCikaDlg->m_bind_foods_id;
  1608. CLabelUI* pYouhuiEdit = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_jiesuan_cika_status")));
  1609. pYouhuiEdit->SetText(L"已使用");
  1610. this->UpdateJiesuanInfo();
  1611. delete pSaomaCikaDlg;
  1612. }
  1613. else
  1614. {
  1615. delete pSaomaCikaDlg;
  1616. return;
  1617. }
  1618. }
  1619. }
  1620. void CDiandanPageUI::ClickCanpai()
  1621. {
  1622. CCanpaiWnd* pCanpaiDlg = new CCanpaiWnd();
  1623. if (pCanpaiDlg != NULL)
  1624. {
  1625. pCanpaiDlg->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE);
  1626. pCanpaiDlg->SetIcon(IDI_ICON_DUILIB);
  1627. pCanpaiDlg->CenterWindow();
  1628. pCanpaiDlg->SetTitle(L"输入餐牌号");
  1629. UINT ret = pCanpaiDlg->ShowModal();
  1630. if (ret == IDOK)
  1631. {
  1632. //这说明折扣输入了
  1633. std::string canpai = pCanpaiDlg->getContent();
  1634. m_canpai = canpai;
  1635. CButtonUI* pCanpaiEdit = static_cast<CButtonUI*>(this->FindSubControl(_T("btn_diandan_canpaihao")));
  1636. pCanpaiEdit->SetText((L"餐牌号 " + CLewaimaiString::UTF8ToUnicode(canpai)).c_str());
  1637. this->UpdateJiesuanInfo();
  1638. delete pCanpaiDlg;
  1639. }
  1640. else
  1641. {
  1642. delete pCanpaiDlg;
  1643. return;
  1644. }
  1645. }
  1646. }
  1647. void CDiandanPageUI::StartWeixinzhifuShoukuan()
  1648. {
  1649. if (m_is_show_shoukuan == true)
  1650. {
  1651. return;
  1652. }
  1653. if (m_cur_diandan_order.getItemNum() == 0)
  1654. {
  1655. return;
  1656. }
  1657. CWeixinzhifuShoukuanWnd* pShoukuanWnd = new CWeixinzhifuShoukuanWnd;
  1658. if (pShoukuanWnd != NULL)
  1659. {
  1660. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  1661. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  1662. pShoukuanWnd->CenterWindow();
  1663. m_is_show_shoukuan = true;
  1664. std::string format_string = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  1665. std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
  1666. pShoukuanWnd->InitMoney(watchValue);
  1667. //这里要对提交订单的参数进行组装,然后方便请求
  1668. pShoukuanWnd->SetCommonParams(GetSendorderParams());
  1669. /*
  1670. if (m_is_start_catch && m_catch_string.length() == 18)
  1671. {
  1672. pShoukuanWnd->InitFukuanma(m_catch_string);
  1673. }
  1674. }*/
  1675. UINT ret = pShoukuanWnd->ShowModal();
  1676. if (ret == IDOK)
  1677. {
  1678. //说明收款成功了,需要进行一些后续的处理
  1679. //初始化页面信息
  1680. InitJiesuanInfo();
  1681. //处理打印
  1682. }
  1683. delete pShoukuanWnd;
  1684. m_is_show_shoukuan = false;
  1685. }
  1686. }
  1687. void CDiandanPageUI::StartHuiyuanShoukuan()
  1688. {
  1689. if (m_is_show_shoukuan == true)
  1690. {
  1691. return;
  1692. }
  1693. if (m_cur_diandan_order.getItemNum() == 0)
  1694. {
  1695. return;
  1696. }
  1697. CHuiyuanShoukuanWnd* pShoukuanWnd = new CHuiyuanShoukuanWnd();
  1698. if (pShoukuanWnd != NULL)
  1699. {
  1700. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  1701. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  1702. pShoukuanWnd->CenterWindow();
  1703. m_is_show_shoukuan = true;
  1704. std::string format_string = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  1705. std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
  1706. pShoukuanWnd->InitMoney(watchValue);
  1707. //这里要对提交订单的参数进行组装,然后方便请求
  1708. pShoukuanWnd->SetCommonParams(GetSendorderParams());
  1709. /*
  1710. if (m_is_start_catch && m_catch_string.length() == 18)
  1711. {
  1712. pShoukuanWnd->InitFukuanma(m_catch_string);
  1713. }
  1714. }*/
  1715. UINT ret = pShoukuanWnd->ShowModal();
  1716. if (ret == IDOK)
  1717. {
  1718. //说明收款成功了,需要进行一些后续的处理
  1719. //初始化页面信息
  1720. InitJiesuanInfo();
  1721. //处理打印
  1722. }
  1723. delete pShoukuanWnd;
  1724. m_is_show_shoukuan = false;
  1725. }
  1726. }
  1727. //获取通用参数,任何支付方式都要用到的参数,个性化参数在弹框里面处理
  1728. //参考文档 http://apidoc.zhipuzi.com/index.php/home/item/show?item_id=4
  1729. std::map<string, string> CDiandanPageUI::GetSendorderParams()
  1730. {
  1731. std::map<string, string> params;
  1732. params["order_no"] = CRandomHelper::GetRandString(20);
  1733. //构建food_list参数
  1734. params["food_list"] = m_cur_diandan_order.getDiandanFoodlistParam();
  1735. params["foodpackage_array"] = m_cur_diandan_order.getDiandanTaocanParam();
  1736. params["person_num"] = "1";
  1737. params["table_name"] = m_canpai;
  1738. params["note"] = m_cur_diandan_order.GetMemo();
  1739. params["dabao_price"] = CLewaimaiString::DoubleToString(m_dabao, 2);
  1740. params["food_price"] = CLewaimaiString::DoubleToString(m_cur_diandan_order.getTotalPrice(), 2);
  1741. params["total_price"] = CLewaimaiString::DoubleToString(m_cur_diandan_order.getTotalPrice() + m_dabao, 2);
  1742. CEditUI* pZhekouEdit = static_cast<CEditUI*>(this->FindSubControl(_T("diandan_jiesuan_zhekou_value")));
  1743. wstring ws_zhekou = pZhekouEdit->GetText();
  1744. params["discount"] = CLewaimaiString::UnicodeToUTF8(ws_zhekou);
  1745. params["coupon"] = CLewaimaiString::DoubleToString(m_rengong_youhui, 2);
  1746. params["price_plus"] = CLewaimaiString::DoubleToString(m_jiajia, 2);
  1747. params["price_moling"] = CLewaimaiString::DoubleToString(m_moling_youhui, 2);
  1748. params["yingshou_value"] = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  1749. params["shishou_value"] = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  1750. params["zhaoling_value"] = "0";
  1751. params["zhifu_type"] = "";
  1752. if (m_is_youhuiquan)
  1753. {
  1754. params["coupon_id"] = m_youhuiquan_id;
  1755. }
  1756. if (m_is_cika)
  1757. {
  1758. params["timescoupon_id"] = m_cika_id;
  1759. }
  1760. if (m_is_shangpinquan)
  1761. {
  1762. params["goodscoupon_id"] = m_shangpinquan_id;
  1763. }
  1764. if (m_is_quanyika)
  1765. {
  1766. params["is_eq_card_discount"] = "1";
  1767. params["eq_card_discount_value"] = m_quanyika_discount;
  1768. }
  1769. else
  1770. {
  1771. params["is_eq_card_discount"] = "0";
  1772. }
  1773. if (m_is_member)
  1774. {
  1775. params["member_level"] = m_member_level;
  1776. if (m_is_member_zhekou)
  1777. {
  1778. params["member_level_value"] = m_member_zhekou_value;
  1779. }
  1780. else
  1781. {
  1782. params["member_level_value"] = 10;
  1783. }
  1784. }
  1785. if (m_is_cika == true)
  1786. {
  1787. params["time_coupon_type"] = m_cika_deduct_type;
  1788. params["time_coupon_discount_value"] = m_cika_discount_value;
  1789. params["time_coupon_full_reduce_value"] = m_cika_full_reduce_value;
  1790. params["time_coupon_offer_value"] = m_cika_offer_value;
  1791. params["time_coupon_band_food_value"] = CLewaimaiString::DoubleToString(m_cika_youhui, 2);
  1792. }
  1793. if (m_is_shangpinquan)
  1794. {
  1795. params["goods_coupon_band_food_value"] = CLewaimaiString::DoubleToString(m_shangpinquan_youhui, 2);
  1796. }
  1797. if (m_manjian_youhui > 0)
  1798. {
  1799. params["promotion_value"] = CLewaimaiString::DoubleToString(m_manjian_youhui, 2);
  1800. }
  1801. if (m_youhuiquan_youhui > 0)
  1802. {
  1803. params["coupon_value"] = CLewaimaiString::DoubleToString(m_youhuiquan_youhui, 2);
  1804. }
  1805. if (m_member_zhekou_youhui > 0)
  1806. {
  1807. params["member_discount_money"] = CLewaimaiString::DoubleToString(m_member_zhekou_youhui, 2);
  1808. }
  1809. if (m_zhekou_youhui > 0)
  1810. {
  1811. params["shop_discount_money"] = CLewaimaiString::DoubleToString(m_zhekou_youhui, 2);
  1812. }
  1813. if (m_cika_youhui > 0)
  1814. {
  1815. params["timescoupon_discount_money"] = CLewaimaiString::DoubleToString(m_cika_youhui, 2);
  1816. }
  1817. if (m_quanyika_youhui > 0)
  1818. {
  1819. params["eq_card_discount_money"] = CLewaimaiString::DoubleToString(m_quanyika_youhui, 2);
  1820. }
  1821. params["total_delete_money"] = CLewaimaiString::DoubleToString(m_total_youhui, 2);
  1822. return params;
  1823. }
  1824. //开始进行现金收款
  1825. void CDiandanPageUI::StartXianjinShoukuan()
  1826. {
  1827. if (m_is_show_shoukuan == true)
  1828. {
  1829. return;
  1830. }
  1831. if (m_cur_diandan_order.getItemNum() == 0)
  1832. {
  1833. return;
  1834. }
  1835. CXianjinShoukuanWnd* pShoukuanWnd = new CXianjinShoukuanWnd();
  1836. if (pShoukuanWnd != NULL)
  1837. {
  1838. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  1839. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  1840. pShoukuanWnd->CenterWindow();
  1841. m_is_show_shoukuan = true;
  1842. std::string format_string = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  1843. std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
  1844. pShoukuanWnd->InitMoney(watchValue);
  1845. //这里要对提交订单的参数进行组装,然后方便请求
  1846. pShoukuanWnd->SetCommonParams(GetSendorderParams());
  1847. /*
  1848. if (m_is_start_catch && m_catch_string.length() == 18)
  1849. {
  1850. pShoukuanWnd->InitFukuanma(m_catch_string);
  1851. }
  1852. }*/
  1853. UINT ret = pShoukuanWnd->ShowModal();
  1854. if (ret == IDOK)
  1855. {
  1856. //说明收款成功了,需要进行一些后续的处理
  1857. //初始化页面信息
  1858. InitJiesuanInfo();
  1859. //处理打印
  1860. }
  1861. delete pShoukuanWnd;
  1862. m_is_show_shoukuan = false;
  1863. }
  1864. }
  1865. void CDiandanPageUI::StartFulikaShoukuan()
  1866. {
  1867. if (m_is_show_shoukuan == true)
  1868. {
  1869. return;
  1870. }
  1871. if (m_cur_diandan_order.getItemNum() == 0)
  1872. {
  1873. return;
  1874. }
  1875. CFulikaShoukuanWnd* pShoukuanWnd = new CFulikaShoukuanWnd();
  1876. if (pShoukuanWnd != NULL)
  1877. {
  1878. pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
  1879. pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
  1880. pShoukuanWnd->CenterWindow();
  1881. m_is_show_shoukuan = true;
  1882. std::string format_string = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
  1883. std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
  1884. pShoukuanWnd->InitMoney(watchValue);
  1885. //这里要对提交订单的参数进行组装,然后方便请求
  1886. pShoukuanWnd->SetCommonParams(GetSendorderParams());
  1887. /*
  1888. if (m_is_start_catch && m_catch_string.length() == 18)
  1889. {
  1890. pShoukuanWnd->InitFukuanma(m_catch_string);
  1891. }
  1892. }*/
  1893. UINT ret = pShoukuanWnd->ShowModal();
  1894. if (ret == IDOK)
  1895. {
  1896. //说明收款成功了,需要进行一些后续的处理
  1897. //初始化页面信息
  1898. InitJiesuanInfo();
  1899. //处理打印
  1900. }
  1901. delete pShoukuanWnd;
  1902. m_is_show_shoukuan = false;
  1903. }
  1904. }