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
...@@ -36,6 +36,7 @@ FlowControl::FlowControl() ...@@ -36,6 +36,7 @@ FlowControl::FlowControl()
m_loginSocket = NULL; m_loginSocket = NULL;
m_pullOrderSocket = NULL; m_pullOrderSocket = NULL;
m_reportOMSRecordOrderSocket = NULL;
m_procOrderSocket = NULL; m_procOrderSocket = NULL;
m_pullDishesSocket = NULL; m_pullDishesSocket = NULL;
m_pullOrderListSocket = NULL; m_pullOrderListSocket = NULL;
...@@ -43,6 +44,7 @@ FlowControl::FlowControl() ...@@ -43,6 +44,7 @@ FlowControl::FlowControl()
m_clearTimer=new QTimer(this); m_clearTimer=new QTimer(this);
m_heartTimer=new QTimer(this); m_heartTimer=new QTimer(this);
m_pullTimer=new QTimer(this); m_pullTimer=new QTimer(this);
m_reportOMSReocrdOrderTimer = new QTimer(this);
m_loginTimer=new QTimer(this); m_loginTimer=new QTimer(this);
m_notifySimPullTimer = new QTimer(this); m_notifySimPullTimer = new QTimer(this);
m_remindCasherBlinkFloatTimer = new QTimer(this); m_remindCasherBlinkFloatTimer = new QTimer(this);
...@@ -51,6 +53,7 @@ FlowControl::FlowControl() ...@@ -51,6 +53,7 @@ FlowControl::FlowControl()
connect(m_notifySimPullTimer,&QTimer::timeout,this,&FlowControl::_ClickToNotifySimPullOrder); connect(m_notifySimPullTimer,&QTimer::timeout,this,&FlowControl::_ClickToNotifySimPullOrder);
connect(m_remindCasherBlinkFloatTimer,&QTimer::timeout,this,&FlowControl::_RemindCasherBlinkFloatForm); connect(m_remindCasherBlinkFloatTimer,&QTimer::timeout,this,&FlowControl::_RemindCasherBlinkFloatForm);
connect(m_pullTimer,&QTimer::timeout,this,&FlowControl::_PullOrderData); connect(m_pullTimer,&QTimer::timeout,this,&FlowControl::_PullOrderData);
connect(m_reportOMSReocrdOrderTimer,&QTimer::timeout,this,&FlowControl::_ReportOMSRecordOrderInfo);
connect(m_clearTimer,&QTimer::timeout,this,&FlowControl::_CrondClearExpireOrder); connect(m_clearTimer,&QTimer::timeout,this,&FlowControl::_CrondClearExpireOrder);
connect(m_heartTimer,&QTimer::timeout,this,&FlowControl::_SendHeart); connect(m_heartTimer,&QTimer::timeout,this,&FlowControl::_SendHeart);
connect(this,&FlowControl::doConfirmOrder,this,&FlowControl::_ConfirmOrder,Qt::BlockingQueuedConnection); connect(this,&FlowControl::doConfirmOrder,this,&FlowControl::_ConfirmOrder,Qt::BlockingQueuedConnection);
...@@ -299,7 +302,26 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject) ...@@ -299,7 +302,26 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
.arg(orderObject->id,orderObject->getOrderStatusDec()); .arg(orderObject->id,orderObject->getOrderStatusDec());
if(!SimProcOrderDB::getInstance().isOrderExist(orderObject->id)) if(!SimProcOrderDB::getInstance().isOrderExist(orderObject->id))
{ {
SimProcOrderDB::getInstance().insertSimProcOrder(orderObject->id,QDate::currentDate().toString("yyyy-MM-dd")); bool tempBResult = SimProcOrderDB::getInstance().insertSimProcOrder(orderObject->id,QDate::currentDate().toString("yyyy-MM-dd"));
//判断插入数据库是否出现失败;
if(!tempBResult) {
//新增业务逻辑,针对汇报异常的订单需要;添加到 向OMS汇报入机情况的队列中;
m_RepOMSRecordOrderMutex.lock();
RepOMSRecordOrderInfo* repOMSRecordOrder = new RepOMSRecordOrderInfo();
repOMSRecordOrder->orderNo = orderObject->id;
repOMSRecordOrder->type = orderObject->orderStatus;
repOMSRecordOrder->status = QString::fromLocal8Bit("2");
repOMSRecordOrder->opUser = m_cashierName.isEmpty()?QString::fromLocal8Bit("POS"):m_cashierName;
repOMSRecordOrder->recordDate = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");;
repOMSRecordOrder->storeId = m_storeId.isEmpty()?QString::fromLocal8Bit("未知门店"):m_storeId;
repOMSRecordOrder->remark = "POS本地数据库连接出现错误,请及时检查数据库相关设置";
repOMSRecordOrder->reqResult = 0;
//repOMSRecordOrder->checkNo = QString::fromLocal8Bit("0");
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_OrderAnalysis():m_orderRecordRepOMSList.append()--->>>>]");
m_orderRecordRepOMSList.append(repOMSRecordOrder);
m_RepOMSRecordOrderMutex.unlock();
}
if((OrderObject::NewOrder==orderObject->orderStatus||OrderObject::Confirmed==orderObject->orderStatus)) if((OrderObject::NewOrder==orderObject->orderStatus||OrderObject::Confirmed==orderObject->orderStatus))
{ {
emit startRemind(REMIND_CONFIRMED_ORDER); emit startRemind(REMIND_CONFIRMED_ORDER);
...@@ -508,6 +530,7 @@ void FlowControl::onGetNewStoreInfo() ...@@ -508,6 +530,7 @@ void FlowControl::onGetNewStoreInfo()
QLOG_INFO()<<"[<<<<---Get New Store Info:Openssl support--->>>>]:"<<QSslSocket::supportsSsl(); QLOG_INFO()<<"[<<<<---Get New Store Info:Openssl support--->>>>]:"<<QSslSocket::supportsSsl();
m_loginSocket = new BillSocket(this); m_loginSocket = new BillSocket(this);
m_pullOrderSocket = new BillSocket(this); m_pullOrderSocket = new BillSocket(this);
m_reportOMSRecordOrderSocket = new BillSocket(this);
m_procOrderSocket = new BillSocket(this); m_procOrderSocket = new BillSocket(this);
m_pullDishesSocket = new BillSocket(this); m_pullDishesSocket = new BillSocket(this);
m_pullOrderListSocket = new BillSocket(this); m_pullOrderListSocket = new BillSocket(this);
...@@ -623,6 +646,7 @@ bool FlowControl::_Login() ...@@ -623,6 +646,7 @@ bool FlowControl::_Login()
m_clearTimer->start(1000*60*60*2); // 5分钟执行一次清理任务:正式上线需要两小时清理一次; m_clearTimer->start(1000*60*60*2); // 5分钟执行一次清理任务:正式上线需要两小时清理一次;
m_heartTimer->start(1000*60*5); m_heartTimer->start(1000*60*5);
m_pullTimer->start(1000*2); m_pullTimer->start(1000*2);
m_reportOMSReocrdOrderTimer->start(1000*3);
m_notifySimPullTimer->start(10*1000); m_notifySimPullTimer->start(10*1000);
m_remindCasherBlinkFloatTimer->start(5*1000); m_remindCasherBlinkFloatTimer->start(5*1000);
_AddOrderPull(QString(),QString()); _AddOrderPull(QString(),QString());
...@@ -1235,6 +1259,87 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri ...@@ -1235,6 +1259,87 @@ bool FlowControl::_RefundOrder(const QString &orderId,int reasonCode,const QStri
return result; return result;
} }
void FlowControl::_ReportOMSRecordOrderInfo()
{
QLOG_INFO()<<"[<<<<----FlowControl::_ReportOMSRecordOrderInfo ---->>>>>]";
if(m_orderRecordRepOMSList.isEmpty())
return ;
m_RepOMSRecordOrderMutex.lock();
RepOMSRecordOrderInfo* RepOMSRecOrderIn = NULL;
QList<RepOMSRecordOrderInfo*>::iterator i;
for (i = m_orderRecordRepOMSList.begin(); i != m_orderRecordRepOMSList.end(); ++i) {
RepOMSRecOrderIn = (*i); //*i 使用*运算符获取遍历容器中所指的元素;
if (1==RepOMSRecOrderIn->status.toInt() || (2==RepOMSRecOrderIn->status.toInt() && 0==RepOMSRecOrderIn->reqResult) ) {
break;
} else {
RepOMSRecOrderIn = NULL;
}
}
if(!RepOMSRecOrderIn){
QLOG_INFO()<<"[<<<<----FlowControl::_ReportOMSRecordOrderInfo RepOMSRecOrderIn Point is NULL---->>>>>]";
//delete RepOMSRecOrderIn; //空指针不能delete;
m_orderRecordRepOMSList.removeOne(RepOMSRecOrderIn);
m_RepOMSRecordOrderMutex.unlock();
return ;
}
//准备https请求,准备向OMS汇报订单的入机情况;
if(m_reportOMSRecordOrderSocket==NULL)
m_reportOMSRecordOrderSocket =new BillSocket(this);
QString error;
bool result;
QJsonObject sendJson;
QJsonObject recvJson;
m_reportOMSRecordOrderSocket->SetSslConfig();
QLOG_INFO()<<"FlowControl::_ReportOMSRecordOrderInfo load ssl";
//组装POST请求数据;
sendJson.insert("orderNo",RepOMSRecOrderIn->orderNo);
sendJson.insert("type",RepOMSRecOrderIn->type);
sendJson.insert("status",RepOMSRecOrderIn->status);
sendJson.insert("opUser",RepOMSRecOrderIn->opUser);
sendJson.insert("recordDate",RepOMSRecOrderIn->recordDate);
sendJson.insert("storeId",RepOMSRecOrderIn->storeId);
sendJson.insert("remark",RepOMSRecOrderIn->remark);
sendJson.insert("checkNo",RepOMSRecOrderIn->checkNo);
QLOG_INFO() << QString("[<<<<---_ReportOMSRecordOrderInfo:Begin--->>>>][requestData:%1]")<<sendJson;
m_reportOMSRecordOrderSocket->SetUrl(QUrl(ConfigManger::GetInstance().GetLoginServerUrl()+
ConfigManger::GetInstance().GetInterfaceName(INI_INTERFACE_REPORTOMSRECORDORDER)));
QLOG_INFO()<<QString("[<<<<---Report OMS Record Order Entry POS Info--->>>>][requestUrl:]") << ConfigManger::GetInstance().GetLoginServerUrl() +
ConfigManger::GetInstance().GetInterfaceName(INI_INTERFACE_REPORTOMSRECORDORDER);
result = m_reportOMSRecordOrderSocket->PostRequest(sendJson, recvJson, error);
QLOG_INFO() << QString("[<<<<---Report OMS Record Order Entry POS Info Finish--->>>>][result:%1][msg:%2][orderId:%3]")
.arg(result).arg(error).arg(RepOMSRecOrderIn->orderNo)<<recvJson;
if(!result) {
emit setNetStatus(QString::fromLocal8Bit("<font color='#ff0000'>网络不稳定,正在重试</font>"));
} else {
emit setNetStatus(QString::fromLocal8Bit("正常"));
if(JSON_STATUSCODE_OK != recvJson[JSON_ERRCODE].toInt()) {
QString error = recvJson[JSON_ERRMSG].toString();
QLOG_ERROR()<< QString("[<<<<---Report OMS Record Order Entry POS Info Error--->>>>][msg->%1]").arg(error);
result=false;
m_orderRecordRepOMSList.removeOne(RepOMSRecOrderIn);
m_orderRecordRepOMSList.append(RepOMSRecOrderIn);
} else {
//解析汇报订单入机POS状态成功;
result=true;
if(1==RepOMSRecOrderIn->status.toInt()){
QLOG_INFO()<< QString("[<<<<---Report OMS Record Order Entry POS Info successful,Remove orderId:%1--->>>>][msg->%2]").arg(RepOMSRecOrderIn->orderNo).arg(RepOMSRecOrderIn->remark);
m_orderRecordRepOMSList.removeOne(RepOMSRecOrderIn);
delete RepOMSRecOrderIn;
} else {
RepOMSRecOrderIn->reqResult=1;
QLOG_INFO()<< QString("[<<<<---Report OMS Record Order Entry POS Info successful,Reserve orderId:%1--->>>>][msg->%2]").arg(RepOMSRecOrderIn->orderNo).arg(RepOMSRecOrderIn->remark);
}
}
}
m_RepOMSRecordOrderMutex.unlock();
}
QString FlowControl::_GetJsonStr(const QJsonObject &json) QString FlowControl::_GetJsonStr(const QJsonObject &json)
{ {
return QString(QJsonDocument(json).toJson(QJsonDocument::Compact)).replace("\"",""); return QString(QJsonDocument(json).toJson(QJsonDocument::Compact)).replace("\"","");
...@@ -1653,6 +1758,40 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb ...@@ -1653,6 +1758,40 @@ bool FlowControl::_ResponseSimphony04Request(const QJsonObject &content, QJsonOb
m_simValidOrdersList.removeOne(orderId); m_simValidOrdersList.removeOne(orderId);
m_OrderEntryMutex.unlock(); m_OrderEntryMutex.unlock();
} }
//新增业务逻辑,针对汇报小票号成功的订单需要;添加到 向OMS汇报入机情况的队列中;
m_RepOMSRecordOrderMutex.lock();
RepOMSRecordOrderInfo* repOMSRecordOrder = NULL;
if(!m_orderRecordRepOMSList.isEmpty()){
QList<RepOMSRecordOrderInfo*>::iterator i;
for (i = m_orderRecordRepOMSList.begin(); i != m_orderRecordRepOMSList.end(); ++i) {
repOMSRecordOrder = (*i); //*i 使用*运算符获取遍历容器中所指的元素;
if (orderId == repOMSRecordOrder->orderNo) {
break;
} else {
repOMSRecordOrder = NULL;
}
}
}
if (!repOMSRecordOrder){
repOMSRecordOrder = new RepOMSRecordOrderInfo();
repOMSRecordOrder->reqResult = 0;
} else {
//不管之前入机是什么报错,目前入机成功,必须再次汇报;
m_orderRecordRepOMSList.removeOne(repOMSRecordOrder); //剔除已经存在的,更新完数据后,在添加进来;
repOMSRecordOrder->reqResult = 0;
}
repOMSRecordOrder->orderNo = orderId;
repOMSRecordOrder->type = (6 == order_p->orderStatus)?QString::fromLocal8Bit("6"):QString::fromLocal8Bit("3");
repOMSRecordOrder->status = QString::fromLocal8Bit("1");
repOMSRecordOrder->opUser = m_cashierName;
repOMSRecordOrder->recordDate = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");;
repOMSRecordOrder->storeId = m_storeId;
repOMSRecordOrder->remark = QString::fromLocal8Bit("入机成功");
repOMSRecordOrder->checkNo = posCheckNo;
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_ResponseSimphony04Request:m_orderRecordRepOMSList.append() orderId:%1 orderStatus:%2 checkNo:%3--->>>>]").arg(orderId).arg(repOMSRecordOrder->type).arg(posCheckNo);
m_orderRecordRepOMSList.append(repOMSRecordOrder);
m_RepOMSRecordOrderMutex.unlock();
} }
/* 汇报完小票号后,就必须将其从 m_simValidOrdersList 列表中移除; /* 汇报完小票号后,就必须将其从 m_simValidOrdersList 列表中移除;
else { else {
...@@ -1761,9 +1900,9 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb ...@@ -1761,9 +1900,9 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
if(m_bLoginResult&&content.contains("orderId")){ if(m_bLoginResult&&content.contains("orderId")){
QString orderId=content["orderId"].toString(); QString orderId=content["orderId"].toString();
QString simExceptCode=content["simExceptCode"].toString(); QString simExceptCode=content["simExceptCode"].toString();
QString simExceptMsg=content["simExceptMsg"].toString();
if(!simExceptCode.isEmpty()&&!orderId.isEmpty()) { if(!simExceptCode.isEmpty()&&!orderId.isEmpty()) {
//新增一种case: 门店店员正在操作POS,从而阻塞插件程序录外卖订单,此时必须解锁悬浮框,从而减少Simphony队列中first出现OMS退单的请求; //新增一种case: 门店店员正在操作POS,从而阻塞插件程序录外卖订单,此时必须解锁悬浮框,从而减少Simphony队列中first出现OMS退单的请求;
//此时的订单号时固定给的620620 [action:6,simExceptCode=20] //此时的订单号时固定给的620620 [action:6,simExceptCode=20]
if( 20 == simExceptCode.toInt() ){ if( 20 == simExceptCode.toInt() ){
...@@ -1771,7 +1910,6 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb ...@@ -1771,7 +1910,6 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_ResponseSimphony06Request::%1--->>>>>]").arg(error); QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_ResponseSimphony06Request::%1--->>>>>]").arg(error);
emit doUnLockFloatFrom(); //****************解锁悬浮框*****************// emit doUnLockFloatFrom(); //****************解锁悬浮框*****************//
m_bFloatFromLockSt = false; //更新悬浮框的锁定状态 =false; m_bFloatFromLockSt = false; //更新悬浮框的锁定状态 =false;
QJsonObject rObj, cObj; QJsonObject rObj, cObj;
rObj.insert("fm_cmd", ""); rObj.insert("fm_cmd", "");
rObj.insert("fm_ver", "1.0"); rObj.insert("fm_ver", "1.0");
...@@ -1782,6 +1920,52 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb ...@@ -1782,6 +1920,52 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
rObj.insert("pay_id", cObj); rObj.insert("pay_id", cObj);
data = rObj; data = rObj;
//新增业务逻辑,针对汇报异常的订单需要;添加到 向OMS汇报入机情况的队列中;
if(!m_simValidOrdersList.empty()){
m_RepOMSRecordOrderMutex.lock();
RepOMSRecordOrderInfo* repOMSRecordOrder = NULL;
if(!m_orderRecordRepOMSList.isEmpty()) {
QList<RepOMSRecordOrderInfo*>::iterator i;
for (i = m_orderRecordRepOMSList.begin(); i != m_orderRecordRepOMSList.end(); ++i) {
repOMSRecordOrder = (*i); //*i 使用*运算符获取遍历容器中所指的元素;
if (m_simValidOrdersList.first() == repOMSRecordOrder->orderNo) {
break;
} else {
repOMSRecordOrder = NULL;
}
}
}
if (!repOMSRecordOrder){
repOMSRecordOrder = new RepOMSRecordOrderInfo();
repOMSRecordOrder->reqResult = 0;
} else {
if(simExceptMsg == repOMSRecordOrder->remark && 1==repOMSRecordOrder->reqResult){
m_orderRecordRepOMSList.removeOne(repOMSRecordOrder);
//repOMSRecordOrder->reqResult = 1; //此时reqResult已经是1了;
} else {
m_orderRecordRepOMSList.removeOne(repOMSRecordOrder);
repOMSRecordOrder->reqResult = 0;
}
}
repOMSRecordOrder->orderNo = m_simValidOrdersList.first();
OrderObject* order_temp = m_FmOrdersMap.value(repOMSRecordOrder->orderNo);
if (!order_temp){
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---%1订单并不存在m_FmOrdersMap[键值对]中;m_FmOrdersMap.size()=%2--->>>>]").arg(orderId).arg(m_FmOrdersMap.size());
repOMSRecordOrder->type = QString::fromLocal8Bit("0");
}else{
repOMSRecordOrder->type = order_temp->orderStatus==6?QString::fromLocal8Bit("6"):QString::fromLocal8Bit("3");
}
repOMSRecordOrder->status = QString::fromLocal8Bit("2");
repOMSRecordOrder->opUser = m_cashierName;
repOMSRecordOrder->recordDate = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");;
repOMSRecordOrder->storeId = m_storeId;
repOMSRecordOrder->remark = simExceptMsg;
//repOMSRecordOrder->checkNo = QString::fromLocal8Bit("0");
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_ResponseSimphony06Request:m_orderRecordRepOMSList.append() orderId:%1 simExceptMsg:%2--->>>>]").arg(orderId).arg(simExceptMsg);
m_orderRecordRepOMSList.append(repOMSRecordOrder);
m_RepOMSRecordOrderMutex.unlock();
}
return true; return true;
} }
OrderObject* order_p = m_FmOrdersMap.value(orderId); OrderObject* order_p = m_FmOrdersMap.value(orderId);
...@@ -1837,6 +2021,45 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb ...@@ -1837,6 +2021,45 @@ bool FlowControl::_ResponseSimphony06Request(const QJsonObject &content, QJsonOb
cObj.insert("paid_trans_id",orderId); cObj.insert("paid_trans_id",orderId);
rObj.insert("pay_id", cObj); rObj.insert("pay_id", cObj);
data = rObj; data = rObj;
//新增业务逻辑,针对汇报异常的订单需要;添加到 向OMS汇报入机情况的队列中;
m_RepOMSRecordOrderMutex.lock();
RepOMSRecordOrderInfo* repOMSRecordOrder = NULL;
if(!m_orderRecordRepOMSList.isEmpty()){
QList<RepOMSRecordOrderInfo*>::iterator i;
for (i = m_orderRecordRepOMSList.begin(); i != m_orderRecordRepOMSList.end(); ++i) {
repOMSRecordOrder = (*i); //*i 使用*运算符获取遍历容器中所指的元素;
if (orderId == repOMSRecordOrder->orderNo) {
break;
} else {
repOMSRecordOrder = NULL;
}
}
}
if (!repOMSRecordOrder){
repOMSRecordOrder = new RepOMSRecordOrderInfo();
repOMSRecordOrder->reqResult = 0;
} else {
if(simExceptMsg == repOMSRecordOrder->remark && 1==repOMSRecordOrder->reqResult){
m_orderRecordRepOMSList.removeOne(repOMSRecordOrder);
//repOMSRecordOrder->reqResult=1; //此时reqResult已经是1了;
} else {
m_orderRecordRepOMSList.removeOne(repOMSRecordOrder);
repOMSRecordOrder->reqResult=0;
}
}
repOMSRecordOrder->orderNo = orderId;
repOMSRecordOrder->type = order_p->orderStatus==6?QString::fromLocal8Bit("6"):QString::fromLocal8Bit("3");
repOMSRecordOrder->status = QString::fromLocal8Bit("2");
repOMSRecordOrder->opUser = m_cashierName;
repOMSRecordOrder->recordDate = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");;
repOMSRecordOrder->storeId = m_storeId;
repOMSRecordOrder->remark = simExceptMsg;
//repOMSRecordOrder->checkNo = QString::fromLocal8Bit("0");
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---FlowControl::_ResponseSimphony06Request:m_orderRecordRepOMSList.append() orderId:%1 simExceptMsg:%2--->>>>]").arg(orderId).arg(simExceptMsg);
m_orderRecordRepOMSList.append(repOMSRecordOrder);
m_RepOMSRecordOrderMutex.unlock();
} else { } else {
result=false; result=false;
error=QString::fromLocal8Bit("Request Action06: Delivery OrderId And Sim Exception ErrorCode Can't Empty"); error=QString::fromLocal8Bit("Request Action06: Delivery OrderId And Sim Exception ErrorCode Can't Empty");
...@@ -2115,9 +2338,12 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2115,9 +2338,12 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
cObj.insert("sbkAppPayType", tempSbkAppPayType); cObj.insert("sbkAppPayType", tempSbkAppPayType);
cObj.insert("sbkAppPayValue", tempSbkAppPayValue); cObj.insert("sbkAppPayValue", tempSbkAppPayValue);
cObj.insert("orderTransFlowNo", (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0") ); //第三方交易流水号 cObj.insert("orderTransFlowNo", (orderObject->thirdPartyBatch).length()?orderObject->thirdPartyBatch :QString("0") ); //第三方交易流水号
cObj.insert("packFree", orderObject->packageFee); cObj.insert("packFree", (orderObject->packageFee>0 && orderObject->packageFee<10000)?orderObject->packageFee:0);
//防止出现 deliveryPrice: NUll cObj.insert("packDiscount", (orderObject->packDiscount>0 && orderObject->packDiscount<10000)?orderObject->packDiscount:0);
cObj.insert("deliveryFree", (orderObject->deliveryPrice>0 && orderObject->deliveryPrice<10000)?orderObject->deliveryPrice:0); cObj.insert("deliveryFree", (orderObject->deliveryPrice>0 && orderObject->deliveryPrice<10000)?orderObject->deliveryPrice:0);
//防止出现 deliveryPrice: NUll
cObj.insert("deliveryDiscount", (orderObject->deliveryDiscount>0 && orderObject->deliveryDiscount<10000)?orderObject->deliveryDiscount:0);
cObj.insert("orderDiscount", (orderObject->orderDiscount>0 && orderObject->orderDiscount<10000)?orderObject->orderDiscount:0);
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);
cObj.insert("order_status",orderObject->orderStatus);//订单的状态 cObj.insert("order_status",orderObject->orderStatus);//订单的状态
...@@ -2148,7 +2374,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2148,7 +2374,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
cObj.insert("msr_card_no", temp_MSR_NO); // MSR卡号 cObj.insert("msr_card_no", temp_MSR_NO); // MSR卡号
//cObj.insert("retSyncOrderPrintInfo",0); // 同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败; 默认:0] //cObj.insert("retSyncOrderPrintInfo",0); // 同步POS本地数据库打印信息结果:[1:同步成功;0:同步失败; 默认:0]
cObj.insert("dis_platform_fee", /*orderObject->dis_platform_fee*/0); // 平台承担优惠金额 cObj.insert("dis_platform_fee", /*orderObject->dis_platform_fee*/0); // 平台承担优惠金额
cObj.insert("send_fee", orderObject->deliveryPrice); // 配送费 //cObj.insert("send_fee", orderObject->deliveryPrice); // 配送费上面已传;
cObj.insert("shop_fee", /*orderObject->total_fee-orderObject->send_fee-orderObject->service_fee-orderObject->dis_shop_fee*/0); // 商户能够拿到的钱(去除平台佣金) cObj.insert("shop_fee", /*orderObject->total_fee-orderObject->send_fee-orderObject->service_fee-orderObject->dis_shop_fee*/0); // 商户能够拿到的钱(去除平台佣金)
//cObj.insert("package_fee", orderObject->packageFee); // 打包费上面已传; //cObj.insert("package_fee", orderObject->packageFee); // 打包费上面已传;
cObj.insert("invoice_amount",orderObject->totalPrice); cObj.insert("invoice_amount",orderObject->totalPrice);
...@@ -2175,28 +2401,27 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2175,28 +2401,27 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
{ {
QJsonObject tObj; QJsonObject tObj;
dishesObject* dish=orderObject->proList.at(i); dishesObject* dish=orderObject->proList.at(i);
// promotion优惠计数器变量;
int promotionTempNo = 0;
//默认属性直接跳过; //默认属性直接跳过;
if (orderObject->proList.at(i)->code.contains("Default",Qt::CaseInsensitive)) { if (dish->code.contains("Default",Qt::CaseInsensitive)) {
continue; continue;
} }
//针对同一商品,多份数量需要将其,拆分成单份;[如果不拆分,将导致多份商品中配料价格出现 漏钱:POS中的账将会出现少金额] //针对同一商品,多份数量需要将其,拆分成单份;[如果不拆分,将导致多份商品中配料价格出现 漏钱:POS中的账将会出现少金额]
for (int temp_qty = 0; temp_qty < orderObject->proList.at(i)->qty; temp_qty++) { for (int temp_qty = 0; temp_qty < dish->qty; temp_qty++) {
//tObj.insert("consume_num", orderObject->proList.at(i)->qty); //tObj.insert("consume_num", orderObject->proList.at(i)->qty);
tObj.insert("consume_num", 1); tObj.insert("consume_num", 1);
tObj.insert("pid", orderObject->proList.at(i)->code); tObj.insert("pid", dish->code);
tObj.insert("original_price", orderObject->proList.at(i)->price); tObj.insert("original_price", dish->price);
// begin 整合子商品开始; // begin 整合子商品开始;
QJsonArray subProduct; QJsonArray subProduct;
QJsonObject sObj; QJsonObject sObj;
// 处理原始的配料信息; // 处理原始的配料信息;
if(!dish->sub_products.isEmpty()) if(!dish->sub_products.isEmpty()) {
{ for(int j=0; j < dish->sub_products.count(); j++) {
for(int j=0; j < dish->sub_products.count(); j++)
{
dishesObject* subDish=dish->sub_products.at(j); dishesObject* subDish=dish->sub_products.at(j);
//默认属性直接跳过; //默认属性直接跳过;
if(!subDish->code.isEmpty() && !subDish->code.contains("Default",Qt::CaseInsensitive) ) if(!subDish->code.isEmpty() && !subDish->code.contains("Default",Qt::CaseInsensitive) ) {
{
sObj.insert("consume_num", subDish->qty); sObj.insert("consume_num", subDish->qty);
sObj.insert("pid", subDish->code); sObj.insert("pid", subDish->code);
sObj.insert("original_price", subDish->price); sObj.insert("original_price", subDish->price);
...@@ -2205,12 +2430,27 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2205,12 +2430,27 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
} }
} }
// 处理商品的属性(热 -> 特别热)的额外配料信息; // 处理商品的属性(热 -> 特别热)的额外配料信息;
if(orderObject->proList.at(i)->options.length()){ if(dish->options.length()){
sObj.insert("consume_num", 1); sObj.insert("consume_num", 1);
sObj.insert("pid", orderObject->proList.at(i)->options); sObj.insert("pid", dish->options);
sObj.insert("original_price", 0); sObj.insert("original_price", 0);
subProduct.insert(0, sObj); subProduct.insert(0, sObj);
} }
// 处理商品的优惠金额信息;针对单个商品多数量情况:需要将这部分优惠折扣金额放在前面 拆分数量的商品上[多少个折扣券,放在前几个商品上,一个上面下对应一个折扣项];
//单项商品的折扣数量最多不超过30个;当个优惠价格不超200元;
int promotionSum = (dish->promotionQty>0 && dish->promotionQty<30)?dish->promotionQty:0;
int promotionPrice = (dish->promotionPrice>10 && dish->promotionPrice<20000)?dish->promotionPrice:0;
if(promotionTempNo < promotionSum){
if(promotionSum && promotionPrice && dish->promotionSku.length()){
sObj.insert("consume_num", 1);
sObj.insert("pid", dish->promotionSku);
sObj.insert("original_price", promotionPrice);
subProduct.insert(subProduct.count(), sObj);
promotionTempNo++;
}
}
// 汇总插入子商品[sub_products]; // 汇总插入子商品[sub_products];
if(subProduct.size()){ if(subProduct.size()){
tObj.insert("sub_products",subProduct); tObj.insert("sub_products",subProduct);
...@@ -2218,6 +2458,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso ...@@ -2218,6 +2458,7 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
products.insert(i, tObj); products.insert(i, tObj);
} }
} }
rObj.insert("products", products); rObj.insert("products", products);
data= rObj; data= rObj;
} }
......
...@@ -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)
...@@ -136,7 +139,11 @@ public: ...@@ -136,7 +139,11 @@ public:
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 中的版本号
...@@ -151,6 +152,7 @@ ...@@ -151,6 +152,7 @@
#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