Browse Source

钱箱对接好了

张洋 4 years ago
parent
commit
2ba4561060

+ 7 - 0
bin/Win32/Debug/zhipuzi_pos_windows/skin/setting_diannei_tixing.xml

@@ -23,4 +23,11 @@
 		<Label text="新订单自动厨房打印" width="260" />
 		<CheckBox name="setting_is_new_diannei_chufang_printer" width="72" height="45" normalimage="file='switchbutton.png' source='0,0,143,91'" selectedimage="file='switchbutton.png' source='0,182,143,273'"/>
 	</HorizontalLayout>
+	
+	<Control height="1" bkcolor="#FFEAEAEA" padding="0,20,0,0"></Control>
+	
+	<HorizontalLayout height="44">
+		<Label text="现金收款后自动打开钱箱" width="260" />
+		<CheckBox name="setting_is_diannei_xianjin_qianxiang" width="72" height="45" normalimage="file='switchbutton.png' source='0,0,143,91'" selectedimage="file='switchbutton.png' source='0,182,143,273'"/>
+	</HorizontalLayout>
 </Window>

+ 17 - 0
zhipuzi_pos_windows/page/CDiandanPageUI.cpp

@@ -698,6 +698,11 @@ void CDiandanPageUI::HandleClickMsg(TNotifyUI& msg)
 	{
 		this->ClickQudan();
 	}
+	else if (name == L"btn_diandan_qianxiang")
+	{
+		CPosPrinter printer;
+		printer.OpenQianxiang();
+	}
 }
 
 //处理option切换事件
@@ -3072,6 +3077,18 @@ void CDiandanPageUI::StopSerachFood()
 
 void CDiandanPageUI::StartWorkAfterShoukuan(std::string kucunstring, std::string take_food_code, std::string show_trade_no, std::string shoukuan_type)
 {
+	//针对现金收款成功,单独做一个打开钱箱的判断处理
+	if (shoukuan_type == "xianjinzhifu")
+	{
+		std::string setting_is_diannei_xianjin_qianxiang = CSetting::GetParam("setting_is_diannei_xianjin_qianxiang");
+		if (setting_is_diannei_xianjin_qianxiang == "1")
+		{
+			//打开钱箱
+			CPosPrinter printer;
+			printer.OpenQianxiang();
+		}
+	}
+
 	//更新商品库存
 	this->UpdateFoodStock(kucunstring);
 

+ 23 - 0
zhipuzi_pos_windows/page/CSettingPageUI.cpp

@@ -118,6 +118,16 @@ void CSettingPageUI::InitShow()
 		box->Selected(false, false);
 	}
 
+	box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_diannei_xianjin_qianxiang")));
+	if (CSetting::GetParam("setting_is_diannei_xianjin_qianxiang") == "1")
+	{
+		box->Selected(true, false);
+	}
+	else
+	{
+		box->Selected(false, false);
+	}
+
 	//СƱ´òÓ¡
 	com = static_cast<CComboUI*>(this->FindSubControl(_T("setting_printer_guige")));
 	if (CSetting::GetParam("setting_printer_guige") == "58")
@@ -833,6 +843,19 @@ void CSettingPageUI::HandleClickMsg(TNotifyUI& msg)
 			CSetting::SetParam("setting_is_new_diannei_chufang_printer", "1");
 		}
 	}
+	else if (name == _T("setting_is_diannei_xianjin_qianxiang"))
+	{
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_is_diannei_xianjin_qianxiang")));
+
+		if (box->IsSelected())
+		{
+			CSetting::SetParam("setting_is_diannei_xianjin_qianxiang", "0");
+		}
+		else
+		{
+			CSetting::SetParam("setting_is_diannei_xianjin_qianxiang", "1");
+		}
+	}
 	else if (name == _T("setting_printer_wangkouk_save_btn"))
 	{
 		CEditUI* wangkou_ip = static_cast<CEditUI*>(this->FindSubControl(_T("setting_printer_wangkou_ip")));

+ 10 - 0
zhipuzi_pos_windows/print/CPosPrinter.cpp

@@ -123,6 +123,16 @@ void CPosPrinter::PrintDiandanOrder(CDiandanOrder& order)
 	}
 }
 
+//打开钱箱
+void CPosPrinter::OpenQianxiang()
+{
+	CPosPrinterData printData;
+
+	std::string data = printData.GetQianxiangCommand();
+
+	CPosPrinterQueue::GetInstance()->AddShouyinPrinter(data);
+}
+
 //获取当前电脑上所有的打印usb设备
 std::vector<std::wstring> CPosPrinter::getUsbDevices()
 {

+ 4 - 0
zhipuzi_pos_windows/print/CPosPrinter.h

@@ -13,11 +13,15 @@ public:
 	//完成所有打印一个外卖订单的操作(不等待,立即返回)
 	void PrintWaimaiOrder(CWaimaiOrder& order);
 
+	//通过订单号打印订单,后面要改成异步才行
 	void PrintWaimaiOrder(std::string order_id, std::string order_no);
 
 	//完成所有打印一个点单订单的操作(不等待,立即返回)
 	void PrintDiandanOrder(CDiandanOrder& order);
 
+	//打开钱箱
+	void OpenQianxiang();
+
 	//获取当前电脑上所有的打印usb设备
 	std::vector<std::wstring> getUsbDevices();
 };

+ 13 - 0
zhipuzi_pos_windows/print/CPosPrinterData.cpp

@@ -1739,6 +1739,13 @@ std::vector<ChufangPrinterContent> CPosPrinterData::PrintDiandanOrderChufang(CDi
 	return datas;
 }
 
+std::string CPosPrinterData::GetQianxiangCommand()
+{
+	POS_QIANXIANG();
+
+	return m_print_content;
+}
+
 void CPosPrinterData::WriteData(string msg)
 {
 	m_print_content += msg;
@@ -2098,6 +2105,12 @@ void CPosPrinterData::POS_OutBmp(std::wstring ImagePath)
 	delete[] dataTmp;
 }
 
+void CPosPrinterData::POS_QIANXIANG()
+{
+	unsigned char s[5] = { 0x1B, 0x70, 0x00, 0x80, 0x80 };
+	WriteBuf(s, 5);
+}
+
 void CPosPrinterData::BIAOQIAN_Reset(int nWidth, int nHeight, int nDirection)
 {
     char endTag[3] = {0x0d, 0x0a, 0x00};

+ 4 - 0
zhipuzi_pos_windows/print/CPosPrinterData.h

@@ -26,6 +26,8 @@ public:
 	std::string PrintDiandanOrderBiaoqian(CDiandanOrder& order);
 	std::vector<ChufangPrinterContent> PrintDiandanOrderChufang(CDiandanOrder& order);
 
+	std::string GetQianxiangCommand();
+
 private:
 	//把要打印的内容,写到string里面
 	void WriteData(string msg);
@@ -47,6 +49,8 @@ private:
 	void POS_OutQRCode(std::string dataString);
 	void POS_OutBmp(std::wstring ImagePath);
 
+	void POS_QIANXIANG();
+
 	//标签打印机的处理方法
 	void BIAOQIAN_Reset(int nWidth, int nHeight, int nDirection);
 	void BIAOQIAN_FORMFEED();

+ 6 - 0
zhipuzi_pos_windows/tool/CSetting.cpp

@@ -111,6 +111,12 @@ void CSetting::Init()
 		m_paramsMap[setting_is_new_diannei_chufang_printer] = "1";
 	}
 
+	std::string setting_is_diannei_xianjin_qianxiang = "setting_is_diannei_xianjin_qianxiang";
+	if (m_paramsMap.find(setting_is_diannei_xianjin_qianxiang) == m_paramsMap.end())
+	{
+		m_paramsMap[setting_is_diannei_xianjin_qianxiang] = "1";
+	}
+
 	//СƱ´òÓ¡ÉèÖòÎÊý
 	std::string setting_printer_guige = "setting_printer_guige";
 	if (m_paramsMap.find(setting_printer_guige) == m_paramsMap.end())