Commit db2b8a10 by wuyang.zou

new Feature

1、避免重复入机
2、展示wsg券下商品名与sku
3、保存 组合支付改价标志到本地数据库
4、上移点击POS右下角 Y轴坐标系:偏移量 有48 ->88

Version: 2.2020.12.18
parent 20df9727
Pipeline #27992 failed with stage
in 0 seconds
...@@ -225,7 +225,8 @@ void FlowControl::_ClickOMSAssignArea() ...@@ -225,7 +225,8 @@ void FlowControl::_ClickOMSAssignArea()
} }
} }
// 由于星巴克POS存在两种屏幕[①大屏:1366*768 ②小屏:1024*768] 因此采用获取系统屏幕底部坐标减去一个相对距离来实现正确的点击事件(2018-08-13 初步设定:x-10,y-30); // 由于星巴克POS存在 三种屏幕[①大屏:1366*768 ②小屏:1024*768 ③Mini Pad]
// 因此采用获取系统屏幕底部坐标减去一个相对距离来实现正确的点击事件(2020-12-10 初步设定:x-16,y-88);
int xOffset = ConfigManger::GetInstance().GetOMSBtnWidthOffset(); int xOffset = ConfigManger::GetInstance().GetOMSBtnWidthOffset();
int yOffset = ConfigManger::GetInstance().GetOMSBtnHeightOffset(); int yOffset = ConfigManger::GetInstance().GetOMSBtnHeightOffset();
QLOG_INFO()<<QString::fromLocal8Bit("(yOffset%1:,yOffset:%2)").arg(xOffset).arg(yOffset); QLOG_INFO()<<QString::fromLocal8Bit("(yOffset%1:,yOffset:%2)").arg(xOffset).arg(yOffset);
...@@ -279,7 +280,11 @@ void FlowControl::_ClickToNotifySimPullOrder() ...@@ -279,7 +280,11 @@ void FlowControl::_ClickToNotifySimPullOrder()
} }
void FlowControl::_StoragePosOrderData() { void FlowControl::_StoragePosOrderData() {
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_StoragePosOrderData: m_storagePosOrdersList size: %1 --->>>>>]").arg( m_storagePosOrdersList.size() ); QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_StoragePosOrderData: m_storagePosOrdersList size: %1 And FirstOne: %2 --->>>>>]")
.arg( m_storagePosOrdersList.size() ).arg( m_storagePosOrdersList.isEmpty()? " " : m_storagePosOrdersList.first() );
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_StoragePosOrderData: m_simValidOrdersList size: %1 And FirstOne: %2 --->>>>>]")
.arg( m_simValidOrdersList.size() ).arg( m_simValidOrdersList.empty()? " " : m_simValidOrdersList.first() );
if ( m_storagePosOrdersList.isEmpty() ) { if ( m_storagePosOrdersList.isEmpty() ) {
m_storageOrderTimer->start(10*1000); m_storageOrderTimer->start(10*1000);
} else { } else {
...@@ -312,7 +317,8 @@ void FlowControl::_StoragePosOrderData() { ...@@ -312,7 +317,8 @@ void FlowControl::_StoragePosOrderData() {
} }
} }
//无法加锁,避免丢单 导致订单没有录入POS [新增一个补救添加队列也可解决此类场景]; //无法加锁,避免丢单 导致订单没有录入POS [新增一个补救添加队列也可解决此类场景];
if (!m_skipRecordPos) { // 不跳过入机【需要入机】 && 待入机队列中没有该订单;
if ( !m_skipRecordPos && !m_simValidOrdersList.contains( order_p->id ) ) {
m_simValidOrdersList.append(order_p->id); m_simValidOrdersList.append(order_p->id);
// 默认都是着急向POS录单; 除非特别配置 noHurryRecordPos; // 默认都是着急向POS录单; 除非特别配置 noHurryRecordPos;
if ( !ConfigManger::GetInstance().GetNoHurryRecordPos() ) { if ( !ConfigManger::GetInstance().GetNoHurryRecordPos() ) {
...@@ -384,6 +390,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -384,6 +390,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
orderObject->dataBaseIsORSPushInt = 0; orderObject->dataBaseIsORSPushInt = 0;
orderObject->dataBaseIsORSCancleInt = 0; orderObject->dataBaseIsORSCancleInt = 0;
orderObject->dataBasePosOrderCheckNo = ""; orderObject->dataBasePosOrderCheckNo = "";
//插件程序内存中没有此订单时需要从数据库中获取该订单标志数据;同时在接受到退单情况时,也需要从数据库中重新获取(防止内存中标志数据未更新[入机后未更新]); //插件程序内存中没有此订单时需要从数据库中获取该订单标志数据;同时在接受到退单情况时,也需要从数据库中重新获取(防止内存中标志数据未更新[入机后未更新]);
bool retGetDbOrderAllFlag = SimProcOrderDB::getInstance().getDbOrderAllFlag(orderObject->id,orderObject->dataBaseIsOrderExistInt,orderObject->dataBaseIsPushInt, bool retGetDbOrderAllFlag = SimProcOrderDB::getInstance().getDbOrderAllFlag(orderObject->id,orderObject->dataBaseIsOrderExistInt,orderObject->dataBaseIsPushInt,
orderObject->dataBaseIsCancleInt,orderObject->dataBaseIsORSPushInt,orderObject->dataBaseIsORSCancleInt,orderObject->dataBasePosOrderCheckNo); orderObject->dataBaseIsCancleInt,orderObject->dataBaseIsORSPushInt,orderObject->dataBaseIsORSCancleInt,orderObject->dataBasePosOrderCheckNo);
...@@ -524,7 +531,10 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -524,7 +531,10 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId:%1 m_storageOrderMutex.tryLock Failed --->>>>]").arg(orderObject->id); QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId:%1 m_storageOrderMutex.tryLock Failed --->>>>]").arg(orderObject->id);
return; return;
} }
// 销售单: 存在待入机队列则不添加存储队列,不存在则添加到存储队列;
if ( !m_simValidOrdersList.contains(orderObject->id) ) {
m_storagePosOrdersList.append(orderObject->id); m_storagePosOrdersList.append(orderObject->id);
}
m_storageOrderMutex.unlock(); m_storageOrderMutex.unlock();
} }
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis::SaleOrder m_storagePosOrdersList.num:%1 m_simValidOrdersList:%2 --->>>>]") QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis::SaleOrder m_storagePosOrdersList.num:%1 m_simValidOrdersList:%2 --->>>>]")
...@@ -567,6 +577,9 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -567,6 +577,9 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
//if( (!orderObject->dataBaseIsPushInt && !orderObject->appointmentDayFlag) || (!dataBaseIsORSPushInt && orderObject->appointmentDayFlag) ) //if( (!orderObject->dataBaseIsPushInt && !orderObject->appointmentDayFlag) || (!dataBaseIsORSPushInt && orderObject->appointmentDayFlag) )
if(!orderObject->dataBaseIsPushInt) if(!orderObject->dataBaseIsPushInt)
{ {
orderObject->pushOrderType = 0; //标记通常订单-冲正销售单待入机状态;
orderObject->pushOrderTimes = 0;
bRetStorageOrderMutex = m_storageOrderMutex.tryLock(VALUE_TRYLOCKMEMTIMEOUT); bRetStorageOrderMutex = m_storageOrderMutex.tryLock(VALUE_TRYLOCKMEMTIMEOUT);
if ( !bRetStorageOrderMutex ) { if ( !bRetStorageOrderMutex ) {
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId: %1 m_storageOrderMutex.tryLock Failed --->>>>]").arg(orderObject->id); QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId: %1 m_storageOrderMutex.tryLock Failed --->>>>]").arg(orderObject->id);
...@@ -574,6 +587,22 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -574,6 +587,22 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
} }
m_storagePosOrdersList.removeOne(orderObject->id); m_storagePosOrdersList.removeOne(orderObject->id);
m_storageOrderMutex.unlock(); m_storageOrderMutex.unlock();
if ( m_simValidOrdersList.contains( orderObject->id ) ) {
// 订单取消, 且销售单在等待录单,此时剔除 不是正在录单队列中的此笔订单;
if ( orderObject->id != m_simValidOrdersList.first() ||
( orderObject->id == m_simValidOrdersList.first() && !m_bFloatFromLockSt ) ) {
m_OrderEntryMutex.lock();
m_simValidOrdersList.removeOne( orderObject->id );
m_OrderEntryMutex.unlock();
} else if (orderObject->id == m_simValidOrdersList.first() && m_bFloatFromLockSt) {
m_storageOrderMutex.lock();
// 订单取消, 且销售单真在录单,此刻已经无法中断录单,只能补充一次冲正机会;
m_storagePosOrdersList.append(orderObject->id);
m_storageOrderMutex.unlock();
}
}
} }
//case:校验此订单是否已经push到POS:订单已经push到POS //case:校验此订单是否已经push到POS:订单已经push到POS
else{ else{
...@@ -587,13 +616,16 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -587,13 +616,16 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
orderObject->orsPushOrderType = 0; //标记预约实物-准备退单动作; orderObject->orsPushOrderType = 0; //标记预约实物-准备退单动作;
orderObject->orsPushOrderTimes = 0; orderObject->orsPushOrderTimes = 0;
if ( !m_storagePosOrdersList.contains(orderObject->id) ) { // && (!m_skipRecordPos) if ( !m_storagePosOrdersList.contains(orderObject->id) ) {
bRetStorageOrderMutex = m_storageOrderMutex.tryLock(VALUE_TRYLOCKMEMTIMEOUT); bRetStorageOrderMutex = m_storageOrderMutex.tryLock(VALUE_TRYLOCKMEMTIMEOUT);
if ( !bRetStorageOrderMutex ) { if ( !bRetStorageOrderMutex ) {
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId:%1 m_storageOrderMutex.tryLock Failed --->>>>]").arg(orderObject->id); QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis:orderId:%1 m_storageOrderMutex.tryLock Failed --->>>>]").arg(orderObject->id);
return; return;
} }
// 退货单: 存在待入机队列则不添加存储队列,不存在则添加到存储队列;
if ( !m_simValidOrdersList.contains( orderObject->id ) ) {
m_storagePosOrdersList.append(orderObject->id); m_storagePosOrdersList.append(orderObject->id);
}
m_storageOrderMutex.unlock(); m_storageOrderMutex.unlock();
} }
...@@ -2030,47 +2062,53 @@ bool FlowControl::_ResponseOMS11Request(const QJsonObject &content, QJsonObject ...@@ -2030,47 +2062,53 @@ bool FlowControl::_ResponseOMS11Request(const QJsonObject &content, QJsonObject
bool result=true; bool result=true;
m_clickPosCount = 0; m_clickPosCount = 0;
if(!m_bLoginResult){ if ( !m_bLoginResult ) {
error = QString::fromLocal8Bit("FMOMS未登录"); error = QString::fromLocal8Bit("FMOMS未登录");
return false; return false;
} } else {
else{ if ( content[JSON_ORDER_ID].toString().isEmpty() ) {
if(content[JSON_ORDER_ID].toString().isEmpty())
{
error =QString::fromLocal8Bit("订单号不能为空"); error =QString::fromLocal8Bit("订单号不能为空");
return false; return false;
} else { } else {
if ( !m_simValidOrdersList.isEmpty() ) {
QString simValidOrderListFirstOne = m_simValidOrdersList.first();
QString omsPushOrderId = content[JSON_ORDER_ID].toString(); QString omsPushOrderId = content[JSON_ORDER_ID].toString();
int omsPushOrderStatus = content[JSON_STATUS].toInt();
OrderObject *order_p = nullptr;
if ( 6 == omsPushOrderStatus ) {
// 避免小概率事件:①重复录单 ②单边账;
// Case1: 筛选处理 m_simValidOrdersList
if ( m_simValidOrdersList.contains( omsPushOrderId) ) {
QString simValidFirstOne = m_simValidOrdersList.first();
order_p = m_FmOrdersMap.value(omsPushOrderId);
//缩小锁住订单的条件范围: 服务端推单给插件程序且插件程序拒绝本次订单状态发生变化的请求 //缩小锁住订单的条件范围: 服务端推单给插件程序且插件程序拒绝本次订单状态发生变化的请求
if( omsPushOrderId == simValidOrderListFirstOne && m_bFloatFromLockSt){ //新增条件筛选:当正在准备录入销售单的订单(m_bFloatFromLockSt=false);
if ( omsPushOrderId == simValidFirstOne && m_bFloatFromLockSt ) {
error =QString::fromLocal8Bit("当前订单正在录POS系统,请耐心等待"); error =QString::fromLocal8Bit("当前订单正在录POS系统,请耐心等待");
return false; return false;
} }else if ( order_p && 1 == order_p->pushOrderType) {
//新增条件筛选:当正在准备录入销售单的订单(m_bFloatFromLockSt=false);
//插件 同时接受到OMS 的取消操作; 此时需要将在排队录入的销售单 请求移除; 同时加强 录单请求 是否存在筛查;
int omsPushStatus = content[JSON_STATUS].toInt();
if ( omsPushOrderId == simValidOrderListFirstOne && omsPushStatus == OrderObject::Refunded ) {
OrderObject *orderObject = m_FmOrdersMap.value(simValidOrderListFirstOne);
if ( omsPushStatus != orderObject->orderStatus ) {
error =QString::fromLocal8Bit("已经取消了 订单(%1)向 POS 录入销售单的请求").arg(omsPushOrderId);
m_OrderEntryMutex.lock(); m_OrderEntryMutex.lock();
m_simValidOrdersList.removeOne(omsPushOrderId); m_simValidOrdersList.removeOne(omsPushOrderId);
m_OrderEntryMutex.unlock(); m_OrderEntryMutex.unlock();
return true;
} }
} }
// Case2: 筛选处理 m_storagePosOrdersList
if ( m_storagePosOrdersList.contains( omsPushOrderId) ) {
order_p = m_FmOrdersMap.value(omsPushOrderId);
if ( order_p && 1 == order_p->pushOrderType) {
m_storageOrderMutex.lock();
m_storagePosOrdersList.removeOne(omsPushOrderId);
m_storageOrderMutex.unlock();
} }
} }
}
}
// 接受到非码oms插过来的订单,进行向队列中进行添加; // 接受到非码oms插过来的订单,进行向队列中进行添加;
// Case3: 添加前 筛选是否已经存在待拉取的状态;
result = _TryAddOrderPull(content[JSON_ORDER_ID].toString(),content[JSON_CHANNEL].toString()); result = _TryAddOrderPull(content[JSON_ORDER_ID].toString(),content[JSON_CHANNEL].toString());
/***组装从FM外卖service端的拉单请求参数***/
if (result) { if (result) {
error = QString("success"); error = QString("success");
result = true; result = true;
...@@ -2274,6 +2312,15 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2274,6 +2312,15 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
return true; return true;
} }
//检查: 录入销售单时未成功待排队,此时插件退单 并且订单数据已被退单数据更新,需要踢出待入机队列;
if( 6 == orderObject->orderStatus && 0 == bIsPushOrder ) {
m_OrderEntryMutex.lock();
m_simValidOrdersList.removeOne(orderObject->id);
m_OrderEntryMutex.unlock();
error = QString::fromLocal8Bit("This Delivery Order Had Refund: %1 Is Invalid, No Need Record POS System").arg(orderObject->id);
return true;
}
//录单时才触发隐藏 主窗口 + 锁定悬浮框; //录单时才触发隐藏 主窗口 + 锁定悬浮框;
if(!m_bFloatFromLockSt){ if(!m_bFloatFromLockSt){
m_bFloatFromLockSt = true; //更新悬浮框的锁定状态=true; m_bFloatFromLockSt = true; //更新悬浮框的锁定状态=true;
...@@ -2296,7 +2343,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2296,7 +2343,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
//星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单; 4:MOP自测订单; 5:预约订单; 7:当日预约单;8拼单(使用父级订单类型) //星巴克的订单类型:1:新订单; 2:预订单; 3:客诉单; 4:MOP自测订单; 5:预约订单; 7:当日预约单;8拼单(使用父级订单类型)
// 客诉单 支付方式 由现金 变更为 OrderPayType=1;在Simphony扩展程序将其转换成 84:MOD + 非码订单:orderId 入机; // 客诉单 支付方式 由现金 变更为 OrderPayType=1;在Simphony扩展程序将其转换成 84:MOD + 非码订单:orderId 入机;
if(3 == orderObject->getOrderType()) { if(3 == orderObject->getOrderType()) {
tempServiceType = 12; tempServiceType = 23; // 客诉单: 12 -> 23
tempOrderPayType = 1; tempOrderPayType = 1;
} }
// MOP自测订单 在下方处理;星巴克-预约订单:在下方处理; // MOP自测订单 在下方处理;星巴克-预约订单:在下方处理;
...@@ -2399,7 +2446,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2399,7 +2446,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
//MOP最后判断 是否是 MOP自测订单; //MOP最后判断 是否是 MOP自测订单;
if(4== orderObject->getOrderType()) { if(4== orderObject->getOrderType()) {
tempServiceType = 20; tempServiceType = 23; // 自测单: 20 -> 23
tempOrderPayType = 1; tempOrderPayType = 1;
} }
...@@ -2478,7 +2525,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2478,7 +2525,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
//针对使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元支付方式结单; //针对使用 券 + 星星折扣 +(券&星星折扣)用户不用实际支付任何金额,需要采用0元支付方式结单;
//插件传给Simphony扩展程序时支付方式=1;在Simphony扩展程序将其转换成 84:MOD + 非码订单:orderId 入机; //插件传给Simphony扩展程序时支付方式=1;在Simphony扩展程序将其转换成 84:MOD + 非码订单:orderId 入机;
} else { } else {
tempServiceType = 13; // 退货订单类型:13 已经过期; 后期还需要考虑MOP的正向订单类型/退货订单类型; tempServiceType = 44; // 退货订单类型:13 已经过期; 后期还需要考虑MOP的正向订单类型/退货订单类型; 不能使用32范围内的值暂用44;
} }
} }
...@@ -2494,43 +2541,34 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2494,43 +2541,34 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
cObj.insert("sbkAppPayValue", tempSbkAppPayValue); cObj.insert("sbkAppPayValue", tempSbkAppPayValue);
cObj.insert("orderTransFlowNo", (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch:QString("0") ); //第三方交易流水号 cObj.insert("orderTransFlowNo", (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch:QString("0") ); //第三方交易流水号
cObj.insert("packFree", orderObject->packageFee>0?orderObject->packageFee:0); // 2020-10-14 筛选出能与Simphony 通信 可占用的字段; begin------->
cObj.insert("packDiscount",orderObject->packDiscount>0?orderObject->packDiscount:0); cObj.insert("packFree", 0);
cObj.insert("deliveryFree", orderObject->deliveryPrice>0?orderObject->deliveryPrice:0); cObj.insert("packDiscount",0);
cObj.insert("deliveryDiscount", orderObject->deliveryDiscount>0?orderObject->deliveryDiscount:0); cObj.insert("deliveryFree", 0);
cObj.insert("deliveryDiscount", 0);
cObj.insert("waybillId", (orderObject->waybillId).length()?orderObject->waybillId:QString("0") );
// 2020-10-14 筛选出能与Simphony 通信的字段; end------->
//只有这个字段(dis_shop_fee)传给Simphony(代表平台优惠给POS系统),对应的字段是dis_shop_fee :平台优惠总额 只能通过 dis_shop_fee 字段传递给 POS;
// 目前已经通过本地数据库表字段存储传递, 无需这样传递;
//cObj.insert("dis_shop_fee", abs(orderObject->disPlateformFee)); // 商家承担优惠金额(实际传递的是: 平台优惠金额 orderObject->disPlateformFee);
// 目前设定 CommonFlag 为通用标志:对应Dll: discountFee Simphony: globalCommonFlag 数字: 个位:标识*** 十位标识*** ;百位标识***;千位标识***;万位***;
int commonFlag = 0;
//commonFlag = commonFlag + 31281;
cObj.insert("dis_shop_fee", commonFlag);
// 整单折扣在Simphony扩展程序中没有实际意义,目前使用此字段透传 插件的版本号信息; // 整单折扣在Simphony扩展程序中没有实际意义,目前使用此字段透传 插件的版本号信息;
QString pluginVersion = APP_VERSION ; QString pluginVersion = APP_VERSION ;
pluginVersion = pluginVersion.mid(4); pluginVersion = pluginVersion.mid(4);
cObj.insert("orderDiscount", pluginVersion.remove(QChar('.'),Qt::CaseInsensitive).toInt() ); cObj.insert("orderDiscount", pluginVersion.remove(QChar('.'),Qt::CaseInsensitive).toInt() );
cObj.insert("waybillId", (orderObject->waybillId).length()?orderObject->waybillId:QString("0") );
cObj.insert("pos_sale_id", orderObject->posCheckNo);
cObj.insert("order_status",orderObject->orderStatus);//订单的状态 cObj.insert("order_status",orderObject->orderStatus);//订单的状态
cObj.insert("pay_ebcode", orderObject->channel);
cObj.insert("order_index", orderObject->orderIndex);
cObj.insert("customer_name", orderObject->customerName);
cObj.insert("customer_phone", orderObject->phone);
cObj.insert("customer_address", orderObject->addressDetail);
cObj.insert("delivery_time", orderObject->deliveryTime);
cObj.insert("create_time",orderObject->createTime);
cObj.insert("remark", orderObject->memo); //orderObject->memo:餐具 | orderObject->consumerRemark:顾客备注
cObj.insert("has_invoice",orderObject->needInvoice);
cObj.insert("invoice_title",orderObject->invoiceTitle);
cObj.insert("pay_ebcode_str", orderObject->channel);
//TODO
cObj.insert("products_fee", orderObject->productPrice); // 商品金额 cObj.insert("products_fee", orderObject->productPrice); // 商品金额
cObj.insert("service_fee", /*orderObject->service_fee*/0); // 平台佣金
cObj.insert("discount_fee", /*orderObject->disPlateformFee*/0); //平台优惠总额
//只有这个字段(discount_fee)传个Simphony(代表平台优惠给POS系统),对应的字段是dis_shop_fee :平台优惠总额 只能通过 dis_shop_fee 字段传递给 POS;
cObj.insert("dis_shop_fee", abs(orderObject->disPlateformFee)); // 商家承担优惠金额(实际传递的是: 平台优惠金额 orderObject->disPlateformFee);
//只有星巴克App 才挂MSR的虚拟卡号;目前饿了么也要挂MSR的虚拟卡号;卡号是空 则 MSR_NO='-1' 卡号不入机; //只有星巴克App 才挂MSR的虚拟卡号;目前饿了么也要挂MSR的虚拟卡号;卡号是空 则 MSR_NO='-1' 卡号不入机;
QString temp_MSR_NO; QString temp_MSR_NO;
temp_MSR_NO = (orderObject->msr_no.length()==0)?orderObject->customerId:orderObject->msr_no; temp_MSR_NO = (orderObject->msr_no.length()==0)?orderObject->customerId:orderObject->msr_no;
temp_MSR_NO = (temp_MSR_NO.length()==0)?QString::fromLocal8Bit("-1"):temp_MSR_NO; temp_MSR_NO = (temp_MSR_NO.length()==0)?QString::fromLocal8Bit("-1"):temp_MSR_NO;
cObj.insert("msr_card_no", temp_MSR_NO); // MSR卡号 cObj.insert("msr_card_no", temp_MSR_NO); // MSR卡号
cObj.insert("dis_platform_fee", /*orderObject->dis_platform_fee*/0); // 平台承担优惠金额
cObj.insert("shop_fee", /*orderObject->total_fee-orderObject->send_fee-orderObject->service_fee-orderObject->dis_shop_fee*/0); // 商户能够拿到的钱(去除平台佣金)
cObj.insert("invoice_amount",orderObject->totalPrice);
if("ELE" == orderObject->channel || "STC" == orderObject->channel || "HM" == orderObject->channel){ if("ELE" == orderObject->channel || "STC" == orderObject->channel || "HM" == orderObject->channel){
cObj.insert("thirdPartyOrderId",orderObject->thirdPartyOrderId); cObj.insert("thirdPartyOrderId",orderObject->thirdPartyOrderId);
} else { } else {
...@@ -2550,6 +2588,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2550,6 +2588,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
QJsonArray products; QJsonArray products;
QJsonArray coupons; QJsonArray coupons;
QJsonArray payments; QJsonArray payments;
QJsonArray orderCoupons;
/**********************************************************************************/ /**********************************************************************************/
// 循环订单的最外层商品列表; // 循环订单的最外层商品列表;
/**********************************************************************************/ /**********************************************************************************/
...@@ -2590,7 +2629,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2590,7 +2629,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
QJsonArray noSplitSubProductArry; QJsonArray noSplitSubProductArry;
QJsonObject noSplitSubObj; QJsonObject noSplitSubObj;
noSplitMainProObj.insert("consume_num", dish->qty); noSplitMainProObj.insert("consume_num", dish->qty);
noSplitMainProObj.insert("pid", dish->code); //noSplitMainProObj.insert("pid", dish->code);
noSplitMainProObj.insert("pid", dish->chgPrcFlgCode); // 传递含改价标识重新组装的sku;
noSplitMainProObj.insert("original_price", dish->price); noSplitMainProObj.insert("original_price", dish->price);
/**********************************************************************************/ /**********************************************************************************/
// 处理原始的配料信息; // 处理原始的配料信息;
...@@ -2620,7 +2660,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2620,7 +2660,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
return true; return true;
} }
noSplitSubObj.insert("consume_num", subDish->qty); noSplitSubObj.insert("consume_num", subDish->qty);
noSplitSubObj.insert("pid", subDish->code); noSplitSubObj.insert("pid", subDish->code); // 传递含改价标识重新组装的sku; 目前客制化不存在改价可能,故不替换:subDish->chgPrcFlgCode
noSplitSubObj.insert("original_price", subDish->price); noSplitSubObj.insert("original_price", subDish->price);
noSplitSubProductArry.push_back(noSplitSubObj); noSplitSubProductArry.push_back(noSplitSubObj);
} }
...@@ -2673,7 +2713,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2673,7 +2713,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
QJsonArray subProduct; QJsonArray subProduct;
QJsonObject sObj; QJsonObject sObj;
tObj.insert("consume_num", 1); tObj.insert("consume_num", 1);
tObj.insert("pid", dish->code); //tObj.insert("pid", dish->code);
tObj.insert("pid", dish->chgPrcFlgCode); // 传递含改价标识重新组装的sku;
tObj.insert("original_price", dish->price); tObj.insert("original_price", dish->price);
/**********************************************************************************/ /**********************************************************************************/
// 处理原始的配料信息; // 处理原始的配料信息;
...@@ -2704,7 +2745,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2704,7 +2745,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
return true; return true;
} }
sObj.insert("consume_num", subDish->qty); sObj.insert("consume_num", subDish->qty);
sObj.insert("pid", subDish->code); sObj.insert("pid", subDish->code); // 传递含改价标识重新组装的sku; 目前客制化不存在改价可能,故不替换:subDish->chgPrcFlgCode
sObj.insert("original_price", subDish->price); sObj.insert("original_price", subDish->price);
subProduct.push_back(sObj); subProduct.push_back(sObj);
} }
...@@ -2760,8 +2801,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2760,8 +2801,8 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
} }
//**********************************整合券信息-begin*****************************************// //**********************************整合WSG券信息-begin*****************************************//
// 循环订单的 券 列表 [进入循环条件: 存在券列表;]; // 循环订单的WSG券 列表 [进入循环条件: 存在券列表;];
/**********************************************************************************/ /**********************************************************************************/
for(int i=0; i < orderObject->coupList.count() && "WSG-MOD" == orderObject->channel ; i++) { for(int i=0; i < orderObject->coupList.count() && "WSG-MOD" == orderObject->channel ; i++) {
CouponsObject* coupon=orderObject->coupList.at(i); CouponsObject* coupon=orderObject->coupList.at(i);
...@@ -2794,7 +2835,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2794,7 +2835,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
/**********************************************************/ /**********************************************************/
for (int tempSkuSeq = 0; tempSkuSeq < coupon->skus.size(); tempSkuSeq++) { for (int tempSkuSeq = 0; tempSkuSeq < coupon->skus.size(); tempSkuSeq++) {
QString tempSkuCode = coupon->skus[tempSkuSeq]->code; QString tempSkuCode = coupon->skus[tempSkuSeq]->code;
QString tempSkuQty = coupon->skus[tempSkuSeq]->qty; int tempSkuQty = coupon->skus[tempSkuSeq]->qty;
//安全检查:Sku,Qty ...:不合法直接跳过录单 //安全检查:Sku,Qty ...:不合法直接跳过录单
if(tempSkuCode.isEmpty() || tempSkuCode.contains("Default",Qt::CaseInsensitive) || tempSkuCode.left(1) < QString('0') || tempSkuCode.left(1) > QString('9') if(tempSkuCode.isEmpty() || tempSkuCode.contains("Default",Qt::CaseInsensitive) || tempSkuCode.left(1) < QString('0') || tempSkuCode.left(1) > QString('9')
|| tempSkuCode.length()<3 || tempSkuCode.length()>9 || 0== tempSkuQty ) { || tempSkuCode.length()<3 || tempSkuCode.length()>9 || 0== tempSkuQty ) {
...@@ -2854,10 +2895,10 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2854,10 +2895,10 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
} }
//开头已经新增一条【MOD:84 0元支付方式】 //开头已经新增一条【MOD:84 0元支付方式】
//**********************************整合券信息-end*****************************************// //**********************************整合WSG券信息-end*****************************************//
//**********************************整合多支付方式信息-begin*****************************************// //**********************************整合多支付方式信息【银联】-begin*****************************************//
// 循环订单的 多支付方式列表 [进入循环条件: 存在多支付方式列表]; // 循环订单的 多支付方式列表【银联】 [进入循环条件: 存在多支付方式列表];
/**********************************************************************************/ /**********************************************************************************/
for(int i=0; i < orderObject->paymentList.count() ; i++) { for(int i=0; i < orderObject->paymentList.count() ; i++) {
PaymentObject* payment=orderObject->paymentList.at(i); PaymentObject* payment=orderObject->paymentList.at(i);
...@@ -2905,7 +2946,56 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2905,7 +2946,56 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
tPaymentObj.insert("consumeFactAmount",payment->paymentMoney); //券实际支付金额 (单位:分); tPaymentObj.insert("consumeFactAmount",payment->paymentMoney); //券实际支付金额 (单位:分);
payments.push_back(tPaymentObj); payments.push_back(tPaymentObj);
} }
//**********************************整合多支付方式信息-end*****************************************// //**********************************整合多支付方式信息【银联】-end*****************************************//
//**********************************整合 订单组合券 信息-begin*****************************************//
// 循环订单组合券列表 [进入循环条件: 存在订单组合券列表];
// 三种可能场景: ① 银联支付列表空 && WSG券支付列表空 ② 银联支付列表空 && WSG券支付列表非空 ③银联支付列表非空 && WSG券支付列表空
/**********************************************************************************/
for(int i=0; i < orderObject->orderCoupList.count(); i++) {
CouponsObject* orderCoupon=orderObject->orderCoupList.at(i);
QJsonObject tOrderCoupObj;
// 银联支付列表空 && WSG券支付列表空;
if (0==i && payments.isEmpty() && coupons.isEmpty() ) {
QJsonObject tOmsOrderIdObj;;
tOmsOrderIdObj.insert("couponSeq",QString::number(0) ) ; //券的序号
tOmsOrderIdObj.insert("couponCode",orderObject->id.right(24)); //存放非码订单号(防止存不下,自动截取后24位) couponCode目前最长19位长度;DLL设置24长度;
tOmsOrderIdObj.insert("couponType",QString("0"));
tOmsOrderIdObj.insert("payMethodId",QString("84")); //订单支付方式:MOD(84) 0元支付方式 ;
tOmsOrderIdObj.insert("consumeFactAmount",0);
orderCoupons.push_back(tOmsOrderIdObj);
}
if (!orderCoupon->storeChannel) {
tOrderCoupObj.insert("couponSeq",QString::number( orderCoupons.size() ) ) ; //券的序号
tOrderCoupObj.insert("couponCode",orderCoupon->code); //准确的券号码;例: 7019380051100056143 目前最长 19位长度;DLL设置24长度;
tOrderCoupObj.insert("couponType",orderCoupon->couponType);
tOrderCoupObj.insert("payMethodId",orderCoupon->payMethodId); //券支付方式: 15纸质卷 16电子卷 ;
tOrderCoupObj.insert("consumeFactAmount",orderCoupon->consumeFactAmount); //券实际支付金额 (单位:分);
orderCoupons.push_back(tOrderCoupObj);
}
// 添加组合支付后 其他方式的支付方式: 微信 / 支付宝 / SVC / 等等【不含 ELE】
if ( (orderObject->orderCoupList.count() -1) == i ) {
if ( !orderObject->paymentList.isEmpty() || !orderObject->coupList.isEmpty() ) {
QLOG_INFO()<<QString::fromLocal8Bit("--- paymentList.size()=%1, coupList.size()=%2 至少一个支付List非空, 无需整合常规支付方式---")
.arg( orderObject->paymentList.size() ).arg( orderObject->coupList.size() );
} else {
// 添加常规支付方式和交易流水: 微信 / 支付宝 / SVC / 等等【不含 ELE】
if ( tempSbkAppPayValue.length() > 4 ) {
tOrderCoupObj.insert("couponSeq",QString::number(orderCoupons.size() ) ) ; //券的序号
// svc:长度20; 支付宝:长度28; 微信:长度28; DLL设置24长度,只能使用Simphony程序中接受完整的 tempSbkAppPayValue;
tOrderCoupObj.insert("couponCode",tempSbkAppPayValue.mid(6) );
tOrderCoupObj.insert("couponType",QString("-1"));
tOrderCoupObj.insert("payMethodId",tempSbkAppPayType); //混合支付尾部支付: 78:支付宝; 77:微信; *:银联; 14:SVC卡;
tOrderCoupObj.insert("consumeFactAmount", -1 ); //券实际支付金额 (单位:分);
orderCoupons.push_back(tOrderCoupObj);
}
}
}
}
//整合WSG券 + 整合银联支付 已经新增一条【MOD:84 0元支付方式】
//**********************************整合 订单组合券 信息-end*****************************************//
//向商品列表中 添加 是否打包的SKU; //向商品列表中 添加 是否打包的SKU;
if(orderObject->isPackage && orderObject->packageSku.length()) { if(orderObject->isPackage && orderObject->packageSku.length()) {
...@@ -2958,14 +3048,14 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2958,14 +3048,14 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
tDeliveryFeeObj.insert("pid", "710000268"); //配送费SKU变更; Old: 6000101 -> New:710000268 (此key 不允许设置价格为0,故当配送费为0元时,使用老的key) tDeliveryFeeObj.insert("pid", "710000268"); //配送费SKU变更; Old: 6000101 -> New:710000268 (此key 不允许设置价格为0,故当配送费为0元时,使用老的key)
tDeliveryFeeObj.insert("original_price", orderObject->deliveryPrice); tDeliveryFeeObj.insert("original_price", orderObject->deliveryPrice);
products.push_back(tDeliveryFeeObj); products.push_back(tDeliveryFeeObj);
//星巴克APP/预约系统的支付方式是84; ELE的支付方式是83; [MOP不应该存在配送费且不存在配送费折扣] // [MOP不应该存在配送费且不存在配送费折扣]
if(orderObject->deliveryDiscount>0 && 84 == tempOrderPayType){ if(orderObject->deliveryDiscount>0 && "ELE" != orderObject->channel ){
QJsonObject tDeliveryDiscountObj; QJsonObject tDeliveryDiscountObj;
tDeliveryDiscountObj.insert("consume_num", 1); tDeliveryDiscountObj.insert("consume_num", 1);
tDeliveryDiscountObj.insert("pid","285"); //星巴克APP万能折扣码; tDeliveryDiscountObj.insert("pid","285"); //星巴克APP万能折扣码;
tDeliveryDiscountObj.insert("original_price", orderObject->deliveryDiscount); tDeliveryDiscountObj.insert("original_price", orderObject->deliveryDiscount);
products.push_back(tDeliveryDiscountObj); products.push_back(tDeliveryDiscountObj);
}else if(orderObject->deliveryDiscount>0 && 83 == tempOrderPayType) { }else if(orderObject->deliveryDiscount>0 && "ELE" == orderObject->channel ) {
QJsonObject tDeliveryDiscountObj; QJsonObject tDeliveryDiscountObj;
tDeliveryDiscountObj.insert("consume_num", 1); tDeliveryDiscountObj.insert("consume_num", 1);
tDeliveryDiscountObj.insert("pid","10400"); //ELEME万能折扣码; tDeliveryDiscountObj.insert("pid","10400"); //ELEME万能折扣码;
...@@ -2996,9 +3086,20 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2996,9 +3086,20 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
//组装完成JSON 对象的商品数据; //组装完成JSON 对象的商品数据;
rObj.insert("products", products); rObj.insert("products", products);
//如果存在预约券信息,则不可能存在<多条支付方式>可能[App的银联支付+istore的多张SVC卡消费记录],两者相斥,但公用一个Dll[coupons]数据传输通道; //如果存在预约券信息,则不可能存在<多条支付方式>可能[App的银联支付+istore的多张SVC卡消费记录],两者相斥,但公用一个Dll[coupons]数据传输通道;
QJsonValue tmpOrderCoup;
if( coupons.count() ) { if( coupons.count() ) {
while ( orderCoupons.size() ){
tmpOrderCoup = orderCoupons.first();
coupons.push_back(tmpOrderCoup);
orderCoupons.removeFirst();
}
rObj.insert("coupons", coupons); rObj.insert("coupons", coupons);
} else { } else {
while ( orderCoupons.size() ){
tmpOrderCoup = orderCoupons.first();
payments.push_back(tmpOrderCoup);
orderCoupons.removeFirst();
}
rObj.insert("coupons", payments); rObj.insert("coupons", payments);
} }
data= rObj; data= rObj;
......
...@@ -149,12 +149,12 @@ bool PrintCupStickPosDB::insertCouponProd(OrderObject* orderObj, const QString& ...@@ -149,12 +149,12 @@ bool PrintCupStickPosDB::insertCouponProd(OrderObject* orderObj, const QString&
for (int i=0; i < orderObj->coupList.count(); i++) { for (int i=0; i < orderObj->coupList.count(); i++) {
CouponsObject* coupon = orderObj->coupList.at(i); CouponsObject* coupon = orderObj->coupList.at(i);
query.prepare("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, " query.prepare("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, "
" prod_seq, prod_code, prod_name, prod_resv3, prod_qty, prod_price, " " prod_seq, prod_code, prod_name, prod_resv0, prod_resv3, prod_resv5, prod_qty, prod_price, "
" coupon_seq, coupon_code, coupon_name, coupon_qty," " coupon_seq, coupon_code, coupon_name, coupon_qty,"
" coupon_factPrice, coupon_discountPrice, coupon_discountCode, coupon_discountName ," " coupon_factPrice, coupon_discountPrice, coupon_discountCode, coupon_discountName ,"
" coupon_storeChannel, coupon_isCoupon, coupon_payMethodId, coupon_payMethodName," " coupon_storeChannel, coupon_isCoupon, coupon_payMethodId, coupon_payMethodName,"
" coupon_showGiver, coupon_giver, coupon_wishes) " " coupon_showGiver, coupon_giver, coupon_wishes) "
" VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,?,?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? ,?) select @@identity "); " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) select @@identity ");
query.addBindValue(posCheckNo.toInt()); // --小票号 query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号 query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int); query.addBindValue(orderObj->orderStatus); // --订单状态(int);
...@@ -163,13 +163,15 @@ bool PrintCupStickPosDB::insertCouponProd(OrderObject* orderObj, const QString& ...@@ -163,13 +163,15 @@ bool PrintCupStickPosDB::insertCouponProd(OrderObject* orderObj, const QString&
query.addBindValue(i+1); // --主商品序号; query.addBindValue(i+1); // --主商品序号;
query.addBindValue(coupon->skus[0]->code); // --主商品 SKU query.addBindValue(coupon->skus[0]->code); // --主商品 SKU
query.addBindValue(coupon->skus[0]->name); // --主商品名称 query.addBindValue(coupon->skus[0]->name); // --主商品名称
query.addBindValue( 0 ); // --主商品 改价标志
query.addBindValue(coupon->skus[0]->nickname); // --主商品昵称 query.addBindValue(coupon->skus[0]->nickname); // --主商品昵称
query.addBindValue(coupon->skus[0]->enProductName); // --主商品英文名
query.addBindValue(coupon->skus[0]->qty); // --主商品数量 query.addBindValue(coupon->skus[0]->qty); // --主商品数量
query.addBindValue(coupon->skus[0]->price); // --主商品价格 query.addBindValue(coupon->skus[0]->price); // --主商品价格
query.addBindValue(i+1); // --主商品序号; query.addBindValue(i+1); // --主商品序号;
query.addBindValue(coupon->code); // 券号 query.addBindValue(coupon->code); // 券号
query.addBindValue(coupon->name); // 券名 query.addBindValue(coupon->couponName); // 券名
query.addBindValue(1); // 券数量 query.addBindValue(1); // 券数量
query.addBindValue(coupon->consumeFactAmount); // 券实际支付金额 query.addBindValue(coupon->consumeFactAmount); // 券实际支付金额
query.addBindValue(coupon->consumeDiscountAmount); // 券折扣优惠金额 query.addBindValue(coupon->consumeDiscountAmount); // 券折扣优惠金额
...@@ -186,16 +188,17 @@ bool PrintCupStickPosDB::insertCouponProd(OrderObject* orderObj, const QString& ...@@ -186,16 +188,17 @@ bool PrintCupStickPosDB::insertCouponProd(OrderObject* orderObj, const QString&
if(!query.exec()) { if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database: Insert tb_main_prod_refinfo Error--->>>>]"<<query.lastError().text()<<QString::number(query.lastError().type()); QLOG_ERROR()<<"[<<<<---SqlServer Database: Insert tb_main_prod_refinfo Error--->>>>]"<<query.lastError().text()<<QString::number(query.lastError().type());
QLOG_ERROR()<<QString("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, " QLOG_ERROR()<<QString("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, "
" prod_seq, prod_code, prod_name, prod_resv3, prod_qty, prod_price, " " prod_seq, prod_code, prod_name, prod_resv0, prod_resv3, prod_resv5, prod_qty, prod_price, "
" coupon_seq, coupon_code, coupon_name, coupon_qty," " coupon_seq, coupon_code, coupon_name, coupon_qty,"
" coupon_factPrice, coupon_discountPrice, coupon_discountCode, coupon_discountName ," " coupon_factPrice, coupon_discountPrice, coupon_discountCode, coupon_discountName ,"
" coupon_storeChannel, coupon_isCoupon, coupon_payMethodId, coupon_payMethodName," " coupon_storeChannel, coupon_isCoupon, coupon_payMethodId, coupon_payMethodName,"
" coupon_showGiver, coupon_giver, coupon_wishes) " " coupon_showGiver, coupon_giver, coupon_wishes) "
"VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, " "VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18, %19, %20, "
" %21, %22, %23, %24, %25) select @@identity ").arg(posCheckNo.toInt()) " %21, %22, %23, %24, %25, %26, %27) select @@identity ").arg(posCheckNo.toInt())
.arg(orderObj->id).arg(orderObj->orderStatus).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")) .arg(orderObj->id).arg(orderObj->orderStatus).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss"))
.arg(i+1).arg(coupon->skus[0]->code).arg(coupon->skus[0]->name).arg(coupon->skus[0]->nickname).arg(coupon->skus[0]->qty).arg(coupon->skus[0]->price) .arg(i+1).arg(coupon->skus[0]->code).arg(coupon->skus[0]->name).arg(0).arg(coupon->skus[0]->nickname).arg(coupon->skus[0]->enProductName)
.arg(i+1).arg(coupon->code).arg(coupon->name).arg(1).arg(coupon->consumeFactAmount).arg(coupon->consumeDiscountAmount) .arg(coupon->skus[0]->qty).arg(coupon->skus[0]->price)
.arg(i+1).arg(coupon->code).arg(coupon->couponName).arg(1).arg(coupon->consumeFactAmount).arg(coupon->consumeDiscountAmount)
.arg(coupon->discount).arg(coupon->discountName).arg(coupon->storeChannel).arg(coupon->skus[0]->isCoupon) .arg(coupon->discount).arg(coupon->discountName).arg(coupon->storeChannel).arg(coupon->skus[0]->isCoupon)
.arg(coupon->payMethodId).arg(coupon->payMethodName).arg(coupon->isShowGiver).arg(coupon->giverName).arg(coupon->blessingWords); .arg(coupon->payMethodId).arg(coupon->payMethodName).arg(coupon->isShowGiver).arg(coupon->giverName).arg(coupon->blessingWords);
...@@ -244,20 +247,21 @@ bool PrintCupStickPosDB::insertCouponSubProd(OrderObject* orderObj, const int ma ...@@ -244,20 +247,21 @@ bool PrintCupStickPosDB::insertCouponSubProd(OrderObject* orderObj, const int ma
for (int i=1; i <couponSubProdList.count(); i++) { for (int i=1; i <couponSubProdList.count(); i++) {
SingleProductObject* couponSubProd = couponSubProdList.at(i); SingleProductObject* couponSubProd = couponSubProdList.at(i);
query.prepare("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, " query.prepare("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, "
" prod_seq, prod_code, prod_name, prod_resv3, prod_qty, prod_price, " " prod_seq, prod_code, prod_name, prod_resv3, prod_resv5, prod_qty, prod_price, "
" coupon_storeChannel, coupon_isCoupon, parent_id) " " coupon_storeChannel, coupon_isCoupon, parent_id) "
" VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,?,?) select @@identity "); " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? ,? ,?) select @@identity ");
query.addBindValue(posCheckNo.toInt()); // --小票号 query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号 query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int); query.addBindValue(orderObj->orderStatus); // --订单状态(int);
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间 query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue(0); // --商品序号; query.addBindValue(0); // --商品序号;
query.addBindValue(couponSubProd->code); // --主商品 SKU query.addBindValue(couponSubProd->code); // --商品 SKU
query.addBindValue(couponSubProd->name); // --主商品名称 query.addBindValue(couponSubProd->name); // --商品名称
query.addBindValue(couponSubProd->nickname); // --主商品昵称 query.addBindValue(couponSubProd->nickname); // --商品昵称
query.addBindValue(couponSubProd->qty); // --主商品数量 query.addBindValue(couponSubProd->enProductName); // --商品英文名
query.addBindValue(couponSubProd->price); // --主商品价格 query.addBindValue(couponSubProd->qty); // --商品数量
query.addBindValue(couponSubProd->price); // --商品价格
query.addBindValue(0); // 是否门店券 query.addBindValue(0); // 是否门店券
query.addBindValue(couponSubProd->isCoupon); // 券 商品是否是券属性: 券属性输出券原价+非券属性输出0元客制化 query.addBindValue(couponSubProd->isCoupon); // 券 商品是否是券属性: 券属性输出券原价+非券属性输出0元客制化
query.addBindValue(mainProdIndex); // --父商品ID; 表字段 parent_id; query.addBindValue(mainProdIndex); // --父商品ID; 表字段 parent_id;
...@@ -265,11 +269,12 @@ bool PrintCupStickPosDB::insertCouponSubProd(OrderObject* orderObj, const int ma ...@@ -265,11 +269,12 @@ bool PrintCupStickPosDB::insertCouponSubProd(OrderObject* orderObj, const int ma
if(!query.exec()) { if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database: Insert tb_main_prod_refinfo Error--->>>>]"<<query.lastError().text()<<QString::number(query.lastError().type()); QLOG_ERROR()<<"[<<<<---SqlServer Database: Insert tb_main_prod_refinfo Error--->>>>]"<<query.lastError().text()<<QString::number(query.lastError().type());
QLOG_ERROR()<<QString("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, " QLOG_ERROR()<<QString("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, "
" prod_seq, prod_code, prod_name, prod_resv3, prod_qty, prod_price, " " prod_seq, prod_code, prod_name, prod_resv3, prod_resv5, prod_qty, prod_price, "
" coupon_storeChannel, coupon_isCoupon, parent_id) " " coupon_storeChannel, coupon_isCoupon, parent_id) "
"VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13) select @@identity ").arg(posCheckNo.toInt()) "VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14) select @@identity ").arg(posCheckNo.toInt())
.arg(orderObj->id).arg(orderObj->orderStatus).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")) .arg(orderObj->id).arg(orderObj->orderStatus).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss"))
.arg(0).arg(couponSubProd->code).arg(couponSubProd->name).arg(couponSubProd->nickname).arg(couponSubProd->qty).arg(couponSubProd->price) .arg(0).arg(couponSubProd->code).arg(couponSubProd->name).arg(couponSubProd->nickname).arg(couponSubProd->enProductName)
.arg(couponSubProd->qty).arg(couponSubProd->price)
.arg(0).arg(couponSubProd->isCoupon).arg(mainProdIndex); .arg(0).arg(couponSubProd->isCoupon).arg(mainProdIndex);
break; break;
...@@ -304,9 +309,9 @@ bool PrintCupStickPosDB::insertNormalProd(OrderObject* orderObj, const QString& ...@@ -304,9 +309,9 @@ bool PrintCupStickPosDB::insertNormalProd(OrderObject* orderObj, const QString&
for (int i=0; i < orderObj->proList.count(); i++) { for (int i=0; i < orderObj->proList.count(); i++) {
dishesObject* dish=orderObj->proList.at(i); dishesObject* dish=orderObj->proList.at(i);
query.prepare("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, " query.prepare("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, "
" prod_seq, prod_code, prod_name, prod_price, prod_qty, prod_optionsCode, prod_discount, prod_discountName," " prod_seq, prod_code, prod_name, prod_resv0, prod_resv5, prod_price, prod_qty, prod_optionsCode, prod_discount, prod_discountName,"
" prod_starDiscount, prod_starDiscountName, prod_owner ) " " prod_starDiscount, prod_starDiscountName, prod_owner ) "
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) select @@identity "); "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) select @@identity ");
query.addBindValue(posCheckNo.toInt()); // --小票号 query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号 query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int); query.addBindValue(orderObj->orderStatus); // --订单状态(int);
...@@ -314,6 +319,8 @@ bool PrintCupStickPosDB::insertNormalProd(OrderObject* orderObj, const QString& ...@@ -314,6 +319,8 @@ bool PrintCupStickPosDB::insertNormalProd(OrderObject* orderObj, const QString&
query.addBindValue(i+1); // --主商品序号; query.addBindValue(i+1); // --主商品序号;
query.addBindValue(dish->code); // --主商品SKU query.addBindValue(dish->code); // --主商品SKU
query.addBindValue(dish->name); // --主商品名称 query.addBindValue(dish->name); // --主商品名称
query.addBindValue(dish->changePriceFlag); // --主商品改价标志
query.addBindValue(dish->enProductName); // --主商品英文名称
query.addBindValue(dish->price); // --主商品价格 query.addBindValue(dish->price); // --主商品价格
query.addBindValue(dish->qty); // --主商品数量 query.addBindValue(dish->qty); // --主商品数量
query.addBindValue(dish->options); // --主商品客制换Options; query.addBindValue(dish->options); // --主商品客制换Options;
...@@ -326,11 +333,11 @@ bool PrintCupStickPosDB::insertNormalProd(OrderObject* orderObj, const QString& ...@@ -326,11 +333,11 @@ bool PrintCupStickPosDB::insertNormalProd(OrderObject* orderObj, const QString&
if(!query.exec()) { if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database: Insert tb_main_prod_refinfo Error--->>>>]"<<query.lastError().text()<<QString::number(query.lastError().type()); QLOG_ERROR()<<"[<<<<---SqlServer Database: Insert tb_main_prod_refinfo Error--->>>>]"<<query.lastError().text()<<QString::number(query.lastError().type());
QLOG_ERROR()<<QString("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, " QLOG_ERROR()<<QString("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, "
" prod_seq, prod_code, prod_name, prod_price, prod_qty, prod_optionsCode, prod_discount, prod_discountName," " prod_seq, prod_code, prod_name, prod_resv0, prod_resv5, prod_price, prod_qty, prod_optionsCode, prod_discount, prod_discountName,"
" prod_starDiscount, prod_starDiscountName, prod_owner) " " prod_starDiscount, prod_starDiscountName, prod_owner) "
"VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15) select @@identity ").arg(posCheckNo.toInt()) "VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17) select @@identity ").arg(posCheckNo.toInt())
.arg(orderObj->id).arg(orderObj->orderStatus).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")) .arg(orderObj->id).arg(orderObj->orderStatus).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss"))
.arg(i+1).arg(dish->code).arg(dish->name).arg(dish->price).arg(dish->qty).arg(dish->options) .arg(i+1).arg(dish->code).arg(dish->name).arg(dish->changePriceFlag).arg(dish->enProductName).arg(dish->price).arg(dish->qty).arg(dish->options)
.arg(dish->promotionPrice * dish->promotionQty).arg(dish->promotionName).arg(dish->starPromotionPrice * dish->starPromotionQty) .arg(dish->promotionPrice * dish->promotionQty).arg(dish->promotionName).arg(dish->starPromotionPrice * dish->starPromotionQty)
.arg(dish->starPromotionName).arg(dish->userName); .arg(dish->starPromotionName).arg(dish->userName);
...@@ -384,27 +391,28 @@ bool PrintCupStickPosDB::insertNormalSubProd(OrderObject* orderObj, const int ma ...@@ -384,27 +391,28 @@ bool PrintCupStickPosDB::insertNormalSubProd(OrderObject* orderObj, const int ma
} }
query.prepare("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, " query.prepare("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, "
" prod_seq, prod_code, prod_name, prod_price, prod_qty, prod_optionsCode, parent_id ) " " prod_seq, prod_code, prod_name, prod_resv5, prod_price, prod_qty, prod_optionsCode, parent_id ) "
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) select @@identity "); "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) select @@identity ");
query.addBindValue(posCheckNo.toInt()); // --小票号 query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号 query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int); query.addBindValue(orderObj->orderStatus); // --订单状态(int);
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间 query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue(0); // --商品序号; query.addBindValue(0); // --商品序号;
query.addBindValue(subdish->code); // --主商品SKU query.addBindValue(subdish->code); // --商品SKU
query.addBindValue(subdish->name); // --主商品名称 query.addBindValue(subdish->name); // --商品名称
query.addBindValue(subdish->price); // --主商品价格 query.addBindValue(subdish->enProductName); // --商品英文名称
query.addBindValue(subdish->qty); // --主商品数量 query.addBindValue(subdish->price); // --商品价格
query.addBindValue(subdish->options); // --主商品客制换Options; query.addBindValue(subdish->qty); // --商品数量
query.addBindValue(subdish->options); // --商品客制换Options;
query.addBindValue(mainProdIndex); // --父商品ID; 表字段 parent_id; query.addBindValue(mainProdIndex); // --父商品ID; 表字段 parent_id;
if(!query.exec()) { if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database: Insert tb_main_prod_refinfo Error--->>>>]"<<query.lastError().text()<<QString::number(query.lastError().type()); QLOG_ERROR()<<"[<<<<---SqlServer Database: Insert tb_main_prod_refinfo Error--->>>>]"<<query.lastError().text()<<QString::number(query.lastError().type());
QLOG_ERROR()<<QString("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, " QLOG_ERROR()<<QString("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, "
" prod_seq, prod_code, prod_name, prod_price, prod_qty, prod_optionsCode, parent_id) " " prod_seq, prod_code, prod_name, prod_resv5, prod_price, prod_qty, prod_optionsCode, parent_id) "
"VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11) select @@identity ").arg(posCheckNo.toInt()) "VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12) select @@identity ").arg(posCheckNo.toInt())
.arg(orderObj->id).arg(orderObj->orderStatus).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")) .arg(orderObj->id).arg(orderObj->orderStatus).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss"))
.arg(0).arg(subdish->code).arg(subdish->name).arg(subdish->price).arg(subdish->qty).arg(subdish->options) .arg(0).arg(subdish->code).arg(subdish->name).arg(subdish->enProductName).arg(subdish->price).arg(subdish->qty).arg(subdish->options)
.arg(mainProdIndex); .arg(mainProdIndex);
break; break;
......
...@@ -747,8 +747,11 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -747,8 +747,11 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
" is_birthday, create_datetime, created_by, modify_datetime, modified_by, accept_name, accept_address, accept_phone, order_id, " " is_birthday, create_datetime, created_by, modify_datetime, modified_by, accept_name, accept_address, accept_phone, order_id, "
" order_status, waybill_id, take_no, deliver_phone, deliver_name, disPlateformFee, memo, reserve3, reserve4, reserve0, reserve6, reserve7, reserve5," " order_status, waybill_id, take_no, deliver_phone, deliver_name, disPlateformFee, memo, reserve3, reserve4, reserve0, reserve6, reserve7, reserve5,"
" appointed_time, appointed_remindTemplate, order_type, channel, platform_source," " appointed_time, appointed_remindTemplate, order_type, channel, platform_source,"
" pay_way, customer_id, customer_name, msr_no, store_id, sub_store_id, store_name, store_address, is_package, order_discount, total_price) " " pay_way, customer_id, customer_name, msr_no, store_id, sub_store_id, store_name, store_address, is_package, order_discount, total_price, "
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ?, ?, ?)"); " orderPayType, sbkAppPayType, sbkAppPayValue, sbkAppRefundPayValue, orderTransFlowNo, orderRefundTransFlowNo, "
" pluginVersion, packageSku, thirdPartyOrderId, discountShopFee, packFee, packDiscount, deliveryFee, deliveryDiscount ) "
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ?, ?, ?, "
" ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )" );
query.addBindValue(posCheckNo.toInt()); // --小票号 query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->lastName); // --顾客-姓 query.addBindValue(orderObj->lastName); // --顾客-姓
query.addBindValue(orderObj->consigneeName); // --顾客-全名 query.addBindValue(orderObj->consigneeName); // --顾客-全名
...@@ -817,6 +820,21 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -817,6 +820,21 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
query.addBindValue(orderObj->orderDiscount); query.addBindValue(orderObj->orderDiscount);
query.addBindValue(orderObj->totalPrice); query.addBindValue(orderObj->totalPrice);
query.addBindValue(0); // OMS订单支付类型 待定, 预留
query.addBindValue(orderObj->sbkAppPayType);
query.addBindValue(orderObj->sbkAppPayValue);
query.addBindValue(orderObj->sbkAppRefundPayValue);
query.addBindValue(orderObj->thirdPartyBatch);
query.addBindValue( "" ); // orderRefundTransFlowNo 目前还没有三方订单 销售/退货的交易流水不一致情况;
query.addBindValue( APP_VERSION ); // 插件版本号;
query.addBindValue(orderObj->packageSku); // 打包sku;
query.addBindValue(orderObj->thirdPartyOrderId); // 三方订单号
query.addBindValue(0); // 商家优惠; 目前暂时使用不到,预留;
query.addBindValue(orderObj->packageFee); //打包费
query.addBindValue(orderObj->packDiscount); //打包折扣
query.addBindValue(orderObj->deliveryPrice); // 配送费;
query.addBindValue(orderObj->deliveryDiscount); // 配送费折扣;
QLOG_INFO()<<QString("[<<<--PrintSumBillPosDB::insertOrderSumBill waybillId:%1-->>>>]").arg((orderObj->waybillId).length()?orderObj->waybillId:QString("0")); QLOG_INFO()<<QString("[<<<--PrintSumBillPosDB::insertOrderSumBill waybillId:%1-->>>>]").arg((orderObj->waybillId).length()?orderObj->waybillId:QString("0"));
if(!query.exec()) if(!query.exec())
...@@ -828,9 +846,12 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -828,9 +846,12 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
" accept_name, accept_address, accept_phone, order_id, " " accept_name, accept_address, accept_phone, order_id, "
" waybill_id, take_no, deliver_phone, deliver_name, disPlateformFee, memo, reserve3, reserve4, reserve0, reserve6, reserve7, reserve5," " waybill_id, take_no, deliver_phone, deliver_name, disPlateformFee, memo, reserve3, reserve4, reserve0, reserve6, reserve7, reserve5,"
" appointed_time, appointed_remindTemplate, order_type, channel, platform_source," " appointed_time, appointed_remindTemplate, order_type, channel, platform_source,"
" pay_way, customer_id, customer_name, msr_no, store_id, sub_store_id, store_name, store_address, is_package, order_discount, total_price) " " pay_way, customer_id, customer_name, msr_no, store_id, sub_store_id, store_name, store_address, is_package, order_discount, total_price"
" orderPayType, sbkAppPayType, sbkAppPayValue, sbkAppRefundPayValue, orderTransFlowNo, orderRefundTransFlowNo, "
" pluginVersion, packageSku, thirdPartyOrderId, discountShopFee, packFee, packDiscount, deliveryFee, deliveryDiscount ) "
"VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18," "VALUES(%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14, %15, %16, %17, %18,"
" %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30,%31, %32, %33, %34, %35, %36, %37, %38, %39, %40, %41, %42)") " %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29, %30,%31, %32, %33, %34, %35, %36, %37, %38, %39, %40, %41, %42"
" %43, %44, %45, %46, %47, %48, %49, %50,%51, %52, %53, %54, %55, %56 )")
.arg(posCheckNo.toInt()) .arg(posCheckNo.toInt())
.arg(orderObj->lastName).arg(orderObj->customerName).arg(temp_customerSex) .arg(orderObj->lastName).arg(orderObj->customerName).arg(temp_customerSex)
.arg(0).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")).arg(FlowControl::GetInstance()._GetCashierId()).arg("").arg("") .arg(0).arg(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")).arg(FlowControl::GetInstance()._GetCashierId()).arg("").arg("")
...@@ -843,7 +864,10 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString& ...@@ -843,7 +864,10 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
.arg(orderObj->expectDate).arg(tempAppointedRemindTemplate).arg(orderObj->orderType).arg(orderObj->channel) .arg(orderObj->expectDate).arg(tempAppointedRemindTemplate).arg(orderObj->orderType).arg(orderObj->channel)
.arg(orderObj->platformSource).arg(orderObj->payWay) .arg(orderObj->platformSource).arg(orderObj->payWay)
.arg(orderObj->customerId).arg(orderObj->customerName).arg(orderObj->msr_no).arg(orderObj->storeId).arg(orderObj->subStoreId) .arg(orderObj->customerId).arg(orderObj->customerName).arg(orderObj->msr_no).arg(orderObj->storeId).arg(orderObj->subStoreId)
.arg(orderObj->storeName).arg(orderObj->storeAddress).arg(orderObj->isPackage).arg(orderObj->orderDiscount).arg(orderObj->totalPrice); .arg(orderObj->storeName).arg(orderObj->storeAddress).arg(orderObj->isPackage).arg(orderObj->orderDiscount).arg(orderObj->totalPrice)
.arg(0).arg(orderObj->sbkAppPayType).arg(orderObj->sbkAppPayValue).arg(orderObj->sbkAppRefundPayValue).arg(orderObj->thirdPartyBatch)
.arg("").arg(APP_VERSION).arg(orderObj->packageSku).arg(orderObj->thirdPartyOrderId).arg(0).arg(orderObj->packageFee)
.arg(orderObj->packDiscount).arg(orderObj->deliveryPrice).arg(orderObj->deliveryDiscount);
} else { } else {
QLOG_INFO()<<QString("[<<<<---SqlServer Database:Insert OrderId %1 Into customer_info Success--->>>>]").arg(orderObj->id); QLOG_INFO()<<QString("[<<<<---SqlServer Database:Insert OrderId %1 Into customer_info Success--->>>>]").arg(orderObj->id);
result = true; result = true;
......
...@@ -11,7 +11,7 @@ class CouponsObject : public QObject ...@@ -11,7 +11,7 @@ class CouponsObject : public QObject
Q_OBJECT Q_OBJECT
Q_PROPERTY (QString couponSeq READ getCouponSeq WRITE setCouponSeq) Q_PROPERTY (QString couponSeq READ getCouponSeq WRITE setCouponSeq)
Q_PROPERTY (QString code READ getCode WRITE setCode) Q_PROPERTY (QString code READ getCode WRITE setCode)
Q_PROPERTY (QString name READ getName WRITE setName) Q_PROPERTY (QString couponName READ getCouponName WRITE setCouponName)
Q_PROPERTY (QString menuItem READ getMenuItem WRITE setMenuItem) Q_PROPERTY (QString menuItem READ getMenuItem WRITE setMenuItem)
Q_PROPERTY (QString couponType READ getCouponType WRITE setCouponType) Q_PROPERTY (QString couponType READ getCouponType WRITE setCouponType)
Q_PROPERTY (bool storeChannel READ getStoreChannel WRITE setStoreChannel) Q_PROPERTY (bool storeChannel READ getStoreChannel WRITE setStoreChannel)
...@@ -33,7 +33,7 @@ public: ...@@ -33,7 +33,7 @@ public:
void FetchDataFromJson(const QJsonObject &json); void FetchDataFromJson(const QJsonObject &json);
QString couponSeq; //券序号 QString couponSeq; //券序号
QString code; //券ID号 QString code; //券ID号
QString name; //券名 QString couponName; //券名
QString menuItem; // 菜单分类 QString menuItem; // 菜单分类
QString couponType; //券类型 QString couponType; //券类型
bool storeChannel; //是否门店券; bool storeChannel; //是否门店券;
...@@ -57,8 +57,8 @@ protected: ...@@ -57,8 +57,8 @@ protected:
inline QString getCode(){ return code; } inline QString getCode(){ return code; }
inline void setCode(const QString& v){ code = v; } inline void setCode(const QString& v){ code = v; }
inline QString getName(){ return name; } inline QString getCouponName(){ return couponName; }
inline void setName(const QString& v){ name = v; } inline void setCouponName(const QString& v){ couponName = v; }
inline QString getMenuItem(){ return menuItem; } inline QString getMenuItem(){ return menuItem; }
inline void setMenuItem(const QString& v){ menuItem = v; } inline void setMenuItem(const QString& v){ menuItem = v; }
......
...@@ -34,6 +34,8 @@ class dishesObject : public QObject ...@@ -34,6 +34,8 @@ class dishesObject : public QObject
Q_PROPERTY (int starPromotionPrice READ getStarPromotionPrice WRITE setStarPromotionPrice) Q_PROPERTY (int starPromotionPrice READ getStarPromotionPrice WRITE setStarPromotionPrice)
Q_PROPERTY (QString userName READ getUserName WRITE setUserName) Q_PROPERTY (QString userName READ getUserName WRITE setUserName)
Q_PROPERTY (int changePriceFlag READ getChangePriceFlag WRITE setChangePriceFlag)
public: public:
explicit dishesObject(QObject *parent = 0):QObject(parent){} explicit dishesObject(QObject *parent = 0):QObject(parent){}
...@@ -66,7 +68,9 @@ public: ...@@ -66,7 +68,9 @@ public:
int starPromotionQty; int starPromotionQty;
int starPromotionPrice; int starPromotionPrice;
QString userName ; QString userName ;
int changePriceFlag;
QString chgPrcFlgCode;
QList<dishesObject*> sub_products; QList<dishesObject*> sub_products;
protected: protected:
...@@ -143,6 +147,9 @@ protected: ...@@ -143,6 +147,9 @@ protected:
inline QString getUserName(){ return userName; } inline QString getUserName(){ return userName; }
inline void setUserName(const QString& v){ userName = v; } inline void setUserName(const QString& v){ userName = v; }
inline int getChangePriceFlag(){ return changePriceFlag; }
inline void setChangePriceFlag(const int& v){ changePriceFlag = v; }
}; };
#endif // DISHESOBJECT_H #endif // DISHESOBJECT_H
...@@ -6,10 +6,16 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare ...@@ -6,10 +6,16 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare
{ {
qDeleteAll(proList); qDeleteAll(proList);
proList.clear(); proList.clear();
qDeleteAll(coupList); qDeleteAll(coupList);
coupList.clear(); coupList.clear();
qDeleteAll(orderCoupList);
orderCoupList.clear();
qDeleteAll(paymentList); qDeleteAll(paymentList);
paymentList.clear(); paymentList.clear();
const QMetaObject *m = order.metaObject(); const QMetaObject *m = order.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++) for( int i=m->propertyOffset(); i<m->propertyCount(); i++)
{ {
...@@ -18,14 +24,22 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare ...@@ -18,14 +24,22 @@ OrderObject::OrderObject(const OrderObject &order, QObject *parent):QObject(pare
QVariant value = order.property(key.toUtf8()); QVariant value = order.property(key.toUtf8());
this->setProperty(key.toUtf8(), value); this->setProperty(key.toUtf8(), value);
} }
foreach (auto ptr, order.proList) { foreach (auto ptr, order.proList) {
dishesObject *product=new dishesObject(*ptr,this); dishesObject *product=new dishesObject(*ptr,this);
this->proList.append(product); this->proList.append(product);
} }
foreach (auto ptr, order.coupList) { foreach (auto ptr, order.coupList) {
CouponsObject *coupon=new CouponsObject(*ptr,this); CouponsObject *coupon=new CouponsObject(*ptr,this);
this->coupList.append(coupon); this->coupList.append(coupon);
} }
foreach (auto ptr, order.orderCoupList) {
CouponsObject *orderCoupon=new CouponsObject(*ptr,this);
this->orderCoupList.append(orderCoupon);
}
foreach (auto ptr, order.paymentList) { foreach (auto ptr, order.paymentList) {
PaymentObject *payment=new PaymentObject(*ptr,this); PaymentObject *payment=new PaymentObject(*ptr,this);
this->paymentList.append(payment); this->paymentList.append(payment);
...@@ -36,10 +50,16 @@ OrderObject& OrderObject::operator =(const OrderObject& order) ...@@ -36,10 +50,16 @@ OrderObject& OrderObject::operator =(const OrderObject& order)
{ {
qDeleteAll(proList); qDeleteAll(proList);
proList.clear(); proList.clear();
qDeleteAll(coupList); qDeleteAll(coupList);
coupList.clear(); coupList.clear();
qDeleteAll(orderCoupList);
orderCoupList.clear();
qDeleteAll(paymentList); qDeleteAll(paymentList);
paymentList.clear(); paymentList.clear();
const QMetaObject *m = order.metaObject(); const QMetaObject *m = order.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++) for( int i=m->propertyOffset(); i<m->propertyCount(); i++)
{ {
...@@ -48,18 +68,27 @@ OrderObject& OrderObject::operator =(const OrderObject& order) ...@@ -48,18 +68,27 @@ OrderObject& OrderObject::operator =(const OrderObject& order)
QVariant value = order.property(key.toUtf8()); QVariant value = order.property(key.toUtf8());
this->setProperty(key.toUtf8(), value); this->setProperty(key.toUtf8(), value);
} }
foreach (auto ptr, order.proList) { foreach (auto ptr, order.proList) {
dishesObject *product=new dishesObject(*ptr,this); dishesObject *product=new dishesObject(*ptr,this);
this->proList.append(product); this->proList.append(product);
} }
foreach (auto ptr, order.coupList) { foreach (auto ptr, order.coupList) {
CouponsObject *coupon = new CouponsObject(*ptr,this); CouponsObject *coupon = new CouponsObject(*ptr,this);
this->coupList.append(coupon); this->coupList.append(coupon);
} }
foreach (auto ptr, order.orderCoupList) {
CouponsObject *orderCoupon = new CouponsObject(*ptr,this);
this->orderCoupList.append(orderCoupon);
}
foreach (auto ptr, order.paymentList) { foreach (auto ptr, order.paymentList) {
PaymentObject *payment=new PaymentObject(*ptr,this); PaymentObject *payment=new PaymentObject(*ptr,this);
this->paymentList.append(payment); this->paymentList.append(payment);
} }
return *this; return *this;
} }
...@@ -67,28 +96,54 @@ void OrderObject::FromJson(const QJsonObject &json) ...@@ -67,28 +96,54 @@ void OrderObject::FromJson(const QJsonObject &json)
{ {
qDeleteAll(proList); qDeleteAll(proList);
proList.clear(); proList.clear();
qDeleteAll(coupList); qDeleteAll(coupList);
coupList.clear(); coupList.clear();
qDeleteAll(orderCoupList);
orderCoupList.clear();
qDeleteAll(paymentList); qDeleteAll(paymentList);
paymentList.clear(); paymentList.clear();
FetchDataFromJson(json); FetchDataFromJson(json);
QJsonArray products = json[JSON_PRODUCTS].toArray(); QJsonArray products = json[JSON_PRODUCTS].toArray();
// 组装改价标识Code;使用 QTextStream 流操作;
// 目前Pos-Key最长9位,Simphony-sku程序容量长度28(右对齐,左补空格),第14位存储 改价标识(从右至左第15位);
QString tempChgPrcFlgCode;
QTextStream ss( &tempChgPrcFlgCode );
ss.setFieldWidth(14);
ss.setFieldAlignment(QTextStream::AlignRight);
ss.setPadChar(' ');
foreach(QJsonValue product, products) foreach(QJsonValue product, products)
{ {
QJsonObject proJson = product.toObject(); QJsonObject proJson = product.toObject();
dishesObject *proObject = new dishesObject(this); dishesObject *proObject = new dishesObject(this);
//初始商品数据信息; //初始商品数据信息;
proObject->qty = 0; proObject->qty = 0;
proObject->price = 0;
proObject->qtyNoSplit = 0; proObject->qtyNoSplit = 0;
proObject->promotionQty = 0; proObject->promotionQty = 0;
proObject->promotionPrice = 0; proObject->promotionPrice = 0;
proObject->starPromotionQty = 0; proObject->starPromotionQty = 0;
proObject->starPromotionPrice = 0; proObject->starPromotionPrice = 0;
proObject->couponSeq=QString('0'); proObject->couponSeq=QString('0');
proObject->changePriceFlag = 0;
proObject->chgPrcFlgCode = QString("");
proObject->FetchDataFromJson(proJson); proObject->FetchDataFromJson(proJson);
// 商品数据赋值后,组装改价标识Code;便于传递给POS;
ss << proObject->code;
proObject->chgPrcFlgCode.append( QString::number(proObject->changePriceFlag) );
proObject->chgPrcFlgCode.append( tempChgPrcFlgCode );
// 清空缓存数据,防止重叠脏数据;
tempChgPrcFlgCode = QString("");
proList.append(proObject); proList.append(proObject);
} }
//解析预约实物-券信息 List;
//解析WSG-券信息 List;
QJsonArray coupons = json[JSON_COUPONS].toArray(); QJsonArray coupons = json[JSON_COUPONS].toArray();
foreach(QJsonValue coupon, coupons) foreach(QJsonValue coupon, coupons)
{ {
...@@ -97,7 +152,8 @@ void OrderObject::FromJson(const QJsonObject &json) ...@@ -97,7 +152,8 @@ void OrderObject::FromJson(const QJsonObject &json)
coupObject->consumeDiscountAmount = 0; coupObject->consumeDiscountAmount = 0;
coupObject->consumeFactAmount = 0; coupObject->consumeFactAmount = 0;
coupObject->storeChannel = false; coupObject->storeChannel = false;
coupObject->name=""; coupObject->couponName="";
coupObject->couponType = "";
coupObject->discount=""; coupObject->discount="";
coupObject->couponSeq=QString('0'); coupObject->couponSeq=QString('0');
coupObject->isShowGiver=0; coupObject->isShowGiver=0;
...@@ -105,6 +161,24 @@ void OrderObject::FromJson(const QJsonObject &json) ...@@ -105,6 +161,24 @@ void OrderObject::FromJson(const QJsonObject &json)
coupList.append(coupObject); coupList.append(coupObject);
} }
//解析 组合支付券信息 List;
QJsonArray orderCoupons = json[JSON_EXCHANGECOUPONS].toArray();
foreach(QJsonValue orderCoupon, orderCoupons)
{
QJsonObject orderCoupJson = orderCoupon.toObject();
CouponsObject *orderCoupObject = new CouponsObject(this);
orderCoupObject->consumeDiscountAmount = 0;
orderCoupObject->consumeFactAmount = 0;
orderCoupObject->storeChannel = false;
orderCoupObject->couponName="";
orderCoupObject->couponType = "";
orderCoupObject->discount="";
orderCoupObject->couponSeq=QString('0');
orderCoupObject->isShowGiver=0;
orderCoupObject->FetchDataFromJson(orderCoupJson);
orderCoupList.append(orderCoupObject);
}
//解析多条支付方式信息 List; //解析多条支付方式信息 List;
QJsonArray payments = json[JSON_PAYMENTS].toArray(); QJsonArray payments = json[JSON_PAYMENTS].toArray();
foreach(QJsonValue payment, payments) foreach(QJsonValue payment, payments)
...@@ -117,6 +191,45 @@ void OrderObject::FromJson(const QJsonObject &json) ...@@ -117,6 +191,45 @@ void OrderObject::FromJson(const QJsonObject &json)
paymObject->FetchDataFromJson(paymJson); paymObject->FetchDataFromJson(paymJson);
paymentList.append(paymObject); paymentList.append(paymObject);
} }
// 转换并存储 星巴克支付方式相关信息;
//星巴克App端支付方式: 1:支付宝; 2:微信; 3:银联; 4:SVC卡; 5/7:MOP使用券或星星抵扣 0元支付; 8:IStore订单; 9:银联支付(=3);
sbkAppPayType = 0 ; sbkAppPayValue = ""; sbkAppRefundPayValue = "";
switch (payWay) {
case 1: {
sbkAppPayType = 78;
sbkAppPayValue = thirdPartyBatch;
}
break;
case 2: {
sbkAppPayType = 77;
sbkAppPayValue = thirdPartyBatch;
}
break;
case 4: {
sbkAppPayType = 14;
sbkAppPayValue = payfmId;
if (6 == orderStatus) { sbkAppRefundPayValue = refundFmId; }
}
break;
case 5: {
sbkAppPayType = 1;
sbkAppPayValue = "-1";
}
break;
case 7: {
sbkAppPayType = 1;
sbkAppPayValue = "-1";
}
break;
case 3:
break;
case 9:
break;
default:
break;
}
return; return;
} }
......
...@@ -113,11 +113,16 @@ public: ...@@ -113,11 +113,16 @@ public:
void FromJson(const QJsonObject &json); void FromJson(const QJsonObject &json);
void FetchDataFromJson(const QJsonObject& json); void FetchDataFromJson(const QJsonObject& json);
QList<dishesObject*>proList; QList<dishesObject*>proList;
//扩展 星巴克 预约实物的券信息 List; //扩展 星巴克 预约实物的券信息 List;
QList<CouponsObject*>coupList; QList<CouponsObject*>coupList;
//扩展 星巴克 多条支付方式入机 List; //扩展 星巴克 多条支付方式入机 List;
QList<PaymentObject*>paymentList; QList<PaymentObject*>paymentList;
//扩展 星巴克 组合支付的券信息 List;
QList<CouponsObject*>orderCoupList;
public: public:
QString id; //编号 QString id; //编号
...@@ -219,6 +224,10 @@ public: ...@@ -219,6 +224,10 @@ public:
int dataBaseIsORSCancleInt; int dataBaseIsORSCancleInt;
QString dataBasePosOrderCheckNo; QString dataBasePosOrderCheckNo;
int sbkAppPayType;
QString sbkAppPayValue;
QString sbkAppRefundPayValue;
QString getChannelName(); QString getChannelName();
QString getOrderStatusDec(); QString getOrderStatusDec();
......
...@@ -15,6 +15,7 @@ class SingleProductObject : public QObject ...@@ -15,6 +15,7 @@ class SingleProductObject : public QObject
Q_PROPERTY (int price READ getPrice WRITE setPrice) Q_PROPERTY (int price READ getPrice WRITE setPrice)
Q_PROPERTY (bool isCoupon READ getIsCoupon WRITE setIsCoupon) Q_PROPERTY (bool isCoupon READ getIsCoupon WRITE setIsCoupon)
Q_PROPERTY (QString nickname READ getNickname WRITE setNickname) Q_PROPERTY (QString nickname READ getNickname WRITE setNickname)
Q_PROPERTY (QString enProductName READ getEnProductName WRITE setEnProductName)
public: public:
explicit SingleProductObject(QObject *parent = 0):QObject(parent){} explicit SingleProductObject(QObject *parent = 0):QObject(parent){}
...@@ -27,6 +28,7 @@ public: ...@@ -27,6 +28,7 @@ public:
int price; int price;
bool isCoupon; //此单品是否是券; bool isCoupon; //此单品是否是券;
QString nickname; //券商品昵称 QString nickname; //券商品昵称
QString enProductName; //券商品英文名
protected: protected:
inline QString getCode(){ return code; } inline QString getCode(){ return code; }
...@@ -47,6 +49,9 @@ protected: ...@@ -47,6 +49,9 @@ protected:
inline QString getNickname(){ return nickname; } inline QString getNickname(){ return nickname; }
inline void setNickname(const QString& v){ nickname = v; } inline void setNickname(const QString& v){ nickname = v; }
inline QString getEnProductName(){ return enProductName; }
inline void setEnProductName(const QString& v){ enProductName = v; }
}; };
#endif // SINGLEPRODUCTOBJECT_H #endif // SINGLEPRODUCTOBJECT_H
...@@ -75,7 +75,7 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -75,7 +75,7 @@ void DetailForm::InitData(OrderObject *orderObject)
//订单在 POS 上最新开单号:红色属性设置; //订单在 POS 上最新开单号:红色属性设置;
ui->detailLab8->setText(QString("[ %1 ]").arg(orderObject->dataBasePosOrderCheckNo)); ui->detailLab8->setText(QString("[ %1 ]").arg(orderObject->dataBasePosOrderCheckNo));
int i = 0, pNum = 0, coupNum = 0; int i = 0, pNum = 0, coupNum = 0, orderCoupNum = 0;
/*********************************** 遍历 商品列表:商品信息展示 begin ***************************************************/ /*********************************** 遍历 商品列表:商品信息展示 begin ***************************************************/
for(; i<orderObject->proList.count(); i++,pNum++) for(; i<orderObject->proList.count(); i++,pNum++)
{ {
...@@ -145,34 +145,42 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -145,34 +145,42 @@ void DetailForm::InitData(OrderObject *orderObject)
for(; coupNum<orderObject->coupList.count(); coupNum++,pNum++) for(; coupNum<orderObject->coupList.count(); coupNum++,pNum++)
{ {
CouponsObject* tempCouponObj = orderObject->coupList[coupNum]; CouponsObject* tempCouponObj = orderObject->coupList[coupNum];
// 新增展示券名+号码;
ui->detailTable0->insertRow(pNum); ui->detailTable0->insertRow(pNum);
QString tempName = tempCouponObj->name.length()?tempCouponObj->name:QString::fromLocal8Bit("券"); QString tempName = tempCouponObj->couponName.length()?tempCouponObj->couponName:QString::fromLocal8Bit("券");
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(tempName)); // 券名 tempName.append("\r\n");
tempName.append(tempCouponObj->code);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(tempName)); // 券名+券号码
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignCenter); ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem(QString('-'))); // 券价格 ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem(QString('-'))); // 券价格
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter); ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString::number(1))); // 券数量 ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString::number(1))); // 券数量
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignCenter); ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignCenter);
// 新增展示券号码;
if(tempCouponObj->code.length()){ // 新增展示券优惠项;
if(tempCouponObj->consumeDiscountAmount > 0){
pNum++; pNum++;
ui->detailTable0->insertRow(pNum); ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(tempCouponObj->code)); // 券号码 ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem( QString::fromLocal8Bit("券折扣:") )); // 券号折扣
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight); ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem( QString("-"))); ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem( Penny2Dollar(tempCouponObj->consumeDiscountAmount) ));
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter); ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString("-") )); ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString("1") ));
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft); ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft);
} }
// 新增展示券优惠项; // 新增展示券商品项;
if(tempCouponObj->discount.length()){ if( tempCouponObj->skus.size() ){
pNum++; pNum++;
QString nameSku = "";
nameSku.append( tempCouponObj->skus[0]->name ).append("\r\n");
nameSku.append( tempCouponObj->skus[0]->code );
ui->detailTable0->insertRow(pNum); ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem( QString::fromLocal8Bit("券折扣:") )); // 券号折扣 ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem( nameSku ));
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight); ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem( Penny2Dollar(tempCouponObj->consumeDiscountAmount) )); ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem( Penny2Dollar(tempCouponObj->skus[0]->price) ));
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter); ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString("1") )); ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem( QString::number( tempCouponObj->skus[0]->qty) ));
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft); ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft);
} }
} }
...@@ -243,6 +251,44 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -243,6 +251,44 @@ void DetailForm::InitData(OrderObject *orderObject)
pNum = pNum + 1; pNum = pNum + 1;
} }
/*********************************** 遍历 组合支付券列表 begin *********************************************************/
for(; orderCoupNum<orderObject->orderCoupList.count(); orderCoupNum++,pNum++)
{
CouponsObject* tempOrderCouponObj = orderObject->orderCoupList[orderCoupNum];
ui->detailTable0->insertRow(pNum);
QString tempOrderName = tempOrderCouponObj->couponName.length()?tempOrderCouponObj->couponName:QString::fromLocal8Bit("组合支付券");
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(tempOrderName)); // 券名
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem(Penny2Dollar(tempOrderCouponObj->consumeFactAmount) ) ); //券实付金额
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString::number(1))); // 券数量
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignCenter);
// 新增展示券号码;
if(tempOrderCouponObj->code.length()){
pNum++;
ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(tempOrderCouponObj->code)); // 券号码
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem( QString("-")));
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString("-") ));
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft);
}
// 新增展示券优惠项;
if(tempOrderCouponObj->discount.length()){
pNum++;
ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem( QString::fromLocal8Bit("组合券折扣:") )); // 券号折扣
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem( Penny2Dollar(tempOrderCouponObj->consumeDiscountAmount) ));
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString("1") ));
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft);
}
}
/*********************************** 遍历 预约实物 券列表:券信息展示 end *********************************************************/
//设置行高根据文字进行自适应;用来重复显示主商品的配料信息; //设置行高根据文字进行自适应;用来重复显示主商品的配料信息;
ui->detailTable0->resizeRowsToContents(); ui->detailTable0->resizeRowsToContents();
......
...@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico" ...@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif #endif
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***// //***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 2,2020,9,29 FILEVERSION 2,2020,12,18
PRODUCTVERSION 2,2020,9,29 PRODUCTVERSION 2,2020,12,18
//*************************************************************************// //*************************************************************************//
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
...@@ -27,12 +27,12 @@ VS_VERSION_INFO VERSIONINFO ...@@ -27,12 +27,12 @@ VS_VERSION_INFO VERSIONINFO
VALUE "CompanyName", "ShangHai.Freemud Co., Ltd." VALUE "CompanyName", "ShangHai.Freemud Co., Ltd."
VALUE "FileDescription", "Delivery Order Plugin Application" VALUE "FileDescription", "Delivery Order Plugin Application"
VALUE "InternalName", "fmTakeout.exe" VALUE "InternalName", "fmTakeout.exe"
VALUE "LegalCopyright", "Copyright (C)2014-2020" VALUE "LegalCopyright", "Copyright (C)2014-2021"
VALUE "OriginalFilename", "fmTakeout.exe" VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "Delivery Order Plugin" VALUE "ProductName", "Delivery Order Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***// //***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "2.2020.9.29" VALUE "ProductVersion", "2.2020.12.18"
VALUE "FileVersion", "2.2020.9.29" VALUE "FileVersion", "2.2020.12.18"
//*************************************************************************// //*************************************************************************//
END END
END END
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
//#define APP_VERSION "2.2020.5.26" //#define APP_VERSION "2.2020.5.26"
//#define APP_VERSION "2.2020.6.29" //#define APP_VERSION "2.2020.6.29"
//#define APP_VERSION "2.2020.8.10" //#define APP_VERSION "2.2020.8.10"
#define APP_VERSION "2.2020.9.29" //#define APP_VERSION "2.2020.9.29"
//#define APP_VERSION "2.2020.10.27"
#define APP_VERSION "2.2020.12.18"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号 //修正版本号时,切记修正 FmTakeout.rc 中的版本号
...@@ -121,6 +123,7 @@ ...@@ -121,6 +123,7 @@
#define JSON_COUNT "count" #define JSON_COUNT "count"
#define JSON_PRODUCTS "products" #define JSON_PRODUCTS "products"
#define JSON_COUPONS "coupons" #define JSON_COUPONS "coupons"
#define JSON_EXCHANGECOUPONS "exchangeCoupons"
#define JSON_PAYMENTS "PaymentObjs" #define JSON_PAYMENTS "PaymentObjs"
#define JSON_SUBPRODUCTS "addExtra" #define JSON_SUBPRODUCTS "addExtra"
#define JSON_COUPONPRODUCTS "skus" #define JSON_COUPONPRODUCTS "skus"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment