| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 |
- #pragma once
- #include "../pch/pch.h"
- #include "CBasePageUI.h"
- #include "../zhipuzi/CFood.h"
- #include "../zhipuzi/CFoodtype.h"
- #include "../zhipuzi/CFoodpackage.h"
- #include "../control/CDiandanFoodItemUI.h"
- #include "../zhipuzi/CZhengcanOrder.h"
- #include "../wnd/CModalWnd.h"
- class CZhengcanDiandanPageUI : public CBasePageUI
- {
- public:
- CZhengcanDiandanPageUI();
- ~CZhengcanDiandanPageUI();
- //初始化当前页面的展示,处理默认展示效果,在页面每次被选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
- void InitShow();
- //这个是获取到桌位和订单相关信息之后执行的函数,初始化桌位和订单的显示
- void InitTableShow();
- //收款一个订单成功,准备开始收款第2个订单的时候调用(会多次调度用)
- void RefreshShow();
- //获取桌子信息和参数
- void GetTableInfo();
- //实际执行获取桌子信息的线程
- void DoGetTableInfo();
- //初始化商品分类的显示
- void InitFoodtypeShow();
- void UpdateFoodtypePos();
- //根据当前选择的分类,刷新商品展示
- void InitFoodShow();
- //仅仅初始化结算相关的显示(比如折扣、优惠、价格等)
- void InitJiesuanShow();
- //初始化结算页面的支付方式展示(仅需要在页面初始化的时候调用一次,这里只添加支付方式,不设置位置)
- void InitJiesuanZhifu();
- //这个只更新结算页面支付方式的位置,不处理控件添加
- void UpdateJiesuanZhifuPos();
- //展示结算页面,隐藏选购页面
- void ShowJiesuanPage();
- //展示选购页面,隐藏结算页面
- void ShowXuangouPage();
- //处理按钮点击类事件
- void HandleClickMsg(TNotifyUI& msg);
- //处理option切换事件
- void HandleSelectChangeMsg(TNotifyUI& msg);
- //处理下拉框、radio的切换事件
- void HandleItemSelectMsg(TNotifyUI& msg);
- //处理编辑框输入内容改变事件
- void HandleTextChangedMsg(TNotifyUI& msg);
- //处理扫码枪捕捉到的扫码信息
- void HandleTextCapture(std::string content);
- //处理自定义消息,各个页面处理各个页面自己的(是自己处理的消息返回true,不是自己处理的消息返回false)
- bool HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- return false;
- }
- //对订单做了任何改变之后,刷新购物车显示
- void UpdateShopcartShow();
- //任何可以引起价格变化的,比如添加、修改、删除商品,或者修改优惠等,需要重新计算总价格,刷新结算账单等地方的显示,都要调用这个方法
- void UpdateJiesuanInfo();
- //点击某一个商品的item之后的处理逻辑
- void ClickFoodAction();
- //点击加号之后的逻辑
- void ClickAdd();
- //点击减号之后的逻辑
- void ClickDel();
- //点击删除之后的逻辑
- void ClickRemove();
- //点击规格之后的逻辑
- void ClickGuige();
- //点击打包之后的逻辑
- void ClickDabao();
- //点击清空之后的逻辑
- void ClickQingkong();
- //点击整单备注之后的逻辑
- void ClickZhengdanMemo();
- //点击“下单”按钮之后的逻辑
- void ClickXidanBtn();
- //点击更多支付之后的逻辑
- void ClickPayBtn();
- //点击查看优惠
- void ClickChakanYouhui();
- //处理会员登录
- void ClickMemberLogin();
- //点击整单折扣
- void ClickZhekou();
- //点击加价
- void ClickJiajia();
- //点击优惠
- void ClickRengongyouhui();
- //点击扫码使用优惠券
- void ClickSaomaYouhuiquan();
- //点击扫码商品券
- void ClickSaomaShangpinquan();
- //点击扫码权益卡
- void ClickSaomaQuanyika();
- //点击扫码次卡
- void ClickSaomaCika();
- //点击取消使用优惠券
- void ClickQuxiaoYouhuiquan();
- //点击取消商品券
- void ClickQuxiaoShangpinquan();
- //点击取消权益卡
- void ClickQuxiaoQuanyika();
- //点击取消次卡
- void ClickQuxiaoCika();
- //点击人数号按钮
- void ClickRenshu();
- //开始进行微信支付收款,如果fukuanma不为空,默认自动唤起支付
- void StartWeixinzhifuShoukuan(std::string fukuanma = "");
- //开始进行会员收款
- void StartHuiyuanShoukuan();
- //开始进行现金收款
- void StartXianjinShoukuan();
- //开始进行福利卡收款
- void StartFulikaShoukuan();
- //开始自定义支付收款
- void StartZidingyiShoukuan(std::wstring name, std::wstring selfpay_id);
- //支付成功后,更新商品库存
- void UpdateFoodStock(std::string food_stock);
- //扫描了商品条码的逻辑处理,如果找到了这个条码的商品就返回true,如果没找到就返回false
- bool SaomiaoBarcode(std::string barcode);
- //判断是不是标签秤的条码,并进行处理,返回true表示是标签秤的条码,返回false表示不是
- bool BiaoqianchengSaomaBarcode(std::string barcode);
- //开始搜索某个商品名字
- void StartSearchFood(std::string foodname);
- //停止搜索商品
- void StopSerachFood();
- //执行付款成功后的所有操作逻辑
- void StartWorkAfterShoukuan(std::string kucunstring, std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance = "", std::string member_number = "");
- void SetPos(RECT rc, bool bNeedInvalidate = true);
- //刚进入桌子的时候,设置桌子ID
- void SetTableId(std::string table_id);
- private:
- //获取用于提交订单的参数结构
- std::map<string, string> GetSendorderParams();
- //用于支付完成后,获取用于打印的order
- CZhengcanOrder GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number);
- private:
- CTileLayoutUI* m_foodLayout;
- CHorizontalLayoutUI* m_foodtypeLayout;
- bool m_is_zidingyizhifu_init = false;
- //套餐商品数量
- int m_nFoodpackageNum;
- //所有商品分类(只包含收银机显示的分类)
- std::vector<CFoodType> m_types;
- //当前选中的商品分类ID,为空表示没选中任何分类,为taocan表示选中套餐分类,如果选中普通商品分类就是分类ID
- std::string m_cur_type_id = "";
- CControlUI* m_curFoodtypeOption;
- //商品搜索相关
- std::string m_type_id_before_sousuo;
- std::string m_sousuo_foodname;
- //当前点击的哪个商品
- CDiandanFoodItemUI* m_cur_click_food_item;
- //当前购物车的订单,根据这个来进行渲染显示
- CZhengcanOrder m_cur_diandan_order;
- //下面是结算相关信息
- //总的优惠
- double m_total_youhui;
- //折扣
- int m_zhekou_value;
- double m_zhekou_youhui;
- //人工加价
- double m_jiajia;
- //人工优惠
- double m_rengong_youhui;
- //开台费
- double m_kaitai = 0;
- //茶位费
- double m_tea_fee = 0; //单个人的茶位费
- double m_chawei = 0; //根据人数的实际茶位费
- //打包费
- double m_dabao;
- //优惠券
- bool m_is_youhuiquan;
- std::string m_youhuiquan_id;
- std::string m_coupon_basic_price;
- std::string m_coupon_deadline;
- std::string m_coupon_value;
- double m_youhuiquan_youhui;
- //商品券
- bool m_is_shangpinquan; //是否核销的商品券
- std::string m_shangpinquan_lewaimai_customer_id;
- std::string m_shangpinquan_id;
- std::string m_shangpinquan_name;
- std::string m_shangpinquan_foodid;
- double m_shangpinquan_youhui; //商品券优惠金额
- //次卡
- bool m_is_cika;
- std::string m_cika_lewaimai_customer_id;
- std::string m_cika_id;
- std::string m_cika_deduct_type; //次卡优惠类型,0=>折扣,1=>满减,2=>抵扣,3=>指定商品兑换
- std::string m_cika_discount; //折扣信息
- std::string m_cika_discount_value; //折扣打折值
- std::string m_cika_full_reduce; //满减信息
- std::string m_cika_full_reduce_value; //满减,例如 200,100中间逗号隔开
- std::string m_cika_offer;
- std::string m_cika_offer_value;
- std::string m_cika_bind_foods_id;
- double m_cika_youhui;
- //权益卡
- bool m_is_quanyika;
- std::string m_quanyika_discount; //这里是接口返回的,实际上店铺设置里面也有一个
- double m_quanyika_youhui;
- //抹零 0:不抹零 1:抹零到角 2:抹零到元
- int m_moling_type;
- double m_moling_youhui;
- //会员相关
- bool m_is_member = false;
- std::string m_member_name;
- std::string m_member_level;
- std::string m_member_level_name;
- double m_total_member_youhui; //会员商品优惠
- bool m_is_member_zhekou = false;
- std::string m_member_zhekou_value; //具体会员打几折
- double m_member_zhekou_youhui; //会员店铺折扣优惠
- //满减
- double m_manjian_youhui;
- //当前应收总价
- double m_cur_total_price;
- //仅用于现金收银成功后,对于实收和找零的临时记录
- std::string m_shishou_value;
- std::string m_zhaoling_value;
- //餐牌
- std::string m_renshu;
- //模态对话框有关的
- bool m_is_show_modal_wnd = false;
- CModalWnd* m_curModalWnd;
- //结算页面总的支付方式数量
- int m_nZhiufuNum;
- //当前控件的实际宽度
- int m_nPageWidth;
- //当前点餐对应的桌子id
- std::string m_table_id;
- //当前点餐对应的桌子名字
- std::string m_table_name;
- //当前桌子关联的订单ID
- std::string m_order_id;
- };
|