Commit 80d5ce8d by wuyang.zou

1:新增:当店员正在为线下客户服务时,触发异常请求:actionId=6,gloSimErrCode=20;用来解锁外卖插件的悬浮框;防止插件程序被锁住;

2:新增功能:(1)POS录单成功:汇报小票号;(2)POS录单失败:汇报ERROR信息;此订单入机情况及时汇报给OMS方便监控门店;
3:新增兼容折扣优惠功能
4:变更日志存放模式:由  c\Freemud\fmPlugin\log* 每个日志文件固定大小存在  变成    c\Freemud\fmPlugin\log\FmPlugin2018-10-25.log  根据日期生成日志文件
parent 3f7705ee
...@@ -68,6 +68,20 @@ private: ...@@ -68,6 +68,20 @@ private:
}OrderOperation; }OrderOperation;
//存放向OMS汇报的结构体: 订单入机POS的情况;
typedef struct REPORTOMS_ORDERRECORD
{
QString orderNo; //订单号
QString type; //订单状态:[3:正向单;6:退货单; 9:POS机系统级别错误; 0:未知订单状态]
QString status; //订单入机状态:[1:成功; 2:失败]
QString opUser; //当前收银员;
QString recordDate; //入机成功、入机失败的时间[时间格式: 2018-10-09 10:41:22]
QString storeId; //门店编号
QString remark; //备注:入机出错信息
QString checkNo; //小票号:入机成功时的小票号;
int reqResult; //向OMS请求汇报结果;
}RepOMSRecordOrderInfo;
private: private:
// 门店信息 // 门店信息
QString m_storeId; QString m_storeId;
...@@ -82,12 +96,14 @@ private: ...@@ -82,12 +96,14 @@ private:
QTimer *m_clearTimer; QTimer *m_clearTimer;
QTimer *m_heartTimer; QTimer *m_heartTimer;
QTimer *m_pullTimer; QTimer *m_pullTimer;
QTimer *m_reportOMSReocrdOrderTimer;
QTimer *m_loginTimer; QTimer *m_loginTimer;
QTimer *m_notifySimPullTimer; QTimer *m_notifySimPullTimer;
QTimer *m_remindCasherBlinkFloatTimer; //插件程序收到外卖订单后,需要一致提醒店员[直到此外卖订单被全部录入到POS系统] QTimer *m_remindCasherBlinkFloatTimer; //插件程序收到外卖订单后,需要一致提醒店员[直到此外卖订单被全部录入到POS系统]
// 网络通信 // 网络通信
BillSocket *m_loginSocket; BillSocket *m_loginSocket;
BillSocket *m_pullOrderSocket; BillSocket *m_pullOrderSocket;
BillSocket *m_reportOMSRecordOrderSocket;
BillSocket *m_pullOrderListSocket; BillSocket *m_pullOrderListSocket;
BillSocket *m_procOrderSocket; BillSocket *m_procOrderSocket;
BillSocket *m_pullDishesSocket; BillSocket *m_pullDishesSocket;
...@@ -113,10 +129,18 @@ private: ...@@ -113,10 +129,18 @@ private:
//订单拉取记录 //订单拉取记录
QList<PullOrderInfo*> m_orderPullList; QList<PullOrderInfo*> m_orderPullList;
QMutex m_PullOrderDataMutex; QMutex m_PullOrderDataMutex;
//向OMS汇报订单的POS入机情况 队列;
QList<RepOMSRecordOrderInfo*> m_orderRecordRepOMSList;
QMutex m_RepOMSRecordOrderMutex;
//订单操作互斥信号 //订单操作互斥信号
//QSemaphore semaphore; //QSemaphore semaphore;
QMutex m_OrderEntryMutex; QMutex m_OrderEntryMutex;
//插件订单创造新订单,订单数据解析时,必须加锁,防止订单对象的数据被窜改;
//QMutex m_UpdateOrderObjMutex;
signals: signals:
// 发送信号给自己 做登陆 // 发送信号给自己 做登陆
void doLogin(); void doLogin();
...@@ -289,6 +313,13 @@ private slots: ...@@ -289,6 +313,13 @@ private slots:
* 返回:是否成功 * 返回:是否成功
* */ * */
bool _RefundOrder(const QString& orderId, int reasonCode, const QString &reason,const QString& dishesListString); bool _RefundOrder(const QString& orderId, int reasonCode, const QString &reason,const QString& dishesListString);
/* 功能:定时触发向OMS 汇报本地POS订单的入机情况;
* 参数:NULL
* 返回:NULL
* */
void _ReportOMSRecordOrderInfo();
/* 功能:获取Json对象的字符 /* 功能:获取Json对象的字符
* 参数:NULL * 参数:NULL
* 返回:Json字符串 * 返回:Json字符串
......
...@@ -50,8 +50,8 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj,const QString& ...@@ -50,8 +50,8 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj,const QString&
QSqlQuery query(m_sqlDb); QSqlQuery query(m_sqlDb);
query.prepare("INSERT INTO tb_msr_customer_info(chk_num, last_name, full_name, gender, " query.prepare("INSERT INTO tb_msr_customer_info(chk_num, last_name, full_name, gender, "
"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, "
"waybill_id, take_no, deliver_phone, deliver_name) " "order_status, waybill_id, take_no, deliver_phone, deliver_name) "
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); "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); // --顾客-全名
...@@ -72,6 +72,7 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj,const QString& ...@@ -72,6 +72,7 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj,const QString&
query.addBindValue(orderObj->addressDetail); // --收货者 query.addBindValue(orderObj->addressDetail); // --收货者
query.addBindValue(orderObj->consigneePhone); // --收货者-电话 query.addBindValue(orderObj->consigneePhone); // --收货者-电话
query.addBindValue(orderObj->id); // --订单编号 query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int);
query.addBindValue((orderObj->waybillId).length()?orderObj->waybillId:QString("0") ); // --物流编号 query.addBindValue((orderObj->waybillId).length()?orderObj->waybillId:QString("0") ); // --物流编号
query.addBindValue((orderObj->pickupCode).length()?orderObj->pickupCode.toInt():0 ); // --取餐号; query.addBindValue((orderObj->pickupCode).length()?orderObj->pickupCode.toInt():0 ); // --取餐号;
query.addBindValue(orderObj->riderPhone); // --配送者电话 query.addBindValue(orderObj->riderPhone); // --配送者电话
......
...@@ -17,6 +17,11 @@ class dishesObject : public QObject ...@@ -17,6 +17,11 @@ class dishesObject : public QObject
Q_PROPERTY (int price READ getprice WRITE setprice) Q_PROPERTY (int price READ getprice WRITE setprice)
Q_PROPERTY (QString options READ getoptions WRITE setoptions) Q_PROPERTY (QString options READ getoptions WRITE setoptions)
Q_PROPERTY (QString promotionSku READ getpromotionSku WRITE setpromotionSku)
Q_PROPERTY (QString promotionName READ getpromotionName WRITE setpromotionName)
Q_PROPERTY (int promotionQty READ getpromotionQty WRITE setpromotionQty)
Q_PROPERTY (int promotionPrice READ getpromotionPrice WRITE setpromotionPrice)
public: public:
explicit dishesObject(QObject *parent = 0):QObject(parent){} explicit dishesObject(QObject *parent = 0):QObject(parent){}
dishesObject(const dishesObject& dish,QObject* parent=0); dishesObject(const dishesObject& dish,QObject* parent=0);
...@@ -31,6 +36,12 @@ public: ...@@ -31,6 +36,12 @@ public:
int packagePrice; int packagePrice;
int price; int price;
QString options; QString options;
QString promotionSku;
QString promotionName;
int promotionQty;
int promotionPrice;
QList<dishesObject*> sub_products; QList<dishesObject*> sub_products;
protected: protected:
...@@ -60,6 +71,19 @@ protected: ...@@ -60,6 +71,19 @@ protected:
inline int getqty(){ return qty; } inline int getqty(){ return qty; }
inline void setqty(const int& v){ qty = v; } inline void setqty(const int& v){ qty = v; }
inline QString getpromotionSku(){ return promotionSku; }
inline void setpromotionSku(const QString& v){ promotionSku = v; }
inline QString getpromotionName(){ return promotionName; }
inline void setpromotionName(const QString& v){ promotionName = v; }
inline int getpromotionPrice(){ return promotionPrice; }
inline void setpromotionPrice(const int& v){ promotionPrice = v; }
inline int getpromotionQty(){ return promotionQty; }
inline void setpromotionQty(const int& v){ promotionQty = v; }
}; };
#endif // DISHESOBJECT_H #endif // DISHESOBJECT_H
...@@ -56,7 +56,10 @@ class OrderObject : public QObject ...@@ -56,7 +56,10 @@ class OrderObject : public QObject
Q_PROPERTY (int updateTime READ getUpdateTime WRITE setUpdateTime) Q_PROPERTY (int updateTime READ getUpdateTime WRITE setUpdateTime)
Q_PROPERTY (int needInvoice READ getNeedInvoice WRITE setNeedInvoice) Q_PROPERTY (int needInvoice READ getNeedInvoice WRITE setNeedInvoice)
Q_PROPERTY (int deliveryPrice READ getDeliveryPrice WRITE setDeliveryPrice) Q_PROPERTY (int deliveryPrice READ getDeliveryPrice WRITE setDeliveryPrice)
Q_PROPERTY (int deliveryDiscount READ getDeliveryDiscount WRITE setDeliveryDiscount)
Q_PROPERTY (int packageFee READ getPackageFee WRITE setPackageFee) Q_PROPERTY (int packageFee READ getPackageFee WRITE setPackageFee)
Q_PROPERTY (int packDiscount READ getPackDiscount WRITE setPackDiscount)
Q_PROPERTY (int orderDiscount READ getOrderDiscount WRITE setOrderDiscount)
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)
...@@ -135,8 +138,12 @@ public: ...@@ -135,8 +138,12 @@ public:
int updateTime; int updateTime;
QString customerSex; //用户性别 1- 男2- 女 QString customerSex; //用户性别 1- 男2- 女
int needInvoice; int needInvoice;
int deliveryPrice; // 配送费 int deliveryPrice; // 配送费
int deliveryDiscount; // 配送费折扣
int packageFee; // 打包费 int packageFee; // 打包费
int packDiscount; // 打包费折扣
int orderDiscount; // 订单整单折扣金额
int productPrice; int productPrice;
int totalPrice; int totalPrice;
int orderStatus; int orderStatus;
...@@ -287,9 +294,18 @@ public: ...@@ -287,9 +294,18 @@ public:
inline int getDeliveryPrice()const{return deliveryPrice;} inline int getDeliveryPrice()const{return deliveryPrice;}
inline void setDeliveryPrice(const int& v){deliveryPrice = v;} inline void setDeliveryPrice(const int& v){deliveryPrice = v;}
inline int getDeliveryDiscount()const{return deliveryDiscount;}
inline void setDeliveryDiscount(const int& v){deliveryDiscount = v;}
inline int getPackageFee()const{return packageFee;} inline int getPackageFee()const{return packageFee;}
inline void setPackageFee(const int& v){packageFee = v;} inline void setPackageFee(const int& v){packageFee = v;}
inline int getPackDiscount()const{return packDiscount;}
inline void setPackDiscount(const int& v){packDiscount = v;}
inline int getOrderDiscount()const{return orderDiscount;}
inline void setOrderDiscount(const int& v){orderDiscount = v;}
inline int getProductPrice()const{return productPrice;} inline int getProductPrice()const{return productPrice;}
inline void setProductPrice(const int& v){productPrice = v;} inline void setProductPrice(const int& v){productPrice = v;}
......
...@@ -101,6 +101,18 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -101,6 +101,18 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft); ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft);
} }
} }
// 新增展示优惠活动的优惠项
if(tempDishObj->promotionSku.length()){
pNum++;
ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(QString("( ") + tempDishObj->promotionName )); // 商品名
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem( QString("-") + Penny2Dollar(tempDishObj->promotionPrice))); // 价格
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString::number(tempDishObj->promotionQty) +QString(" )") )); // 数量
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft);
}
} }
// 新增配送费 + 打包费 // 新增配送费 + 打包费
ui->detailTable0->insertRow(pNum); ui->detailTable0->insertRow(pNum);
...@@ -110,6 +122,17 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -110,6 +122,17 @@ void DetailForm::InitData(OrderObject *orderObject)
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 (orderObject->deliveryDiscount > 0 && orderObject->deliveryDiscount<10000){
ui->detailTable0->insertRow(pNum+1);
ui->detailTable0->setItem(pNum+1, 0, new QTableWidgetItem( QString("( ") + QString::fromLocal8Bit("配送费折扣"))); // 配送费折扣
ui->detailTable0->item(pNum+1, 0)->setTextAlignment(Qt::AlignRight);
ui->detailTable0->setItem(pNum+1, 1, new QTableWidgetItem( QString("-") + Penny2Dollar(orderObject->deliveryDiscount))); // 价格
ui->detailTable0->item(pNum+1, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum+1, 2, new QTableWidgetItem(QString::number(1) + QString(" )"))); // 数量
ui->detailTable0->item(pNum+1, 2)->setTextAlignment(Qt::AlignLeft);
pNum = pNum + 1;
}
ui->detailTable0->insertRow(pNum+1); ui->detailTable0->insertRow(pNum+1);
ui->detailTable0->setItem(pNum+1, 0, new QTableWidgetItem(QString::fromLocal8Bit("包装费"))); // 包装费 ui->detailTable0->setItem(pNum+1, 0, new QTableWidgetItem(QString::fromLocal8Bit("包装费"))); // 包装费
...@@ -119,6 +142,29 @@ void DetailForm::InitData(OrderObject *orderObject) ...@@ -119,6 +142,29 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailTable0->setItem(pNum+1, 2, new QTableWidgetItem(QString::number(1))); // 数量 ui->detailTable0->setItem(pNum+1, 2, new QTableWidgetItem(QString::number(1))); // 数量
ui->detailTable0->item(pNum+1, 2)->setTextAlignment(Qt::AlignCenter); ui->detailTable0->item(pNum+1, 2)->setTextAlignment(Qt::AlignCenter);
// 新增展示打包费折扣项显示;
if (orderObject->packDiscount> 0 && orderObject->packDiscount<10000){
ui->detailTable0->insertRow(pNum+2);
ui->detailTable0->setItem(pNum+2, 0, new QTableWidgetItem( QString("( ") + QString::fromLocal8Bit("包装费折扣"))); // 包装费折扣
ui->detailTable0->item(pNum+2, 0)->setTextAlignment(Qt::AlignRight);
ui->detailTable0->setItem(pNum+2, 1, new QTableWidgetItem( QString("-") + Penny2Dollar(orderObject->packDiscount))); // 价格
ui->detailTable0->item(pNum+2, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum+2, 2, new QTableWidgetItem(QString::number(1) +QString(" )" ))); // 数量
ui->detailTable0->item(pNum+2, 2)->setTextAlignment(Qt::AlignLeft);
pNum = pNum + 2;
}
// 新增展示整单折扣项显示;
if (orderObject->orderDiscount> 0 && orderObject->orderDiscount<100000){
ui->detailTable0->insertRow(pNum+1);
ui->detailTable0->setItem(pNum+1, 0, new QTableWidgetItem(QString::fromLocal8Bit("整单折扣")));
ui->detailTable0->item(pNum+1, 0)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum+1, 1, new QTableWidgetItem( QString("-") + Penny2Dollar(orderObject->orderDiscount))); // 价格
ui->detailTable0->item(pNum+1, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum+1, 2, new QTableWidgetItem(QString::number(1))); // 数量
ui->detailTable0->item(pNum+1, 2)->setTextAlignment(Qt::AlignCenter);
}
//TODO //TODO
// QString records; // QString records;
// foreach(QString record, orderObject->records) // foreach(QString record, orderObject->records)
......
...@@ -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,2018,919,1 FILEVERSION 2,2018,1023,1
PRODUCTVERSION 2,2018,919,1 PRODUCTVERSION 2,2018,1023,1
//*************************************************************************// //*************************************************************************//
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
...@@ -25,14 +25,14 @@ VS_VERSION_INFO VERSIONINFO ...@@ -25,14 +25,14 @@ VS_VERSION_INFO VERSIONINFO
BLOCK "080404b0" BLOCK "080404b0"
BEGIN BEGIN
VALUE "CompanyName", "ShangHai.Freemud Co., Ltd." VALUE "CompanyName", "ShangHai.Freemud Co., Ltd."
VALUE "FileDescription", "Delivery Order Plug-in Application" VALUE "FileDescription", "Delivery Order Plugin Application"
VALUE "InternalName", "fmTakeout.exe" VALUE "InternalName", "fmTakeout.exe"
VALUE "LegalCopyright", "Copyright (C)2013-2018" VALUE "LegalCopyright", "Copyright (C)2013-2018"
VALUE "OriginalFilename", "fmTakeout.exe" VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "Delivery Order Plug-in" VALUE "ProductName", "Delivery Order Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***// //***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "2.2018.919.1" VALUE "ProductVersion", "2.2018.1023.1"
VALUE "FileVersion", "2.2018.919.1" VALUE "FileVersion", "2.2018.1023.1"
//*************************************************************************// //*************************************************************************//
END END
END END
......
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
//#define APP_VERSION "2.20180824.01" //#define APP_VERSION "2.20180824.01"
//#define APP_VERSION "2.20180905.01" //#define APP_VERSION "2.20180905.01"
//#define APP_VERSION "2.2018913.1" //#define APP_VERSION "2.2018913.1"
#define APP_VERSION "2.2018919.1" //#define APP_VERSION "2.2018919.1"
#define APP_VERSION "2.20181023.1"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号 //修正版本号时,切记修正 FmTakeout.rc 中的版本号
...@@ -149,11 +150,12 @@ ...@@ -149,11 +150,12 @@
#define INI_INTERFACE_GETSTORESTATE "getStoreState" #define INI_INTERFACE_GETSTORESTATE "getStoreState"
#define INI_INTERFACE_UPDATESTATE "updateState" #define INI_INTERFACE_UPDATESTATE "updateState"
#define INI_INTERFACE_PULLORDER "pullOrder" #define INI_INTERFACE_PULLORDER "pullOrder"
#define INI_INTERFACE_PULLORDERLIST "pullOrderList" #define INI_INTERFACE_PULLORDERLIST "pullOrderList"
#define INI_INTERFACE_HEART "heart" #define INI_INTERFACE_HEART "heart"
#define INI_INTERFACE_REPORTOMSRECORDORDER "reportOmsRecordOrder"
#define INI_INTERFACE_CONFIRM "confirm" #define INI_INTERFACE_CONFIRM "confirm"
#define INI_INTERFACE_CANCLE "cancle" #define INI_INTERFACE_CANCLE "cancle"
//#define INI_INTERFACE_REFUND "refund" //注释不使用此接口 //#define INI_INTERFACE_REFUND "refund" //注释不使用此接口
// 属性名称 // 属性名称
......
...@@ -15,6 +15,7 @@ orderUrl=https://delposserviceapi.starbucks.net/backstage/order/ ...@@ -15,6 +15,7 @@ orderUrl=https://delposserviceapi.starbucks.net/backstage/order/
;接口名称 ;接口名称
login=entity login=entity
heart=posUpdate heart=posUpdate
reportOmsRecordOrder=addPosOrderRecord
pullOrder=pos/detail?orderId= pullOrder=pos/detail?orderId=
pullOrderList =pos/listOrders pullOrderList =pos/listOrders
confirm=receiving?orderId= confirm=receiving?orderId=
......
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