Browse Source

标签打印增加了取餐号条码

张洋 2 weeks ago
parent
commit
9aa817e7a0
1 changed files with 54 additions and 26 deletions
  1. 54 26
      zhipuzi_pos_windows/print/CPosPrinterData.cpp

+ 54 - 26
zhipuzi_pos_windows/print/CPosPrinterData.cpp

@@ -664,23 +664,33 @@ std::string CPosPrinterData::PrintWaimaiOrderBiaoqian(CWaimaiOrder& order)
                 nRow++;
             }
 
+			//如果是自取订单,打印取餐号m_take_food_code
+			if (order.m_is_selftake == "1")
+			{
+				int nQucanmaY = 42 + 30 * nRow + 10;
+
+				//打印取餐码
+				std::string order_num_info = CLewaimaiString::UnicodeToGBK(L"取餐码:") + CLewaimaiString::UTF8ToGBK(order.m_take_food_code);
+				BIAOQIAN_BARCODEOUT(CLewaimaiString::UTF8ToGBK(order.m_take_food_code), 12, nQucanmaY);
+			}
+
 			int nHeightNow;
 			if (biaoqian_height <= 30)
 			{
-				nHeightNow = (biaoqian_height - 8) * 8;
+				nHeightNow = (biaoqian_height - 4) * 8;
 			}
 			else
 			{
-				nHeightNow = (30 - 8) * 8;
+				nHeightNow = (30 - 4) * 8;
 			}
 
             //打印价格
-			std::string priceInfo = CLewaimaiString::UnicodeToGBK(L"单价:") + CLewaimaiString::UTF8ToGBK(food_price) + CLewaimaiString::UnicodeToGBK(L"元");
+			std::string priceInfo = CLewaimaiString::UTF8ToGBK(food_price) + CLewaimaiString::UnicodeToGBK(L"元");
             textData += BIAOQIAN_TEXTGet(priceInfo, 12, nHeightNow, 1, 1);
 
-            //打印订单号
-			std::string order_num = CLewaimaiString::UnicodeToGBK(L"订单号:") + CLewaimaiString::UTF8ToGBK(order.m_order_num);
-            textData += BIAOQIAN_TEXTGet(order_num, 12, nHeightNow + 30, 1, 1);
+			//打印订单号
+			//std::string order_num = CLewaimaiString::UnicodeToGBK(L"订单号:") + CLewaimaiString::UTF8ToGBK(order.m_order_num);
+			//textData += BIAOQIAN_TEXTGet(order_num, 172, nHeightNow, 1, 1);
 
 			//这种是比较大的纸,可以打印更多的订单信息
 			if (biaoqian_height >= 60)
@@ -2345,17 +2355,35 @@ std::string CPosPrinterData::PrintDiandanOrderBiaoqian(CDiandanOrder& order)
 		{
 			std::string textData = "";
 
-			curFoodNum++;
-
-			std::string order_num_info = CLewaimaiString::UnicodeToGBK(L"取餐码:") + CLewaimaiString::UTF8ToGBK(order.take_food_code);
-
 			//纸张宽度40mm的,是 320个点位(每mm8个),刚好可以放13个汉字,每个汉字宽度差不多是24,商品换行显示的时候,
 			//每行最多12个汉字,也就是空24个,因此这里设置12,刚好左右各空一半
-			textData += BIAOQIAN_TEXTGet(order_num_info, 12, 6, 1, 1);
+
+			//打印订单号
+			std::string order_num = CLewaimaiString::UnicodeToGBK(L"订单号:") + CLewaimaiString::UTF8ToGBK(order.show_trade_no);
+			textData += BIAOQIAN_TEXTGet(order_num, 12, 6, 1, 1);
 
 			//打印份数
+			int nNumX;
+			if (biaoqian_width == 30)
+			{
+				nNumX = 170;
+			}
+			else if (biaoqian_width == 35)
+			{
+				nNumX = 210;
+			}
+			else if (biaoqian_width == 40)
+			{
+				nNumX = 250;
+			}
+			else
+			{
+				nNumX = 250;
+			}
+			curFoodNum++;
+
 			std::string numInfo = std::to_string(curFoodNum) + "/" + std::to_string(foodNum);
-			textData += BIAOQIAN_TEXTGet(numInfo, 180, 6, 1, 1);
+			textData += BIAOQIAN_TEXTGet(numInfo, nNumX, 6, 1, 1);
 
 			//每行最多显示12个汉字,这里要计算一下换行(要先转成ANSI格式)
 			std::string handle_food_name = CLewaimaiString::UTF8ToGBK(food_name);
@@ -2391,27 +2419,27 @@ std::string CPosPrinterData::PrintDiandanOrderBiaoqian(CDiandanOrder& order)
 				nRow++;
 			}
 
-			int nPriceY;
-			if (biaoqian_height == 30)
-			{
-				nPriceY = 180;
-			}
-			else if (biaoqian_height == 25)
+			int nQucanmaY = 42 + 30 * nRow + 10;
+
+			//打印取餐码
+			BIAOQIAN_BARCODEOUT(CLewaimaiString::UTF8ToGBK(order.take_food_code), 12, nQucanmaY);
+
+			int nHeightNow;
+			if (biaoqian_height <= 30)
 			{
-				nPriceY = 140;
+				nHeightNow = (biaoqian_height - 4) * 8;
 			}
-			else if (biaoqian_height == 20)
+			else
 			{
-				nPriceY = 100;
+				nHeightNow = (30 - 4) * 8;
 			}
 
+			//std::string order_num_info = CLewaimaiString::UnicodeToGBK(L"取餐码:") + CLewaimaiString::UTF8ToGBK(order.take_food_code);
+			//textData += BIAOQIAN_TEXTGet(order_num_info, 132, nQucanmaY + 15, 1, 1);
+
 			//打印价格
 			std::string priceInfo = CLewaimaiString::UTF8ToGBK(food_price) + CLewaimaiString::UnicodeToGBK(L"元");
-			textData += BIAOQIAN_TEXTGet(priceInfo, 12, nPriceY, 1, 1);
-
-			//打印订单号
-			std::string order_num = CLewaimaiString::UnicodeToGBK(L"订单号:") + CLewaimaiString::UTF8ToGBK(order.show_trade_no);
-			textData += BIAOQIAN_TEXTGet(order_num, 12, nPriceY + 30, 1, 1);
+			textData += BIAOQIAN_TEXTGet(priceInfo, 12, nHeightNow, 1, 1);
 
 			WriteData(textData);