zhangyang 4 years ago
parent
commit
e9a23cbddb

+ 2 - 3
bin/Win32/Debug/zhipuzi_pos_windows/skin/diandan_page.xml

@@ -48,7 +48,6 @@
 						<Button name="btn_diandan_guige" width="80" height="36" padding="10,15,10,0" text="规格/做法" textcolor="#FFFFFFFF" />
 						
 						<Button name="btn_diandan_dabao" width="80" height="36" padding="10,50,10,0" text="打包" textcolor="#FFFFFFFF" />
-						<Button name="btn_diandan_budabao" width="80" height="36" padding="10,15,10,0" text="不打包" textcolor="#FFFFFFFF" />
 						
 						<Button name="btn_diandan_cundan" width="80" height="36" padding="10,50,10,0" text="存单" textcolor="#FFFFFFFF" />
 						<Button name="btn_diandan_qudan" width="80" height="36" padding="10,15,10,0" text="取单" textcolor="#FFFFFFFF" />
@@ -61,8 +60,8 @@
 				
 				<VerticalLayout height="165" bkcolor="#FFFFFFFF">
 					<HorizontalLayout>
-						<Control></Control>
-						<Label name="diandan_page_totalprice" text="总价:¥0.00" font="0" textcolor="#FFFF0000" width="200" align="right" padding="0,10,15,0"></Label>
+						<Label name="diandan_page_otherprice" text="" width="250" align="left" padding="15,10,0,0"></Label>
+						<Label name="diandan_page_totalprice" text="总价:¥0.00" font="0" textcolor="#FFFF0000" width="250" align="right" padding="0,10,15,0"></Label>
 					</HorizontalLayout>
 					
 					<HorizontalLayout height="90" name="diandan_pay_layout">

+ 41 - 4
zhipuzi_pos_windows/page/CDiandanPageUI.cpp

@@ -348,6 +348,11 @@ void CDiandanPageUI::HandleClickMsg(TNotifyUI& msg)
 		//点击查看优惠
 		this->ClickChakanYouhui();
 	}
+	else if (name == L"btn_diandan_dabao")
+	{
+		//点击打包
+		this->ClickDabao();
+	}
 }
 
 //处理option切换事件
@@ -477,7 +482,7 @@ void CDiandanPageUI::AddDiandanOrderItemShow(int index)
 	if (item.m_is_taocan)
 	{
 		CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
-		pName->SetText(CLewaimaiString::UTF8ToUnicode(item.foodpackage_name).c_str());
+		pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
 
 		CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
 		pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
@@ -494,7 +499,7 @@ void CDiandanPageUI::AddDiandanOrderItemShow(int index)
 	else
 	{
 		CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
-		pName->SetText(CLewaimaiString::UTF8ToUnicode(item.food_name).c_str());
+		pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
 
 		CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
 		pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
@@ -531,7 +536,7 @@ void CDiandanPageUI::UpdateDiandanOrderItemShow(int index)
 	if (item.m_is_taocan)
 	{
 		CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
-		pName->SetText(CLewaimaiString::UTF8ToUnicode(item.foodpackage_name).c_str());
+		pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
 
 		CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
 		pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
@@ -548,7 +553,7 @@ void CDiandanPageUI::UpdateDiandanOrderItemShow(int index)
 	else
 	{
 		CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_name")));
-		pName->SetText(CLewaimaiString::UTF8ToUnicode(item.food_name).c_str());
+		pName->SetText(CLewaimaiString::UTF8ToUnicode(item.getNameShow()).c_str());
 
 		CLabelUI* pNum = static_cast<CLabelUI*>(pEle->FindSubControl(_T("diandan_cart_item_num")));
 		pNum->SetText(CLewaimaiString::UTF8ToUnicode(item.num).c_str());
@@ -838,6 +843,9 @@ void CDiandanPageUI::UpdateJiesuanInfo()
 	m_kaitai = 0;
 
 	//打包费
+	m_dabao = m_cur_diandan_order.getDabaoMoney();
+
+	cur_price += m_dabao;
 
 	//茶位费
 	m_chawei = 0;
@@ -886,6 +894,18 @@ void CDiandanPageUI::UpdateJiesuanInfo()
 		pYouhuiLayout->SetVisible(false);
 	}
 
+	//再刷新打包费展示
+	CLabelUI* pOtherPriceLabel = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_otherprice")));
+	if (m_dabao > 0)
+	{
+		std::wstring ws_dabaofei = L"打包费 " + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(m_dabao, 2)) + L" 元";
+		pOtherPriceLabel->SetText(ws_dabaofei.c_str());
+	}
+	else
+	{
+		pOtherPriceLabel->SetText(L"");
+	}
+
 	//再刷新总价展示
 	CLabelUI* pTotalPrice = static_cast<CLabelUI*>(this->FindSubControl(_T("diandan_page_totalprice")));
 	pTotalPrice->SetText((L"总价:¥" + CLewaimaiString::UTF8ToUnicode(CLewaimaiString::DoubleToString(cur_price, 2))).c_str());
@@ -1201,6 +1221,23 @@ void CDiandanPageUI::ClickGuige()
 	}
 }
 
+void CDiandanPageUI::ClickDabao()
+{
+	CListUI* pList = static_cast<CListUI*>(this->FindSubControl(_T("list_diandan_cart")));
+
+	int nIndex = pList->GetCurSel();
+
+	if (nIndex == -1)
+	{
+		return;
+	}
+
+	m_cur_diandan_order.SetDabao(nIndex);
+
+	//没有新增,而是修改了一项
+	this->UpdateDiandanOrderItemShow(nIndex);
+}
+
 void CDiandanPageUI::ClickQingkong()
 {
 	m_cur_diandan_order.Clear();

+ 3 - 0
zhipuzi_pos_windows/page/CDiandanPageUI.h

@@ -66,6 +66,9 @@ public:
 	//点击规格之后的逻辑
 	void ClickGuige();
 
+	//点击打包之后的逻辑
+	void ClickDabao();
+
 	//点击清空之后的逻辑
 	void ClickQingkong();
 

+ 22 - 0
zhipuzi_pos_windows/zhipuzi/CDiandanOrder.cpp

@@ -166,6 +166,11 @@ void CDiandanOrder::UpdateGuigePrice(int index)
 	m_items[index].UpdateShowPrice();
 }
 
+void CDiandanOrder::SetDabao(int index)
+{
+	m_items[index].SetDabao();
+}
+
 //清空商品
 void CDiandanOrder::Clear()
 {
@@ -268,4 +273,21 @@ double CDiandanOrder::getTotalMemberYouhui(std::string member_level)
 	}
 
 	return total_youhui;
+}
+
+//计算所有商品的总的打包费
+double CDiandanOrder::getDabaoMoney()
+{
+	double total_dabao = 0;
+
+	for (std::vector<CDiandanOrderItem>::iterator it = m_items.begin(); it != m_items.end(); it++)
+	{
+		CDiandanOrderItem curItem = *it;
+
+		double item_dabao = curItem.getDabaoMoney();
+
+		total_dabao += item_dabao;
+	}
+
+	return total_dabao;
 }

+ 7 - 0
zhipuzi_pos_windows/zhipuzi/CDiandanOrder.h

@@ -53,6 +53,9 @@ public:
 	//更新了某项的规格,那么重新刷新显示和价格
 	void UpdateGuigePrice(int index);
 
+	//打包
+	void SetDabao(int index);
+
 	//清空商品
 	void Clear();
 
@@ -65,5 +68,9 @@ public:
 	//is_shangpinquan_dikou 同一个商品,是否被商品券抵扣过了,用于商品券和次卡抵扣同一个商品时候的处理
 	bool UseCikaDikou(std::string cika_food_id, double& youhui_value, bool is_shangpinquan_dikou);
 
+	//计算所有商品的总的会员优惠金额
 	double getTotalMemberYouhui(std::string member_level);
+
+	//计算所有商品的总的打包费
+	double getDabaoMoney();
 };

+ 46 - 0
zhipuzi_pos_windows/zhipuzi/CDiandanOrderItem.cpp

@@ -8,6 +8,11 @@ bool CDiandanOrderItem::operator==(CDiandanOrderItem& t)
 		return false;
 	}
 
+	if (this->is_dabao != t.is_dabao)
+	{
+		return false;
+	}
+
 	if (this->m_is_taocan == true)
 	{
 		if (this->foodpackage_id != t.foodpackage_id)
@@ -83,6 +88,11 @@ void CDiandanOrderItem::SetIsTaocan(bool is_taocan)
 	m_is_taocan = is_taocan;
 }
 
+void CDiandanOrderItem::SetDabao()
+{
+	is_dabao = true;
+}
+
 CFood CDiandanOrderItem::GetFoodInfo()
 {
 	return m_foodinfo;
@@ -126,6 +136,32 @@ void CDiandanOrderItem::UpdateShowPrice()
 	}
 }
 
+std::string CDiandanOrderItem::getNameShow()
+{
+	if (m_is_taocan)
+	{
+		if (is_dabao)
+		{
+			return CLewaimaiString::UnicodeToUTF8(L"【打包】") + foodpackage_name;
+		}
+		else
+		{
+			return foodpackage_name;
+		}
+	}
+	else
+	{
+		if (is_dabao)
+		{
+			return CLewaimaiString::UnicodeToUTF8(L"【打包】") + food_name;
+		}
+		else
+		{
+			return food_name;
+		}
+	}
+}
+
 //获取用于展示的属性名字
 std::string CDiandanOrderItem::getNatureShow()
 {
@@ -194,4 +230,14 @@ double CDiandanOrderItem::getMemberYouhui(std::string member_level)
 	}
 
 	return 0;
+}
+
+double CDiandanOrderItem::getDabaoMoney()
+{
+	if (is_dabao)
+	{
+		return atof(dabao_money.c_str()) * (int)atof(num.c_str());
+	}
+
+	return 0;
 }

+ 9 - 1
zhipuzi_pos_windows/zhipuzi/CDiandanOrderItem.h

@@ -64,18 +64,26 @@ public:
 
 	void SetIsTaocan(bool is_taocan);
 
+	void SetDabao();
+
 	CFood GetFoodInfo();
 
 	CFoodpackage GetFoodpackageInfo();
 
 	bool GetIsTaocan();
 
-	//根据当前选中的商品属性、是否打包、会员价、是否使用商品券等,计算商品的展示价格
+	//根据当前选中的商品属性、是否打包,计算商品的展示价格
 	void UpdateShowPrice();
 
+	//获取用户展示的商品名字,如果有打包会在前面显示【打包】
+	std::string getNameShow();
+
 	//获取用于展示的属性名字
 	std::string getNatureShow();
 
 	//根据当前会员等级,计算该商品的会员优惠金额
 	double getMemberYouhui(std::string member_level);
+
+	//计算当前这个商品的打包费
+	double getDabaoMoney();
 };