Explorar o código

完成标签分类打印

张洋 %!s(int64=4) %!d(string=hai) anos
pai
achega
58b296343a

+ 8 - 0
bin/Win32/Debug/zhipuzi_pos_windows/skin/biaoqian_printer_setting_fenlei_select.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<Window> 
+	<HorizontalLayout height="30">
+		<CheckBox name="biaoqian_setting_fenleli_xuanze_checkbox" padding="0,7,0,7" width="16" height="16" normalimage="file='Setting_CheckBox_Normal.png'" hotimage="file='Setting_CheckBox_Hover.png'" selectedimage="file='Setting_CheckBox_Click.png'"/>
+		<Label name="biaoqian_setting_fenleli_xuanze_name" text="" width="300" padding="10,0,0,0"/>
+	</HorizontalLayout>
+</Window>

+ 4 - 4
bin/Win32/Debug/zhipuzi_pos_windows/skin/dianneiorder_list_page.xml

@@ -4,13 +4,13 @@
 		<VerticalLayout>
 			<HorizontalLayout height="53" padding="0,0,0,0" bkcolor="#FFFFFFFF">
 				<VerticalLayout width="300" height="53">
-					<Button name="orderlist_diannei" text="店内订单" textcolor="#FF43A947" font="2" height="50" width="200" padding="50,0,10,0" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#00FFFFFF"></Button>
-					<Control name="orderlist_diannei_line" height="3" bkcolor="#FF43A947" padding="70,0,70,0"></Control>
+					<Button name="orderlist_waimai" text="外卖订单" font="2" height="50" width="200" padding="50,0,10,0" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#00FFFFFF"></Button>
+					<Control name="orderlist_waimai_line" visible="false" height="3" bkcolor="#FF43A947" padding="70,0,70,0"></Control>
 				</VerticalLayout>
 				
 				<VerticalLayout width="300" height="53">
-					<Button name="orderlist_waimai" text="外卖订单" font="2" height="50" width="200" padding="50,0,10,0" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#00FFFFFF"></Button>
-					<Control name="orderlist_waimai_line" visible="false" height="3" bkcolor="#FF43A947" padding="70,0,70,0"></Control>
+					<Button name="orderlist_diannei" text="店内订单" textcolor="#FF43A947" font="2" height="50" width="200" padding="50,0,10,0" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#00FFFFFF"></Button>
+					<Control name="orderlist_diannei_line" height="3" bkcolor="#FF43A947" padding="70,0,70,0"></Control>
 				</VerticalLayout>
 			</HorizontalLayout>
 

+ 1 - 1
bin/Win32/Debug/zhipuzi_pos_windows/skin/gengduo_item.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Window>
-	<VerticalLayout width="120" height="120" float="true">
+	<VerticalLayout width="120" height="160" float="true">
 		<VerticalLayout width="120" height="120" bkcolor="#FFECECEC">
 			<HorizontalLayout height="52" padding="0,19,0,0">
 				<Control></Control>

+ 7 - 13
bin/Win32/Debug/zhipuzi_pos_windows/skin/gengduo_page.xml

@@ -7,21 +7,15 @@
 	
 	<GengduoPage>
 		<VerticalLayout>
-			<VerticalLayout>
-				<Label text="常用功能" height="30" font="2" padding="20,20,0,0"></Label>
+			<Label text="常用功能" height="30" font="2" padding="20,20,0,0"></Label>				
+			<HorizontalLayout name="gengduo_page_changyong_layout">					
 				
-				<HorizontalLayout name="gengduo_page_changyong_layout">					
-					
-				</HorizontalLayout>
-			</VerticalLayout>
-			
-			<VerticalLayout>
-				<Label text="更多功能" height="30" font="2" padding="20,20,0,0"></Label>
+			</HorizontalLayout>
+		
+			<Label text="更多功能" height="30" font="2" padding="20,20,0,0"></Label>
+			<HorizontalLayout name="gengduo_page_gengduo_layout">					
 				
-				<HorizontalLayout name="gengduo_page_gengduo_layout">					
-					
-				</HorizontalLayout>
-			</VerticalLayout>
+			</HorizontalLayout>
 			
 			<Control></Control>
 		</VerticalLayout>

+ 15 - 0
bin/Win32/Debug/zhipuzi_pos_windows/skin/setting_biaoqian_print.xml

@@ -25,4 +25,19 @@
 			<ListLabelElement text="反方向" />
 		</Combo>
 	</HorizontalLayout>
+	
+	<Control height="1" bkcolor="#FFEAEAEA" padding="0,20,0,0"></Control>
+	
+	<HorizontalLayout height="44">
+		<Label text="指定商品分类打印标签" width="260" />
+		<CheckBox name="setting_biaoqian_printer_is_type" width="72" height="45" normalimage="file='switchbutton.png' source='0,0,143,91'" selectedimage="file='switchbutton.png' source='0,182,143,273'"/>
+	</HorizontalLayout>
+	
+	<HorizontalLayout height="500">
+		<Label text="当前绑定分类:" width="260"  height="44"/>
+		<VerticalLayout name="setting_biaoqian_printer_type_layout" padding="0,15,0,0">
+		
+		</VerticalLayout>
+	</HorizontalLayout>
+	<Control></Control>
 </Window>

+ 4 - 4
bin/Win32/Debug/zhipuzi_pos_windows/skin/waimaiorder_list_page.xml

@@ -4,13 +4,13 @@
 		<VerticalLayout>
 			<HorizontalLayout height="53" padding="0,0,0,0" bkcolor="#FFFFFFFF">
 				<VerticalLayout width="300" height="53">
-					<Button name="orderlist_diannei" text="店内订单" font="2" height="50" width="200" padding="50,0,10,0" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#00FFFFFF"></Button>
-					<Control name="orderlist_diannei_line" visible="false" height="3" bkcolor="#FF43A947" padding="70,0,70,0"></Control>
+					<Button name="orderlist_waimai" text="外卖订单" textcolor="#FF43A947" font="2" height="50" width="200" padding="50,0,10,0" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#00FFFFFF"></Button>
+					<Control name="orderlist_waimai_line" height="3" bkcolor="#FF43A947" padding="70,0,70,0"></Control>
 				</VerticalLayout>
 				
 				<VerticalLayout width="300" height="53">
-					<Button name="orderlist_waimai" text="外卖订单" textcolor="#FF43A947" font="2" height="50" width="200" padding="50,0,10,0" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#00FFFFFF"></Button>
-					<Control name="orderlist_waimai_line" height="3" bkcolor="#FF43A947" padding="70,0,70,0"></Control>
+					<Button name="orderlist_diannei" text="店内订单" font="2" height="50" width="200" padding="50,0,10,0" normalimage="" hotimage="" pushedimage="" bordersize="0" bkcolor="#00FFFFFF"></Button>
+					<Control name="orderlist_diannei_line" visible="false" height="3" bkcolor="#FF43A947" padding="70,0,70,0"></Control>
 				</VerticalLayout>
 			</HorizontalLayout>
 

+ 1 - 1
zhipuzi_pos_windows/page/CBaobiaoPageUI.h

@@ -12,7 +12,7 @@ public:
 
 	~CBaobiaoPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//处理按钮点击类事件

+ 2 - 2
zhipuzi_pos_windows/page/CBasePageUI.h

@@ -14,7 +14,7 @@ public:
 	{
 	}
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	virtual void InitShow() = 0;
 
 	//处理按钮点击类事件
@@ -42,4 +42,4 @@ public:
 
 protected:
 	CMainWnd* m_pMainWnd;
-};
+};

+ 1 - 1
zhipuzi_pos_windows/page/CDiandanPageUI.h

@@ -18,7 +18,7 @@ public:
 	CDiandanPageUI();
 	~CDiandanPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用(仅加载时候会调用1次)
+	//初始化当前页面的展示,处理默认展示效果,在页面每次被选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//收款一个订单成功,准备开始收款第2个订单的时候调用(会多次调度用)

+ 1 - 1
zhipuzi_pos_windows/page/CDianneiOrderInfoPageUI.h

@@ -12,7 +12,7 @@ public:
 
 	~CDianneiOrderInfoPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//处理按钮点击类事件

+ 1 - 1
zhipuzi_pos_windows/page/CDianneiOrderListPageUI.h

@@ -16,7 +16,7 @@ public:
 	CDianneiOrderListPageUI();
 	~CDianneiOrderListPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//处理按钮点击类事件

+ 0 - 3
zhipuzi_pos_windows/page/CGengduoPageUI.cpp

@@ -446,9 +446,6 @@ void CGengduoPageUI::UpdateItemPos()
 		int lastRow = (num - 1) / nMeihangNum + 1;
 		gengduoLayout->SetFixedHeight(lastRow * 175 + 15);
 	}
-
-	//»¹Òªµ÷Õû×ó²àµÄÏÔʾ
-
 }
 
 void CGengduoPageUI::SetPos(RECT rc, bool bNeedInvalidate)

+ 1 - 1
zhipuzi_pos_windows/page/CGengduoPageUI.h

@@ -12,7 +12,7 @@ public:
 
 	~CGengduoPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//处理按钮点击类事件

+ 1 - 1
zhipuzi_pos_windows/page/CHuiyuanPageUI.h

@@ -12,7 +12,7 @@ public:
 
 	~CHuiyuanPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//处理按钮点击类事件

+ 1 - 1
zhipuzi_pos_windows/page/CJiaobanPageUI.h

@@ -12,7 +12,7 @@ public:
 
 	~CJiaobanPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//处理按钮点击类事件

+ 133 - 0
zhipuzi_pos_windows/page/CSettingPageUI.cpp

@@ -676,8 +676,80 @@ void CSettingPageUI::InitShow()
 		com->SetText(L"反方向");
 	}
 
+	box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_biaoqian_printer_is_type")));
+	if (CSetting::GetParam("setting_biaoqian_printer_is_type") == "1")
+	{
+		box->Selected(true, false);
+	}
+	else
+	{
+		box->Selected(false, false);
+	}
+
+	std::string type_ids = CSetting::GetParam("setting_biaoqian_printer_type_ids");
+	std::vector<string> type_vector = CLewaimaiString::Split(type_ids, ",");
+
+	//删除已经不存在的type_ids
+	std::string new_foodtype_ids;
+	CSqlite3 sqlite;
+	for (std::vector<string>::iterator it = type_vector.begin(); it != type_vector.end(); it++)
+	{
+		CFoodType type;
+		bool ret = sqlite.GetFoodtypeById((*it), type);
+		if (!ret)
+		{
+			//分类被删掉了
+			continue;
+		}
+
+		new_foodtype_ids += (*it) + ",";
+	}
+
+	//删掉不存在的type_id,更新内存和数据库
+	new_foodtype_ids = new_foodtype_ids.substr(0, new_foodtype_ids.length() - 1);
+	CSetting::SetParam("setting_biaoqian_printer_type_ids", new_foodtype_ids);
+
+	//重新赋值
+	type_ids = new_foodtype_ids;
+	type_vector = CLewaimaiString::Split(type_ids, ",");
+
+	std::map<string, int> type_map;
+	for (std::vector<string>::iterator it = type_vector.begin(); it != type_vector.end(); it++)
+	{
+		type_map[*it] = 1;
+	}
+
+	//把所有分类显示出来
+	CVerticalLayoutUI* pFenleiLayout = static_cast<CVerticalLayoutUI*>(this->FindSubControl(_T("setting_biaoqian_printer_type_layout")));
+	pFenleiLayout->RemoveAll();
+
+	CSqlite3 sqlite_2;
+	std::vector<CFoodType> foodtypes = sqlite_2.GetFoodtypes();
+	for (std::vector<CFoodType>::iterator it = foodtypes.begin(); it != foodtypes.end(); it++)
+	{
+		CDialogBuilder builder;
+		CListContainerElementUI* pEle = static_cast<CListContainerElementUI*>(builder.Create(_T("biaoqian_printer_setting_fenlei_select.xml"), (UINT)0, NULL, m_pManager));
+
+		CCheckBoxUI* pCheck = static_cast<CCheckBoxUI*>(pEle->FindSubControl(_T("biaoqian_setting_fenleli_xuanze_checkbox")));
+		pCheck->AddCustomAttribute(L"type_id", CLewaimaiString::UTF8ToUnicode((*it).id).c_str());
+
+		if (type_map.find((*it).id) != type_map.end())
+		{
+			pCheck->Selected(true, false);
+		}
+
+		CLabelUI* pName = static_cast<CLabelUI*>(pEle->FindSubControl(_T("biaoqian_setting_fenleli_xuanze_name")));
+		pName->SetText(CLewaimaiString::UTF8ToUnicode((*it).name).c_str());
+
+		pFenleiLayout->Add(pEle);
+	}
+
+	pFenleiLayout->SetFixedHeight(foodtypes.size() * 30);
+
+
 	//这里开始,初始化厨房打印机的设置
 	CListUI* pPrinterList = static_cast<CListUI*>(this->FindSubControl(_T("setting_chufang_printer_list")));
+	pPrinterList->RemoveAll();
 
 	//获取厨房打印机的集合
 	std::vector<ChufangPrinter> printers = CSetting::getChufangPrints();
@@ -1076,6 +1148,67 @@ void CSettingPageUI::HandleClickMsg(TNotifyUI& msg)
 			CSetting::SetParam("setting_printer_pay_big", "1");
 		}
 	}
+	else if (name == _T("setting_biaoqian_printer_is_type"))
+	{
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(this->FindSubControl(_T("setting_biaoqian_printer_is_type")));
+
+		if (box->IsSelected())
+		{
+			CSetting::SetParam("setting_biaoqian_printer_is_type", "0");
+		}
+		else
+		{
+			CSetting::SetParam("setting_biaoqian_printer_is_type", "1");
+		}
+	}
+	else if (name == L"biaoqian_setting_fenleli_xuanze_checkbox")
+	{
+		std::wstring ws_type_id = msg.pSender->GetCustomAttribute(L"type_id");
+		std::string type_id = CLewaimaiString::UnicodeToUTF8(ws_type_id);
+
+		CCheckBoxUI* box = static_cast<CCheckBoxUI*>(msg.pSender);
+		
+		if (box->IsSelected())
+		{
+			//这里是从选中变为不选中,那么就删掉这个type_id
+			std::string type_ids = CSetting::GetParam("setting_biaoqian_printer_type_ids");
+			std::vector<string> type_vector = CLewaimaiString::Split(type_ids, ",");
+
+			int num = 0;
+			for (std::vector<string>::iterator it = type_vector.begin(); it != type_vector.end(); it++)
+			{
+				if (*it == type_id)
+				{
+					break;
+				}
+
+				num++;
+			}
+
+			type_vector.erase(type_vector.begin() + num);
+
+			std::string new_type_ids = CLewaimaiString::Merge(type_vector, ",");
+
+			CSetting::SetParam("setting_biaoqian_printer_type_ids", new_type_ids);
+		}
+		else
+		{
+			//这是从不选中变为选中
+			std::string type_ids = CSetting::GetParam("setting_biaoqian_printer_type_ids");
+
+			std::string new_type_ids;
+			if (type_ids == "")
+			{
+				new_type_ids = type_id;
+			}
+			else
+			{
+				new_type_ids = type_ids + "," + type_id;
+			}		
+
+			CSetting::SetParam("setting_biaoqian_printer_type_ids", new_type_ids);
+		}
+	}
 	else if (name == _T("setting_new_chufang_printer_btn"))
 	{
 		CChufangSettingWnd* pChufangFrame = new CChufangSettingWnd(1);

+ 1 - 1
zhipuzi_pos_windows/page/CSettingPageUI.h

@@ -9,7 +9,7 @@ public:
 	CSettingPageUI();
 	~CSettingPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//处理按钮点击类事件

+ 1 - 1
zhipuzi_pos_windows/page/CWaimaiOrderInfoPageUI.h

@@ -12,7 +12,7 @@ public:
 
 	~CWaimaiOrderInfoPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//处理按钮点击类事件

+ 6 - 4
zhipuzi_pos_windows/page/CWaimaiOrderListPageUI.cpp

@@ -24,11 +24,13 @@ CWaimaiOrderListPageUI::~CWaimaiOrderListPageUI()
 //初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
 void CWaimaiOrderListPageUI::InitShow()
 {
-	//默认显示未处理的
-	COptionUI* option = static_cast<COptionUI*>(this->FindSubControl(_T("waimai_open_switch")));
-	option->Selected(true, false);
+	//默认显示未处理的,主要处理第一次展示,后续切换的时候就不改变状态,直接刷新
+	if (m_status == 1)
+	{
+		COptionUI* option = static_cast<COptionUI*>(this->FindSubControl(_T("waimai_open_switch")));
+		option->Selected(true, false);
+	}
 
-	SetStatus(1);
 	SetPage(1);
 	Refresh();
 }

+ 1 - 1
zhipuzi_pos_windows/page/CWaimaiOrderListPageUI.h

@@ -17,7 +17,7 @@ public:
 	CWaimaiOrderListPageUI();
 	~CWaimaiOrderListPageUI();
 
-	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	//初始化当前页面的展示,处理默认展示效果,在页面每次选中加载(注意不是页面创建构造)的时候调用,如果多次选中会多次调用,这里要避免数据重复处理
 	void InitShow();
 
 	//处理按钮点击类事件

+ 79 - 23
zhipuzi_pos_windows/print/CPosPrinterData.cpp

@@ -489,29 +489,57 @@ std::string CPosPrinterData::PrintWaimaiOrderBiaoqian(CWaimaiOrder& order)
 	//初始化标签打印机
 	BIAOQIAN_Reset(biaoqian_width, biaoqian_height, nDIRECTION);
 
-    std::vector<CWaimaiOrderItem> cur_printer_use = order.m_order_items;
+	std::vector<CWaimaiOrderItem> cur_printer_use; 
 
-    //先计算商品的总数量
-    int foodNum = 0;
+	std::string setting_biaoqian_printer_is_type = "setting_biaoqian_printer_is_type";
+	std::string setting_biaoqian_printer_type_ids = "setting_biaoqian_printer_type_ids";
 
-    for(std::vector<CWaimaiOrderItem>::iterator it = cur_printer_use.begin(); it != cur_printer_use.end(); it++)
-    {
-        std::string quantity = (*it).m_quantity;
-
-        foodNum += atoi(quantity.c_str());
-    }
+	if (setting_biaoqian_printer_is_type == "0")
+	{
+		for (std::vector<CWaimaiOrderItem>::iterator it = order.m_order_items.begin(); it != order.m_order_items.end(); it++)
+		{
+			if (it->is_taocan_item == false)
+			{
+				//如果当前商品的分类,在厨房打印机设置的分类里面,才加入
+				cur_printer_use.push_back(*it);
+			}
+		}
+	}
+	else
+	{
+		std::map<string, bool> ids_map;
+		std::vector<string> ids = CLewaimaiString::Split(setting_biaoqian_printer_type_ids, ",");
 
-    //商品内容
-    int curFoodNum = 0;
+		for (std::vector<string>::iterator it = ids.begin(); it != ids.end(); it++)
+		{
+			ids_map[(*it)] = true;
+		}
 
-    for(std::vector<CWaimaiOrderItem>::iterator it = cur_printer_use.begin(); it != cur_printer_use.end(); it++)
-    {
-		if (it->is_taocan_item == true)
+		for (std::vector<CWaimaiOrderItem>::iterator it = order.m_order_items.begin(); it != order.m_order_items.end(); it++)
 		{
-			//套餐的item,标签小票不打印
-			continue;
+			if (ids_map.find((*it).m_type_id) != ids_map.end() && it->is_taocan_item == false)
+			{
+				//如果当前商品的分类,在厨房打印机设置的分类里面,才加入
+				cur_printer_use.push_back(*it);
+			}
 		}
+	}
+
+	//先计算商品的总数量
+	int foodNum = 0;
+
+	for (std::vector<CWaimaiOrderItem>::iterator it = cur_printer_use.begin(); it != cur_printer_use.end(); it++)
+	{
+		std::string quantity = (*it).m_quantity;
+
+		foodNum += atoi(quantity.c_str());
+	}
 
+	//商品内容
+	int curFoodNum = 0;
+
+    for(std::vector<CWaimaiOrderItem>::iterator it = cur_printer_use.begin(); it != cur_printer_use.end(); it++)
+    {
         std::string food_name = (*it).m_food_name;
         std::string food_price = (*it).m_item_price;
         std::string quantity = (*it).m_quantity;
@@ -1357,7 +1385,41 @@ std::string CPosPrinterData::PrintDiandanOrderBiaoqian(CDiandanOrder& order)
 	//初始化标签打印机
 	BIAOQIAN_Reset(biaoqian_width, biaoqian_height, nDIRECTION);
 
-	std::vector<CDiandanOrderItemPrint> cur_printer_use = order.m_items_print;
+	std::vector<CDiandanOrderItemPrint> cur_printer_use;
+
+	std::string setting_biaoqian_printer_is_type = CSetting::GetParam("setting_biaoqian_printer_is_type");
+	std::string setting_biaoqian_printer_type_ids = CSetting::GetParam("setting_biaoqian_printer_type_ids");
+
+	if (setting_biaoqian_printer_is_type == "0")
+	{
+		for (std::vector<CDiandanOrderItemPrint>::iterator it = order.m_items_print.begin(); it != order.m_items_print.end(); it++)
+		{
+			if (it->is_taocan_item == false)
+			{
+				//如果当前商品的分类,在厨房打印机设置的分类里面,才加入
+				cur_printer_use.push_back(*it);
+			}
+		}
+	}
+	else
+	{
+		std::map<string, bool> ids_map;
+		std::vector<string> ids = CLewaimaiString::Split(setting_biaoqian_printer_type_ids, ",");
+
+		for (std::vector<string>::iterator it = ids.begin(); it != ids.end(); it++)
+		{
+			ids_map[(*it)] = true;
+		}
+
+		for (std::vector<CDiandanOrderItemPrint>::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() && it->is_taocan_item == false)
+			{
+				//如果当前商品的分类,在厨房打印机设置的分类里面,才加入
+				cur_printer_use.push_back(*it);
+			}
+		}
+	}
 
 	//先计算商品的总数量
 	int foodNum = 0;
@@ -1374,12 +1436,6 @@ std::string CPosPrinterData::PrintDiandanOrderBiaoqian(CDiandanOrder& order)
 
 	for (std::vector<CDiandanOrderItemPrint>::iterator it = cur_printer_use.begin(); it != cur_printer_use.end(); it++)
 	{
-		if (it->is_taocan_item == true)
-		{
-			//套餐的item,标签小票不打印
-			continue;
-		}
-
 		std::string food_name = (*it).m_food_name;
 		std::string food_price = (*it).m_item_price;
 		std::string quantity = (*it).m_quantity;

+ 14 - 0
zhipuzi_pos_windows/tool/CSetting.cpp

@@ -240,6 +240,20 @@ void CSetting::Init()
 		m_paramsMap[setting_biaoqian_printer_fangxiang] = "1";
 	}
 
+	std::string setting_biaoqian_printer_is_type = "setting_biaoqian_printer_is_type";
+	if (m_paramsMap.find(setting_biaoqian_printer_is_type) == m_paramsMap.end())
+	{
+		//1表示按分类打印,0表示不按分类打印
+		m_paramsMap[setting_biaoqian_printer_is_type] = "0";
+	}
+
+	std::string setting_biaoqian_printer_type_ids = "setting_biaoqian_printer_type_ids";
+	if (m_paramsMap.find(setting_biaoqian_printer_type_ids) == m_paramsMap.end())
+	{
+		//1表示按分类打印,0表示不按分类打印
+		m_paramsMap[setting_biaoqian_printer_type_ids] = "";
+	}
+
 	//电子秤参数
 	std::string setting_dianzicheng_xinghao = "setting_dianzicheng_xinghao";
 	if (m_paramsMap.find(setting_dianzicheng_xinghao) == m_paramsMap.end())

+ 1 - 1
zhipuzi_pos_windows/wnd/CMainWnd.cpp

@@ -1149,7 +1149,7 @@ void CMainWnd::SwitchPageByName(std::wstring name)
 	}
 	else if (name == _T("main_dingdan"))
 	{
-		this->SwitchPage(DIANNEIDINGDAN);
+		this->SwitchPage(DINGDAN);
 	}
 	else if (name == L"main_huiyuan")
 	{

+ 2 - 0
zhipuzi_pos_windows/zhipuzi/CDiandanOrder.cpp

@@ -175,6 +175,8 @@ void CDiandanOrder::SetDabao(int index)
 void CDiandanOrder::Clear()
 {
 	m_items.clear();
+
+	m_items_print.clear();
 }
 
 void CDiandanOrder::SetMemo(std::string memo)