| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #pragma once
- #include <string>
- #include <vector>
- #include "../control/CDiandanNatureItemUI.h"
- #include "../zhipuzi/CFood.h"
- #include "../zhipuzi/CFoodpackage.h"
- #include "CZhengcanOrderItem.h"
- class CZhengcanOrderItemPrint
- {
- public:
- std::string m_food_name; //这个是完整展示的名字
- std::string m_quantity;
- std::string m_item_price; //注意这个是单价,不是总价
- std::string m_type_id;
- //表示这个Item是否是套餐的名字
- bool is_taocan = false;
- //表示这个是否是套餐下面的商品详情,主要用于厨房打印的时候,一个套餐下面的每个商品都会生成一个CZhengcanOrderItemPrint对象
- bool is_taocan_item = false;
- };
- /**
- * 点单里面的一个“订单”,每个选中的商品被加入订单,通过订单数据来计算价格,渲染界面,提交订单也是通过这个数据来提交
- * 挂单、取单操作的也是订单
- */
- class CZhengcanOrder
- {
- public:
- std::vector<CZhengcanOrderItem> m_items;
- //这个是不包含其他费用的纯商品原价
- std::string m_total_price_show;
- std::string m_guadan_time;
- //订单的整单备注
- std::string m_memo;
- //订单状态
- std::string m_status;
- //人数
- std::string m_renshu;
- //绑定的桌子信息
- std::string m_table_id;
- std::string m_table_name;
- //是否清零
- std::string m_is_clear;
- //开台时间
- std::string m_kaitai_time;
- //支付时间
- std::string m_pay_time;
- /****** 下面这些是专门用于打印的参数,不作为其他用途,点单逻辑中用不到,点单成功后赋值用于打印而已 ***********/
- std::string shopname;
- std::string show_trade_no;
- //会员余额和会员卡号,仅会员支付时有用
- std::string balance;
- std::string member_number;
- //微信支付 会员支付 现金支付 福利卡支付 自定义支付
- std::string shoukuan_type;
- int order_from; //1 收银机下单 2 商家app下单 3 扫码下单
- std::string init_time;
- //各种优惠
- std::string m_shangpinquan_youhui;
- std::string m_cika_youhui;
- std::string m_total_member_youhui;
- std::string m_zhekou_youhui;
- std::string m_member_zhekou_youhui;
- std::string m_quanyika_youhui;
- std::string m_manjian_youhui;
- std::string m_youhuiquan_youhui;
- std::string m_rengong_youhui;
- std::string m_moling_youhui;
- //加价金额
- std::string m_jiajia;
- std::string m_shishou_value;
- std::string m_zhaoling_value;
- //折扣值(1-100)
- std::string m_zhekou_value;
- //实际最终总价
- std::string m_dabao_money;
- std::string m_total_price;
- std::vector<CZhengcanOrderItemPrint> m_items_print;
- //下面是从订单接口从服务端获取的参数,暂时存在这里
- std::string m_order_id;
- std::string is_refund;
- std::string refund_time;
- std::string is_guazhang;
- std::string guazhang;
- public:
- //刷新点单相关的参数,比如一个订单收银成功后准备开始收银下一个订单时,清空之前的信息
- void RefreshDiandanInfo();
- int getItemNum();
- std::string getTotalPriceShow();
- double getTotalPrice();
- CZhengcanOrderItem getDiandanOrderItem(int index);
- //这个函数的逻辑是选择一个新商品的时候,与已有商品进行对比,看看是加一个新的商品,还是对已有商品增加数量
- //返回值是表示新加的item,在第几个元素,方便刷新显示
- int AddItem(CZhengcanOrderItem newitem, bool& is_add_new);
- void UpdateItemGuige(int index, std::vector<FoodNatureSelectValue>& natureSelectedArray);
- //给某一项添加一个数量
- void AddNum(int index);
- //给某一项减少一个数量,返回值为true表示商品本删掉了,也就是为0份;如果为false表示没被删掉
- bool DelNum(int index);
- //删除某一项
- void Remove(int index);
- //更新了某项的规格,那么重新刷新显示和价格
- void UpdateGuigePrice(int index);
- //打包
- void SetDabao(int index);
- //清空商品
- void Clear();
- void SetMemo(std::string memo);
- std::string GetMemo();
- //判断某个商品券是否能使用,如果可以返回true,如果不行返回false,youhui_value是对应的商品券优惠金额
- bool UseShangpinquan(std::string shangpinquan_food_id, double& youhui_value);
- //判断某个次卡是否能使用,如果可以返回true,如果不行返回false,youhui_value是对应的商品券优惠金额
- //is_shangpinquan_dikou 同一个商品,是否被商品券抵扣过了,用于商品券和次卡抵扣同一个商品时候的处理
- bool UseCikaDikou(std::string cika_food_id, double& youhui_value, bool is_shangpinquan_dikou);
- //计算所有商品的总的会员优惠金额
- double getTotalMemberYouhui(std::string member_level);
- //计算所有商品的总的打包费
- double getDabaoMoney();
- //获取点单相关的参数(仅用于非套餐)
- std::string getDiandanFoodlistParam();
- //获取点单相关的套餐参数(仅用于套餐)
- std::string getDiandanTaocanParam();
- /****************************下面这里开始,用于与服务器交互的函数*/
- //根据订单ID,从服务器获取订单的数据,主要用于打印和展示订单详情
- bool InitData(std::string order_id);
- //根据订单ID,进行退款操作
- bool Refund(std::string order_id);
- };
|