Commit acf01b49 by wuyang.zou

1、POS取消订单,订单进入异常单,双击进入订单详情页面。送达时间显示合理信息;

    2、退单的时候,频繁输入错误授权号[00不在范围内的账号]。退款到账了,但是这个
订单入机失败。进入了异常单队列,显示【POS录单失败】。再次退单提示【取消订单失败
,蜂鸟拒绝退单】
    3、外卖订单中有收费附加品,OMS插件端进入订单详情页面。收费附加品名称跟在了商品规格后面,但是收费附加品价格未显示/被计入
    4、伙伴角色登录系统后退单,在经理授权框页面点击取消按钮,立即操作POS页面的菜单,这时会把该笔订单正向录入列表,不打印小票
    5、App退单时,svc支付方式,绑定的第三方交易流水号为 退款fmid;
    6、完善录外卖订单,锁屏功能,避免店员在进入录外卖单前点击的商品进入外卖订单内,导致与实际外卖订单价格不一致问题;
    7、更新FmTakeout.exe 版本号信息
    8、修复运力不足导致 oms 取消订单后,没有录入POS BUG;
    9、完善退货授权的获取;
    10、增加日志记录大小(10 M* 40个)
parent 1d1cbf00
......@@ -53,9 +53,6 @@ int GetCaboxAReAuth::getUserHasCashBox(const QString& operatorId){
if(query.first()) {
result= query.value(0).toInt()?1:0;
QLOG_INFO()<<"[<<<<---SqlServer Database operatorId:%1,getUserHasCashBox:%2--->>>>]"<<operatorId<<result;
QLOG_INFO()<<"[<<<<---SqlServer Database operatorId:%1,:getUserHasCashBox query.value(0):%2--->>>>]"<<operatorId<<query.value(0).toInt();
QLOG_INFO()<<"[<<<<---SqlServer Database operatorId:%1,:getUserHasCashBox query.value(1):%2--->>>>]"<<operatorId<<query.value(1).toInt();
QLOG_INFO()<<"[<<<<---SqlServer Database operatorId:%1,:getUserHasCashBox query.value(2):%2--->>>>]"<<operatorId<<query.value(2).toInt();
} else {
result = 0;
}
......@@ -72,14 +69,15 @@ int GetCaboxAReAuth::getUserRefundAuth(const QString& operatorId){
}
int result = 0;
QSqlQuery query(m_sqlDb);
//query.prepare(QString("select distinct 0 from employee ").arg(operatorId));
query.prepare(QString("select distinct 0 from employee "));
QLOG_INFO()<<QString("SELECT count(*) FROM [DataStore].[dbo].[EMPLOYEE] AS A , [DataStore].[dbo].[ROLE_EMPLOYEE] AS B WHERE A.EmployeeID = B.EmployeeID and B.RoleID in (2,10) AND ObjectNumber ='%1'").arg(operatorId);
query.prepare(QString("SELECT count(*) FROM [DataStore].[dbo].[EMPLOYEE] AS A , [DataStore].[dbo].[ROLE_EMPLOYEE] AS B WHERE A.EmployeeID = B.EmployeeID and B.RoleID in (2,10) AND ObjectNumber ='%1'").arg(operatorId));
if(!query.exec()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database:getUserRefundAuth--->>>>]"<<query.lastError().text();
result= 0;
}
if(query.first()) {
result= 0; //等待后期更新;
result= query.value(0).toInt()?1:0;
QLOG_INFO()<<"[<<<<---SqlServer Database operatorId:%1,getUserRefundAuth:%2--->>>>]"<<operatorId<<result;
} else {
result = 0;
}
......
......@@ -67,7 +67,7 @@ void OrderObject::FetchDataFromJson(const QJsonObject &json)
QString OrderObject::getChannelName()
{
QLOG_INFO() << QString("[<<<<---OrderObject:getChannelName [%3]--->>>>]").arg(channel);
QLOG_INFO() << QString("[<<<<---OrderObject:getChannelName [%1]--->>>>]").arg(channel);
if ("MOD" == channel && 3 != orderType){
return QString::fromLocal8Bit("星巴克");
}else if("ELE" == channel){
......@@ -76,10 +76,11 @@ QString OrderObject::getChannelName()
return QString::fromLocal8Bit("百度外卖");
}else if("MOD" == channel && 3 == orderType){
return QString::fromLocal8Bit("客诉单");
}else if("HM" == channel){
return QString::fromLocal8Bit("盒马");
}
else{
}else{
QLOG_INFO() << QString("[<<<<---OrderObject:getChannelName HM :[%1]--->>>>]").arg(channel);
if("HM" == channel){
return QString::fromLocal8Bit("盒马");
}
return QString::fromLocal8Bit("未知");
}
}
......
......@@ -13,6 +13,7 @@ class OrderObject : public QObject
Q_PROPERTY (QString id READ getId WRITE setId)
Q_PROPERTY (QString payfmId READ getPayfmId WRITE setPayfmId)
Q_PROPERTY (QString thirdPartyBatch READ getThirdPartyBatch WRITE setThirdPartyBatch)
Q_PROPERTY (QString refundFmId READ getRefundFmId WRITE setRefundFmId)
Q_PROPERTY (QString thirdPartyOrderId READ getThirdPartyOrderId WRITE setThirdPartyOrderId)
Q_PROPERTY (int orderType READ getOrderType WRITE setOrderType)
......@@ -73,7 +74,7 @@ public:
typedef enum {
NewOrder=2,Confirmed,Sendout,Finished,Refunded,RequestRefund
,Locked=-1,AgreeRefund=30,RefuseRefund=40 ,SimExcept=50
,Locked=-1,AgreeRefund=30,RefuseRefund=40 ,SimExceptSale=50,SimExceptRefund=51
/*,Refunded=6 Cancled=6(订单状态是6时,是退单); 退单目前本佳那边不区分*/
}OrderStatus;
......@@ -92,6 +93,7 @@ public:
QString id; //编号
QString payfmId; //FM唯一码
QString thirdPartyBatch ; //第三方交易流水号
QString refundFmId; //退货时,不应该传递第三方交易流水号[应该使用退货的非码ID]
QString thirdPartyOrderId; //第三方订单ID
int orderType; //订单类型: 用来区分是 正常订单(1) 预订单(2) 还是 客诉单:3 (星巴克定义客诉单的类型:12);
QString orgOrderId; //原始订单编号
......@@ -159,6 +161,9 @@ public:
inline QString getThirdPartyBatch()const{return thirdPartyBatch;}
inline void setThirdPartyBatch(const QString& v){thirdPartyBatch = v;}
inline QString getRefundFmId()const{return refundFmId;}
inline void setRefundFmId(const QString& v){refundFmId = v;}
inline QString getThirdPartyOrderId()const{return thirdPartyOrderId;}
inline void setThirdPartyOrderId(const QString& v){thirdPartyOrderId = v;}
......
......@@ -30,7 +30,7 @@
#include <QtGlobal>
#include <iostream>
const int QsLogging::SizeRotationStrategy::MaxBackupCount = 10;
const int QsLogging::SizeRotationStrategy::MaxBackupCount = 40;
QsLogging::RotationStrategy::~RotationStrategy()
{
......
......@@ -44,10 +44,11 @@ void DetailForm::InitData(OrderObject *orderObject)
//订单完成后,送达时间需要更新为 finishTime
if(OrderObject::Finished == orderObject->orderStatus){
ui->detailLab2->setText( (orderObject->finishTime.isEmpty() || 0==orderObject->finishTime.length() )? QString::fromLocal8Bit("已经送达") : orderObject->finishTime);
}else if(OrderObject::Refunded == orderObject->orderStatus){
ui->detailLab2->setText(QString(""));
}else{
ui->detailLab2->setText(orderObject->deliveryTime.isEmpty()? QString::fromLocal8Bit("立即送出") : orderObject->deliveryTime);
ui->detailLab2->setText(orderObject->deliveryTime);
}
//ui->detailLab2->setText(orderObject->deliveryTime.isEmpty()? QString::fromLocal8Bit("立即送出") : orderObject->deliveryTime);
QLOG_INFO() << QString("[<<<<---DetailForm::InitData ui->detailLab2->setText --->>>>]");
ui->detailLab3->setText(orderObject->riderName.isEmpty() ? QString::fromLocal8Bit("暂未指定") : QString::fromLocal8Bit("[姓名]%1 [电话]%2")
......@@ -83,22 +84,23 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString::number(orderObject->proList.at(i)->qty))); // 数量
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignCenter);
/*
// 选项太多,不便于显示;
int j = 0;
dishesObject* tempDishObj = orderObject->proList[i];
for(; j<tempDishObj->sub_products.count(); j++)
{
pNum++;
ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(GetProductName(tempDishObj->sub_products.at(j)))); // 商品名
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem(Penny2Dollar(tempDishObj->sub_products.at(j)->price))); // 价格
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString::number(tempDishObj->sub_products.at(j)->qty))); // 数量
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignCenter);
}
*/
if(tempDishObj->sub_products.at(j)->price > 0){
pNum++;
ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(QString("( ") + GetProductName(tempDishObj->sub_products.at(j)) )); // 商品名
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem(Penny2Dollar(tempDishObj->sub_products.at(j)->price))); // 价格
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString::number(tempDishObj->sub_products.at(j)->qty) +QString(" )") )); // 数量
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft);
}
}
}
// 新增配送费 + 打包费
ui->detailTable0->insertRow(pNum);
......@@ -133,7 +135,7 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailBtn2->setText(GetOperNameByStatus(orderObject->orderStatus, true));
ui->detailBtn2->setProperty("operation", GetOperByStatus(orderObject->orderStatus, true));
ui->detailBtn2->setProperty("orderId", orderObject->id);
if(orderObject->orderStatus != 1 && orderObject->orderStatus != 20 && orderObject->orderStatus != 2 && orderObject->orderStatus != 3 && orderObject->orderStatus != OrderObject::SimExcept)
if(orderObject->orderStatus != 1 && orderObject->orderStatus != 20 && orderObject->orderStatus != 2 && orderObject->orderStatus != 3 && orderObject->orderStatus != OrderObject::SimExceptSale)
{
ui->detailBtn2->hide();
}
......
IDI_ICON ICON DISCARDABLE "logo.ico"
\ No newline at end of file
IDI_ICON ICON DISCARDABLE "logo.ico"
#if defined(UNDER_CE)
#include <winbase.h>
#else
#include <winver.h>
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 2,2018,913,1
PRODUCTVERSION 2,2018,913,1
//*************************************************************************//
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS VS_FF_DEBUG
#else
FILEFLAGS 0x0L
#endif
FILEOS VOS__WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "CompanyName", "ShangHai.Freemud Co., Ltd."
VALUE "FileDescription", "Delivery Order Plug-in Application"
VALUE "InternalName", "fmTakeout.exe"
VALUE "LegalCopyright", "Copyright (C)2013-2018"
VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "Delivery Order Plug-in"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "2.2018.913.1"
VALUE "FileVersion", "2.2018.913.1"
//*************************************************************************//
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
\ No newline at end of file
......@@ -28,7 +28,7 @@ void InitLogger()
QDir().mkdir(logDir);
QString logPath = QString("%1/%2").arg(logDir).arg("log");
DestinationPtr fileDst(DestinationFactory::MakeFileDestination(
logPath, EnableLogRotation, MaxSizeBytes(2*1024*1024), MaxOldLogCount(50)));
logPath, EnableLogRotation, MaxSizeBytes(10*1024*1024), MaxOldLogCount(40)));
logger.addDestination(fileDst);
DestinationPtr consoleDst(DestinationFactory::MakeDebugOutputDestination());
logger.addDestination(consoleDst);
......
......@@ -539,19 +539,40 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
//connect(pBtn, &QPushButton::clicked, this, &MainForm::onMainProcBtnClicked);
}
// SIM录外卖订单出现异常的订单;
if(OrderObject::SimExcept == orderObject->orderStatus)
// SIM录外卖订单出现异常的订单(正向销售单);
if(OrderObject::SimExceptSale == orderObject->orderStatus)
{
qDebug()<<table->objectName()<<"------";
QWidget *pWdg = new QWidget(table);
QHBoxLayout *hLayout = new QHBoxLayout(pWdg);
QPushButton * pBtn = new QPushButton(pWdg);
pBtn->setFixedSize(90, 30);
pBtn->setFixedSize(120, 30);
pBtn->setFocusPolicy(Qt::NoFocus);
pBtn->setObjectName("mainProcBtn");
pBtn->setProperty("orderId", orderObject->id);
//pBtn->setProperty("operation", table->property("operation").toString());
pBtn->setText(QString::fromLocal8Bit("录单失败,未退款"));
pBtn->setDisabled(true);
hLayout->addWidget(pBtn);
hLayout->setMargin(0);
pWdg->setLayout(hLayout);
table->setCellWidget(0, 6, pWdg); // 操作按钮
//connect(pBtn, &QPushButton::clicked, this, &MainForm::onMainProcBtnClicked);
}
// SIM录退货:外卖订单出现异常的订单(已退单);
if(OrderObject::SimExceptRefund == orderObject->orderStatus)
{
qDebug()<<table->objectName()<<"------";
QWidget *pWdg = new QWidget(table);
QHBoxLayout *hLayout = new QHBoxLayout(pWdg);
QPushButton * pBtn = new QPushButton(pWdg);
pBtn->setFixedSize(120, 30);
pBtn->setFocusPolicy(Qt::NoFocus);
pBtn->setObjectName("mainProcBtn");
pBtn->setProperty("orderId", orderObject->id);
//pBtn->setProperty("operation", table->property("operation").toString());
pBtn->setText(QString::fromLocal8Bit("POS录单失败"));
pBtn->setText(QString::fromLocal8Bit("录单失败,已退款"));
pBtn->setDisabled(true);
hLayout->addWidget(pBtn);
hLayout->setMargin(0);
......
......@@ -7,7 +7,12 @@
//#define APP_VERSION "1.20171013.01"
//#define APP_VERSION "2.20180822.01"
#define APP_VERSION "2.20180824.01"
//#define APP_VERSION "2.20180824.01"
//#define APP_VERSION "2.20180905.01"
#define APP_VERSION "2.2018913.1"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号
#define SERVER_PASSWORD "posoperator@freemud.cn"
#define CONFIG_NAME "config.ini"
......@@ -64,6 +69,7 @@
#define JSON_ERRCODE "code"
#define JSON_STATUS "status"
#define JSON_ORDERSTATUS "orderStatus"
#define JSON_REFUNDFMID "refundFmId"
#define JSON_STATUSDESC "status_desc"
#define JSON_MESSAGE "message"
#define JSON_ERRMSG "message"
......
[FmServer]
;<<<非码POS插件:登陆注册+5分钟心跳 服务器地址>>>
loginUrl=https://delposservice.starbucks.net/backstage/pos/
loginUrl=https://delposserviceapi.starbucks.net/backstage/pos/
;星巴克开发环境:loginUrl=http://10.92.194.44:8083/backstage/pos/
;星巴克测试环境:loginUrl=http://delposservice.stg.starbucks.net/pos/
;星巴克生产环境:loginUrl=https://delposservice.starbucks.net/pos/
;星巴克测试环境:loginUrl=http://delposserviceapi.stg.starbucks.net/pos/
;星巴克生产环境:loginUrl=https://delposserviceapi.starbucks.net/backstage/pos/
;<<<非码外卖拉取订单服务器地址>>>
orderUrl=https://delposservice.starbucks.net/backstage/order/
;星巴克测试环境: orderUrl=https://delposservice.stg.starbucks.net/backstage/order/
;星巴克开发环境: orderUrl=https://delposservice.dev.starbucks.net/backstage/order/
;星巴克生产环境: orderUrl=https://delposservice.starbucks.net/backstage/order/
orderUrl=https://delposserviceapi.starbucks.net/backstage/order/
;星巴克测试环境: orderUrl=https://delposserviceapi.stg.starbucks.net/backstage/order/
;星巴克开发环境: orderUrl=https://delposserviceapi.dev.starbucks.net/backstage/order/
;星巴克生产环境: orderUrl=https://delposserviceapi.starbucks.net/backstage/order/
[Interface]
;接口名称
......
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