张洋 4 gadi atpakaļ
vecāks
revīzija
e985c31501

+ 4 - 4
bin/Win32/Debug/zhipuzi_pos_windows/skin/huiyuan_chongzhi_wnd.xml

@@ -46,10 +46,10 @@
 				
 				<Label text="支付方式" font="2" padding="30,40,0,15"/>
 
-				<HorizontalLayout height="90" padding="15,0,0,0">
-					<Button name="shoukuanBtn" text="" heiht="75" width="110" padding="15,0,0,15" textcolor="#FF999999" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#FFFF4242"></Button>
-					<Control bkimage="weixinzhifu_icon.png" width="24" height="22" float="true" pos="60,10,84,32" mouse="false"></Control>
-					<Label text="微信支付/支付宝" width="110" height="35" font="4" float="true" pos="16,35,126,70" textcolor="#FFFFFFFF" mouse="false"></Label>
+				<HorizontalLayout width="180" height="100" padding="15,0,0,0">
+					<Button name="shoukuanBtn" text="" heiht="80" width="180" padding="15,0,0,15" textcolor="#FF999999" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#FFFF4242"></Button>
+					<Control bkimage="weixinzhifu_icon.png" width="24" height="22" float="true" pos="85,10,109,32" mouse="false"></Control>
+					<Label text="微信支付/支付宝/云闪付" width="140" height="40" font="4" float="true" pos="20,35,180,75" textcolor="#FFFFFFFF" mouse="false"></Label>
 				</HorizontalLayout>
 			</VerticalLayout>
 			

BIN
bin/Win32/Release/setup/zhipuzi_pos_windows_setup_1.0.0.1.exe


+ 4 - 4
zhipuzi_pos_windows/page/CBaobiaoPageUI.cpp

@@ -294,12 +294,12 @@ void CBaobiaoPageUI::DoRefresh()
 	//获得数据成功
 	rapidjson::Value& data = document["data"];
 
-	std::string waimai_num = to_string(data["today_num"].GetInt());
-	std::string diannei_num = to_string(data["today_num"].GetInt());
+	std::string waimai_num = to_string(data["waimai_member"].GetInt());
+	std::string diannei_num = to_string(data["diannei_member"].GetInt());
 	std::string huiyuan_num = to_string(data["today_member"].GetInt());
 
-	std::string waimai_value = CLewaimaiString::DoubleToString(data["today_money"].GetFloat(), 2);
-	std::string diannei_value = CLewaimaiString::DoubleToString(data["today_money"].GetFloat(), 2);
+	std::string waimai_value = CLewaimaiString::DoubleToString(data["waimai_money"].GetFloat(), 2);
+	std::string diannei_value = CLewaimaiString::DoubleToString(data["diannei_money"].GetFloat(), 2);
 	std::string huiyuan_value = CLewaimaiString::DoubleToString(data["today_recharge"].GetFloat(), 2);
 
 	//开始渲染数据

+ 33 - 0
zhipuzi_pos_windows/page/CHuiyuanPageUI.cpp

@@ -4,6 +4,9 @@
 #include "../wnd/CHuiyuanChongzhiWnd.h"
 #include "../wnd/CHuiyuanAddWnd.h"
 
+#include "../zhipuzi/CHuiyuanchognzhiOrder.h"
+#include "../print/CPosPrinter.h"
+
 CHuiyuanPageUI::CHuiyuanPageUI()
 {
 
@@ -398,6 +401,36 @@ void CHuiyuanPageUI::StartHuiyuanChongzhi()
 		UINT ret = pShoukuanWnd->ShowModal();
 		if (ret == IDOK)
 		{
+			//然后处理小票打印
+			CHuiyuanchongzhiOrder order;
+
+			order.shopname = CShopinfo::GetInstance()->m_shop_name;
+			order.show_trade_no = pShoukuanWnd->m_show_trade_no;
+			order.init_time = CLewaimaiTime::DatetimeToString(time(NULL));
+			order.account = CSetting::GetInstance()->getUsername();
+
+			order.member_num = pShoukuanWnd->m_member_card_no;
+			order.chongzhi_value = pShoukuanWnd->m_chongzhi;
+			order.zengsong_value = pShoukuanWnd->m_zengsong;
+			order.balance_before = pShoukuanWnd->m_cur_balance;
+			order.balance_after = CLewaimaiString::DoubleToString(atof(m_balance.c_str()) + atof(order.chongzhi_value.c_str()) + atof(order.zengsong_value.c_str()), 2);
+
+			if (pShoukuanWnd->m_fukuanma_type == 1)
+			{
+				order.pay_type = "微信支付";
+			}
+			else if (pShoukuanWnd->m_fukuanma_type == 2)
+			{
+				order.pay_type = "支付宝";
+			}
+			else if (pShoukuanWnd->m_fukuanma_type == 2)
+			{
+				order.pay_type = "云闪付";
+			}
+			
+			CPosPrinter printer;
+			printer.PrintHuiyuanchongzhiOrder(order);
+
 			//这个表示充值成功了,这个时候刷新会员信息
 			StartHuiyuanSousuo();
 		}

+ 5 - 1
zhipuzi_pos_windows/page/CWaimaiOrderInfoPageUI.cpp

@@ -469,6 +469,10 @@ void CWaimaiOrderInfoPageUI::Refresh(CWaimaiOrder& order)
 		pDeliveryType->SetText(wsDeliveryType.c_str());
 	}
 
+	CLabelUI *pShopname = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_shopname")));
+	wstring wsShopname = _T("店铺名字:") + CLewaimaiString::UTF8ToUnicode(order.m_shop_name);
+	pShopname->SetText(wsShopname.c_str());
+
 	CLabelUI *pStatus = static_cast<CLabelUI *>(this->FindSubControl(_T("waimai_order_info_page_status")));
 	wstring wsStatus = _T("订单状态:") + CLewaimaiString::UTF8ToUnicode(order.m_order_status);
 
@@ -725,5 +729,5 @@ void CWaimaiOrderInfoPageUI::Refresh(CWaimaiOrder& order)
 		pConfigmemo->SetVisible(false);
 	}
 
-	this->FindSubControl(_T("waimai_order_info_page_layout_3"))->SetFixedHeight(order_filed_height + refundHeight + configMemoHeight + 181);
+	this->FindSubControl(_T("waimai_order_info_page_layout_3"))->SetFixedHeight(order_filed_height + refundHeight + configMemoHeight + 211);
 }

+ 9 - 0
zhipuzi_pos_windows/print/CPosPrinter.cpp

@@ -141,6 +141,15 @@ void CPosPrinter::PirntJiaobanOrder(CJiaobaoOrder& order)
 	CPosPrinterQueue::GetInstance()->AddShouyinPrinter(data);
 }
 
+void CPosPrinter::PrintHuiyuanchongzhiOrder(CHuiyuanchongzhiOrder& order)
+{
+	CPosPrinterData printData;
+
+	std::string data = printData.PrintHuiyuanchongzhiOrder(order);
+
+	CPosPrinterQueue::GetInstance()->AddShouyinPrinter(data);
+}
+
 //´ò¿ªÇ®Ïä
 void CPosPrinter::OpenQianxiang()
 {

+ 4 - 0
zhipuzi_pos_windows/print/CPosPrinter.h

@@ -4,6 +4,7 @@
 
 #include "CPosPrinterQueue.h"
 #include "../zhipuzi/CJiaobanOrder.h"
+#include "../zhipuzi/CHuiyuanchognzhiOrder.h"
 
 class CPosPrinter
 {
@@ -26,6 +27,9 @@ public:
 	//댔丹슥겯데
 	void PirntJiaobanOrder(CJiaobaoOrder& order);
 
+	//댔丹삔逃념令땐데
+	void PrintHuiyuanchongzhiOrder(CHuiyuanchongzhiOrder& order);
+
 	//댔역풀芎
 	void OpenQianxiang();
 

+ 94 - 0
zhipuzi_pos_windows/print/CPosPrinterData.cpp

@@ -2061,6 +2061,100 @@ std::string CPosPrinterData::PrintJiaobanOrder(CJiaobaoOrder& order)
 	return m_print_content;
 }
 
+std::string CPosPrinterData::PrintHuiyuanchongzhiOrder(CHuiyuanchongzhiOrder& order)
+{
+	//读取当前收银打印机的设置
+	std::string guige = CSetting::GetInstance()->GetParam("setting_printer_guige");
+
+	//正式开始打印
+	POS_Reset();
+
+	POS_TextOut(CLewaimaiString::UTF8ToANSI(order.shopname), true, true, 1);
+
+	POS_FeedLine();
+	POS_FeedLine();
+
+	POS_TextOut("会员充值结算单", false, false, 1);
+
+	POS_FeedLine();
+	POS_FeedLine();
+
+	//打印店铺名字
+	string show_trade_no = "订单号:" + CLewaimaiString::UTF8ToANSI(order.show_trade_no);
+	POS_TextOut(show_trade_no);
+	POS_FeedLine();
+
+	string account = "收银账号:" + CLewaimaiString::UTF8ToANSI(order.account);
+	POS_TextOut(account);
+	POS_FeedLine();
+
+	string init_time = "充值时间:" + CLewaimaiString::UTF8ToANSI(order.init_time);
+	POS_TextOut(init_time);
+	POS_FeedLine();
+
+	//准备开始打印商品详情
+	string lines;
+
+	if (guige == "58")
+	{
+		lines = "--------------------------------";
+	}
+	else
+	{
+		lines = "------------------------------------------------";
+	}
+
+	POS_TextOut(lines);
+	POS_FeedLine();
+
+	string member_num = "会员卡号:" + CLewaimaiString::UTF8ToANSI(order.member_num);
+	POS_TextOut(member_num, false, false);
+	POS_FeedLine();
+
+	string chongzhi_value = "充值金额:" + CLewaimaiString::UTF8ToANSI(order.chongzhi_value) + "元";
+	POS_TextOut(chongzhi_value, false, false);
+	POS_FeedLine();
+
+	string zengsong_value = "赠送金额:" + CLewaimaiString::UTF8ToANSI(order.zengsong_value) + "元";
+	POS_TextOut(zengsong_value, false, false);
+	POS_FeedLine();
+
+	string balance_before = "充值前余额:" + CLewaimaiString::UTF8ToANSI(order.balance_before) + "元";
+	POS_TextOut(balance_before, false, false);
+	POS_FeedLine();
+
+	string balance_after = "充值后余额:" + CLewaimaiString::UTF8ToANSI(order.balance_after) + "元";
+	POS_TextOut(balance_after, false, false);
+	POS_FeedLine();
+
+	//结束商品详情打印
+	POS_TextOut(lines);
+	POS_FeedLine();
+
+	string pay_type = "支付方式:" + order.pay_type;
+	POS_TextOut(pay_type, false, false, 2);
+	POS_FeedLine();
+
+	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::GetQianxiangCommand()
 {
 	POS_QIANXIANG();

+ 3 - 0
zhipuzi_pos_windows/print/CPosPrinterData.h

@@ -4,6 +4,7 @@
 #include "../zhipuzi/CWaimaiOrder.h"
 #include "../zhipuzi/CDiandanOrder.h"
 #include "../zhipuzi/CJiaobanOrder.h"
+#include "../zhipuzi/CHuiyuanchognzhiOrder.h"
 
 class ChufangPrinterContent
 {
@@ -29,6 +30,8 @@ public:
 
 	std::string PrintJiaobanOrder(CJiaobaoOrder& order);
 
+	std::string PrintHuiyuanchongzhiOrder(CHuiyuanchongzhiOrder& order);
+
 	std::string GetQianxiangCommand();
 
 private:

+ 69 - 2
zhipuzi_pos_windows/wnd/CHuiyuanChongzhiWnd.cpp

@@ -827,6 +827,69 @@ void CHuiyuanChongzhiWnd::StartShoukuan()
 
 void CHuiyuanChongzhiWnd::HandleShoukuan()
 {
+	//先判断收款码的格式是否正确
+	std::string s_Fukuanma = m_fukuanma;
+
+	int length = s_Fukuanma.size();
+	if (length != 18 && length != 19)
+	{
+		m_shoukuan_status = 4;
+
+		m_fail_message = L"收款码格式不对,请检查后重新输入!";
+
+		SendMessage(WM_SHOUKUAN_STATUS_FAIL, 0, 0);
+		return;
+	}
+
+	for (int i = 0; i < length; i++)
+	{
+		char c = *(s_Fukuanma.c_str() + i);
+		if (isdigit(c) == 0)
+		{
+			m_shoukuan_status = 4;
+
+			m_fail_message = L"收款码格式不对,请检查后重新输入!";
+
+			SendMessage(WM_SHOUKUAN_STATUS_FAIL, 0, 0);
+			return;
+		}
+	}
+
+	if (s_Fukuanma.find("10") == 0 \
+		|| s_Fukuanma.find("11") == 0 \
+		|| s_Fukuanma.find("12") == 0 \
+		|| s_Fukuanma.find("13") == 0 \
+		|| s_Fukuanma.find("14") == 0 \
+		|| s_Fukuanma.find("15") == 0)
+	{
+		//微信付款码
+		m_fukuanma_type = 1;
+	}
+	else if (s_Fukuanma.find("25") == 0 \
+		|| s_Fukuanma.find("26") == 0 \
+		|| s_Fukuanma.find("27") == 0 \
+		|| s_Fukuanma.find("28") == 0 \
+		|| s_Fukuanma.find("29") == 0 \
+		|| s_Fukuanma.find("30") == 0)
+	{
+		//支付宝付款码
+		m_fukuanma_type = 2;
+	}
+	else if (s_Fukuanma.find("62") == 0)
+	{
+		//云闪付付款码
+		m_fukuanma_type = 3;
+	}
+	else
+	{
+		m_shoukuan_status = 4;
+
+		m_fail_message = L"收款码格式不对,请检查后重新输入!";
+
+		SendMessage(WM_SHOUKUAN_STATUS_FAIL, 0, 0);
+		return;
+	}
+
 	//先获取会员充值的token
 	std::string token;
 
@@ -988,7 +1051,9 @@ void CHuiyuanChongzhiWnd::HandleShoukuan()
 	if (s_status == "success")
 	{
 		//支付成功
-		m_shoukuan_status = 3;		
+		m_shoukuan_status = 3;	
+
+		m_show_trade_no = data_2["show_trade_no"].GetString();
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 	}
@@ -1088,7 +1153,9 @@ void CHuiyuanChongzhiWnd::HandleShoukuanPassword()
 		if (s_status == "success")
 		{
 			//支付成功
-			m_shoukuan_status = 3;			
+			m_shoukuan_status = 3;
+
+			m_show_trade_no = data["show_trade_no"].GetString();
 
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
 

+ 4 - 0
zhipuzi_pos_windows/wnd/CHuiyuanChongzhiWnd.h

@@ -118,6 +118,10 @@ public:
 	//微信支付时候的付款码
 	std::string m_fukuanma;
 
+	int m_fukuanma_type; //付款码类型 1:微信支付 2:支付宝 3:其他的
+
 	//支付成功返回的字段
 	std::string m_trade_no;
+
+	std::string m_show_trade_no;
 };

+ 19 - 0
zhipuzi_pos_windows/zhipuzi/CHuiyuanchognzhiOrder.h

@@ -0,0 +1,19 @@
+#pragma once
+
+//会员充值结果保存的类,主要用于小票打印
+class CHuiyuanchongzhiOrder
+{
+public:
+	std::string shopname;
+	std::string show_trade_no;
+	std::string init_time;
+	std::string account;
+
+	std::string member_num;
+	std::string chongzhi_value;
+	std::string zengsong_value;
+	std::string balance_before;
+	std::string balance_after;
+	
+	std::string pay_type;
+};

+ 36 - 0
zhipuzi_pos_windows/zhipuzi/CWaimaiOrder.cpp

@@ -360,6 +360,42 @@ bool CWaimaiOrder::FailOrder(std::string order_id, std::string reason)
 
 bool CWaimaiOrder::Refund(std::string order_id)
 {
+	std::string url = "/waimaiorder/refund";
+
+	//请求外卖的未处理订单
+	std::map<string, string> params;
+	params["id"] = order_id;
+
+	std::string response;
+
+	CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
+
+	rapidjson::Document document;
+	document.Parse(response.c_str());
+
+	if (document.HasParseError())
+	{
+		LOG_INFO("parse response error!");
+		return false;
+	}
+
+	if (!document.HasMember("errcode") || !document.HasMember("errmsg") || !document.HasMember("data"))
+	{
+		LOG_INFO("json error!");
+		return false;
+	}
+
+	rapidjson::Value& v_errcode = document["errcode"];
+	int errcode = v_errcode.GetInt();
+	if (errcode != 0)
+	{
+		LOG_INFO("response failed! message:" << document["errmsg"].GetString());
+		return false;
+	}
+
+	//获得数据成功
+	rapidjson::Value& data = document["data"];
+
 	return true;
 }
 

+ 1 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj

@@ -271,6 +271,7 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     <ClInclude Include="wnd\CMemberLoginWnd.h" />
     <ClInclude Include="wnd\CYouhuiShowWnd.h" />
     <ClInclude Include="zhipuzi\CDiandanOrderItem.h" />
+    <ClInclude Include="zhipuzi\CHuiyuanchognzhiOrder.h" />
     <ClInclude Include="zhipuzi\CJiaobanOrder.h" />
     <ClInclude Include="zhipuzi\CShopinfo.h" />
     <ClInclude Include="wnd\CMemoWnd.h" />

+ 3 - 0
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj.filters

@@ -282,6 +282,9 @@
     <ClInclude Include="page\CSaomashouyinPageUI.h">
       <Filter>头文件</Filter>
     </ClInclude>
+    <ClInclude Include="zhipuzi\CHuiyuanchognzhiOrder.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="pch\pch.cpp">