Procházet zdrojové kódy

套餐退菜的完成

zhangyang před 3 roky
rodič
revize
bd663f835d

+ 31 - 0
zhipuzi_pos_windows/page/CZhengcanDiandanPageUI.cpp

@@ -2483,6 +2483,9 @@ void CZhengcanDiandanPageUI::ClickChetai()
 	m_pMainWnd->SwitchPage(CMainWnd::ZHENGCAN);
 }
 
+/**
+ * 退菜功能,注意如果是套餐要把套餐本身的item的id和套餐商品记录的item的id一起传给服务器
+ */
 void CZhengcanDiandanPageUI::ClickTuicai()
 {
 	CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
@@ -2510,12 +2513,35 @@ void CZhengcanDiandanPageUI::ClickTuicai()
 	
 	std::vector<std::map<string, string>> paramArray;
 
+	//先添加当前item的退菜参数
 	std::map<string, string> map_tmp;
 	map_tmp["id"] = item_id;
 	map_tmp["quantity"] = "1";
 
 	paramArray.push_back(map_tmp);
 
+	//再看看是不是套餐,如果是套餐还要添加套餐的
+	CZhengcanOrderItem curItem;
+	bool res = m_cur_diandan_order.GetHistoryItemById(item_id, curItem);
+	if (res == false)
+	{
+		//这个是异常情况
+		LOG_INFO("异常情况,退菜的item_id不存在");
+		return;
+	}
+
+	if (curItem.m_is_taocan == true)
+	{
+		for (std::vector<CZhengcanOrderItem>::iterator it = curItem.m_taocan_items.begin(); it != curItem.m_taocan_items.end(); it++)
+		{
+			std::map<string, string> map_tmp;
+			map_tmp["id"] = it->item_id;
+			map_tmp["quantity"] = "1";
+
+			paramArray.push_back(map_tmp);
+		}
+	}
+
 	std::string item_json_string = CLewaimaiJson::ParamArrayToJsonstring(paramArray);
 
 	params["item"] = item_json_string;
@@ -2559,6 +2585,11 @@ void CZhengcanDiandanPageUI::ClickTuicai()
 
 	rapidjson::Value& data = document["data"];
 
+	Value& stock = data["stock"];
+	std::string kucun_string = CLewaimaiJson::JsonToString(stock);
+
+	this->UpdateFoodStock(kucun_string);
+
 	//如果走到这里说明退菜成功了,这个时候刷新显示
 	this->InitShow();
 }

+ 50 - 0
zhipuzi_pos_windows/zhipuzi/CZhengcanOrder.cpp

@@ -51,6 +51,24 @@ int CZhengcanOrder::getItemNum()
 	return m_items.size();
 }
 
+bool CZhengcanOrder::GetHistoryItemById(std::string item_id, CZhengcanOrderItem& item)
+{
+	for (std::vector<CZhengcanOrderHistoryXiadan>::iterator it = m_order_history_array.begin(); it != m_order_history_array.end(); it++)
+	{
+		for (std::vector<CZhengcanOrderItem>::iterator it1 = it->m_items.begin(); it1 != it->m_items.end(); it1++)
+		{
+			if (it1->item_id == item_id)
+			{
+				item = *it1;
+
+				return true;
+			}
+		}
+	}
+
+	return false;
+}
+
 double CZhengcanOrder::getTotalPrice()
 {
 	double total_price_show = 0;
@@ -769,6 +787,38 @@ bool CZhengcanOrder::InitData(std::string order_id)
 				{
 					taocan_name += CLewaimaiString::UnicodeToUTF8(L"、");
 				}
+
+				rapidjson::Value& food_item_info = food_item[m];
+
+				//开始保存套餐Item
+				CZhengcanOrderItem taocanItem;
+
+				taocanItem.m_is_history_item = true;
+
+				taocanItem.item_id = CLewaimaiJson::ToString(food_item_info["id"]);
+				taocanItem.food_id = CLewaimaiJson::ToString(food_item_info["food_id"]);
+				taocanItem.food_name = CLewaimaiJson::ToString(food_item_info["food_name"]);
+				taocanItem.type_id = CLewaimaiJson::ToString(food_item_info["type_id"]);
+				taocanItem.price = CLewaimaiJson::ToString(food_item_info["single_price"]);
+				taocanItem.num = CLewaimaiJson::ToString(food_item_info["quantity"]);
+
+				if (CLewaimaiJson::ToString(food_item_info["is_dabao"]) == "1")
+				{
+					taocanItem.is_dabao = true;
+				}
+				else
+				{
+					taocanItem.is_dabao = false;
+				}
+
+				//目前服务器返回的dabao_money一直为0,是不对的,暂时不用这个,下面从数据库里读取
+				//newItem.dabao_money = CLewaimaiJson::ToString(foodinfo["dabao_money"]);
+
+				taocanItem.is_jiacai = CLewaimaiJson::ToString(food_item_info["is_jiacai"]);
+				taocanItem.jiacai_no = CLewaimaiJson::ToString(food_item_info["jiacai_no"]);
+				taocanItem.is_tuicai = CLewaimaiJson::ToString(food_item_info["is_tuicai"]);
+
+				newItem.m_taocan_items.push_back(taocanItem);
 			}
 
 			taocan_name += CLewaimaiString::UnicodeToUTF8(L"】");

+ 2 - 0
zhipuzi_pos_windows/zhipuzi/CZhengcanOrder.h

@@ -130,6 +130,8 @@ public:
 
 	int getItemNum();
 
+	bool GetHistoryItemById(std::string item_id, CZhengcanOrderItem& item);
+
 	double getTotalPrice();
 
 	CZhengcanOrderItem getDiandanOrderItem(int index);

+ 3 - 0
zhipuzi_pos_windows/zhipuzi/CZhengcanOrderItem.h

@@ -52,6 +52,9 @@ public:
 	//这个是商品对外展示的价格,根据数量和属性来计算的,不包含打包费
 	std::string show_price;
 
+	//当前item为套餐时,用来保存套餐的item,在历史订单时有用
+	std::vector<CZhengcanOrderItem> m_taocan_items;
+
 private:
 	CFood m_foodinfo;
 	CFoodpackage m_foodpackageinfo;