|
|
@@ -915,7 +915,326 @@ std::vector<ChufangPrinterContent> CPosPrinterData::PrintWaimaiOrderChufang(CWai
|
|
|
|
|
|
std::string CPosPrinterData::PrintDiandanOrderShouyin(CDiandanOrder& order)
|
|
|
{
|
|
|
- return "";
|
|
|
+ //读取当前收银打印机的设置
|
|
|
+ std::string guige = CSetting::GetParam("setting_printer_guige");
|
|
|
+ std::string lianshu = CSetting::GetParam("setting_printer_lianshu");
|
|
|
+ int n_lianshu = atoi(lianshu.c_str());
|
|
|
+
|
|
|
+ //正式开始打印
|
|
|
+ for (int i = 0; i < n_lianshu; i++)
|
|
|
+ {
|
|
|
+ POS_Reset();
|
|
|
+
|
|
|
+ //打印店铺名字
|
|
|
+ string shop_name = CLewaimaiString::UTF8ToANSI(order.shopname);
|
|
|
+ POS_TextOut(shop_name, true, true, 1);
|
|
|
+
|
|
|
+ POS_FeedLine();
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ string date = "取餐号:" + CLewaimaiString::UTF8ToANSI(order.take_food_code);
|
|
|
+ POS_TextOut(date, false, true);
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ //订单来源
|
|
|
+ if (order.order_from == 1)
|
|
|
+ {
|
|
|
+ string from_type = "订单来源:收银系统";
|
|
|
+ POS_TextOut(from_type);
|
|
|
+ POS_FeedLine();
|
|
|
+ }
|
|
|
+ else if (order.order_from == 2)
|
|
|
+ {
|
|
|
+ string from_type = "订单来源:商家appp";
|
|
|
+ POS_TextOut(from_type);
|
|
|
+ POS_FeedLine();
|
|
|
+ }
|
|
|
+ else if (order.order_from == 3)
|
|
|
+ {
|
|
|
+ string from_type = "订单来源:扫码下单";
|
|
|
+ POS_TextOut(from_type);
|
|
|
+ POS_FeedLine();
|
|
|
+ }
|
|
|
+
|
|
|
+ //订单号
|
|
|
+ bool setting_printer_dingdanhao_big = false;
|
|
|
+
|
|
|
+ if (CSetting::GetParam("setting_printer_dingdanhao_big") == "1")
|
|
|
+ {
|
|
|
+ setting_printer_dingdanhao_big = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ string order_num = "订 单 号:" + CLewaimaiString::UTF8ToANSI(order.show_trade_no);
|
|
|
+ POS_TextOut(order_num, false, setting_printer_dingdanhao_big);
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ //下单时间
|
|
|
+ bool setting_printer_xiadanshijian_big = false;
|
|
|
+
|
|
|
+ if (CSetting::GetParam("setting_printer_xiadanshijian_big") == "1")
|
|
|
+ {
|
|
|
+ setting_printer_xiadanshijian_big = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ string order_date = "下单时间:" + CLewaimaiString::UTF8ToANSI(order.init_time);
|
|
|
+ POS_TextOut(order_date, false, setting_printer_xiadanshijian_big);
|
|
|
+ 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, false, 0);
|
|
|
+ POS_FeedLine();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+
|
|
|
+ //准备开始打印商品详情
|
|
|
+ string lines;
|
|
|
+
|
|
|
+ if (guige == "58")
|
|
|
+ {
|
|
|
+ lines = "--------------------------------";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ lines = "------------------------------------------------";
|
|
|
+ }
|
|
|
+
|
|
|
+ POS_TextOut(lines);
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ //商品标题
|
|
|
+ bool setting_printer_shangpin_big = false;
|
|
|
+
|
|
|
+ if (CSetting::GetParam("setting_printer_shangpin_big") == "1")
|
|
|
+ {
|
|
|
+ setting_printer_shangpin_big = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (guige == "58")
|
|
|
+ {
|
|
|
+ POS_TextOut("商品 单价 数量 金额", false, setting_printer_shangpin_big);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ POS_TextOut("商品 单价 数量 金额", false, setting_printer_shangpin_big);
|
|
|
+ }
|
|
|
+
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ /*/
|
|
|
+ if (order.m_manzeng_name.length() > 0)
|
|
|
+ {
|
|
|
+ CWaimaiOrderItem manzengItem;
|
|
|
+ manzengItem.m_food_name = CLewaimaiString::ANSIToUTF8("【满赠】" + CLewaimaiString::UTF8ToANSI(order.m_manzeng_name));
|
|
|
+
|
|
|
+ order.m_order_items.push_back(manzengItem);
|
|
|
+ }
|
|
|
+ */
|
|
|
+
|
|
|
+ //商品内容
|
|
|
+ for (std::vector<CWaimaiOrderItem>::iterator it = order.m_order_items.begin(); it != order.m_order_items.end(); it++)
|
|
|
+ {
|
|
|
+ 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);
|
|
|
+
|
|
|
+ if (food_total_price == "0.00")
|
|
|
+ {
|
|
|
+ //这里是特殊处理满赠的展示
|
|
|
+ food_total_price = "";
|
|
|
+ }
|
|
|
+
|
|
|
+ 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, setting_printer_shangpin_big);
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ for (std::vector<string>::iterator it = m_names.begin() + 1; it != m_names.end(); it++)
|
|
|
+ {
|
|
|
+ POS_TextOut((*it), false, setting_printer_shangpin_big);
|
|
|
+ POS_FeedLine();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断是否有备注
|
|
|
+ if (order.m_memo.length() > 0)
|
|
|
+ {
|
|
|
+ bool setting_printer_memo_big = false;
|
|
|
+
|
|
|
+ if (CSetting::GetParam("setting_printer_memo_big") == "1")
|
|
|
+ {
|
|
|
+ setting_printer_memo_big = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ POS_FeedLine();
|
|
|
+ string address = "整单备注:" + CLewaimaiString::UTF8ToANSI(order.m_memo);
|
|
|
+ POS_TextOut(address, false, setting_printer_memo_big);
|
|
|
+ POS_FeedLine();
|
|
|
+ }
|
|
|
+
|
|
|
+ //结束商品详情打印
|
|
|
+ POS_TextOut(lines);
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ //开始打印其他的费用
|
|
|
+ bool is_other_money = false;
|
|
|
+ bool setting_printer_price_big = false;
|
|
|
+
|
|
|
+ if (CSetting::GetParam("setting_printer_price_big") == "1")
|
|
|
+ {
|
|
|
+ setting_printer_price_big = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (order.m_is_dabao == "1")
|
|
|
+ {
|
|
|
+ string dabao = "打包费:" + CLewaimaiString::UTF8ToANSI(order.m_dabao_money);
|
|
|
+ POS_TextOut(dabao, false, setting_printer_price_big);
|
|
|
+ POS_FeedLine();
|
|
|
+ is_other_money = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ //开始显示增值服务费
|
|
|
+ /*
|
|
|
+ if (order.m_addservie.size() > 0)
|
|
|
+ {
|
|
|
+ for (std::vector<CWaimaiOrderField>::iterator it = order.m_addservie.begin(); it != order.m_addservie.end(); it++)
|
|
|
+ {
|
|
|
+ string addservice = CLewaimaiString::UTF8ToANSI((*it).name) + ":" + CLewaimaiString::DoubleToString((double)atof((*it).value.c_str()), 2);
|
|
|
+ POS_TextOut(addservice, false, setting_printer_price_big);
|
|
|
+ POS_FeedLine();
|
|
|
+ is_other_money = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ is_other_money = true;
|
|
|
+ }
|
|
|
+ }*/
|
|
|
+
|
|
|
+ if (order.m_discount < 10)
|
|
|
+ {
|
|
|
+ string discount = "打折:" + CLewaimaiString::DoubleToString((double)order.m_discount, 2) + "折";
|
|
|
+ POS_TextOut(discount, false, setting_printer_price_big);
|
|
|
+ POS_FeedLine();
|
|
|
+ is_other_money = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (order.m_is_member_discount == "1")
|
|
|
+ {
|
|
|
+ string member_discount = "会员优惠:-" + order.m_member_discount;
|
|
|
+ POS_TextOut(member_discount, false, setting_printer_price_big);
|
|
|
+ POS_FeedLine();
|
|
|
+ is_other_money = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (order.m_is_firstcut == "1")
|
|
|
+ {
|
|
|
+ string firstcut = "首单优惠:-" + order.m_firstcut_value;
|
|
|
+ POS_TextOut(firstcut, false, setting_printer_price_big);
|
|
|
+ POS_FeedLine();
|
|
|
+ is_other_money = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ //满减
|
|
|
+ string::size_type position = order.m_promotion.find(":");
|
|
|
+
|
|
|
+ if (position != order.m_promotion.npos)
|
|
|
+ {
|
|
|
+ string promotion_value;
|
|
|
+ promotion_value.assign(order.m_promotion, position + 1);
|
|
|
+ string promotion = "满减优惠:-" + CLewaimaiString::DoubleToString((double)(atof(promotion_value.c_str())), 2);
|
|
|
+ POS_TextOut(promotion, false, setting_printer_price_big);
|
|
|
+ POS_FeedLine();
|
|
|
+ is_other_money = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (order.m_coupon > 0)
|
|
|
+ {
|
|
|
+ string coupon = "优惠券:-" + CLewaimaiString::DoubleToString((double)order.m_coupon, 2);
|
|
|
+ POS_TextOut(coupon, false, setting_printer_price_big);
|
|
|
+ POS_FeedLine();
|
|
|
+ is_other_money = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (is_other_money)
|
|
|
+ {
|
|
|
+ POS_TextOut(lines);
|
|
|
+ POS_FeedLine();
|
|
|
+ }
|
|
|
+
|
|
|
+ //最后显示总价
|
|
|
+ POS_TextOut("总计:¥" + CLewaimaiString::DoubleToString(order.m_price, 2), false, setting_printer_price_big, 2);
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ //显示付款方式
|
|
|
+ bool setting_printer_pay_big = false;
|
|
|
+
|
|
|
+ if (CSetting::GetParam("setting_printer_pay_big") == "1")
|
|
|
+ {
|
|
|
+ setting_printer_pay_big = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ POS_TextOut("支付方式:" + CLewaimaiString::UTF8ToANSI(order.m_pay_type), false, setting_printer_pay_big, 2);
|
|
|
+
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ POS_FeedLine();;
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ //走纸几行再切
|
|
|
+ POS_FeedLine();
|
|
|
+ POS_FeedLine();
|
|
|
+ POS_FeedLine();
|
|
|
+ POS_FeedLine();
|
|
|
+ POS_FeedLine();
|
|
|
+
|
|
|
+ POS_CutPaper();
|
|
|
+ }
|
|
|
+
|
|
|
+ //还原打印机初始设置,有些傻逼收银设备居然不是自动调用,比如哗啦啦
|
|
|
+ POS_Reset();
|
|
|
+
|
|
|
+ return m_print_content;
|
|
|
}
|
|
|
|
|
|
std::string CPosPrinterData::PrintDiandanOrderBiaoqian(CDiandanOrder& order)
|