Sfoglia il codice sorgente

完成收款功能,准备开始做收款订单列表

张洋 3 anni fa
parent
commit
3b50bb564d

+ 224 - 1
zhipuzi_pos_windows/page/CShoukuanPageUI.cpp

@@ -11,6 +11,8 @@
 
 #include "../wnd/CMainWnd.h"
 
+#include "../print/CPosPrinter.h"
+
 CShoukuanPageUI::CShoukuanPageUI()
 {
 
@@ -215,7 +217,7 @@ void CShoukuanPageUI::HandleClickMsg(TNotifyUI& msg)
 		std::wstring name = msg.pSender->GetText();
 		std::wstring selfpay_id = msg.pSender->GetCustomAttribute(L"selfpay_id");
 
-	
+		this->StartZidingyiShoukuan(name, selfpay_id);
 	}
 }
 
@@ -614,19 +616,172 @@ void CShoukuanPageUI::StartHuiyuanShoukuan()
 //开始进行现金收款
 void CShoukuanPageUI::StartXianjinShoukuan()
 {
+	if (m_is_show_modal_wnd == true)
+	{
+		return;
+	}
+
+	if (atof(GetMoney().c_str()) < 0.0001)
+	{
+		m_pMainWnd->ShowToast(L"收款金额不能为0");
+
+		return;
+	}
+
+	CXianjinShoukuanWnd* pShoukuanWnd = new CXianjinShoukuanWnd();
+	if (pShoukuanWnd != NULL)
+	{
+		m_is_show_modal_wnd = true;
+		m_curModalWnd = pShoukuanWnd;
+
+		pShoukuanWnd->SetType(4);
+
+		pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
+		pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
+		pShoukuanWnd->CenterWindow();
+
+		std::string format_string = GetMoney();
+		std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
+		pShoukuanWnd->InitMoney(watchValue);
+
+		//这里要对提交订单的参数进行组装,然后方便请求
+		pShoukuanWnd->SetCommonParams(GetSendorderParams());
+
+		/*
+		if (m_is_start_catch && m_catch_string.length() == 18)
+		{
+			pShoukuanWnd->InitFukuanma(m_catch_string);
+		}
+		}*/
+
+		UINT ret = pShoukuanWnd->ShowModal();
+		if (ret == IDOK)
+		{
+			m_shishou_value = pShoukuanWnd->m_shishou;
+			m_zhaoling_value = pShoukuanWnd->m_zhaoling;
+
+			//说明收款成功了,需要进行一些后续的处理
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, "xianjinzhifu");
 
+			m_pMainWnd->ShowToast(L"收款成功!");
+		}
+
+		m_is_show_modal_wnd = false;
+		delete pShoukuanWnd;
+	}
 }
 
 //开始进行福利卡收款
 void CShoukuanPageUI::StartFulikaShoukuan()
 {
+	if (m_is_show_modal_wnd == true)
+	{
+		return;
+	}
+
+	if (atof(GetMoney().c_str()) < 0.0001)
+	{
+		m_pMainWnd->ShowToast(L"收款金额不能为0");
+
+		return;
+	}
+
+	CFulikaShoukuanWnd* pShoukuanWnd = new CFulikaShoukuanWnd();
+	if (pShoukuanWnd != NULL)
+	{
+		m_is_show_modal_wnd = true;
+		m_curModalWnd = pShoukuanWnd;
 
+		pShoukuanWnd->SetType(4);
+
+		pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
+		pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
+		pShoukuanWnd->CenterWindow();
+
+		std::string format_string = GetMoney();
+		std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
+		pShoukuanWnd->InitMoney(watchValue);
+
+		//这里要对提交订单的参数进行组装,然后方便请求
+		pShoukuanWnd->SetCommonParams(GetSendorderParams());
+
+		/*
+		if (m_is_start_catch && m_catch_string.length() == 18)
+		{
+			pShoukuanWnd->InitFukuanma(m_catch_string);
+		}
+		}*/
+
+		UINT ret = pShoukuanWnd->ShowModal();
+		if (ret == IDOK)
+		{
+			//说明收款成功了,需要进行一些后续的处理
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, "fulikazhifu");
+
+			m_pMainWnd->ShowToast(L"收款成功!");
+		}
+
+		m_is_show_modal_wnd = false;
+		delete pShoukuanWnd;
+	}
 }
 
 //开始自定义支付收款
 void CShoukuanPageUI::StartZidingyiShoukuan(std::wstring name, std::wstring selfpay_id)
 {
+	if (m_is_show_modal_wnd == true)
+	{
+		return;
+	}
+
+	if (atof(GetMoney().c_str()) < 0.0001)
+	{
+		m_pMainWnd->ShowToast(L"收款金额不能为0");
+
+		return;
+	}
+
+	CZidingyiShoukuanWnd* pShoukuanWnd = new CZidingyiShoukuanWnd();
+	if (pShoukuanWnd != NULL)
+	{
+		m_is_show_modal_wnd = true;
+		m_curModalWnd = pShoukuanWnd;
+
+		pShoukuanWnd->SetType(4);
+
+		pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
+		pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
+		pShoukuanWnd->CenterWindow();
+
+		std::string format_string = GetMoney();
+		std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
+		pShoukuanWnd->InitMoney(watchValue);
+
+		//这里要对提交订单的参数进行组装,然后方便请求
+		pShoukuanWnd->SetCommonParams(GetSendorderParams());
 
+		/*
+		if (m_is_start_catch && m_catch_string.length() == 18)
+		{
+			pShoukuanWnd->InitFukuanma(m_catch_string);
+		}
+		}*/
+
+		pShoukuanWnd->SetZidingyiName(name);
+		pShoukuanWnd->SetZidingyiId(selfpay_id);
+
+		UINT ret = pShoukuanWnd->ShowModal();
+		if (ret == IDOK)
+		{
+			//说明收款成功了,需要进行一些后续的处理
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, "zidingyizhifu");
+
+			m_pMainWnd->ShowToast(L"收款成功!");
+		}
+
+		m_is_show_modal_wnd = false;
+		delete pShoukuanWnd;
+	}
 }
 
 //获取通用参数,任何支付方式都要用到的参数,个性化参数在弹框里面处理
@@ -648,7 +803,75 @@ std::map<string, string> CShoukuanPageUI::GetSendorderParams()
 
 void CShoukuanPageUI::StartWorkAfterShoukuan(std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)
 {
+	//针对现金收款成功,单独做一个打开钱箱的判断处理
+	if (shoukuan_type == "xianjinzhifu")
+	{
+		std::string setting_is_diannei_xianjin_qianxiang = CSetting::GetInstance()->GetParam("setting_is_diannei_xianjin_qianxiang");
+		if (setting_is_diannei_xianjin_qianxiang == "1")
+		{
+			//打开钱箱
+			CPosPrinter printer;
+			printer.OpenQianxiang();
+		}
+	}
+
+	//处理小票打印
+	//处理打印
+	CShoukuanOrder order = this->GetPrintOrderinfo(show_trade_no, shoukuan_type, balance, member_number);
+
+	CPosPrinter printer;
+	printer.PrintShoukuanOrder(order);
+
+	//最后还原收款金额
 	this->InitMoney();
+
+	this->UpdateJiesuanInfo();
+}
+
+CShoukuanOrder CShoukuanPageUI::GetPrintOrderinfo(std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)
+{
+	CShoukuanOrder newOrder;
+
+	newOrder.m_money = this->GetMoney();
+
+	newOrder.shopname = CShopinfo::GetInstance()->m_shop_name;
+	newOrder.show_trade_no = show_trade_no;
+	newOrder.balance = balance;
+	newOrder.member_number = member_number;
+
+	if (shoukuan_type == "weixinzhifu")
+	{
+		newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"微信支付");
+	}
+	else if (shoukuan_type == "zhifubao")
+	{
+		newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"支付宝");
+	}
+	else if (shoukuan_type == "yunshanfu")
+	{
+		newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"云闪付");
+	}
+	else if (shoukuan_type == "huiyuanzhifu")
+	{
+		newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"会员支付");
+	}
+	else if (shoukuan_type == "xianjinzhifu")
+	{
+		newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"现金支付");
+	}
+	else if (shoukuan_type == "fulikazhifu")
+	{
+		newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"福利卡支付");
+	}
+	else if (shoukuan_type == "zidingyizhifu")
+	{
+		newOrder.shoukuan_type = CLewaimaiString::UnicodeToUTF8(L"自定义支付");
+	}
+
+	newOrder.order_from = 1;
+	newOrder.init_time = CLewaimaiTime::DatetimeToString(time(NULL));
+
+	return newOrder;
 }
 
 void CShoukuanPageUI::SetPos(RECT rc, bool bNeedInvalidate)

+ 9 - 0
zhipuzi_pos_windows/page/CShoukuanPageUI.h

@@ -5,6 +5,8 @@
 
 #include "../wnd/CModalWnd.h"
 
+#include "../zhipuzi/CShoukuanOrder.h"
+
 class CShoukuanPageUI : public CBasePageUI
 {
 public:
@@ -78,6 +80,9 @@ private:
 	//执行付款成功后的所有操作逻辑
 	void StartWorkAfterShoukuan(std::string show_trade_no, std::string shoukuan_type, std::string balance = "", std::string member_number = "");
 
+	//用于支付完成后,获取用于打印的order
+	CShoukuanOrder GetPrintOrderinfo(std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number);
+
 private:
 	//是否正在请求服务器
 	bool m_is_handle = false;
@@ -93,4 +98,8 @@ private:
 
 	//当前控件的实际宽度
 	int m_nPageWidth;
+
+	//仅用于现金收银成功后,对于实收和找零的临时记录
+	std::string m_shishou_value;
+	std::string m_zhaoling_value;
 };

+ 27 - 0
zhipuzi_pos_windows/print/CPosPrinter.cpp

@@ -277,6 +277,33 @@ void CPosPrinter::PrintZhengcanOrderJiesuan(std::string order_id)
 	PrintZhengcanOrderJiesuan(order);
 }
 
+//完成所有打印一个快速收银订单的操作(不等待,立即返回)
+void CPosPrinter::PrintShoukuanOrder(CShoukuanOrder& order)
+{
+	if (CSetting::GetInstance()->GetParam("setting_is_new_diannei_printer") == "1")
+	{
+		//执行收银小票打印操作
+		CPosPrinterData printData;
+
+		std::string data = printData.PrintShoukuanOrderShouyin(order);
+
+		if (data.length() > 0)
+		{
+			CPosPrinterQueue::GetInstance()->AddShouyinPrinter(data);
+		}
+	}
+}
+
+//通过订单号打印订单,后面要改成异步才行
+void CPosPrinter::PrintShoukuanOrder(std::string order_id)
+{
+	CShoukuanOrder order;
+
+	//bool ret = order.InitData(order_id);
+
+	PrintShoukuanOrder(order);
+}
+
 void CPosPrinter::PirntJiaobanOrder(CJiaobaoOrder& order)
 {
 	CPosPrinterData printData;

+ 6 - 0
zhipuzi_pos_windows/print/CPosPrinter.h

@@ -45,6 +45,12 @@ public:
 	//通过H5或者商家app结算成功之后,收银机打印结算单
 	void PrintZhengcanOrderJiesuan(std::string order_id);
 
+	//完成所有打印一个快速收银订单的操作(不等待,立即返回)
+	void PrintShoukuanOrder(CShoukuanOrder& order);
+
+	//通过订单号打印订单,后面要改成异步才行
+	void PrintShoukuanOrder(std::string order_id);
+
 	//打印交班单
 	void PirntJiaobanOrder(CJiaobaoOrder& order);
 

+ 146 - 0
zhipuzi_pos_windows/print/CPosPrinterData.cpp

@@ -3982,6 +3982,152 @@ std::string CPosPrinterData::PrintZhengcanOrderJiesuanShouyin(CZhengcanOrder& or
 	return m_print_content;
 }
 
+std::string CPosPrinterData::PrintShoukuanOrderShouyin(CShoukuanOrder& order)
+{
+	//读取当前收银打印机的设置
+	std::string guige = CSetting::GetInstance()->GetParam("setting_printer_guige");
+	std::string lianshu = CSetting::GetInstance()->GetParam("setting_printer_lianshu");
+	int n_lianshu = atoi(lianshu.c_str());
+
+	//正式开始打印
+	for (int i = 0; i < n_lianshu; i++)
+	{
+		POS_Reset();
+
+		//判断是否打印顶部logo
+		if (CShopinfo::GetInstance()->m_machine_logo_open == "1")
+		{
+			std::wstring imagePath = CShopinfo::GetInstance()->GetImageTmpPathFromUrl(CShopinfo::GetInstance()->m_machine_logo_url);
+
+			POS_OutBmp(imagePath);
+			POS_FeedLine();
+		}
+
+		//打印店铺名字
+		string shop_name = CLewaimaiString::UTF8ToANSI(order.shopname);
+		POS_TextOut(shop_name, true, true, 1);
+
+		POS_FeedLine();
+
+		POS_TextOut("收款结算小票", false, false, 1);
+
+		POS_FeedLine();
+		POS_FeedLine();
+
+		//订单号
+		bool setting_printer_dingdanhao_big = false;
+		if (CSetting::GetInstance()->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)
+		{
+			string from_type = "订单来源:收银系统";
+			POS_TextOut(from_type);
+			POS_FeedLine();
+		}
+		else if (order.order_from == 2)
+		{
+			string from_type = "订单来源:商家app";
+			POS_TextOut(from_type);
+			POS_FeedLine();
+		}
+		else if (order.order_from == 3)
+		{
+			string from_type = "订单来源:扫码下单";
+			POS_TextOut(from_type);
+			POS_FeedLine();
+		}
+
+		//下单时间
+		bool setting_printer_xiadanshijian_big = false;
+
+		if (CSetting::GetInstance()->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();
+
+		string shouyinyuan = "收银员:" + CLewaimaiString::UTF8ToANSI(CSetting::GetInstance()->getUsername());
+		POS_TextOut(shouyinyuan, false, false);
+		POS_FeedLine();
+
+		POS_FeedLine();
+
+		//最后显示总价
+		POS_TextOut("总计:" + order.m_money + "元", false, false, 0);
+		POS_FeedLine();
+
+		//显示付款方式
+		bool setting_printer_pay_big = false;
+
+		if (CSetting::GetInstance()->GetParam("setting_printer_pay_big") == "1")
+		{
+			setting_printer_pay_big = true;
+		}
+
+		POS_TextOut("支付方式:" + CLewaimaiString::UTF8ToANSI(order.shoukuan_type), false, setting_printer_pay_big, 0);
+		POS_FeedLine();
+
+		if (order.shoukuan_type == CLewaimaiString::UnicodeToUTF8(L"会员支付"))
+		{
+			POS_TextOut("会员余额:" + CLewaimaiString::UTF8ToANSI(order.balance), false, false, 0);
+			POS_FeedLine();
+
+			POS_TextOut("会员编号:" + CLewaimaiString::UTF8ToANSI(order.member_number), false, false, 0);
+			POS_FeedLine();
+		}
+
+		POS_FeedLine();
+		POS_FeedLine();
+
+		//是否打印底部二维码
+		if (CShopinfo::GetInstance()->m_machine_qrcode_open == "1")
+		{
+			POS_OutQRCode(CLewaimaiString::UTF8ToANSI(CShopinfo::GetInstance()->m_machine_qrcode_url));
+			POS_FeedLine();
+
+			POS_TextOut(CLewaimaiString::UTF8ToANSI(CShopinfo::GetInstance()->m_machine_qrcode_title), false, false, 1);
+			POS_FeedLine();
+			POS_FeedLine();
+		}
+
+		if (CShopinfo::GetInstance()->m_self_defined_open == "1")
+		{
+			POS_TextOut(CLewaimaiString::UTF8ToANSI(CShopinfo::GetInstance()->m_self_defined_content1), false, false, 1);
+			POS_FeedLine();
+			POS_FeedLine();
+
+			POS_TextOut(CLewaimaiString::UTF8ToANSI(CShopinfo::GetInstance()->m_self_defined_content2), false, false, 1);
+			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::PrintJiaobanOrder(CJiaobaoOrder& order)
 {
 	//读取当前收银打印机的设置

+ 4 - 0
zhipuzi_pos_windows/print/CPosPrinterData.h

@@ -4,6 +4,7 @@
 #include "../zhipuzi/CWaimaiOrder.h"
 #include "../zhipuzi/CDiandanOrder.h"
 #include "../zhipuzi/CZhengcanOrder.h"
+#include "../zhipuzi/CShoukuanOrder.h"
 #include "../zhipuzi/CJiaobanOrder.h"
 #include "../zhipuzi/CHuiyuanchognzhiOrder.h"
 
@@ -41,6 +42,9 @@ public:
 	//结算单小票
 	std::string PrintZhengcanOrderJiesuanShouyin(CZhengcanOrder& order);
 
+	//快速收银小票
+	std::string PrintShoukuanOrderShouyin(CShoukuanOrder& order);
+
 	std::string PrintJiaobanOrder(CJiaobaoOrder& order);
 
 	std::string PrintHuiyuanchongzhiOrder(CHuiyuanchongzhiOrder& order);

+ 29 - 4
zhipuzi_pos_windows/wnd/CFulikaShoukuanWnd.cpp

@@ -930,6 +930,11 @@ void CFulikaShoukuanWnd::HandleShoukuan()
 	{
 		url = "/dinnercash/pay";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/sendorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), m_commonParams, response);
 	if (ret == false)
 	{
@@ -1011,14 +1016,24 @@ void CFulikaShoukuanWnd::HandleShoukuan()
 		//支付成功
 		m_shoukuan_status = 3;
 
-		Value& stock = data["stock"];
-		m_kucun_string = CLewaimaiJson::JsonToString(stock);
-		m_show_trade_no = data["show_trade_no"].GetString();
-
 		if (m_nType == 1)
 		{
 			//快餐才有取餐号
 			m_take_food_code = data["take_food_code"].GetString();
+
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 2)
+		{
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 4)
+		{
+
 		}
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
@@ -1068,6 +1083,11 @@ void CFulikaShoukuanWnd::HandleShoukuanPassword()
 		{
 			url = "/dinnercash/queryorderstatus";
 		}
+		else if (m_nType == 4)
+		{
+			url = "/shouyin/queryorderstatus";
+		}
+
 		bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
 		if (ret == false)
 		{
@@ -1193,6 +1213,11 @@ void CFulikaShoukuanWnd::HandleCancelShoukuan()
 	{
 		url = "/dinnercash/closeorder";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/closeorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
 	if (ret == false)
 	{

+ 19 - 4
zhipuzi_pos_windows/wnd/CHuiyuanShoukuanWnd.cpp

@@ -1064,14 +1064,24 @@ void CHuiyuanShoukuanWnd::HandleShoukuan()
 		//支付成功
 		m_shoukuan_status = 3;
 
-		Value& stock = data["stock"];
-		m_kucun_string = CLewaimaiJson::JsonToString(stock);
-		m_show_trade_no = data["show_trade_no"].GetString();
-
 		if (m_nType == 1)
 		{
 			//快餐才有取餐号
 			m_take_food_code = data["take_food_code"].GetString();
+
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 2)
+		{
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 4)
+		{
+			m_show_trade_no = data["trade_no"].GetString();
 		}
 
 		m_balance = CLewaimaiString::DoubleToString(data["balance"].GetFloat(), 2);
@@ -1115,6 +1125,11 @@ void CHuiyuanShoukuanWnd::HandleCancelShoukuan()
 	{
 		url = "/dinnercash/closeorder";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/closeorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
 	if (ret == false)
 	{

+ 28 - 4
zhipuzi_pos_windows/wnd/CXianjinShoukuanWnd.cpp

@@ -708,6 +708,11 @@ void CXianjinShoukuanWnd::HandleShoukuan()
 	{
 		url = "/dinnercash/pay";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/sendorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), m_commonParams, response);
 	if (ret == false)
 	{
@@ -779,14 +784,24 @@ void CXianjinShoukuanWnd::HandleShoukuan()
 		//支付成功
 		m_shoukuan_status = 3;
 
-		Value& stock = data["stock"];
-		m_kucun_string = CLewaimaiJson::JsonToString(stock);
-		m_show_trade_no = data["show_trade_no"].GetString();
-
 		if (m_nType == 1)
 		{
 			//快餐才有取餐号
 			m_take_food_code = data["take_food_code"].GetString();
+
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 2)
+		{
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 4)
+		{
+			m_show_trade_no = data["trade_no"].GetString();
 		}
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
@@ -836,6 +851,10 @@ void CXianjinShoukuanWnd::HandleShoukuanPassword()
 		{
 			url = "/dinnercash/queryorderstatus";
 		}
+		else if (m_nType == 4)
+		{
+			url = "/shouyin/queryorderstatus";
+		}
 
 		bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
 		if (ret == false)
@@ -962,6 +981,11 @@ void CXianjinShoukuanWnd::HandleCancelShoukuan()
 	{
 		url = "/dinnercash/closeorder";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/closeorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
 	if (ret == false)
 	{

+ 29 - 4
zhipuzi_pos_windows/wnd/CZidingyiShoukuanWnd.cpp

@@ -492,6 +492,11 @@ void CZidingyiShoukuanWnd::HandleShoukuan()
 	{
 		url = "/dinnercash/pay";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/sendorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), m_commonParams, response);
 	if (ret == false)
 	{
@@ -563,14 +568,24 @@ void CZidingyiShoukuanWnd::HandleShoukuan()
 		//支付成功
 		m_shoukuan_status = 3;
 
-		Value& stock = data["stock"];
-		m_kucun_string = CLewaimaiJson::JsonToString(stock);
-		m_show_trade_no = data["show_trade_no"].GetString();
-
 		if (m_nType == 1)
 		{
 			//快餐才有取餐号
 			m_take_food_code = data["take_food_code"].GetString();
+
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 2)
+		{
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 4)
+		{
+			m_show_trade_no = data["trade_no"].GetString();
 		}
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
@@ -620,6 +635,11 @@ void CZidingyiShoukuanWnd::HandleShoukuanPassword()
 		{
 			url = "/dinnercash/queryorderstatus";
 		}
+		else if (m_nType == 4)
+		{
+			url = "/shouyin/queryorderstatus";
+		}
+
 		bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
 		if (ret == false)
 		{
@@ -745,6 +765,11 @@ void CZidingyiShoukuanWnd::HandleCancelShoukuan()
 	{
 		url = "/dinnercash/closeorder";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/closeorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
 	if (ret == false)
 	{

+ 24 - 0
zhipuzi_pos_windows/zhipuzi/CShoukuanOrder.cpp

@@ -0,0 +1,24 @@
+#include "CShoukuanOrder.h"
+
+
+
+CShoukuanOrder::CShoukuanOrder()
+{
+}
+
+
+CShoukuanOrder::~CShoukuanOrder()
+{
+}
+
+bool CShoukuanOrder::InitData(std::string order_id)
+{
+	return true;
+}
+
+//根据订单ID,进行退款操作
+bool CShoukuanOrder::Refund(std::string order_id)
+{
+	return true;
+}
+

+ 45 - 0
zhipuzi_pos_windows/zhipuzi/CShoukuanOrder.h

@@ -0,0 +1,45 @@
+#pragma once
+
+#include <string>
+#include <vector>
+
+class CShoukuanOrder
+{
+public:
+	CShoukuanOrder();
+	~CShoukuanOrder();
+
+public:
+	std::string m_money;
+
+	/******  下面这些是专门用于打印的参数,不作为其他用途,点单逻辑中用不到,点单成功后赋值用于打印而已  ***********/
+	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_order_id;
+	std::string is_refund;
+	std::string refund_time;
+	std::string is_guazhang;
+	std::string guazhang;
+
+public:
+	/****************************下面这里开始,用于与服务器交互的函数*/
+
+	//根据订单ID,从服务器获取订单的数据,主要用于打印和展示订单详情
+	bool InitData(std::string order_id);
+
+	//根据订单ID,进行退款操作
+	bool Refund(std::string order_id);
+};
+

+ 2 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj

@@ -229,6 +229,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     </PostBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClInclude Include="zhipuzi\CShoukuanOrder.h" />
     <ClInclude Include="page\CShoukuanPageUI.h" />
     <ClInclude Include="wnd\CThirdDeliverySelectWnd.h" />
     <ClInclude Include="wnd\CNumInputWnd.h" />
@@ -340,6 +341,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     <ClInclude Include="helper\CSystem.h" />
   </ItemGroup>
   <ItemGroup>
+    <ClCompile Include="zhipuzi\CShoukuanOrder.cpp" />
     <ClCompile Include="page\CShoukuanPageUI.cpp" />
     <ClCompile Include="wnd\CThirdDeliverySelectWnd.cpp" />
     <ClCompile Include="wnd\CNumInputWnd.cpp" />

+ 6 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj.filters

@@ -342,6 +342,9 @@
     <ClInclude Include="page\CShoukuanPageUI.h">
       <Filter>头文件</Filter>
     </ClInclude>
+    <ClInclude Include="zhipuzi\CShoukuanOrder.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="pch\pch.cpp">
@@ -644,6 +647,9 @@
     <ClCompile Include="page\CShoukuanPageUI.cpp">
       <Filter>源文件</Filter>
     </ClCompile>
+    <ClCompile Include="zhipuzi\CShoukuanOrder.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <Image Include="resource\zhipuzi.ico">