Commit 8f6509a4 by wuyang.zou

fix bug:

    <1>门店营业状态显示
    <2>避免重装系统导致门店当天全部订单重复入机;
parent 6796b1b4
...@@ -342,6 +342,8 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -342,6 +342,8 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
orderObject->packDiscount = 0; orderObject->packDiscount = 0;
orderObject->deliveryPrice = 0; orderObject->deliveryPrice = 0;
orderObject->deliveryDiscount = 0; orderObject->deliveryDiscount = 0;
orderObject->forwardPosStatus =0;
orderObject->negativePosStatus =0;
orderObject->FromJson(jsonObject); orderObject->FromJson(jsonObject);
orderObject->pushOrderType=0; orderObject->pushOrderType=0;
...@@ -450,7 +452,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -450,7 +452,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
switch (orderObject->orderStatus){ switch (orderObject->orderStatus){
case OrderObject::NewOrder: case OrderObject::NewOrder:
// 存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期 // 存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期
if( (!orderObject->isPush && !orderObject->appointmentDayFlag) || (!orderObject->isORSPush && orderObject->appointmentDayFlag) ) if( ( orderObject->forwardPosStatus!=1 && !orderObject->isPush && !orderObject->appointmentDayFlag) || ( orderObject->forwardPosStatus!=1 && !orderObject->isORSPush && orderObject->appointmentDayFlag) )
{ {
if(orderObject->appointmentDayFlag){ if(orderObject->appointmentDayFlag){
orderObject->orsPushOrderType = 1; orderObject->orsPushOrderType = 1;
...@@ -483,7 +485,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -483,7 +485,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
case OrderObject::Confirmed: case OrderObject::Confirmed:
// 针对已经确认的订单:POS可能录过,也可能没有; 因此就需要 orderObject->isPush 来判断POS是否录过:true:录过;false:没录过; // 针对已经确认的订单:POS可能录过,也可能没有; 因此就需要 orderObject->isPush 来判断POS是否录过:true:录过;false:没录过;
// 存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期 // 存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期
if( (!orderObject->isPush && !orderObject->appointmentDayFlag) || (!orderObject->isORSPush && orderObject->appointmentDayFlag) ) if( (orderObject->forwardPosStatus!=1 && !orderObject->isPush && !orderObject->appointmentDayFlag) || (orderObject->forwardPosStatus!=1 && !orderObject->isORSPush && orderObject->appointmentDayFlag) )
{ {
if(orderObject->appointmentDayFlag){ if(orderObject->appointmentDayFlag){
orderObject->orsPushOrderType = 1; orderObject->orsPushOrderType = 1;
...@@ -516,7 +518,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -516,7 +518,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
break; break;
case OrderObject::Sendout: case OrderObject::Sendout:
// 存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期 // 存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期
if( (!orderObject->isPush && !orderObject->appointmentDayFlag) || (!orderObject->isORSPush && orderObject->appointmentDayFlag) ) if( (orderObject->forwardPosStatus!=1 && !orderObject->isPush && !orderObject->appointmentDayFlag) || (orderObject->forwardPosStatus!=1 && !orderObject->isORSPush && orderObject->appointmentDayFlag) )
{ {
if(orderObject->appointmentDayFlag){ if(orderObject->appointmentDayFlag){
orderObject->orsPushOrderType = 1; orderObject->orsPushOrderType = 1;
...@@ -549,7 +551,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -549,7 +551,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
break; break;
case OrderObject::Finished: case OrderObject::Finished:
// 存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期 // 存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期
if( (!orderObject->isPush && !orderObject->appointmentDayFlag) || (!orderObject->isORSPush && orderObject->appointmentDayFlag) ) if( (orderObject->forwardPosStatus!=1 && !orderObject->isPush && !orderObject->appointmentDayFlag) || (orderObject->forwardPosStatus!=1 && !orderObject->isORSPush && orderObject->appointmentDayFlag) )
{ {
if(orderObject->appointmentDayFlag){ if(orderObject->appointmentDayFlag){
orderObject->orsPushOrderType = 1; orderObject->orsPushOrderType = 1;
...@@ -597,16 +599,17 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -597,16 +599,17 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
return; return;
} }
QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis: Refund Order orderObject->id:%1 ,dataBaseIsOrderExistInt:%2 ,dataBaseIsPushInt:%3 ,dataBaseIsCancleInt:%4 ," QLOG_INFO() << QString("[<<<<---FmTakeout _OrderAnalysis: Refund Order orderObject->id:%1 ,dataBaseIsOrderExistInt:%2 ,dataBaseIsPushInt:%3 ,dataBaseIsCancleInt:%4 ,"
"dataBaseIsORSPushInt:%5 ,dataBaseIsORSCancleInt:%6 ,dataBasePosOrderCheckNo:%7--->>>>]") "dataBaseIsORSPushInt:%5 ,dataBaseIsORSCancleInt:%6 ,dataBasePosOrderCheckNo:%7,negativePosStatus:%8--->>>>]")
.arg(orderObject->id).arg(orderObject->dataBaseIsOrderExistInt).arg(orderObject->dataBaseIsPushInt).arg(orderObject->dataBaseIsCancleInt) .arg(orderObject->id).arg(orderObject->dataBaseIsOrderExistInt).arg(orderObject->dataBaseIsPushInt).arg(orderObject->dataBaseIsCancleInt)
.arg(orderObject->dataBaseIsORSPushInt).arg(orderObject->dataBaseIsORSCancleInt).arg(orderObject->dataBasePosOrderCheckNo); .arg(orderObject->dataBaseIsORSPushInt).arg(orderObject->dataBaseIsORSCancleInt).arg(orderObject->dataBasePosOrderCheckNo).arg(orderObject->negativePosStatus);
bool bIsRefundOrder = orderObject->dataBaseIsCancleInt; bool bIsRefundOrder = orderObject->dataBaseIsCancleInt;
//bool bIsORSCancleOrder = orderObject->dataBaseIsORSCancleInt; //bool bIsORSCancleOrder = orderObject->dataBaseIsORSCancleInt;
//存在两种Case:正常退货单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物退货单没有入机 && 预约实物送达日期 //存在两种Case:正常退货单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物退货单没有入机 && 预约实物送达日期
//退货时:预约实物退货的case不存在;因此需要修改此部分逻辑判断; //退货时:预约实物退货的case不存在;因此需要修改此部分逻辑判断;
//if( (!bIsRefundOrder && !orderObject->appointmentDayFlag) || (!bIsORSCancleOrder && orderObject->appointmentDayFlag) ) //if( (!bIsRefundOrder && !orderObject->appointmentDayFlag) || (!bIsORSCancleOrder && orderObject->appointmentDayFlag) )
if( (!bIsRefundOrder) ) //为避免换系统盘导致订单重复入机,顾需要额外使用 OMS提供的订单是否入机状态进行过滤;
if( (!bIsRefundOrder) && orderObject->negativePosStatus!=1 )
{ {
/***case:校验此订单是否已经push到POS:订单还没push到POS[POS没有模拟点单或没有返回小票号]***/ /***case:校验此订单是否已经push到POS:订单还没push到POS[POS没有模拟点单或没有返回小票号]***/
//内存中处理存在BUG:现在改用 直接读数据库中的标志; //内存中处理存在BUG:现在改用 直接读数据库中的标志;
...@@ -1052,7 +1055,7 @@ bool FlowControl::_ConfirmOrder(const QString &orderId) ...@@ -1052,7 +1055,7 @@ bool FlowControl::_ConfirmOrder(const QString &orderId)
emit changeOrderStatus(orderObject, oldOrderStatus); emit changeOrderStatus(orderObject, oldOrderStatus);
if (OrderObject::Confirmed == orderStatus){ if (OrderObject::Confirmed == orderStatus){
//存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期 //存在两种Case: 正常销售单没有入机成功 && 非预约日期(录配送费判断)/默认值是初始化0; || 预约实物销售单没有入机成功 && 预约实物送达日期
if( (!orderObject->isPush && !orderObject->appointmentDayFlag) || (!orderObject->isORSPush && orderObject->appointmentDayFlag) ) if( (orderObject->forwardPosStatus!=1 && !orderObject->isPush && !orderObject->appointmentDayFlag) || (orderObject->forwardPosStatus!=1 && !orderObject->isORSPush && orderObject->appointmentDayFlag) )
{ {
if(orderObject->appointmentDayFlag){ if(orderObject->appointmentDayFlag){
orderObject->orsPushOrderType = 1; orderObject->orsPushOrderType = 1;
...@@ -1912,20 +1915,24 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb ...@@ -1912,20 +1915,24 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
if(order_p->pushOrderType==1) { if(order_p->pushOrderType==1) {
SimProcOrderDB::getInstance().updatePushOrderStatus(orderId,1); SimProcOrderDB::getInstance().updatePushOrderStatus(orderId,1);
order_p->isPush= true; order_p->isPush= true;
order_p->forwardPosStatus = 1;
} else if(0 == order_p->pushOrderType) { } else if(0 == order_p->pushOrderType) {
SimProcOrderDB::getInstance().updateRefundOrderStatus(orderId,1); SimProcOrderDB::getInstance().updateRefundOrderStatus(orderId,1);
order_p->isCancle = true; order_p->isCancle = true;
order_p->negativePosStatus = 1;
} }
//处理预约实物入机后数据库更新; //处理预约实物入机后数据库更新;
if(order_p->orsPushOrderType==1 && order_p->appointmentDayFlag) { if(order_p->orsPushOrderType==1 && order_p->appointmentDayFlag) {
SimProcOrderDB::getInstance().updateORSPushOrderStatus(orderId,1); SimProcOrderDB::getInstance().updateORSPushOrderStatus(orderId,1);
order_p->isORSPush= true; order_p->isORSPush= true;
order_p->forwardPosStatus = 1;
} else if(0 == order_p->orsPushOrderType && order_p->appointmentDayFlag) { } else if(0 == order_p->orsPushOrderType && order_p->appointmentDayFlag) {
SimProcOrderDB::getInstance().updateORSCancleOrderStatus(orderId,1); SimProcOrderDB::getInstance().updateORSCancleOrderStatus(orderId,1);
//避免重复退预约配送费订单 //避免重复退预约配送费订单
SimProcOrderDB::getInstance().updateRefundOrderStatus(orderId,1); SimProcOrderDB::getInstance().updateRefundOrderStatus(orderId,1);
order_p->isCancle = true; order_p->isCancle = true;
order_p->isORSCancle = true; order_p->isORSCancle = true;
order_p->negativePosStatus = 1;
} }
bRetReportCheckNo = SimProcOrderDB::getInstance().updatePosOrderCheckNo(orderId,posCheckNo); bRetReportCheckNo = SimProcOrderDB::getInstance().updatePosOrderCheckNo(orderId,posCheckNo);
...@@ -2497,7 +2504,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2497,7 +2504,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
//避免:销售单,退货单 两个方向都已经入机完成订单重复入机【&& !orderObject->appointmentDayFlag || && orderObject->appointmentDayFlag】; //避免:销售单,退货单 两个方向都已经入机完成订单重复入机【&& !orderObject->appointmentDayFlag || && orderObject->appointmentDayFlag】;
// if(bIsPushOrder && bIsRefundOrder && !orderObject->appointmentDayFlag || bIsORSPushOrder && bIsORSCancleOrder && orderObject->appointmentDayFlag ) // if(bIsPushOrder && bIsRefundOrder && !orderObject->appointmentDayFlag || bIsORSPushOrder && bIsORSCancleOrder && orderObject->appointmentDayFlag )
if(bIsPushOrder && bIsRefundOrder || bIsORSPushOrder && bIsORSCancleOrder || !retGetDbOrderAllFlag) { if( bIsPushOrder && bIsRefundOrder || bIsORSPushOrder && bIsORSCancleOrder || !retGetDbOrderAllFlag ) {
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---Simphony_Script请求[ACTION:01:] bIsPushOrder: ;bIsRefundOrder: ;--->>>>>]")<<bIsPushOrder<<bIsRefundOrder; QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---Simphony_Script请求[ACTION:01:] bIsPushOrder: ;bIsRefundOrder: ;--->>>>>]")<<bIsPushOrder<<bIsRefundOrder;
//error = QString::fromLocal8Bit("该订单已经被POS系统录入完成"); //error = QString::fromLocal8Bit("该订单已经被POS系统录入完成");
error = QString::fromLocal8Bit("This Delivery Order Have Been Recorded In POS System Successfully"); error = QString::fromLocal8Bit("This Delivery Order Have Been Recorded In POS System Successfully");
...@@ -2507,6 +2514,17 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2507,6 +2514,17 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
return true; return true;
} }
// 正向单不是最后一次录入必须结合订单入机类型,而退货是最后一次入机,故无需 额外条件组合判断;
if( (orderObject->pushOrderType==1 || orderObject->orsPushOrderType==1) && (1==orderObject->forwardPosStatus) || (1==orderObject->negativePosStatus) ) {
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---Simphony_Script请求[ACTION:01:] forwardPosStatus: negativePosStatus: ;--->>>>>]")
<<orderObject->forwardPosStatus<<orderObject->negativePosStatus;
error = QString::fromLocal8Bit("This Delivery Order Have Been Recorded In POS System Successfully");
m_OrderEntryMutex.lock();
m_simValidOrdersList.removeOne(orderObject->id);
m_OrderEntryMutex.unlock();
return true;
}
//录单时才触发隐藏 主窗口 + 锁定悬浮框; //录单时才触发隐藏 主窗口 + 锁定悬浮框;
if(!m_bFloatFromLockSt){ if(!m_bFloatFromLockSt){
m_bFloatFromLockSt = true; //更新悬浮框的锁定状态=true; m_bFloatFromLockSt = true; //更新悬浮框的锁定状态=true;
...@@ -2730,6 +2748,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2730,6 +2748,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
cObj.insert("deliveryDiscount", orderObject->deliveryDiscount>0?orderObject->deliveryDiscount:0); cObj.insert("deliveryDiscount", orderObject->deliveryDiscount>0?orderObject->deliveryDiscount:0);
// 整单折扣在Simphony扩展程序中没有实际意义,目前使用此字段透传 插件的版本号信息; // 整单折扣在Simphony扩展程序中没有实际意义,目前使用此字段透传 插件的版本号信息;
QString pluginVersion = APP_VERSION ; QString pluginVersion = APP_VERSION ;
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("waybillId", (orderObject->waybillId).length()?orderObject->waybillId:QString("0") );
cObj.insert("pos_sale_id", orderObject->posCheckNo); cObj.insert("pos_sale_id", orderObject->posCheckNo);
......
...@@ -69,6 +69,8 @@ class OrderObject : public QObject ...@@ -69,6 +69,8 @@ class OrderObject : public QObject
Q_PROPERTY (int productPrice READ getProductPrice WRITE setProductPrice) Q_PROPERTY (int productPrice READ getProductPrice WRITE setProductPrice)
Q_PROPERTY (int totalPrice READ getTotalPrice WRITE setTotalPrice) Q_PROPERTY (int totalPrice READ getTotalPrice WRITE setTotalPrice)
Q_PROPERTY (int orderStatus READ getOrderStatus WRITE setOrderStatus) Q_PROPERTY (int orderStatus READ getOrderStatus WRITE setOrderStatus)
Q_PROPERTY (int forwardPosStatus READ getForwardPosStatus WRITE setForwardPosStatus)
Q_PROPERTY (int negativePosStatus READ getNegativePosStatus WRITE setNegativePosStatus)
Q_PROPERTY (int deliveryStatus READ getDeliveryStatus WRITE setDeliveryStatus) Q_PROPERTY (int deliveryStatus READ getDeliveryStatus WRITE setDeliveryStatus)
Q_PROPERTY (int payStatus READ getPayStatus WRITE setPayStatus) Q_PROPERTY (int payStatus READ getPayStatus WRITE setPayStatus)
Q_PROPERTY (int refundStatus READ getRefundStatus WRITE setRefundStatus) Q_PROPERTY (int refundStatus READ getRefundStatus WRITE setRefundStatus)
...@@ -161,6 +163,8 @@ public: ...@@ -161,6 +163,8 @@ public:
int productPrice; int productPrice;
int totalPrice; int totalPrice;
int orderStatus; int orderStatus;
int forwardPosStatus; // 正向单入机状态: 0:未知 1: 成功 2:失败;
int negativePosStatus; // 负向单同上;
int deliveryStatus; int deliveryStatus;
int payStatus; int payStatus;
int refundStatus; int refundStatus;
...@@ -350,6 +354,12 @@ public: ...@@ -350,6 +354,12 @@ public:
inline int getOrderStatus()const{return orderStatus;} inline int getOrderStatus()const{return orderStatus;}
inline void setOrderStatus(const int& v){orderStatus = v;} inline void setOrderStatus(const int& v){orderStatus = v;}
inline int getForwardPosStatus()const{return forwardPosStatus;}
inline void setForwardPosStatus(const int& v){forwardPosStatus = v;}
inline int getNegativePosStatus()const{return negativePosStatus;}
inline void setNegativePosStatus(const int& v){negativePosStatus = v;}
inline int getDeliveryStatus()const{return deliveryStatus;} inline int getDeliveryStatus()const{return deliveryStatus;}
inline void setDeliveryStatus(const int& v){deliveryStatus = v;} inline void setDeliveryStatus(const int& v){deliveryStatus = v;}
......
...@@ -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,2019,1125,1 FILEVERSION 2,2019,1224,1
PRODUCTVERSION 2,2019,1125,1 PRODUCTVERSION 2,2019,1224,1
//*************************************************************************// //*************************************************************************//
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)2013-2019" VALUE "LegalCopyright", "Copyright (C)2014-2019"
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.2019.1125.1" VALUE "ProductVersion", "2.2019.1224.1"
VALUE "FileVersion", "2.2019.1125.1" VALUE "FileVersion", "2.2019.1224.1"
//*************************************************************************// //*************************************************************************//
END END
END END
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
//#define APP_VERSION "2.2019.729.1" //#define APP_VERSION "2.2019.729.1"
//#define APP_VERSION "2.2019.815.1" //#define APP_VERSION "2.2019.815.1"
//#define APP_VERSION "2.2019.916.2" //#define APP_VERSION "2.2019.916.2"
#define APP_VERSION "2.2019.1125.1" #define APP_VERSION "2.2019.1224.1"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号 //修正版本号时,切记修正 FmTakeout.rc 中的版本号
......
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