CDiandanPageUI.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. #pragma once
  2. #include "../pch/pch.h"
  3. #include "CBasePageUI.h"
  4. #include "../zhipuzi/CFood.h"
  5. #include "../zhipuzi/CFoodtype.h"
  6. #include "../zhipuzi/CFoodpackage.h"
  7. #include "../control/CDiandanFoodItemUI.h"
  8. #include "../zhipuzi/CDiandanOrder.h"
  9. #include "../wnd/CModalWnd.h"
  10. class CDiandanPageUI : public CBasePageUI
  11. {
  12. public:
  13. CDiandanPageUI();
  14. ~CDiandanPageUI();
  15. //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用(仅加载时候会调用1次)
  16. void InitShow();
  17. //收款一个订单成功,准备开始收款第2个订单的时候调用(会多次调度用)
  18. void RefreshShow();
  19. //初始化商品分类的显示
  20. void InitFoodtypeShow();
  21. //根据当前选择的分类,刷新商品展示
  22. void InitFoodShow();
  23. //仅仅初始化结算相关的显示(比如折扣、优惠、价格等)
  24. void InitJiesuanShow();
  25. //初始化结算页面的支付方式展示(仅需要在页面初始化的时候调用一次,这里只添加支付方式,不设置位置)
  26. void InitJiesuanZhifu();
  27. //这个只更新结算页面支付方式的位置,不处理控件添加
  28. void UpdateJiesuanZhifuPos();
  29. //展示结算页面,隐藏选购页面
  30. void ShowJiesuanPage();
  31. //展示选购页面,隐藏结算页面
  32. void ShowXuangouPage();
  33. //只是刷新取单数量
  34. void RefreshGuadanNum();
  35. //处理按钮点击类事件
  36. void HandleClickMsg(TNotifyUI& msg);
  37. //处理option切换事件
  38. void HandleSelectChangeMsg(TNotifyUI& msg);
  39. //处理下拉框、radio的切换事件
  40. void HandleItemSelectMsg(TNotifyUI& msg);
  41. //处理编辑框输入内容改变事件
  42. void HandleTextChangedMsg(TNotifyUI& msg);
  43. //处理扫码枪捕捉到的扫码信息
  44. void HandleTextCapture(std::string content);
  45. //添加一个新的商品到购物车展示
  46. void AddDiandanOrderItemShow(int index);
  47. //刷新某个购物车商品的显示
  48. void UpdateDiandanOrderItemShow(int index);
  49. //删除购物车中某一个商品
  50. void DelDiandanOrderItemShow(int index);
  51. //清空购物车中所有商品的展示
  52. void ClearDiandanOrderItemShow();
  53. //任何可以引起价格变化的,比如添加、修改、删除商品,或者修改优惠等,需要重新计算总价格,刷新结算账单等地方的显示,都要调用这个方法
  54. void UpdateJiesuanInfo();
  55. //点击某一个商品的item之后的处理逻辑
  56. void ClickFoodAction();
  57. //点击加号之后的逻辑
  58. void ClickAdd();
  59. //点击减号之后的逻辑
  60. void ClickDel();
  61. //点击删除之后的逻辑
  62. void ClickRemove();
  63. //点击规格之后的逻辑
  64. void ClickGuige();
  65. //点击打包之后的逻辑
  66. void ClickDabao();
  67. //点击清空之后的逻辑
  68. void ClickQingkong();
  69. //点击存单之后的逻辑
  70. void ClickCundan();
  71. //点击取单之后的逻辑
  72. void ClickQudan();
  73. //点击整单备注之后的逻辑
  74. void ClickZhengdanMemo();
  75. //点击更多支付之后的逻辑
  76. void ClickGengduoPay();
  77. //点击继续加菜之后的逻辑
  78. void JixuJiacai();
  79. //点击查看优惠
  80. void ClickChakanYouhui();
  81. //处理会员登录
  82. void ClickMemberLogin();
  83. //点击整单折扣
  84. void ClickZhekou();
  85. //点击加价
  86. void ClickJiajia();
  87. //点击优惠
  88. void ClickRengongyouhui();
  89. //点击扫码使用优惠券
  90. void ClickSaomaYouhuiquan();
  91. //点击扫码商品券
  92. void ClickSaomaShangpinquan();
  93. //点击扫码权益卡
  94. void ClickSaomaQuanyika();
  95. //点击扫码次卡
  96. void ClickSaomaCika();
  97. //点击餐牌号按钮
  98. void ClickCanpai();
  99. //开始进行微信支付收款
  100. void StartWeixinzhifuShoukuan();
  101. //开始进行会员收款
  102. void StartHuiyuanShoukuan();
  103. //开始进行现金收款
  104. void StartXianjinShoukuan();
  105. //开始进行福利卡收款
  106. void StartFulikaShoukuan();
  107. //开始自定义支付收款
  108. void StartZidingyiShoukuan(std::wstring name, std::wstring selfpay_id);
  109. //支付成功后,更新商品库存
  110. void UpdateFoodStock(std::string food_stock);
  111. //扫描了商品条码的逻辑处理
  112. void SaomiaoBarcode(std::string barcode);
  113. //开始搜索某个商品名字
  114. void StartSearchFood(std::string foodname);
  115. //停止搜索商品
  116. void StopSerachFood();
  117. //执行付款成功后的所有操作逻辑
  118. void StartWorkAfterShoukuan(std::string kucunstring, std::string take_food_code, std::string show_trade_no, std::string shoukuan_type);
  119. void SetPos(RECT rc, bool bNeedInvalidate = true);
  120. private:
  121. //获取用于提交订单的参数结构
  122. std::map<string, string> GetSendorderParams();
  123. //用于支付完成后,获取用于打印的order
  124. CDiandanOrder GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type);
  125. private:
  126. CTileLayoutUI* m_foodLayout;
  127. CHorizontalLayoutUI* m_foodtypeLayout;
  128. //套餐商品数量
  129. int m_nFoodpackageNum;
  130. //所有商品分类(只包含收银机显示的分类)
  131. std::vector<CFoodType> m_types;
  132. //当前选中的商品分类ID,为空表示没选中任何分类,为taocan表示选中套餐分类,如果选中普通商品分类就是分类ID
  133. std::string m_cur_type_id = "";
  134. CControlUI* m_curFoodtypeOption;
  135. //商品搜索相关
  136. std::string m_type_id_before_sousuo;
  137. std::string m_sousuo_foodname;
  138. //当前点击的哪个商品
  139. CDiandanFoodItemUI* m_cur_click_food_item;
  140. //当前购物车的订单,根据这个来进行渲染显示
  141. CDiandanOrder m_cur_diandan_order;
  142. //当前挂单的订单
  143. std::vector<CDiandanOrder> m_guadan_orders;
  144. //下面是结算相关信息
  145. //总的优惠
  146. double m_total_youhui;
  147. double m_zhekou_youhui;
  148. //人工加价
  149. double m_jiajia;
  150. //人工优惠
  151. double m_rengong_youhui;
  152. //开台费
  153. double m_kaitai;
  154. //茶位费
  155. double m_chawei;
  156. //打包费
  157. double m_dabao;
  158. //优惠券
  159. bool m_is_youhuiquan;
  160. std::string m_youhuiquan_id;
  161. std::string m_coupon_basic_price;
  162. std::string m_coupon_deadline;
  163. std::string m_coupon_value;
  164. double m_youhuiquan_youhui;
  165. //商品券
  166. bool m_is_shangpinquan; //是否核销的商品券
  167. std::string m_shangpinquan_id;
  168. std::string m_shangpinquan_name;
  169. std::string m_shangpinquan_foodid;
  170. double m_shangpinquan_youhui; //商品券优惠金额
  171. //次卡
  172. bool m_is_cika;
  173. std::string m_cika_id;
  174. std::string m_cika_deduct_type; //次卡优惠类型,0=>折扣,1=>满减,2=>抵扣,3=>指定商品兑换
  175. std::string m_cika_discount; //折扣信息
  176. std::string m_cika_discount_value; //折扣打折值
  177. std::string m_cika_full_reduce; //满减信息
  178. std::string m_cika_full_reduce_value; //满减,例如 200,100中间逗号隔开
  179. std::string m_cika_offer;
  180. std::string m_cika_offer_value;
  181. std::string m_cika_bind_foods_id;
  182. double m_cika_youhui;
  183. //权益卡
  184. bool m_is_quanyika;
  185. std::string m_quanyika_discount; //这里是接口返回的,实际上店铺设置里面也有一个
  186. double m_quanyika_youhui;
  187. //抹零 0:不抹零 1:抹零到角 2:抹零到元
  188. int m_moling_type;
  189. double m_moling_youhui;
  190. //会员相关
  191. bool m_is_member = false;
  192. std::string m_member_name;
  193. std::string m_member_level;
  194. std::string m_member_level_name;
  195. double m_total_member_youhui; //会员商品优惠
  196. bool m_is_member_zhekou = false;
  197. std::string m_member_zhekou_value; //具体会员打几折
  198. double m_member_zhekou_youhui; //会员店铺折扣优惠
  199. //满减
  200. double m_manjian_youhui;
  201. //当前应收总价
  202. double m_cur_total_price;
  203. //餐牌
  204. std::string m_canpai;
  205. //模态对话框有关的
  206. bool m_is_show_modal_wnd = false;
  207. CModalWnd* m_curModalWnd;
  208. //结算页面总的支付方式数量
  209. int m_nZhiufuNum;
  210. //当前控件的实际宽度
  211. int m_nPageWidth;
  212. };