Преглед на файлове

做完退菜的打印,准备做预览单、结算单的打印

zhangyang преди 3 години
родител
ревизия
9b35aef5b2

+ 87 - 7
zhipuzi_pos_windows/page/CZhengcanDiandanPageUI.cpp

@@ -1344,7 +1344,20 @@ void CZhengcanDiandanPageUI::UpdateShopcartShow()
 			pNum->SetTextColor(0xFFBBBBBB);
 			pPrice->SetTextColor(0xFFBBBBBB);
 
-			pEle->SetFixedHeight(42);
+			if (item.m_is_taocan)
+			{
+				CLabelUI* pNature = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_nature")));
+
+				pEle->SetFixedHeight(84);
+				pNature->SetVisible(true);
+				pNature->SetText(CLewaimaiString::UTF8ToUnicode(item.getHistoryNatureShow()).c_str());
+
+				pNature->SetTextColor(0xFFBBBBBB);
+			}
+			else
+			{
+				pEle->SetFixedHeight(42);
+			}
 
 			m_history_cart_item.push_back(pEle);
 		}
@@ -2605,7 +2618,7 @@ void CZhengcanDiandanPageUI::ClickTuicai()
 	Value& stock = data["stock"];
 	std::string kucun_string = CLewaimaiJson::JsonToString(stock);
 
-	this->StartWorkAfterTuicai(kucun_string);
+	this->StartWorkAfterTuicai(kucun_string, curItem, 1);
 }
 
 void CZhengcanDiandanPageUI::ClickXidanBtn()
@@ -4116,16 +4129,16 @@ void CZhengcanDiandanPageUI::StopSerachFood()
 	this->InitFoodShow();
 }
 
-void CZhengcanDiandanPageUI::StartWorkAfterTuicai(std::string kucunstring)
+void CZhengcanDiandanPageUI::StartWorkAfterTuicai(std::string kucunstring, CZhengcanOrderItem tuicaiItem, int tuicai_num)
 {
 	//更新商品库存
 	this->UpdateFoodStock(kucunstring);
 
 	//处理打印
-	CZhengcanOrder order = this->GetPrintOrderinfoXiadan(show_trade_no);
+	CZhengcanOrder order = this->GetPrintOrderinfoTuicai(tuicaiItem, tuicai_num);
 
 	CPosPrinter printer;
-	printer.PrintZhengcanOrder(order);
+	printer.PrintZhengcanOrderXiadan(order);
 
 	//如果走到这里说明退菜成功了,这个时候刷新显示
 	this->InitShow();
@@ -4141,7 +4154,7 @@ void CZhengcanDiandanPageUI::StartWorkAfterXiadan(std::string kucunstring, std::
 	CZhengcanOrder order = this->GetPrintOrderinfoXiadan(show_trade_no);
 
 	CPosPrinter printer;
-	printer.PrintZhengcanOrder(order);
+	printer.PrintZhengcanOrderXiadan(order);
 
 	//下单成功了,返回到桌子列表
 	m_pMainWnd->SwitchPage(CMainWnd::ZHENGCAN);
@@ -4168,7 +4181,7 @@ void CZhengcanDiandanPageUI::StartWorkAfterShoukuan(std::string kucunstring, std
 	CZhengcanOrder order = this->GetPrintOrderinfo(take_food_code, show_trade_no, shoukuan_type, balance, member_number);
 
 	CPosPrinter printer;
-	printer.PrintZhengcanOrder(order);
+	printer.PrintZhengcanOrderXiadan(order);
 
 	//结账成功了,返回到桌子列表
 	m_pMainWnd->SwitchPage(CMainWnd::ZHENGCAN);
@@ -4183,6 +4196,9 @@ CZhengcanOrder CZhengcanDiandanPageUI::GetPrintOrderinfoXiadan(std::string show_
 	m_cur_diandan_order.order_from = 1;
 	m_cur_diandan_order.init_time = CLewaimaiTime::DatetimeToString(time(NULL));
 
+	//清空之前的打印记录
+	m_cur_diandan_order.m_items_print.clear();
+
 	for (std::vector<CZhengcanOrderItem>::iterator it = m_cur_diandan_order.m_items.begin(); it != m_cur_diandan_order.m_items.end(); it++)
 	{
 		CZhengcanOrderItemPrint itemPrint;
@@ -4250,6 +4266,70 @@ CZhengcanOrder CZhengcanDiandanPageUI::GetPrintOrderinfoXiadan(std::string show_
 	return m_cur_diandan_order;
 }
 
+CZhengcanOrder CZhengcanDiandanPageUI::GetPrintOrderinfoTuicai(CZhengcanOrderItem tuicaiItem, int tuicai_num)
+{
+	m_cur_diandan_order.shopname = CShopinfo::GetInstance()->m_shop_name;
+	m_cur_diandan_order.table_name = m_table_name;
+
+	m_cur_diandan_order.init_time = CLewaimaiTime::DatetimeToString(time(NULL));
+
+	//清空之前的打印记录
+	m_cur_diandan_order.m_items_print.clear();
+
+	CZhengcanOrderItemPrint itemPrint;
+
+	itemPrint.m_quantity = tuicai_num;
+	itemPrint.m_item_price = tuicaiItem.price;
+	itemPrint.m_type_id = tuicaiItem.type_id;
+
+	if (tuicaiItem.m_is_taocan == true)
+	{
+		itemPrint.is_taocan = true;
+
+		itemPrint.m_food_name = tuicaiItem.foodpackage_name; //不带属性商品
+	}
+	else
+	{
+		itemPrint.m_food_name = tuicaiItem.food_name; //带属性值
+	}
+
+	m_cur_diandan_order.m_items_print.push_back(itemPrint);
+
+	if (tuicaiItem.m_is_taocan == true)
+	{
+		//开始保存套餐里面的商品详情,主要用于厨房打印
+
+		//接下来要把这个套餐的详情也保存下来
+		for (std::vector<CZhengcanOrderItem>::iterator it = tuicaiItem.m_taocan_items.begin(); it != tuicaiItem.m_taocan_items.end(); it++)
+		{
+			std::string food_id = it->food_id;
+
+			//要根据商品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 = tuicai_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)
 {
 	m_cur_diandan_order.shopname = CShopinfo::GetInstance()->m_shop_name;

+ 4 - 1
zhipuzi_pos_windows/page/CZhengcanDiandanPageUI.h

@@ -192,7 +192,7 @@ public:
 	void StopSerachFood();
 
 	//执行退菜后的逻辑
-	void StartWorkAfterTuicai(std::string kucunstring);
+	void StartWorkAfterTuicai(std::string kucunstring, CZhengcanOrderItem tuicaiItem, int tuicai_num);
 
 	//执行下单成功后的所有操作逻辑
 	void StartWorkAfterXiadan(std::string kucunstring, std::string show_trade_no);
@@ -212,6 +212,9 @@ private:
 	//下单成功之后的打印函数
 	CZhengcanOrder GetPrintOrderinfoXiadan(std::string show_trade_no);
 
+	//退菜成功之后的打印函数
+	CZhengcanOrder GetPrintOrderinfoTuicai(CZhengcanOrderItem tuicaiItem, int tuicai_num);
+
 	//用于支付完成后,获取用于打印的order
 	CZhengcanOrder GetPrintOrderinfo(std::string take_food_code, std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number);
 

+ 21 - 6
zhipuzi_pos_windows/print/CPosPrinter.cpp

@@ -133,7 +133,7 @@ void CPosPrinter::PrintDiandanOrder(std::string order_id)
 }
 
 //完成所有打印一个正餐订单的操作(不等待,立即返回)
-void CPosPrinter::PrintZhengcanOrder(CZhengcanOrder& order)
+void CPosPrinter::PrintZhengcanOrderXiadan(CZhengcanOrder& order)
 {
 	if (CSetting::GetInstance()->GetParam("setting_is_new_diannei_printer") == "1")
 	{
@@ -184,14 +184,29 @@ void CPosPrinter::PrintZhengcanOrder(CZhengcanOrder& order)
 	}
 }
 
-//通过订单号打印订单,后面要改成异步才行
-void CPosPrinter::PrintZhengcanOrder(std::string order_id)
+void CPosPrinter::PrintZhengcanOrderTuicai(CZhengcanOrder& order)
 {
-	CZhengcanOrder order;
+	//判断是否进行自动的厨房打印(退菜只打印厨房小票,不打印收银小票)
+	if (CSetting::GetInstance()->GetParam("setting_is_new_diannei_chufang_printer") == "1")
+	{
+		//进行厨房打印
+		CPosPrinterData printData;
 
-	bool ret = order.InitData(order_id);
+		std::vector<ChufangPrinterContent> datas = printData.PrintZhengcanOrderTuicaiChufang(order);
+
+		if (datas.size() > 0)
+		{
+			for (std::vector<ChufangPrinterContent>::iterator it = datas.begin(); it != datas.end(); it++)
+			{
+				ChufangPrinterContent content = *it;
 
-	PrintZhengcanOrder(order);
+				if (content.data.length() > 0)
+				{
+					CPosPrinterQueue::GetInstance()->AddChufangPrinter(content);
+				}
+			}
+		}
+	}
 }
 
 void CPosPrinter::PirntJiaobanOrder(CJiaobaoOrder& order)

+ 4 - 4
zhipuzi_pos_windows/print/CPosPrinter.h

@@ -24,11 +24,11 @@ public:
 	//通过订单号打印订单,后面要改成异步才行
 	void PrintDiandanOrder(std::string order_id);
 
-	//完成所有打印一个正餐订单的操作(不等待,立即返回)
-	void PrintZhengcanOrder(CZhengcanOrder& order);
+	//完成所有打印一个正餐下单的打印操作(不等待,立即返回)
+	void PrintZhengcanOrderXiadan(CZhengcanOrder& order);
 
-	//通过订单号打印订单,后面要改成异步才行
-	void PrintZhengcanOrder(std::string order_id);
+	//完成所有打印一个正餐退菜的打印操作(不等待,立即返回)
+	void PrintZhengcanOrderTuicai(CZhengcanOrder& order);
 
 	//打印交班单
 	void PirntJiaobanOrder(CJiaobaoOrder& order);

+ 320 - 0
zhipuzi_pos_windows/print/CPosPrinterData.cpp

@@ -2819,6 +2819,326 @@ std::vector<ChufangPrinterContent> CPosPrinterData::PrintZhengcanOrderXiadanChuf
 	return datas;
 }
 
+std::vector<ChufangPrinterContent> CPosPrinterData::PrintZhengcanOrderTuicaiChufang(CZhengcanOrder& order)
+{
+	std::vector<ChufangPrinterContent> datas;
+
+	//读取厨房打印机信息
+	std::vector<ChufangPrinter> total_printers = CSetting::GetInstance()->getChufangPrints();
+
+	for (std::vector<ChufangPrinter>::iterator it = total_printers.begin(); it != total_printers.end(); it++)
+	{
+		//清空每个厨房打印机的打印内容
+		m_print_content = "";
+
+		ChufangPrinter printer = *it;
+		std::string ip = printer.ip;
+
+		std::string guige = printer.guige;
+		std::string fendan = printer.fendan;
+		std::string fenlei = printer.fenlei;
+		std::string fenlei_ids = printer.fenlei_ids;
+
+		std::vector<CZhengcanOrderItemPrint> cur_printer_use;
+		if (fenlei == "0")
+		{
+			cur_printer_use = order.m_items_print;
+		}
+		else
+		{
+			//如果开启了分类打印,就要比对了
+			std::map<string, bool> ids_map;
+			std::vector<string> ids = CLewaimaiString::Split(fenlei_ids, ",");
+
+			for (std::vector<string>::iterator it = ids.begin(); it != ids.end(); it++)
+			{
+				ids_map[(*it)] = true;
+			}
+
+			for (std::vector<CZhengcanOrderItemPrint>::iterator it = order.m_items_print.begin(); it != order.m_items_print.end(); it++)
+			{
+				if (ids_map.find((*it).m_type_id) != ids_map.end())
+				{
+					//如果当前商品的分类,在厨房打印机设置的分类里面,才加入
+					cur_printer_use.push_back(*it);
+				}
+			}
+		}
+
+		if (cur_printer_use.size() == 0)
+		{
+			//如果这个厨房打印机没有商品可以打印(开启了商品分类打印可能出现),就直接跳过
+			continue;
+		}
+
+		if (fendan == "0")
+		{
+			POS_Reset();
+			POS_TextOut("退菜单", true, true, 1);
+			POS_FeedLine();
+
+			POS_FeedLine();
+
+			string order_type = "订单号:" + order.show_trade_no;
+			POS_TextOut(order_type, false, false, 0);
+			POS_FeedLine();
+
+			string init_time = "下单时间:" + order.init_time;
+			POS_TextOut(init_time, false, false, 0);
+			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, true, 0);
+					POS_FeedLine();
+				}
+			}
+			}*/
+
+			//准备开始打印商品详情
+			string lines;
+
+			if (guige == "58")
+			{
+				lines = "--------------------------------";
+			}
+			else
+			{
+				lines = "------------------------------------------------";
+			}
+
+			POS_TextOut(lines);
+			POS_FeedLine();
+
+			//商品标题
+			if (guige == "58")
+			{
+				POS_TextOut("商品           单价   数量  金额", false, true);
+			}
+			else
+			{
+				POS_TextOut("商品                         单价    数量   金额", false, true);
+			}
+
+			POS_FeedLine();
+
+			//商品内容
+			for (std::vector<CZhengcanOrderItemPrint>::iterator it = cur_printer_use.begin(); it != cur_printer_use.end(); it++)
+			{
+				if (it->is_taocan == true)
+				{
+					//套餐的名字,厨房打印不打印
+					continue;
+				}
+
+				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);
+				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, true, 0);
+				POS_FeedLine();
+
+				for (std::vector<string>::iterator it = m_names.begin() + 1; it != m_names.end(); it++)
+				{
+					POS_TextOut((*it), false, true, 0);
+					POS_FeedLine();
+				}
+			}
+
+			//判断是否有备注
+			if (order.m_memo.length() > 0)
+			{
+				POS_FeedLine();
+				string address = "整单备注:" + CLewaimaiString::UTF8ToANSI(order.m_memo);
+				POS_TextOut(address, false, true, 0);
+				POS_FeedLine();
+			}
+
+			//结束商品详情打印
+			POS_TextOut(lines);
+			POS_FeedLine();
+
+			POS_FeedLine();
+			POS_FeedLine();
+			POS_FeedLine();
+			POS_FeedLine();
+			POS_FeedLine();
+
+			POS_CutPaper();
+
+			//还原打印机初始设置,有些傻逼收银设备居然不是自动调用,比如哗啦啦
+			POS_Reset();
+		}
+		else
+		{
+			POS_Reset();
+
+			//分单模式下,每个商品打印一张单
+			for (std::vector<CZhengcanOrderItemPrint>::iterator it = cur_printer_use.begin(); it != cur_printer_use.end(); it++)
+			{
+				if (it->is_taocan == true)
+				{
+					//套餐的名字,厨房打印不打印
+					continue;
+				}
+
+				POS_TextOut("退菜单", true, true, 1);
+				POS_FeedLine();
+
+				POS_FeedLine();
+
+				string order_type = "订单号:" + order.show_trade_no + "  ";
+
+				POS_TextOut(order_type, false, true, 1);
+				POS_FeedLine();
+
+				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, true, 0);
+						POS_FeedLine();
+					}
+				}
+				}*/
+
+				//准备开始打印商品详情
+				string lines;
+
+				if (guige == "58")
+				{
+					lines = "--------------------------------";
+				}
+				else
+				{
+					lines = "------------------------------------------------";
+				}
+
+				POS_TextOut(lines);
+				POS_FeedLine();
+
+				//商品标题
+				if (guige == "58")
+				{
+					POS_TextOut("商品           单价   数量  金额", false, true);
+				}
+				else
+				{
+					POS_TextOut("商品                         单价    数量   金额", false, true);
+				}
+
+				POS_FeedLine();
+				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);
+				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];
+				std::string priceShow = HandleFoodItemPrice(food_price, 2);
+				std::string quantityShow = HandleFoodQuantity(quantity, 2);
+				std::string priceTotalShow = HandleFoodTotalPrice(food_total_price, 2);
+				std::string firstLineShow = firstLine + priceShow + quantityShow + priceTotalShow;
+				POS_TextOut(firstLineShow, false, true, 0);
+				POS_FeedLine();
+
+				for (std::vector<string>::iterator it = m_names.begin() + 1; it != m_names.end(); it++)
+				{
+					POS_TextOut((*it), false, true, 0);
+					POS_FeedLine();
+				}
+
+				//判断是否有备注
+				if (order.m_memo.length() > 0)
+				{
+					POS_FeedLine();
+					string address = "顾客备注:" + CLewaimaiString::UTF8ToANSI(order.m_memo);
+					POS_TextOut(address, false, true, 0);
+					POS_FeedLine();
+				}
+
+				//结束商品详情打印
+				POS_TextOut(lines);
+				POS_FeedLine();
+
+				POS_FeedLine();
+				POS_FeedLine();
+				POS_FeedLine();
+				POS_FeedLine();
+				POS_FeedLine();
+
+				POS_CutPaper();
+			}
+
+			//还原打印机初始设置,有些傻逼收银设备居然不是自动调用,比如哗啦啦
+			POS_Reset();
+		}
+
+		ChufangPrinterContent newData;
+		newData.ip = ip;
+		newData.data = m_print_content;
+
+		datas.push_back(newData);
+	}
+
+	return datas;
+}
+
 std::string CPosPrinterData::PrintJiaobanOrder(CJiaobaoOrder& order)
 {
 	//读取当前收银打印机的设置

+ 2 - 0
zhipuzi_pos_windows/print/CPosPrinterData.h

@@ -33,6 +33,8 @@ public:
 	std::string PrintZhengcanOrderXiadanBiaoqian(CZhengcanOrder& order);
 	std::vector<ChufangPrinterContent> PrintZhengcanOrderXiadanChufang(CZhengcanOrder& order);
 
+	std::vector<ChufangPrinterContent> PrintZhengcanOrderTuicaiChufang(CZhengcanOrder& order);
+
 	std::string PrintJiaobanOrder(CJiaobaoOrder& order);
 
 	std::string PrintHuiyuanchongzhiOrder(CHuiyuanchongzhiOrder& order);

+ 2 - 14
zhipuzi_pos_windows/zhipuzi/CZhengcanOrder.cpp

@@ -575,7 +575,7 @@ bool CZhengcanOrder::InitData(std::string order_id)
 	show_trade_no = data["show_trade_no"].GetString();
 	m_renshu = data["person_num"].GetString();
 	m_table_id = CLewaimaiJson::ToString(data["table_id"]);
-	m_table_name = CLewaimaiJson::ToString(data["table_name"]);
+	table_name = CLewaimaiJson::ToString(data["table_name"]);
 	m_memo = CLewaimaiJson::ToString(data["note"]);
 
 	m_dabao_money = data["dabao_price"].GetString();
@@ -773,21 +773,12 @@ bool CZhengcanOrder::InitData(std::string order_id)
 			}
 
 			newItem.m_is_taocan = true;
-
-			std::string taocan_name = cur_foodpackage["food_name"].GetString();
-			taocan_name += CLewaimaiString::UnicodeToUTF8(L"【");
+			newItem.foodpackage_name = cur_foodpackage["food_name"].GetString();
 
 			//接着保存套餐的item
 			rapidjson::Value& food_item = cur_foodpackage["food_item"];
 			for (rapidjson::SizeType m = 0; m < food_item.Size(); ++m)
 			{
-				taocan_name += food_item[m]["food_name"].GetString();
-
-				if (m < food_item.Size() - 1)
-				{
-					taocan_name += CLewaimaiString::UnicodeToUTF8(L"、");
-				}
-
 				rapidjson::Value& food_item_info = food_item[m];
 
 				//开始保存套餐Item
@@ -821,9 +812,6 @@ bool CZhengcanOrder::InitData(std::string order_id)
 				newItem.m_taocan_items.push_back(taocanItem);
 			}
 
-			taocan_name += CLewaimaiString::UnicodeToUTF8(L"】");
-			newItem.foodpackage_name = taocan_name;
-
 			newItem.UpdateShowPrice();
 
 			newHistoryXiadan.m_items.push_back(newItem);

+ 0 - 1
zhipuzi_pos_windows/zhipuzi/CZhengcanOrder.h

@@ -65,7 +65,6 @@ public:
 
 	//绑定的桌子信息
 	std::string m_table_id;
-	std::string m_table_name;
 
 	//是否清零
 	std::string m_is_clear;

+ 24 - 0
zhipuzi_pos_windows/zhipuzi/CZhengcanOrderItem.cpp

@@ -266,6 +266,30 @@ std::string CZhengcanOrderItem::getNameWanzhengShow()
 	return total_name;
 }
 
+std::string CZhengcanOrderItem::getHistoryNatureShow()
+{
+	if (m_is_taocan == false || m_is_history_item == false)
+	{
+		return "";
+	}
+
+	size_t n = 1;
+	std::string nameShow = "";
+
+	for (std::vector<CZhengcanOrderItem>::iterator it = m_taocan_items.begin(); it != m_taocan_items.end(); it++)
+	{
+		nameShow += it->food_name;
+		if (n < m_taocan_items.size())
+		{
+			nameShow += CLewaimaiString::UnicodeToUTF8(L"¡¢");
+		}
+
+		n++;
+	}
+
+	return nameShow;
+}
+
 double CZhengcanOrderItem::getMemberYouhui(std::string member_level)
 {
 	if (is_member_price_used == false)

+ 4 - 1
zhipuzi_pos_windows/zhipuzi/CZhengcanOrderItem.h

@@ -46,7 +46,7 @@ public:
 	std::string jiacai_no;
 	std::string is_tuicai = "0";
 
-	//这个用来存储所有属性选择的信息,每个属性选择的是第几个,什么价格等等
+	//这个用来存储所有属性选择的信息,每个属性选择的是第几个,什么价格等等,这个是在点餐时候有用,对历史订单没用
 	std::vector<FoodNatureSelectValue> natureSelectedArray;
 
 	//这个是商品对外展示的价格,根据数量和属性来计算的,不包含打包费
@@ -92,6 +92,9 @@ public:
 	//获取用于完整展示的商品名字,包含商品本身的名字和属性,例如“【打包】珍珠奶茶【大杯、热、多糖】”
 	std::string getNameWanzhengShow();
 
+	//对于历史订单,获取套餐的属性展示
+	std::string getHistoryNatureShow();
+
 	//根据当前会员等级,计算该商品的会员优惠金额
 	double getMemberYouhui(std::string member_level);