CDiandanPageUI.cpp 54 KB

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