zhangyang 4 лет назад
Родитель
Сommit
4943927c7f

+ 28 - 8
zhipuzi_pos_windows/page/CDiandanPageUI.cpp

@@ -25,6 +25,8 @@
 #include "../wnd/CChengzhongWnd.h"
 #include "../wnd/CChengzhongWnd.h"
 #include "../wnd/CGuadanWnd.h"
 #include "../wnd/CGuadanWnd.h"
 
 
+#include "../print/CPosPrinter.h"
+
 CDiandanPageUI::CDiandanPageUI()
 CDiandanPageUI::CDiandanPageUI()
 {
 {
 }
 }
@@ -2728,7 +2730,7 @@ void CDiandanPageUI::StartWeixinzhifuShoukuan()
 		if (ret == IDOK)
 		if (ret == IDOK)
 		{
 		{
 			//说明收款成功了,需要进行一些后续的处理
 			//说明收款成功了,需要进行一些后续的处理
-			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, "weixinzhifu");
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, "weixinzhifu");
 		}
 		}
 
 
 		m_is_show_modal_wnd = false;
 		m_is_show_modal_wnd = false;
@@ -2778,7 +2780,7 @@ void CDiandanPageUI::StartHuiyuanShoukuan()
 		if (ret == IDOK)
 		if (ret == IDOK)
 		{
 		{
 			//说明收款成功了,需要进行一些后续的处理
 			//说明收款成功了,需要进行一些后续的处理
-			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, "huiyuanzhifu");
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, "huiyuanzhifu");
 
 
 		}
 		}
 
 
@@ -2830,7 +2832,7 @@ void CDiandanPageUI::StartXianjinShoukuan()
 		if (ret == IDOK)
 		if (ret == IDOK)
 		{
 		{
 			//说明收款成功了,需要进行一些后续的处理
 			//说明收款成功了,需要进行一些后续的处理
-			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, "xianjinzhifu");
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, "xianjinzhifu");
 		}
 		}
 
 
 		m_is_show_modal_wnd = false;
 		m_is_show_modal_wnd = false;
@@ -2880,7 +2882,7 @@ void CDiandanPageUI::StartFulikaShoukuan()
 		if (ret == IDOK)
 		if (ret == IDOK)
 		{
 		{
 			//说明收款成功了,需要进行一些后续的处理
 			//说明收款成功了,需要进行一些后续的处理
-			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, "fulikazhifu");
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, "fulikazhifu");
 		}
 		}
 
 
 		m_is_show_modal_wnd = false;
 		m_is_show_modal_wnd = false;
@@ -2933,7 +2935,7 @@ void CDiandanPageUI::StartZidingyiShoukuan(std::wstring name, std::wstring selfp
 		if (ret == IDOK)
 		if (ret == IDOK)
 		{
 		{
 			//说明收款成功了,需要进行一些后续的处理
 			//说明收款成功了,需要进行一些后续的处理
-			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, "zidingyizhifu");
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, "zidingyizhifu");
 		}
 		}
 
 
 		m_is_show_modal_wnd = false;
 		m_is_show_modal_wnd = false;
@@ -3089,14 +3091,32 @@ void CDiandanPageUI::StopSerachFood()
 	this->InitFoodShow();
 	this->InitFoodShow();
 }
 }
 
 
-void CDiandanPageUI::StartWorkAfterShoukuan(std::string kucunstring, std::string shoukuan_type)
+void CDiandanPageUI::StartWorkAfterShoukuan(std::string kucunstring, std::string take_food_code, std::string show_trade_no, std::string shoukuan_type)
 {
 {
 	//更新商品库存
 	//更新商品库存
 	this->UpdateFoodStock(kucunstring);
 	this->UpdateFoodStock(kucunstring);
 
 
-	//初始化页面信息
+	//处理打印
+	CDiandanOrder order = this->GetPrintOrderinfo(take_food_code, show_trade_no, shoukuan_type);
+
+	CPosPrinter printer;
+	printer.PrintDiandanOrder(order);
+
+	//最后才初始化页面信息
 	RefreshShow();
 	RefreshShow();
+}
 
 
-	//处理打印
+CDiandanOrder CDiandanPageUI::GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type)
+{
+	CShopinfo shopinfo = CShopinfo::m_shopinfo;
+
+	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;
+
+	m_cur_diandan_order.order_from = 1;
+	m_cur_diandan_order.init_time = CLewaimaiTime::DatetimeToString(time(NULL));
 
 
+	return m_cur_diandan_order;
 }
 }

+ 4 - 1
zhipuzi_pos_windows/page/CDiandanPageUI.h

@@ -166,12 +166,15 @@ public:
 	void StopSerachFood();
 	void StopSerachFood();
 
 
 	//执行付款成功后的所有操作逻辑
 	//执行付款成功后的所有操作逻辑
-	void StartWorkAfterShoukuan(std::string kucunstring, std::string shoukuan_type);
+	void StartWorkAfterShoukuan(std::string kucunstring, std::string take_food_code, std::string show_trade_no, std::string shoukuan_type);
 
 
 private:
 private:
 	//获取用于提交订单的参数结构
 	//获取用于提交订单的参数结构
 	std::map<string, string> GetSendorderParams();
 	std::map<string, string> GetSendorderParams();
 
 
+	//用于支付完成后,获取用于打印的order
+	CDiandanOrder GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type);
+
 private:
 private:
 	CTileLayoutUI* m_foodLayout;
 	CTileLayoutUI* m_foodLayout;
 	CHorizontalLayoutUI* m_foodtypeLayout;
 	CHorizontalLayoutUI* m_foodtypeLayout;

+ 116 - 34
zhipuzi_pos_windows/page/CSettingPageUI.cpp

@@ -75,6 +75,48 @@ void CSettingPageUI::InitShow()
 		box->Selected(false, false);
 		box->Selected(false, false);
 	}
 	}
 
 
+	//店内订单设置
+	box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_diannei_voice")));
+	if (CSetting::GetParam("setting_is_new_diannei_voice") == "1")
+	{
+		box->Selected(true, false);
+	}
+	else
+	{
+		box->Selected(false, false);
+	}
+
+	box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_diannei_printer")));
+	if (CSetting::GetParam("setting_is_new_diannei_printer") == "1")
+	{
+		box->Selected(true, false);
+	}
+	else
+	{
+		box->Selected(false, false);
+	}
+
+	box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_diannei_biaoqian_printer")));
+	if (CSetting::GetParam("setting_is_new_diannei_biaoqian_printer") == "1")
+	{
+		box->Selected(true, false);
+	}
+	else
+	{
+		box->Selected(false, false);
+	}
+
+	box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_diannei_chufang_printer")));
+	if (CSetting::GetParam("setting_is_new_diannei_chufang_printer") == "1")
+	{
+		box->Selected(true, false);
+	}
+	else
+	{
+		box->Selected(false, false);
+	}
+
+	//小票打印
 	com = static_cast<CComboUI*>(this->FindSubControl(_T("setting_printer_guige")));
 	com = static_cast<CComboUI*>(this->FindSubControl(_T("setting_printer_guige")));
 	if (CSetting::GetParam("setting_printer_guige") == "58")
 	if (CSetting::GetParam("setting_printer_guige") == "58")
 	{
 	{
@@ -629,30 +671,96 @@ void CSettingPageUI::HandleClickMsg(TNotifyUI& msg)
 			CSetting::SetParam("setting_is_new_waimai_autoconfirm", "1");
 			CSetting::SetParam("setting_is_new_waimai_autoconfirm", "1");
 		}
 		}
 	}
 	}
-	else if (name == _T("setting_is_new_waimai_dialog"))
+	else if (name == _T("setting_is_new_waimai_printer"))
 	{
 	{
-		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_waimai_dialog")));
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_waimai_printer")));
 
 
 		if (box->IsSelected())
 		if (box->IsSelected())
 		{
 		{
-			CSetting::SetParam("setting_is_new_waimai_dialog", "0");
+			CSetting::SetParam("setting_is_new_waimai_printer", "0");
 		}
 		}
 		else
 		else
 		{
 		{
-			CSetting::SetParam("setting_is_new_waimai_dialog", "1");
+			CSetting::SetParam("setting_is_new_waimai_printer", "1");
 		}
 		}
 	}
 	}
-	else if (name == _T("setting_is_new_waimai_printer"))
+	else if (name == _T("setting_is_new_waimai_biaoqian_printer"))
 	{
 	{
-		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_waimai_printer")));
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_waimai_biaoqian_printer")));
 
 
 		if (box->IsSelected())
 		if (box->IsSelected())
 		{
 		{
-			CSetting::SetParam("setting_is_new_waimai_printer", "0");
+			CSetting::SetParam("setting_is_new_waimai_biaoqian_printer", "0");
 		}
 		}
 		else
 		else
 		{
 		{
-			CSetting::SetParam("setting_is_new_waimai_printer", "1");
+			CSetting::SetParam("setting_is_new_waimai_biaoqian_printer", "1");
+		}
+	}
+	else if (name == _T("setting_is_new_waimai_chufang_printer"))
+	{
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_waimai_chufang_printer")));
+
+		if (box->IsSelected())
+		{
+			CSetting::SetParam("setting_is_new_waimai_chufang_printer", "0");
+		}
+		else
+		{
+			CSetting::SetParam("setting_is_new_waimai_chufang_printer", "1");
+		}
+	}
+	else if (name == _T("setting_is_new_diannei_voice"))
+	{
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_diannei_voice")));
+
+		//注意这里的IsSelected如果为true,表示的是点击前为true,而不是点击后为true,所以这里设置状态要反过来
+		if (box->IsSelected())
+		{
+			CSetting::SetParam("setting_is_new_diannei_voice", "0");
+		}
+		else
+		{
+			CSetting::SetParam("setting_is_new_diannei_voice", "1");
+		}
+	}
+	else if (name == _T("setting_is_new_diannei_printer"))
+	{
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_diannei_printer")));
+
+		if (box->IsSelected())
+		{
+			CSetting::SetParam("setting_is_new_diannei_printer", "0");
+		}
+		else
+		{
+			CSetting::SetParam("setting_is_new_diannei_printer", "1");
+		}
+	}
+	else if (name == _T("setting_is_new_diannei_biaoqian_printer"))
+	{
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_diannei_biaoqian_printer")));
+
+		if (box->IsSelected())
+		{
+			CSetting::SetParam("setting_is_new_diannei_biaoqian_printer", "0");
+		}
+		else
+		{
+			CSetting::SetParam("setting_is_new_diannei_biaoqian_printer", "1");
+		}
+	}
+	else if (name == _T("setting_is_new_diannei_chufang_printer"))
+	{
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_diannei_chufang_printer")));
+
+		if (box->IsSelected())
+		{
+			CSetting::SetParam("setting_is_new_diannei_chufang_printer", "0");
+		}
+		else
+		{
+			CSetting::SetParam("setting_is_new_diannei_chufang_printer", "1");
 		}
 		}
 	}
 	}
 	else if (name == _T("setting_printer_wangkouk_save_btn"))
 	else if (name == _T("setting_printer_wangkouk_save_btn"))
@@ -805,32 +913,6 @@ void CSettingPageUI::HandleClickMsg(TNotifyUI& msg)
 			CSetting::SetParam("setting_printer_pay_big", "1");
 			CSetting::SetParam("setting_printer_pay_big", "1");
 		}
 		}
 	}
 	}
-	else if (name == _T("setting_is_new_waimai_biaoqian_printer"))
-	{
-		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_waimai_biaoqian_printer")));
-
-		if (box->IsSelected())
-		{
-			CSetting::SetParam("setting_is_new_waimai_biaoqian_printer", "0");
-		}
-		else
-		{
-			CSetting::SetParam("setting_is_new_waimai_biaoqian_printer", "1");
-		}
-	}
-	else if (name == _T("setting_is_new_waimai_chufang_printer"))
-	{
-		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_new_waimai_chufang_printer")));
-
-		if (box->IsSelected())
-		{
-			CSetting::SetParam("setting_is_new_waimai_chufang_printer", "0");
-		}
-		else
-		{
-			CSetting::SetParam("setting_is_new_waimai_chufang_printer", "1");
-		}
-	}
 	else if (name == _T("setting_new_chufang_printer_btn"))
 	else if (name == _T("setting_new_chufang_printer_btn"))
 	{
 	{
 		CChufangSettingWnd* pChufangFrame = new CChufangSettingWnd(1);
 		CChufangSettingWnd* pChufangFrame = new CChufangSettingWnd(1);

+ 47 - 1
zhipuzi_pos_windows/print/CPosPrinter.cpp

@@ -74,7 +74,53 @@ void CPosPrinter::PrintWaimaiOrder(std::string order_id, std::string order_no)
 //完成所有打印一个点单订单的操作
 //完成所有打印一个点单订单的操作
 void CPosPrinter::PrintDiandanOrder(CDiandanOrder& order)
 void CPosPrinter::PrintDiandanOrder(CDiandanOrder& order)
 {
 {
-	
+	if (CSetting::GetParam("setting_is_new_diannei_printer") == "1")
+	{
+		//执行收银小票打印操作
+		CPosPrinterData printData;
+
+		std::string data = printData.PrintDiandanOrderShouyin(order);
+
+		if (data.length() > 0)
+		{
+			CPosPrinterQueue::GetInstance()->AddShouyinPrinter(data);
+		}
+	}
+
+	if (CSetting::GetParam("setting_is_new_diannei_biaoqian_printer") == "1")
+	{
+		//执行标签小票打印操作
+		CPosPrinterData printData;
+
+		std::string data = printData.PrintDiandanOrderBiaoqian(order);
+
+		if (data.length() > 0)
+		{
+			CPosPrinterQueue::GetInstance()->AddBiaoqianPrinter(data);
+		}
+	}
+
+	//判断是否进行自动的厨房打印
+	if (CSetting::GetParam("setting_is_new_diannei_chufang_printer") == "1")
+	{
+		//进行厨房打印
+		CPosPrinterData printData;
+
+		std::vector<ChufangPrinterContent> datas = printData.PrintDiandanOrderChufang(order);
+
+		if (datas.size() > 0)
+		{
+			for (std::vector<ChufangPrinterContent>::iterator it = datas.begin(); it != datas.end(); it++)
+			{
+				ChufangPrinterContent content = *it;
+
+				if (content.data.length() > 0)
+				{
+					CPosPrinterQueue::GetInstance()->AddChufangPrinter(content);
+				}
+			}
+		}
+	}
 }
 }
 
 
 //获取当前电脑上所有的打印usb设备
 //获取当前电脑上所有的打印usb设备

+ 320 - 1
zhipuzi_pos_windows/print/CPosPrinterData.cpp

@@ -915,7 +915,326 @@ std::vector<ChufangPrinterContent> CPosPrinterData::PrintWaimaiOrderChufang(CWai
 
 
 std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
 std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
 {
 {
-	return "";
+	//读取当前收银打印机的设置
+	std::string guige = CSetting::GetParam("setting_printer_guige");
+	std::string lianshu = CSetting::GetParam("setting_printer_lianshu");
+	int n_lianshu = atoi(lianshu.c_str());
+
+	//正式开始打印
+	for (int i = 0; i < n_lianshu; i++)
+	{
+		POS_Reset();
+
+		//打印店铺名字
+		string shop_name = CLewaimaiString::UTF8ToANSI(order.shopname);
+		POS_TextOut(shop_name, true, true, 1);
+
+		POS_FeedLine();
+		POS_FeedLine();
+
+		string date = "取餐号:" + CLewaimaiString::UTF8ToANSI(order.take_food_code);
+		POS_TextOut(date, false, true);
+		POS_FeedLine();
+
+
+		POS_FeedLine();
+
+		//订单来源
+		if (order.order_from == 1)
+		{
+			string from_type = "订单来源:收银系统";
+			POS_TextOut(from_type);
+			POS_FeedLine();
+		}
+		else if (order.order_from == 2)
+		{
+			string from_type = "订单来源:商家appp";
+			POS_TextOut(from_type);
+			POS_FeedLine();
+		}
+		else if (order.order_from == 3)
+		{
+			string from_type = "订单来源:扫码下单";
+			POS_TextOut(from_type);
+			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;
+
+		if (CSetting::GetParam("setting_printer_xiadanshijian_big") == "1")
+		{
+			setting_printer_xiadanshijian_big = true;
+		}
+
+		string order_date = "下单时间:" + CLewaimaiString::UTF8ToANSI(order.init_time);
+		POS_TextOut(order_date, false, setting_printer_xiadanshijian_big);
+		POS_FeedLine();
+
+		//预设选项
+		/*
+		if (order.m_order_field.size() > 1)
+		{
+			for (std::vector<CWaimaiOrderField>::iterator it = order.m_order_field.begin(); it != order.m_order_field.end() - 1; it++)
+			{
+				string order_field = CLewaimaiString::UTF8ToANSI((*it).name) + ":" + CLewaimaiString::UTF8ToANSI((*it).value);
+				POS_TextOut(order_field, false, false, 0);
+				POS_FeedLine();
+			}
+		}
+		}*/
+
+		//准备开始打印商品详情
+		string lines;
+
+		if (guige == "58")
+		{
+			lines = "--------------------------------";
+		}
+		else
+		{
+			lines = "------------------------------------------------";
+		}
+
+		POS_TextOut(lines);
+		POS_FeedLine();
+
+		//商品标题
+		bool setting_printer_shangpin_big = false;
+
+		if (CSetting::GetParam("setting_printer_shangpin_big") == "1")
+		{
+			setting_printer_shangpin_big = true;
+		}
+
+		if (guige == "58")
+		{
+			POS_TextOut("商品              单价 数量 金额", false, setting_printer_shangpin_big);
+		}
+		else
+		{
+			POS_TextOut("商品                            单价  数量  金额", false, setting_printer_shangpin_big);
+		}
+
+		POS_FeedLine();
+
+		/*/
+		if (order.m_manzeng_name.length() > 0)
+		{
+			CWaimaiOrderItem manzengItem;
+			manzengItem.m_food_name = CLewaimaiString::ANSIToUTF8("【满赠】" + CLewaimaiString::UTF8ToANSI(order.m_manzeng_name));
+
+			order.m_order_items.push_back(manzengItem);
+		}
+		*/
+
+		//商品内容
+		for (std::vector<CWaimaiOrderItem>::iterator it = order.m_order_items.begin(); it != order.m_order_items.end(); it++)
+		{
+			std::string food_name = (*it).m_food_name;
+			std::string food_price = (*it).m_item_price;
+			std::string quantity = (*it).m_quantity;
+
+			//计算总价
+			double item_price = atof(food_price.c_str()) * atof(quantity.c_str());
+			std::string food_total_price = CLewaimaiString::DoubleToString(item_price, 2);
+
+			if (food_total_price == "0.00")
+			{
+				//这里是特殊处理满赠的展示
+				food_total_price = "";
+			}
+
+			food_name = CLewaimaiString::UTF8ToANSI(food_name);
+
+			//先输出商品名字
+			std::vector<string> m_names;
+
+			if (guige == "58")
+			{
+				m_names = HandleFoodname(food_name, 1);
+			}
+			else
+			{
+				m_names = HandleFoodname(food_name, 2);
+			}
+
+			std::string firstLine = m_names[0];
+			int nGuige;
+
+			if (guige == "58")
+			{
+				nGuige = 1;
+			}
+			else
+			{
+				nGuige = 2;
+			}
+
+			std::string priceShow = HandleFoodItemPrice(food_price, nGuige);
+			std::string quantityShow = HandleFoodQuantity(quantity, nGuige);
+			std::string priceTotalShow = HandleFoodTotalPrice(food_total_price, nGuige);
+			std::string firstLineShow = firstLine + priceShow + quantityShow + priceTotalShow;
+
+			POS_TextOut(firstLineShow, false, setting_printer_shangpin_big);
+			POS_FeedLine();
+
+			for (std::vector<string>::iterator it = m_names.begin() + 1; it != m_names.end(); it++)
+			{
+				POS_TextOut((*it), false, setting_printer_shangpin_big);
+				POS_FeedLine();
+			}
+		}
+
+		//判断是否有备注
+		if (order.m_memo.length() > 0)
+		{
+			bool setting_printer_memo_big = false;
+
+			if (CSetting::GetParam("setting_printer_memo_big") == "1")
+			{
+				setting_printer_memo_big = true;
+			}
+
+			POS_FeedLine();
+			string address = "整单备注:" + CLewaimaiString::UTF8ToANSI(order.m_memo);
+			POS_TextOut(address, false, setting_printer_memo_big);
+			POS_FeedLine();
+		}
+
+		//结束商品详情打印
+		POS_TextOut(lines);
+		POS_FeedLine();
+
+		//开始打印其他的费用
+		bool is_other_money = false;
+		bool setting_printer_price_big = false;
+
+		if (CSetting::GetParam("setting_printer_price_big") == "1")
+		{
+			setting_printer_price_big = true;
+		}
+
+		if (order.m_is_dabao == "1")
+		{
+			string dabao = "打包费:" + CLewaimaiString::UTF8ToANSI(order.m_dabao_money);
+			POS_TextOut(dabao, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		//开始显示增值服务费
+		/*
+		if (order.m_addservie.size() > 0)
+		{
+			for (std::vector<CWaimaiOrderField>::iterator it = order.m_addservie.begin(); it != order.m_addservie.end(); it++)
+			{
+				string addservice = CLewaimaiString::UTF8ToANSI((*it).name) + ":" + CLewaimaiString::DoubleToString((double)atof((*it).value.c_str()), 2);
+				POS_TextOut(addservice, false, setting_printer_price_big);
+				POS_FeedLine();
+				is_other_money = true;
+			}
+
+			is_other_money = true;
+		}
+		}*/
+
+		if (order.m_discount < 10)
+		{
+			string discount = "打折:" + CLewaimaiString::DoubleToString((double)order.m_discount, 2) + "折";
+			POS_TextOut(discount, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		if (order.m_is_member_discount == "1")
+		{
+			string member_discount = "会员优惠:-" + order.m_member_discount;
+			POS_TextOut(member_discount, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		if (order.m_is_firstcut == "1")
+		{
+			string firstcut = "首单优惠:-" + order.m_firstcut_value;
+			POS_TextOut(firstcut, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		//满减
+		string::size_type position = order.m_promotion.find(":");
+
+		if (position != order.m_promotion.npos)
+		{
+			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);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		if (order.m_coupon > 0)
+		{
+			string coupon = "优惠券:-" + CLewaimaiString::DoubleToString((double)order.m_coupon, 2);
+			POS_TextOut(coupon, false, setting_printer_price_big);
+			POS_FeedLine();
+			is_other_money = true;
+		}
+
+		if (is_other_money)
+		{
+			POS_TextOut(lines);
+			POS_FeedLine();
+		}
+
+		//最后显示总价
+		POS_TextOut("总计:¥" + CLewaimaiString::DoubleToString(order.m_price, 2), false, setting_printer_price_big, 2);
+		POS_FeedLine();
+
+		//显示付款方式
+		bool setting_printer_pay_big = false;
+
+		if (CSetting::GetParam("setting_printer_pay_big") == "1")
+		{
+			setting_printer_pay_big = true;
+		}
+
+		POS_TextOut("支付方式:" + CLewaimaiString::UTF8ToANSI(order.m_pay_type), false, setting_printer_pay_big, 2);
+
+		POS_FeedLine();
+
+		POS_FeedLine();;
+		POS_FeedLine();
+
+		//走纸几行再切
+		POS_FeedLine();
+		POS_FeedLine();
+		POS_FeedLine();
+		POS_FeedLine();
+		POS_FeedLine();
+
+		POS_CutPaper();
+	}
+
+	//还原打印机初始设置,有些傻逼收银设备居然不是自动调用,比如哗啦啦
+	POS_Reset();
+
+	return m_print_content;
 }
 }
 
 
 std::string CPosPrinterData::PrintDiandanOrderBiaoqian(CDiandanOrder& order)
 std::string CPosPrinterData::PrintDiandanOrderBiaoqian(CDiandanOrder& order)

+ 25 - 0
zhipuzi_pos_windows/tool/CSetting.cpp

@@ -188,6 +188,31 @@ void CSetting::Init()
 		m_paramsMap[setting_is_new_waimai_chufang_printer] = "1";
 		m_paramsMap[setting_is_new_waimai_chufang_printer] = "1";
 	}
 	}
 
 
+	//店内订单设置参数
+	std::string setting_is_new_diannei_voice = "setting_is_new_diannei_voice";
+	if (m_paramsMap.find(setting_is_new_diannei_voice) == m_paramsMap.end())
+	{
+		m_paramsMap[setting_is_new_diannei_voice] = "1";
+	}
+
+	std::string setting_is_new_diannei_printer = "setting_is_new_diannei_printer";
+	if (m_paramsMap.find(setting_is_new_diannei_printer) == m_paramsMap.end())
+	{
+		m_paramsMap[setting_is_new_diannei_printer] = "1";
+	}
+
+	std::string setting_is_new_diannei_biaoqian_printer = "setting_is_new_diannei_biaoqian_printer";
+	if (m_paramsMap.find(setting_is_new_diannei_biaoqian_printer) == m_paramsMap.end())
+	{
+		m_paramsMap[setting_is_new_diannei_biaoqian_printer] = "0";
+	}
+
+	std::string setting_is_new_diannei_chufang_printer = "setting_is_new_diannei_chufang_printer";
+	if (m_paramsMap.find(setting_is_new_diannei_chufang_printer) == m_paramsMap.end())
+	{
+		m_paramsMap[setting_is_new_diannei_chufang_printer] = "1";
+	}
+
 	//小票打印设置参数
 	//小票打印设置参数
 	std::string setting_printer_guige = "setting_printer_guige";
 	std::string setting_printer_guige = "setting_printer_guige";
 	if (m_paramsMap.find(setting_printer_guige) == m_paramsMap.end())
 	if (m_paramsMap.find(setting_printer_guige) == m_paramsMap.end())

+ 6 - 0
zhipuzi_pos_windows/wnd/CFulikaShoukuanWnd.cpp

@@ -704,6 +704,9 @@ void CFulikaShoukuanWnd::HandleShoukuan()
 		Value& stock = data["stock"];
 		Value& stock = data["stock"];
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 
+		m_take_food_code = data["take_food_code"].GetString();
+		m_show_trade_no = data["take_food_code"].GetString();
+
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 	}
 	}
 	else if (s_status == "fail")
 	else if (s_status == "fail")
@@ -805,6 +808,9 @@ void CFulikaShoukuanWnd::HandleShoukuanPassword()
 			Value& stock = data["stock"];
 			Value& stock = data["stock"];
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 
+			m_take_food_code = data["take_food_code"].GetString();
+			m_show_trade_no = data["take_food_code"].GetString();
+
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 
 
 			break;
 			break;

+ 4 - 1
zhipuzi_pos_windows/wnd/CFulikaShoukuanWnd.h

@@ -118,7 +118,10 @@ public:
 
 
 	int m_shoukuanModel = 1; //收款模式 1:会员扫码 2:手机号+密码
 	int m_shoukuanModel = 1; //收款模式 1:会员扫码 2:手机号+密码
 
 
-	//更新库存的字符串
+	//支付成功返回的字段
 	std::string m_kucun_string;
 	std::string m_kucun_string;
+	std::string m_out_trade_no;
+	std::string m_take_food_code;
+	std::string m_show_trade_no;
 };
 };
 
 

+ 6 - 0
zhipuzi_pos_windows/wnd/CHuiyuanShoukuanWnd.cpp

@@ -786,6 +786,9 @@ void CHuiyuanShoukuanWnd::HandleShoukuan()
 		Value& stock = data["stock"];
 		Value& stock = data["stock"];
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 
+		m_take_food_code = data["take_food_code"].GetString();
+		m_show_trade_no = data["take_food_code"].GetString();
+
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 	}
 	}
 	else if (s_status == "fail")
 	else if (s_status == "fail")
@@ -887,6 +890,9 @@ void CHuiyuanShoukuanWnd::HandleShoukuanPassword()
 			Value& stock = data["stock"];
 			Value& stock = data["stock"];
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 
+			m_take_food_code = data["take_food_code"].GetString();
+			m_show_trade_no = data["take_food_code"].GetString();
+
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 
 
 			break;
 			break;

+ 4 - 1
zhipuzi_pos_windows/wnd/CHuiyuanShoukuanWnd.h

@@ -118,7 +118,10 @@ public:
 
 
 	int m_shoukuanModel = 1; //收款模式 1:会员扫码 2:手机号+密码
 	int m_shoukuanModel = 1; //收款模式 1:会员扫码 2:手机号+密码
 
 
-	//更新库存的字符串
+	//支付成功返回的字段
 	std::string m_kucun_string;
 	std::string m_kucun_string;
+	std::string m_out_trade_no;
+	std::string m_take_food_code;
+	std::string m_show_trade_no;
 };
 };
 
 

+ 6 - 0
zhipuzi_pos_windows/wnd/CWeixinzhifuShoukuanWnd.cpp

@@ -704,6 +704,9 @@ void CWeixinzhifuShoukuanWnd::HandleShoukuan()
 		Value& stock = data["stock"];
 		Value& stock = data["stock"];
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 		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_out_trade_no = data["trade_no"].GetString();
 		m_out_trade_no = data["trade_no"].GetString();
 
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
@@ -809,6 +812,9 @@ void CWeixinzhifuShoukuanWnd::HandleShoukuanPassword()
 			Value& stock = data["stock"];
 			Value& stock = data["stock"];
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 			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_out_trade_no = data["out_trade_no"].GetString();
 			m_out_trade_no = data["out_trade_no"].GetString();
 
 
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);

+ 4 - 8
zhipuzi_pos_windows/wnd/CWeixinzhifuShoukuanWnd.h

@@ -100,8 +100,6 @@ public:
 	std::wstring m_fukuanma;
 	std::wstring m_fukuanma;
 	int m_fukuanma_type; //付款码类型 1:微信支付 2:支付宝 3:其他的
 	int m_fukuanma_type; //付款码类型 1:微信支付 2:支付宝 3:其他的
 
 
-	std::string m_order_no;
-	std::string m_out_trade_no;
 
 
 	//收款状态 0:未开始 1:请求发给服务器了,但是暂时还没得到反馈 2:查询密码中 3:成功 4:失败 5:正在取消支付
 	//收款状态 0:未开始 1:请求发给服务器了,但是暂时还没得到反馈 2:查询密码中 3:成功 4:失败 5:正在取消支付
 	int m_shoukuan_status = 0;
 	int m_shoukuan_status = 0;
@@ -113,12 +111,10 @@ public:
 
 
 	std::map<string, string> m_commonParams;
 	std::map<string, string> m_commonParams;
 
 
-	//更新库存的字符串
+	//支付成功返回的字段
 	std::string m_kucun_string;
 	std::string m_kucun_string;
-
-	//抓取键盘输入相关的
-	bool m_is_start_catch = false;
-	clock_t m_last_catch_clock;
-	std::string m_catch_string;
+	std::string m_out_trade_no;
+	std::string m_take_food_code;
+	std::string m_show_trade_no;
 };
 };
 
 

+ 6 - 0
zhipuzi_pos_windows/wnd/CXianjinShoukuanWnd.cpp

@@ -725,6 +725,9 @@ void CXianjinShoukuanWnd::HandleShoukuan()
 		Value& stock = data["stock"];
 		Value& stock = data["stock"];
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 
+		m_take_food_code = data["take_food_code"].GetString();
+		m_show_trade_no = data["take_food_code"].GetString();
+
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 	}
 	}
 	else if (s_status == "fail")
 	else if (s_status == "fail")
@@ -826,6 +829,9 @@ void CXianjinShoukuanWnd::HandleShoukuanPassword()
 			Value& stock = data["stock"];
 			Value& stock = data["stock"];
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 
+			m_take_food_code = data["take_food_code"].GetString();
+			m_show_trade_no = data["take_food_code"].GetString();
+
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 
 
 			break;
 			break;

+ 4 - 1
zhipuzi_pos_windows/wnd/CXianjinShoukuanWnd.h

@@ -118,7 +118,10 @@ public:
 
 
 	std::string m_zhaoling;
 	std::string m_zhaoling;
 
 
-	//更新库存的字符串
+	//支付成功返回的字段
 	std::string m_kucun_string;
 	std::string m_kucun_string;
+	std::string m_out_trade_no;
+	std::string m_take_food_code;
+	std::string m_show_trade_no;
 };
 };
 
 

+ 6 - 0
zhipuzi_pos_windows/wnd/CZidingyiShoukuanWnd.cpp

@@ -639,6 +639,9 @@ void CZidingyiShoukuanWnd::HandleShoukuan()
 		Value& stock = data["stock"];
 		Value& stock = data["stock"];
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 		m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 
+		m_take_food_code = data["take_food_code"].GetString();
+		m_show_trade_no = data["take_food_code"].GetString();
+
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 	}
 	}
 	else if (s_status == "fail")
 	else if (s_status == "fail")
@@ -740,6 +743,9 @@ void CZidingyiShoukuanWnd::HandleShoukuanPassword()
 			Value& stock = data["stock"];
 			Value& stock = data["stock"];
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 			m_kucun_string = CLewaimaiJson::JsonToString(stock);
 
 
+			m_take_food_code = data["take_food_code"].GetString();
+			m_show_trade_no = data["take_food_code"].GetString();
+
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 
 
 			break;
 			break;

+ 4 - 1
zhipuzi_pos_windows/wnd/CZidingyiShoukuanWnd.h

@@ -118,7 +118,10 @@ public:
 	std::string m_zidingyi_name;
 	std::string m_zidingyi_name;
 	std::string m_zidingyi_pay_id;
 	std::string m_zidingyi_pay_id;
 
 
-	//更新库存的字符串
+	//支付成功返回的字段
 	std::string m_kucun_string;
 	std::string m_kucun_string;
+	std::string m_out_trade_no;
+	std::string m_take_food_code;
+	std::string m_show_trade_no;
 };
 };
 
 

+ 6 - 1
zhipuzi_pos_windows/zhipuzi/CDiandanOrder.h

@@ -27,7 +27,12 @@ public:
 	std::string m_memo;
 	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;
 
 
 public:
 public: