Просмотр исходного кода

普通热敏小票的打印完成了,接着开始打印标签的

张洋 4 лет назад
Родитель
Сommit
d97e34ecc6

+ 47 - 1
zhipuzi_pos_windows/page/CDiandanPageUI.cpp

@@ -3113,10 +3113,56 @@ CDiandanOrder CDiandanPageUI::GetPrintOrderinfo(std::string take_food_code, std:
 	m_cur_diandan_order.shopname = shopinfo.m_shop_name;
 	m_cur_diandan_order.take_food_code = take_food_code;
 	m_cur_diandan_order.show_trade_no = show_trade_no;
-	m_cur_diandan_order.shoukuan_type = shoukuan_type;
+
+	if (shoukuan_type == "weixinzhifu")
+	{
+		m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"微信支付");
+	}
+	else if (shoukuan_type == "huiyuanzhifu")
+	{
+		m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"会员支付");
+	}
+	else if (shoukuan_type == "xianjinzhifu")
+	{
+		m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"现金支付");
+	}
+	else if (shoukuan_type == "fulikazhifu")
+	{
+		m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"福利卡支付");
+	}
+	else if (shoukuan_type == "zidingyizhifu")
+	{
+		m_cur_diandan_order.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"自定义支付");
+	}
 
 	m_cur_diandan_order.order_from = 1;
 	m_cur_diandan_order.init_time = CLewaimaiTime::DatetimeToString(time(NULL));
 
+	m_cur_diandan_order.m_shangpinquan_youhui = CLewaimaiString::DoubleToString(m_shangpinquan_youhui, 2);
+	m_cur_diandan_order.m_cika_youhui = CLewaimaiString::DoubleToString(m_cika_youhui, 2);
+	m_cur_diandan_order.m_total_member_youhui = CLewaimaiString::DoubleToString(m_total_member_youhui, 2);
+	m_cur_diandan_order.m_zhekou_youhui = CLewaimaiString::DoubleToString(m_zhekou_youhui, 2);
+	m_cur_diandan_order.m_member_zhekou_youhui = CLewaimaiString::DoubleToString(m_member_zhekou_youhui, 2);
+	m_cur_diandan_order.m_quanyika_youhui = CLewaimaiString::DoubleToString(m_quanyika_youhui, 2);
+	m_cur_diandan_order.m_manjian_youhui = CLewaimaiString::DoubleToString(m_manjian_youhui, 2);
+	m_cur_diandan_order.m_youhuiquan_youhui = CLewaimaiString::DoubleToString(m_youhuiquan_youhui, 2);
+	m_cur_diandan_order.m_rengong_youhui = CLewaimaiString::DoubleToString(m_rengong_youhui, 2);
+	m_cur_diandan_order.m_moling_youhui = CLewaimaiString::DoubleToString(m_moling_youhui, 2);
+	
+	m_cur_diandan_order.m_dabao_money = CLewaimaiString::DoubleToString(m_cur_diandan_order.getDabaoMoney(), 2);
+	m_cur_diandan_order.m_total_price = CLewaimaiString::DoubleToString(m_cur_total_price, 2);
+
+	m_cur_diandan_order.m_canpai = m_canpai;
+
+	for (std::vector<CDiandanOrderItem>::iterator it = m_cur_diandan_order.m_items.begin(); it != m_cur_diandan_order.m_items.end(); it++)
+	{
+		CDiandanOrderItemPrint itemPrint;
+		itemPrint.m_food_name = it->getNameWanzhengShow();
+		itemPrint.m_quantity = it->num;
+		itemPrint.m_item_price = it->getSinglePrice();
+
+		m_cur_diandan_order.m_items_print.push_back(itemPrint);
+	}
+
 	return m_cur_diandan_order;
 }

+ 77 - 36
zhipuzi_pos_windows/print/CPosPrinterData.cpp

@@ -933,12 +933,30 @@ std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
 		POS_FeedLine();
 
 		string date = "取餐号:" + CLewaimaiString::UTF8ToANSI(order.take_food_code);
-		POS_TextOut(date, false, true);
+		POS_TextOut(date, true, true, 1);
 		POS_FeedLine();
 
 
 		POS_FeedLine();
 
+		if (order.m_canpai.length() > 0)
+		{
+			string order_num = "餐牌:" + CLewaimaiString::UTF8ToANSI(order.m_canpai);
+			POS_TextOut(order_num, false, false);
+			POS_FeedLine();
+		}
+
+		//订单号
+		bool setting_printer_dingdanhao_big = false;
+		if (CSetting::GetParam("setting_printer_dingdanhao_big") == "1")
+		{
+			setting_printer_dingdanhao_big = true;
+		}
+
+		string order_num = "订 单 号:" + CLewaimaiString::UTF8ToANSI(order.show_trade_no);
+		POS_TextOut(order_num, false, setting_printer_dingdanhao_big);
+		POS_FeedLine();
+
 		//订单来源
 		if (order.order_from == 1)
 		{
@@ -959,18 +977,6 @@ std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
 			POS_FeedLine();
 		}
 
-		//订单号
-		bool setting_printer_dingdanhao_big = false;
-
-		if (CSetting::GetParam("setting_printer_dingdanhao_big") == "1")
-		{
-			setting_printer_dingdanhao_big = true;
-		}
-
-		string order_num = "订 单 号:" + CLewaimaiString::UTF8ToANSI(order.show_trade_no);
-		POS_TextOut(order_num, false, setting_printer_dingdanhao_big);
-		POS_FeedLine();
-
 		//下单时间
 		bool setting_printer_xiadanshijian_big = false;
 
@@ -1041,7 +1047,7 @@ std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
 		*/
 
 		//商品内容
-		for (std::vector<CWaimaiOrderItem>::iterator it = order.m_order_items.begin(); it != order.m_order_items.end(); it++)
+		for (std::vector<CDiandanOrderItemPrint>::iterator it = order.m_items_print.begin(); it != order.m_items_print.end(); it++)
 		{
 			std::string food_name = (*it).m_food_name;
 			std::string food_price = (*it).m_item_price;
@@ -1127,7 +1133,7 @@ std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
 			setting_printer_price_big = true;
 		}
 
-		if (order.m_is_dabao == "1")
+		if (atof(order.m_dabao_money.c_str()) > 0)
 		{
 			string dabao = "打包费:" + CLewaimaiString::UTF8ToANSI(order.m_dabao_money);
 			POS_TextOut(dabao, false, setting_printer_price_big);
@@ -1151,47 +1157,82 @@ std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
 		}
 		}*/
 
-		if (order.m_discount < 10)
+		if (atof(order.m_shangpinquan_youhui.c_str()) > 0)
 		{
-			string discount = "打折:" + CLewaimaiString::DoubleToString((double)order.m_discount, 2) + "折";
-			POS_TextOut(discount, false, setting_printer_price_big);
+			string youhui = "商品券优惠:" + order.m_shangpinquan_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
 			POS_FeedLine();
 			is_other_money = true;
 		}
 
-		if (order.m_is_member_discount == "1")
+		if (atof(order.m_cika_youhui.c_str()) > 0)
 		{
-			string member_discount = "会员优惠:-" + order.m_member_discount;
-			POS_TextOut(member_discount, false, setting_printer_price_big);
+			string youhui = "次卡优惠:" + order.m_cika_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
 			POS_FeedLine();
 			is_other_money = true;
 		}
 
-		if (order.m_is_firstcut == "1")
+		if (atof(order.m_total_member_youhui.c_str()) > 0)
 		{
-			string firstcut = "首单优惠:-" + order.m_firstcut_value;
-			POS_TextOut(firstcut, false, setting_printer_price_big);
+			string youhui = "商品会员价优惠:" + order.m_total_member_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
 			POS_FeedLine();
 			is_other_money = true;
 		}
 
-		//满减
-		string::size_type position = order.m_promotion.find(":");
+		if (atof(order.m_zhekou_youhui.c_str()) > 0)
+		{
+			string youhui = "整单折扣优惠:" + order.m_zhekou_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		if (atof(order.m_member_zhekou_youhui.c_str()) > 0)
+		{
+			string youhui = "会员整单折扣优惠:" + order.m_member_zhekou_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		if (atof(order.m_quanyika_youhui.c_str()) > 0)
+		{
+			string youhui = "权益卡优惠:" + order.m_quanyika_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		if (atof(order.m_manjian_youhui.c_str()) > 0)
+		{
+			string youhui = "满减优惠:" + order.m_manjian_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		if (atof(order.m_youhuiquan_youhui.c_str()) > 0)
+		{
+			string youhui = "优惠券优惠:" + order.m_youhuiquan_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
 
-		if (position != order.m_promotion.npos)
+		if (atof(order.m_rengong_youhui.c_str()) > 0)
 		{
-			string promotion_value;
-			promotion_value.assign(order.m_promotion, position + 1);
-			string promotion = "满减优惠:-" + CLewaimaiString::DoubleToString((double)(atof(promotion_value.c_str())), 2);
-			POS_TextOut(promotion, false, setting_printer_price_big);
+			string youhui = "人工优惠:" + order.m_rengong_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
 			POS_FeedLine();
 			is_other_money = true;
 		}
 
-		if (order.m_coupon > 0)
+		if (atof(order.m_moling_youhui.c_str()) > 0)
 		{
-			string coupon = "优惠券:-" + CLewaimaiString::DoubleToString((double)order.m_coupon, 2);
-			POS_TextOut(coupon, false, setting_printer_price_big);
+			string youhui = "抹零优惠:" + order.m_moling_youhui + "元";
+			POS_TextOut(youhui, false, setting_printer_price_big);
 			POS_FeedLine();
 			is_other_money = true;
 		}
@@ -1203,7 +1244,7 @@ std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
 		}
 
 		//最后显示总价
-		POS_TextOut("总计:¥" + CLewaimaiString::DoubleToString(order.m_price, 2), false, setting_printer_price_big, 2);
+		POS_TextOut("总计:" + order.m_total_price + "元", false, setting_printer_price_big, 2);
 		POS_FeedLine();
 
 		//显示付款方式
@@ -1214,7 +1255,7 @@ std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
 			setting_printer_pay_big = true;
 		}
 
-		POS_TextOut("支付方式:" + CLewaimaiString::UTF8ToANSI(order.m_pay_type), false, setting_printer_pay_big, 2);
+		POS_TextOut("支付方式:" + CLewaimaiString::UTF8ToANSI(order.shoukuan_type), false, setting_printer_pay_big, 2);
 
 		POS_FeedLine();
 

+ 2 - 2
zhipuzi_pos_windows/wnd/CFulikaShoukuanWnd.cpp

@@ -705,7 +705,7 @@ void CFulikaShoukuanWnd::HandleShoukuan()
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 		m_take_food_code = data["take_food_code"].GetString();
-		m_show_trade_no = data["take_food_code"].GetString();
+		m_show_trade_no = data["show_trade_no"].GetString();
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 	}
@@ -809,7 +809,7 @@ void CFulikaShoukuanWnd::HandleShoukuanPassword()
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 			m_take_food_code = data["take_food_code"].GetString();
-			m_show_trade_no = data["take_food_code"].GetString();
+			m_show_trade_no = data["show_trade_no"].GetString();
 
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 

+ 0 - 3
zhipuzi_pos_windows/wnd/CFulikaShoukuanWnd.h

@@ -103,9 +103,6 @@ public:
 	std::string m_shoujihao;
 	std::string m_password;
 
-	std::string m_order_no;
-	std::string m_out_trade_no;
-
 	//收款状态 0:未开始 1:请求发给服务器了,但是暂时还没得到反馈 2:查询密码中 3:成功 4:失败 5:正在取消支付
 	int m_shoukuan_status = 0;
 

+ 2 - 2
zhipuzi_pos_windows/wnd/CHuiyuanShoukuanWnd.cpp

@@ -787,7 +787,7 @@ void CHuiyuanShoukuanWnd::HandleShoukuan()
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 		m_take_food_code = data["take_food_code"].GetString();
-		m_show_trade_no = data["take_food_code"].GetString();
+		m_show_trade_no = data["show_trade_no"].GetString();
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 	}
@@ -891,7 +891,7 @@ void CHuiyuanShoukuanWnd::HandleShoukuanPassword()
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 			m_take_food_code = data["take_food_code"].GetString();
-			m_show_trade_no = data["take_food_code"].GetString();
+			m_show_trade_no = data["show_trade_no"].GetString();
 
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 

+ 0 - 3
zhipuzi_pos_windows/wnd/CHuiyuanShoukuanWnd.h

@@ -103,9 +103,6 @@ public:
 	std::string m_shoujihao;
 	std::string m_password;
 
-	std::string m_order_no;
-	std::string m_out_trade_no;
-
 	//收款状态 0:未开始 1:请求发给服务器了,但是暂时还没得到反馈 2:查询密码中 3:成功 4:失败 5:正在取消支付
 	int m_shoukuan_status = 0;
 

+ 2 - 2
zhipuzi_pos_windows/wnd/CWeixinzhifuShoukuanWnd.cpp

@@ -705,7 +705,7 @@ void CWeixinzhifuShoukuanWnd::HandleShoukuan()
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 		m_take_food_code = data["take_food_code"].GetString();
-		m_show_trade_no = data["take_food_code"].GetString();
+		m_show_trade_no = data["show_trade_no"].GetString();
 
 		m_out_trade_no = data["trade_no"].GetString();
 
@@ -813,7 +813,7 @@ void CWeixinzhifuShoukuanWnd::HandleShoukuanPassword()
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 			m_take_food_code = data["take_food_code"].GetString();
-			m_show_trade_no = data["take_food_code"].GetString();
+			m_show_trade_no = data["show_trade_no"].GetString();
 
 			m_out_trade_no = data["out_trade_no"].GetString();
 

+ 2 - 2
zhipuzi_pos_windows/wnd/CXianjinShoukuanWnd.cpp

@@ -726,7 +726,7 @@ void CXianjinShoukuanWnd::HandleShoukuan()
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 		m_take_food_code = data["take_food_code"].GetString();
-		m_show_trade_no = data["take_food_code"].GetString();
+		m_show_trade_no = data["show_trade_no"].GetString();
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 	}
@@ -830,7 +830,7 @@ void CXianjinShoukuanWnd::HandleShoukuanPassword()
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 			m_take_food_code = data["take_food_code"].GetString();
-			m_show_trade_no = data["take_food_code"].GetString();
+			m_show_trade_no = data["show_trade_no"].GetString();
 
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 

+ 0 - 3
zhipuzi_pos_windows/wnd/CXianjinShoukuanWnd.h

@@ -103,9 +103,6 @@ public:
 
 	std::string m_shishou;
 
-	std::string m_order_no;
-	std::string m_out_trade_no;
-
 	//收款状态 0:未开始 1:请求发给服务器了,但是暂时还没得到反馈 2:查询密码中 3:成功 4:失败 5:正在取消支付
 	int m_shoukuan_status = 0;
 

+ 2 - 2
zhipuzi_pos_windows/wnd/CZidingyiShoukuanWnd.cpp

@@ -640,7 +640,7 @@ void CZidingyiShoukuanWnd::HandleShoukuan()
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 		m_take_food_code = data["take_food_code"].GetString();
-		m_show_trade_no = data["take_food_code"].GetString();
+		m_show_trade_no = data["show_trade_no"].GetString();
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 	}
@@ -744,7 +744,7 @@ void CZidingyiShoukuanWnd::HandleShoukuanPassword()
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 			m_take_food_code = data["take_food_code"].GetString();
-			m_show_trade_no = data["take_food_code"].GetString();
+			m_show_trade_no = data["show_trade_no"].GetString();
 
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 

+ 0 - 3
zhipuzi_pos_windows/wnd/CZidingyiShoukuanWnd.h

@@ -102,9 +102,6 @@ public:
 	bool m_is_money_init = false;
 	std::wstring m_money;
 
-	std::string m_order_no;
-	std::string m_out_trade_no;
-
 	//收款状态 0:未开始 1:请求发给服务器了,但是暂时还没得到反馈 2:查询密码中 3:成功 4:失败 5:正在取消支付
 	int m_shoukuan_status = 0;
 

+ 32 - 1
zhipuzi_pos_windows/zhipuzi/CDiandanOrder.h

@@ -10,6 +10,14 @@
 
 #include "CDiandanOrderItem.h"
 
+class CDiandanOrderItemPrint
+{
+public:
+	std::string m_food_name;
+	std::string m_quantity;
+	std::string m_item_price; //注意这个是单价,不是总价
+};
+
 /**
  * 点单里面的一个“订单”,每个选中的商品被加入订单,通过订单数据来计算价格,渲染界面,提交订单也是通过这个数据来提交
  * 挂单、取单操作的也是订单
@@ -19,6 +27,7 @@ class CDiandanOrder
 public:
 	std::vector<CDiandanOrderItem> m_items;
 
+	//这个是不包含其他费用的纯商品原价
 	std::string m_total_price_show;
 
 	std::string m_guadan_time;
@@ -26,14 +35,36 @@ public:
 	//订单的整单备注
 	std::string m_memo;
 
-	//下面这些是专门用于打印的参数,不作为其他用途
+	/******  下面这些是专门用于打印的参数,不作为其他用途,点单逻辑中用不到,点单成功后赋值用于打印而已  ***********/
 	std::string shopname;
 	std::string take_food_code;
 	std::string show_trade_no;
+
 	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_dabao_money;
+	std::string m_total_price;
+	
+	std::string m_canpai;
+
+	std::vector<CDiandanOrderItemPrint> m_items_print;
+
 public:
 
 	int getItemNum();

+ 29 - 0
zhipuzi_pos_windows/zhipuzi/CDiandanOrderItem.cpp

@@ -235,6 +235,35 @@ std::string CDiandanOrderItem::getNatureShow()
 	return show;
 }
 
+//获取用于完整展示的商品名字,包含商品本身的名字和属性,例如“【打包】珍珠奶茶【大杯、热、多糖】”
+std::string CDiandanOrderItem::getNameWanzhengShow()
+{
+	std::string name_first = getNameShow();
+
+	std::string nature = "";
+
+	//后面再加上属性或者套餐商品名字
+	if (m_is_taocan)
+	{
+		nature = CLewaimaiString::UnicodeToUTF8(L"【") + getNatureShow() + CLewaimaiString::UnicodeToUTF8(L"】");
+	}
+	else
+	{
+		if (is_nature)
+		{
+			nature = CLewaimaiString::UnicodeToUTF8(L"【") + getNatureShow() + CLewaimaiString::UnicodeToUTF8(L"】");
+		}
+		else
+		{
+			nature = "";
+		}
+	}
+
+	std::string total_name = name_first + nature;
+
+	return total_name;
+}
+
 double CDiandanOrderItem::getMemberYouhui(std::string member_level)
 {
 	if (is_member_price_used == false)

+ 5 - 2
zhipuzi_pos_windows/zhipuzi/CDiandanOrderItem.h

@@ -78,12 +78,15 @@ public:
 	//这个是单价,包含属性价格,不考虑数量,也就是“1份”的价格
 	std::string getSinglePrice();
 
-	//获取用户展示的商品名字,如果有打包会在前面显示【打包】
+	//获取用户展示的商品名字,如果有打包会在前面显示【打包】,不包含商品属性
 	std::string getNameShow();
 
-	//获取用于展示的属性名字
+	//获取用于展示的属性名字,仅仅是属性名字,如“热、多糖、大杯”
 	std::string getNatureShow();
 
+	//获取用于完整展示的商品名字,包含商品本身的名字和属性,例如“【打包】珍珠奶茶【大杯、热、多糖】”
+	std::string getNameWanzhengShow();
+
 	//根据当前会员等级,计算该商品的会员优惠金额
 	double getMemberYouhui(std::string member_level);