Bladeren bron

准备继续做正餐的预结算单

张洋 3 jaren geleden
bovenliggende
commit
abb6aaf941

+ 108 - 0
zhipuzi_pos_windows/page/CZhengcanDiandanPageUI.cpp

@@ -1039,6 +1039,10 @@ void CZhengcanDiandanPageUI::HandleClickMsg(TNotifyUI& msg)
 	{
 	{
 		this->ClickQuxiaoCika();
 		this->ClickQuxiaoCika();
 	}
 	}
+	else if (name == L"btn_diandan_yulandan")
+	{
+		this->ClickYulan();
+	}
 }
 }
 
 
 //处理option切换事件
 //处理option切换事件
@@ -3275,6 +3279,15 @@ void CZhengcanDiandanPageUI::ClickRenshu()
 	}
 	}
 }
 }
 
 
+void CZhengcanDiandanPageUI::ClickYulan()
+{
+	//处理打印
+	CZhengcanOrder order = this->GetPrintOrderinfoYulan();
+
+	CPosPrinter printer;
+	printer.PrintZhengcanOrderXiadan(order);
+}
+
 //获取通用参数,任何支付方式都要用到的参数,个性化参数在弹框里面处理
 //获取通用参数,任何支付方式都要用到的参数,个性化参数在弹框里面处理
 //参考文档 http://apidoc.zhipuzi.com/index.php/home/item/show?item_id=4
 //参考文档 http://apidoc.zhipuzi.com/index.php/home/item/show?item_id=4
 std::map<string, string> CZhengcanDiandanPageUI::GetSendorderParams()
 std::map<string, string> CZhengcanDiandanPageUI::GetSendorderParams()
@@ -4330,6 +4343,101 @@ CZhengcanOrder CZhengcanDiandanPageUI::GetPrintOrderinfoTuicai(CZhengcanOrderIte
 	return m_cur_diandan_order;
 	return m_cur_diandan_order;
 }
 }
 
 
+CZhengcanOrder CZhengcanDiandanPageUI::GetPrintOrderinfoYulan()
+{
+	m_cur_diandan_order.shopname = CShopinfo::GetInstance()->m_shop_name;
+
+	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_jiajia = CLewaimaiString::DoubleToString(m_jiajia, 2);
+
+	m_cur_diandan_order.m_shishou_value = m_shishou_value;
+	m_cur_diandan_order.m_zhaoling_value = m_zhaoling_value;
+
+	m_cur_diandan_order.m_zhekou_value = m_zhekou_value;
+
+	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);
+
+	for (std::vector<CZhengcanOrderItem>::iterator it = m_cur_diandan_order.m_items.begin(); it != m_cur_diandan_order.m_items.end(); it++)
+	{
+		CZhengcanOrderItemPrint itemPrint;
+
+		itemPrint.m_food_name = it->getNameWanzhengShow();
+		itemPrint.m_quantity = it->num;
+		itemPrint.m_item_price = it->getSinglePrice();
+		itemPrint.m_type_id = it->type_id;
+
+		if (it->m_is_taocan == true)
+		{
+			itemPrint.is_taocan = true;
+		}
+
+		m_cur_diandan_order.m_items_print.push_back(itemPrint);
+
+		if (it->m_is_taocan == true)
+		{
+			//开始保存套餐里面的商品详情,主要用于厨房打印
+			CFoodpackage foodpackageinfo;
+			foodpackageinfo = it->GetFoodpackageInfo();
+
+			std::string nature = foodpackageinfo.nature;
+
+			rapidjson::Document document;
+			document.Parse(nature.c_str());
+
+			if (document.HasParseError())
+			{
+				//属性json报错,直接不处理了
+				continue;
+			}
+
+			rapidjson::Value& data = document;
+
+			//接下来要把这个套餐的详情也保存下来
+			for (std::vector<FoodNatureSelectValue>::iterator it_2 = it->natureSelectedArray.begin(); it_2 != it->natureSelectedArray.end(); it_2++)
+			{
+				std::string food_id = data[it_2->nNameIndex]["value"][it_2->nature_select_index].GetString();
+
+				//要根据商品ID找出商品的名字
+				CFood foodinfo;
+				CSqlite3 sqlite;
+				bool is_found = sqlite.GetFoodById(food_id, foodinfo);
+				if (!is_found)
+				{
+					continue;
+				}
+
+				CZhengcanOrderItemPrint foodpackageitemPrint;
+
+				foodpackageitemPrint.m_food_name = foodinfo.name;
+				foodpackageitemPrint.m_quantity = it->num;
+				foodpackageitemPrint.m_item_price = foodinfo.price;
+				foodpackageitemPrint.m_type_id = foodinfo.type_id;
+
+				foodpackageitemPrint.is_taocan = false;
+				foodpackageitemPrint.is_taocan_item = true;
+
+				m_cur_diandan_order.m_items_print.push_back(foodpackageitemPrint);
+			}
+		}
+	}
+
+	return m_cur_diandan_order;
+}
+
 CZhengcanOrder CZhengcanDiandanPageUI::GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)
 CZhengcanOrder CZhengcanDiandanPageUI::GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)
 {
 {
 	m_cur_diandan_order.shopname = CShopinfo::GetInstance()->m_shop_name;
 	m_cur_diandan_order.shopname = CShopinfo::GetInstance()->m_shop_name;

+ 6 - 0
zhipuzi_pos_windows/page/CZhengcanDiandanPageUI.h

@@ -161,6 +161,9 @@ public:
 	//点击人数号按钮
 	//点击人数号按钮
 	void ClickRenshu();
 	void ClickRenshu();
 
 
+	//点击预览单按钮
+	void ClickYulan();
+
 	//开始进行微信支付收款,如果fukuanma不为空,默认自动唤起支付
 	//开始进行微信支付收款,如果fukuanma不为空,默认自动唤起支付
 	void StartWeixinzhifuShoukuan(std::string fukuanma = "");
 	void StartWeixinzhifuShoukuan(std::string fukuanma = "");
 
 
@@ -215,6 +218,9 @@ private:
 	//退菜成功之后的打印函数
 	//退菜成功之后的打印函数
 	CZhengcanOrder GetPrintOrderinfoTuicai(CZhengcanOrderItem tuicaiItem, int tuicai_num);
 	CZhengcanOrder GetPrintOrderinfoTuicai(CZhengcanOrderItem tuicaiItem, int tuicai_num);
 
 
+	//点击预览单之后的打印函数
+	CZhengcanOrder GetPrintOrderinfoYulan();
+
 	//用于支付完成后,获取用于打印的order
 	//用于支付完成后,获取用于打印的order
 	CZhengcanOrder GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number);
 	CZhengcanOrder GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number);