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:
}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:
// 门店信息
QString m_storeId;
......@@ -82,12 +96,14 @@ private:
QTimer *m_clearTimer;
QTimer *m_heartTimer;
QTimer *m_pullTimer;
QTimer *m_reportOMSReocrdOrderTimer;
QTimer *m_loginTimer;
QTimer *m_notifySimPullTimer;
QTimer *m_remindCasherBlinkFloatTimer; //插件程序收到外卖订单后,需要一致提醒店员[直到此外卖订单被全部录入到POS系统]
// 网络通信
BillSocket *m_loginSocket;
BillSocket *m_pullOrderSocket;
BillSocket *m_reportOMSRecordOrderSocket;
BillSocket *m_pullOrderListSocket;
BillSocket *m_procOrderSocket;
BillSocket *m_pullDishesSocket;
......@@ -113,10 +129,18 @@ private:
//订单拉取记录
QList<PullOrderInfo*> m_orderPullList;
QMutex m_PullOrderDataMutex;
//向OMS汇报订单的POS入机情况 队列;
QList<RepOMSRecordOrderInfo*> m_orderRecordRepOMSList;
QMutex m_RepOMSRecordOrderMutex;
//订单操作互斥信号
//QSemaphore semaphore;
QMutex m_OrderEntryMutex;
//插件订单创造新订单,订单数据解析时,必须加锁,防止订单对象的数据被窜改;
//QMutex m_UpdateOrderObjMutex;
signals:
// 发送信号给自己 做登陆
void doLogin();
......@@ -289,6 +313,13 @@ private slots:
* 返回:是否成功
* */
bool _RefundOrder(const QString& orderId, int reasonCode, const QString &reason,const QString& dishesListString);
/* 功能:定时触发向OMS 汇报本地POS订单的入机情况;
* 参数:NULL
* 返回:NULL
* */
void _ReportOMSRecordOrderInfo();
/* 功能:获取Json对象的字符
* 参数:NULL
* 返回:Json字符串
......
......@@ -50,8 +50,8 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj,const QString&
QSqlQuery query(m_sqlDb);
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, "
"waybill_id, take_no, deliver_phone, deliver_name) "
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
"order_status, waybill_id, take_no, deliver_phone, deliver_name) "
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->lastName); // --顾客-姓
query.addBindValue(orderObj->consigneeName); // --顾客-全名
......@@ -72,6 +72,7 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj,const QString&
query.addBindValue(orderObj->addressDetail); // --收货者
query.addBindValue(orderObj->consigneePhone); // --收货者-电话
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int);
query.addBindValue((orderObj->waybillId).length()?orderObj->waybillId:QString("0") ); // --物流编号
query.addBindValue((orderObj->pickupCode).length()?orderObj->pickupCode.toInt():0 ); // --取餐号;
query.addBindValue(orderObj->riderPhone); // --配送者电话
......
......@@ -17,6 +17,11 @@ class dishesObject : public QObject
Q_PROPERTY (int price READ getprice WRITE setprice)
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:
explicit dishesObject(QObject *parent = 0):QObject(parent){}
dishesObject(const dishesObject& dish,QObject* parent=0);
......@@ -31,6 +36,12 @@ public:
int packagePrice;
int price;
QString options;
QString promotionSku;
QString promotionName;
int promotionQty;
int promotionPrice;
QList<dishesObject*> sub_products;
protected:
......@@ -60,6 +71,19 @@ protected:
inline int getqty(){ return qty; }
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
......@@ -56,7 +56,10 @@ class OrderObject : public QObject
Q_PROPERTY (int updateTime READ getUpdateTime WRITE setUpdateTime)
Q_PROPERTY (int needInvoice READ getNeedInvoice WRITE setNeedInvoice)
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 packDiscount READ getPackDiscount WRITE setPackDiscount)
Q_PROPERTY (int orderDiscount READ getOrderDiscount WRITE setOrderDiscount)
Q_PROPERTY (int productPrice READ getProductPrice WRITE setProductPrice)
Q_PROPERTY (int totalPrice READ getTotalPrice WRITE setTotalPrice)
Q_PROPERTY (int orderStatus READ getOrderStatus WRITE setOrderStatus)
......@@ -135,8 +138,12 @@ public:
int updateTime;
QString customerSex; //用户性别 1- 男2- 女
int needInvoice;
int deliveryPrice; // 配送费
int deliveryPrice; // 配送费
int deliveryDiscount; // 配送费折扣
int packageFee; // 打包费
int packDiscount; // 打包费折扣
int orderDiscount; // 订单整单折扣金额
int productPrice;
int totalPrice;
int orderStatus;
......@@ -287,9 +294,18 @@ public:
inline int getDeliveryPrice()const{return deliveryPrice;}
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 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 void setProductPrice(const int& v){productPrice = v;}
......
......@@ -101,6 +101,18 @@ void DetailForm::InitData(OrderObject *orderObject)
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);
......@@ -110,6 +122,17 @@ void DetailForm::InitData(OrderObject *orderObject)
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 (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->setItem(pNum+1, 0, new QTableWidgetItem(QString::fromLocal8Bit("包装费"))); // 包装费
......@@ -119,6 +142,29 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailTable0->setItem(pNum+1, 2, new QTableWidgetItem(QString::number(1))); // 数量
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
// QString records;
// foreach(QString record, orderObject->records)
......
......@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 2,2018,919,1
PRODUCTVERSION 2,2018,919,1
FILEVERSION 2,2018,1023,1
PRODUCTVERSION 2,2018,1023,1
//*************************************************************************//
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
......@@ -25,14 +25,14 @@ VS_VERSION_INFO VERSIONINFO
BLOCK "080404b0"
BEGIN
VALUE "CompanyName", "ShangHai.Freemud Co., Ltd."
VALUE "FileDescription", "Delivery Order Plug-in Application"
VALUE "FileDescription", "Delivery Order Plugin Application"
VALUE "InternalName", "fmTakeout.exe"
VALUE "LegalCopyright", "Copyright (C)2013-2018"
VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "Delivery Order Plug-in"
VALUE "ProductName", "Delivery Order Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "2.2018.919.1"
VALUE "FileVersion", "2.2018.919.1"
VALUE "ProductVersion", "2.2018.1023.1"
VALUE "FileVersion", "2.2018.1023.1"
//*************************************************************************//
END
END
......
......@@ -10,7 +10,8 @@
//#define APP_VERSION "2.20180824.01"
//#define APP_VERSION "2.20180905.01"
//#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 中的版本号
......@@ -149,11 +150,12 @@
#define INI_INTERFACE_GETSTORESTATE "getStoreState"
#define INI_INTERFACE_UPDATESTATE "updateState"
#define INI_INTERFACE_PULLORDER "pullOrder"
#define INI_INTERFACE_PULLORDERLIST "pullOrderList"
#define INI_INTERFACE_PULLORDERLIST "pullOrderList"
#define INI_INTERFACE_HEART "heart"
#define INI_INTERFACE_REPORTOMSRECORDORDER "reportOmsRecordOrder"
#define INI_INTERFACE_CONFIRM "confirm"
#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/
;接口名称
login=entity
heart=posUpdate
reportOmsRecordOrder=addPosOrderRecord
pullOrder=pos/detail?orderId=
pullOrderList =pos/listOrders
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