Commit 8f6509a4 by wuyang.zou

fix bug:

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