#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(); //获取桌子信息和参数 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 ClickChetai(); //点击换台的逻辑 void ClickHuantai(); //点击退菜的逻辑 void ClickTuicai(); //点击“下单”按钮之后的逻辑 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(); //点击预览单按钮 void ClickYulan(); //开始进行微信支付收款,如果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 StartWorkAfterTuicai(std::string kucunstring, CZhengcanOrderItem tuicaiItem, int tuicai_num); //执行下单成功后的所有操作逻辑 void StartWorkAfterXiadan(std::string kucunstring, std::string show_trade_no); //执行付款成功后的所有操作逻辑 void StartWorkAfterShoukuan(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 GetSendorderParams(); //下单成功之后的打印函数 CZhengcanOrder GetPrintOrderinfoXiadan(std::string show_trade_no); //退菜成功之后的打印函数 CZhengcanOrder GetPrintOrderinfoTuicai(CZhengcanOrderItem tuicaiItem, int tuicai_num); //点击预览单之后的打印函数 CZhengcanOrder GetPrintOrderinfoYulan(); //用于支付完成后,获取用于打印的order CZhengcanOrder GetPrintOrderinfoJiesuan(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 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; //每次刷新购物车时候,用来保存历史的item,用来处理这些item的展示(比如颜色、是否可点击) std::vector m_history_cart_item; };