Commit 11fd6693 by wuyang.zou

1、插件上传 POS 的 WorkStationId

2、新增 四轮配送费 PosKey
3、订单状态 存库 销售-3 退货-6 标识
4、插件在选择退单原因时 偶尔会导致程序奔溃

Verison: 2.2021.9.24
parent b4807e6b
Pipeline #37024 failed with stage
in 16 seconds
......@@ -19,8 +19,10 @@ SocketCommunicate::SocketCommunicate(ThreadSocket *parent) : ThreadSocket(parent
_storeId = "";
_macAddress = "";
_hostName = "";
_workStationNum = "";
_localIp = "";
_localPort = 0;
_localPort = 24409;
_httpLoginResult = false;
_openTcpChannel = false;
_posPluginVersion = APP_VERSION;
......@@ -183,6 +185,8 @@ bool SocketCommunicate::connectTcpSvr()
//连接 Server IP + Port 成功后,设置MetaData;
QVariantMap tmpMap;
tmpMap.insert(JSON_TCP_DEVICE_ID , _macAddress);
tmpMap.insert(JSON_TCP_DEVICE_HOST_NAME , _hostName);
tmpMap.insert(JSON_TCP_DEVICE_WORKS_NUM , _workStationNum);
tmpMap.insert(JSON_TCP_DEVICE_IP , _localIp);
tmpMap.insert(JSON_TCP_DEVICE_PORT , _localPort);
tmpMap.insert(JSON_TCP_DEVICE_TYPE , "posPlugin");
......@@ -719,18 +723,19 @@ bool SocketCommunicate::GetSvrIpPort()
}
void SocketCommunicate::onFlowControlLoginSuccess(bool fcLoginResult, bool fcOpenTcpFlag, QString &storeId, QString &posIp, int &posPluginPort) {
void SocketCommunicate::onFlowControlLoginSuccess(bool fcLoginResult, bool fcOpenTcpFlag, QString &storeId, QString &posIp, QString &posHostName, QString &posWorkStationNum) {
// 只有 FlowControl Http 登录成功后, FlowControl 才会发生信号 过来(跨线程);
// 存在一定概率出现跨线程 发送信号 失败;
QLOG_INFO() << QString("SocketCommunicate::onFlowControlLoginSuccess:: fcLoginResult: %1, fcOpenTcpFlag: %2 , storeId: %3 , posIp: %4 , posPluginPort: %5")
.arg( fcLoginResult?1:0 ).arg( fcOpenTcpFlag?1:0 ).arg( storeId ).arg( posIp ).arg( posPluginPort );
QLOG_INFO() << QString("SocketCommunicate::onFlowControlLoginSuccess:: fcLoginResult: %1, fcOpenTcpFlag: %2 , storeId: %3 , posIp: %4 , posHostName: %5 , posWorkStationNum: %6")
.arg( fcLoginResult?1:0 ).arg( fcOpenTcpFlag?1:0 ).arg( storeId ).arg( posIp ).arg( posHostName ).arg(posWorkStationNum);
_httpLoginResult = fcLoginResult;
_openTcpChannel = fcOpenTcpFlag;
_storeId = storeId;
_posPluginVersion = APP_VERSION;
_hostName = posHostName;
_workStationNum = posWorkStationNum;
_localIp = posIp;
_localPort = posPluginPort;
}
......@@ -748,7 +753,7 @@ void SocketCommunicate::threadStart()
QLOG_INFO() << QString("Waitting HttpLogin / openTcpChannel / GetSvrIpPort Failed, Wait 60 Seconds, _httpLoginResult:%1, _openTcpChannel:%2, _stopFlag:%3")
.arg( _httpLoginResult?1:0 ).arg(_openTcpChannel?1:0).arg(_stopFlag?1:0);
Sleep(60*1000);
FlowControl::GetInstance()._GetFcMajorInfo(_httpLoginResult, _openTcpChannel, _storeId, _localIp, _localPort);
FlowControl::GetInstance()._GetFcMajorInfo(_httpLoginResult, _openTcpChannel, _storeId, _localIp, _hostName,_workStationNum);
}
// <2> 向目标 IP + 端口发起长连接 与 登录请求, 登录成功后接受 Server Response Msg;
......
......@@ -127,7 +127,7 @@ public:
//Socket Thread Recv Msg Entry
void threadStart();
void onFlowControlLoginSuccess( bool fcLoginResult, bool fcOpenTcpFlag, QString &storeId, QString &posIp, int &posPluginPort );
void onFlowControlLoginSuccess( bool fcLoginResult, bool fcOpenTcpFlag, QString &storeId, QString &posIp, QString &posHostName, QString &posWorkStationNum);
signals:
void connected();
......@@ -151,6 +151,10 @@ public:
QString _storeId;
// Mac Address;
QString _macAddress;
// HostName;
QString _hostName;
// WorkStation Id POS工作站编号;
QString _workStationNum;
// Pos Local Machine IP;
QString _localIp;
// Pos Plugin Server Port;
......
......@@ -139,19 +139,30 @@ FlowControl::FlowControl()
void FlowControl::_GetIpAddress()
{
/***已经验证:IP地址 优先取配置文件中的[IpAddress/ip];只有没有配置的情况才会根据主机名获取ipv4的IP地址,因此为保证IP的准确性,注释通过配置文件获取ip的代码***/
std::string tempMacAddress = "";
int getMacRet = MacTool::GetMacByAdaptersAddresses( tempMacAddress );
if ( !getMacRet) {
QLOG_ERROR() << "FlowControl::_GetIpAddress MacTool->GetMacByAdaptersAddresses Falied";
}
m_posMacAddress = tempMacAddress.c_str();
QString ipAddress;
QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName());
m_posHostName = info.hostName();
foreach(QHostAddress address,info.addresses()) {
if(address.protocol() == QAbstractSocket::IPv4Protocol) {
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress getFromLocalHostName:%1--->>>>]").arg(address.toString());
//1.1.1.1 > length > 7
if(address.toString().length()>7 && address.toString()!= "127.0.0.1" ) {
ipAddress=address.toString();
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress Request Real ipAddress:%1--->>>>]").arg(ipAddress);
QLOG_INFO()<<QString("[<<<<---FlowControl::_GetIpAddress Request Real ipAddress: %1 hostName: %2 macAddress: %3 --->>>>]")
.arg(ipAddress).arg(m_posHostName).arg(m_posMacAddress);
break;
}
}
}
m_ipAddress = ipAddress;
m_ipPortAddress = ipAddress+QString(":")+QString::number(ConfigManger::GetInstance().GetHttpServerPort());
}
......@@ -700,6 +711,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
orderObject->isCancle = false;
orderObject->isORSPush = false;
orderObject->isORSCancle = false;
orderObject->orderSaleRefundStatus = 0;
//初始化订单在数据库中标志性数据:用于一次性读出;减少对数据库的加锁访问+数据库连接数;防止压测插件奔溃;
orderObject->dataBaseIsOrderExistInt = 0;
orderObject->dataBaseIsPushInt = 0;
......@@ -781,6 +793,8 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
}
// 存储订单 销售退货状态的内存标识;
orderObject->orderSaleRefundStatus = orderObject->orderStatus == 6 ? 6 : 3 ;
orderObject->updateTime=QDateTime::currentDateTime().toTime_t();
if(OrderObject::RequestRefund==orderObject->orderStatus) {
emit startRemind(REMIND_REQREFUND_ORDER);
......@@ -984,12 +998,13 @@ bool FlowControl::_GetStoreInfo()
}
void FlowControl::_GetFcMajorInfo(bool &loginResult, bool &openTcpChannel, QString &storeId, QString &posIp, int &posPort){
void FlowControl::_GetFcMajorInfo(bool &loginResult, bool &openTcpChannel, QString &storeId, QString &posIp, QString &posHostName, QString &posWorkStationNum){
loginResult = m_bLoginResult;
openTcpChannel = m_openTcpChannel;
storeId = m_storeId;
posIp = m_ipAddress;
posPort = ConfigManger::GetInstance().GetHttpServerPort();
posHostName = m_posHostName;
posWorkStationNum = m_posWorkstationNum;
}
......@@ -1033,6 +1048,12 @@ bool FlowControl::_Login()
sendJson = DataManger::GetInstance().GetLoginData(ConfigManger::GetInstance().GetPartnerId(),m_storeId,
m_password, m_posId, m_cashierId, m_ipPortAddress, m_puginVersionComments);
// 登录新增Pos相关属性字段;
sendJson.insert(JSON_POS_IP_ADDR, m_ipAddress);
sendJson.insert(JSON_POS_WORKS_NUM, m_posWorkstationNum);
sendJson.insert(JSON_POS_HOST_NAME, m_posHostName);
sendJson.insert(JSON_POS_MAC_ADDRESS, m_posMacAddress);
emit showAlert(AlertForm::LOADING, QString::fromLocal8Bit("正在登录......"));
QLOG_INFO() << QString("[<<<<---Login--->>>>][requestData:%1]")<<sendJson;
if(ConfigManger::GetInstance().GetLoginSslConfig())
......@@ -1116,8 +1137,7 @@ bool FlowControl::_Login()
if ( m_bLoginResult && m_openTcpChannel ) {
QLOG_INFO() << QString("[<<<<---Login Success, Emit Signal To SocketCommunicate Begin Connect Tcp Socket --->>>>]");
int tmpPosPluginPort = ConfigManger::GetInstance().GetHttpServerPort();
emit doLoginSuccess(true, m_openTcpChannel, m_storeId, m_ipAddress, tmpPosPluginPort );
emit doLoginSuccess(true, m_openTcpChannel, m_storeId, m_ipAddress, m_posHostName, m_posWorkstationNum);
}
return result;
......@@ -1304,6 +1324,11 @@ bool FlowControl::_SendHeart()
m_puginVersionComments = ConfigManger::GetInstance().GetOrderServerUrl();
sendJson = DataManger::GetInstance().GetHeartData(m_password,m_posId,m_ipPortAddress,m_puginVersionComments,m_bLastHeartIsError);
sendJson.insert(JSON_POS_IP_ADDR, m_ipAddress);
sendJson.insert(JSON_POS_WORKS_NUM, m_posWorkstationNum);
sendJson.insert(JSON_POS_HOST_NAME, m_posHostName);
sendJson.insert(JSON_POS_MAC_ADDRESS, m_posMacAddress);
QLOG_INFO() << QString("[<<<<---Send Heart--->>>>][requestData:%1]")<<sendJson;
m_loginSocket->SetUrl(QUrl(ConfigManger::GetInstance().GetLoginServerUrl()+
ConfigManger::GetInstance().GetInterfaceName(INI_INTERFACE_HEART)));
......@@ -1570,7 +1595,10 @@ void FlowControl::_ReportOMSRecordOrderInfo()
sendJson.insert("remark", RepOMSRecOrderIn->remark);
sendJson.insert("checkNo", RepOMSRecOrderIn->checkNo);
sendJson.insert("failCode", RepOMSRecOrderIn->failCode);
sendJson.insert("ipAddress",m_ipAddress);
sendJson.insert(JSON_IP_ADDRESS, m_ipAddress);
sendJson.insert(JSON_POS_WORKS_NUM, m_posWorkstationNum);
sendJson.insert(JSON_POS_HOST_NAME, m_posHostName);
sendJson.insert(JSON_POS_MAC_ADDRESS, m_posMacAddress);
sendJson.insert(JSON_POS_PLUGIN_VERSION, RepOMSRecOrderIn->posPluginVersion);
QLOG_INFO() << QString("[<<<<---_ReportOMSRecordOrderInfo:Begin--->>>>][requestData:%1]")<<sendJson;
......@@ -2522,7 +2550,9 @@ bool FlowControl::_ResponseSimReqTryLogin(const QJsonObject &content,QString &er
}
QLOG_INFO()<<QString::fromLocal8Bit("[<<<<---_ResponseSimReqTryLogin: m_storeId=%1 , m_subStoreId=%2 --->>>>>]").arg(m_storeId).arg(m_subStoreId);
m_posId=content["posId"].toString();
//m_deviceNo=content["posId"].toString(); //将来用来扩展新字段值
m_posId= "111111111111111"; // 避免上游出现多条 POS插件登录记录(设备id不一致);
m_posWorkstationNum=content["businessDay"].toString(); // 折中方案,使用营业时间透传 POS WorkStation Num;
m_cashierId=content["operatorId"].toString();
m_cashierName=content["operatorName"].toString();
if(m_bFirstRecvInfo) {
......@@ -2536,7 +2566,9 @@ bool FlowControl::_ResponseSimReqFristOrderData(const QJsonObject &content, QJso
{
QLOG_INFO()<<__FUNCTION__<<error<<orderId;
m_posId=content["posId"].toString();
// m_deviceNo=content["posId"].toString(); //将来用来扩展新字段值
m_posId= "111111111111111"; // 避免上游出现多条 POS插件登录记录(设备id不一致);
m_posWorkstationNum=content["businessDay"].toString(); // 折中方案,使用营业时间透传 POS WorkStation Num;
m_cashierId=content["operatorId"].toString();
m_cashierName=content["operatorName"].toString();
emit setCashierInfo(m_cashierName); //POS上收银员切换账号后,插件上右下角的收银员信息也及时更新;
......
......@@ -30,7 +30,7 @@ public:
* 参数: 1. 是否登录成功; 2.门店号; 3.PosPluginIp; 4.PosPlugin Port;
* 返回: Void;
* */
void _GetFcMajorInfo(bool &loginResult, bool &openTcpChannel, QString &storeId, QString &posIp, int &posPort);
void _GetFcMajorInfo(bool &loginResult, bool &openTcpChannel, QString &storeId, QString &posIp, QString &posHostName, QString &posWorkStationNum);
/* 功能:获取收银员ID
* 参数:NULL
......@@ -108,6 +108,9 @@ private:
QString m_subStoreId;
QString m_ipAddress; // 门店POS的 IP 地址
QString m_ipPortAddress; // 门店POS的 IP+端口 地址
QString m_posHostName; // Pos 主机名;
QString m_posMacAddress; // Pos Mac地址;
QString m_posWorkstationNum; // Pos 工作站编号
QString m_password;
QString m_puginVersionComments;
QString m_posId;
......@@ -199,7 +202,7 @@ signals:
void doLogin();
// http门店POS登录成功后 发送信号给 SocketCommunicate;
void doLoginSuccess(bool loginResult,bool openTcpFlag, QString &storeId, QString &posIp, int &posPort);
void doLoginSuccess(bool loginResult,bool openTcpFlag, QString &storeId, QString &posIp, QString &posHostName, QString &posWorkStationNum);
/* 功能:隐藏通知窗口
* 参数:NULL
......
......@@ -124,6 +124,9 @@ bool PrintOrderPromotionDB::insertOrderPromotion(OrderObject* orderObj, const QS
return false;
}
//刷新 存储订单 销售退货状态的内存标识;
orderObj->orderSaleRefundStatus = orderObj->orderStatus == 6 ? 6 : 3 ;
// 开启数据库事务实现原子操作: 保证 tb_order_promotions: 订单促销优惠列表 同时插入成功;
// m_sqlDb.transaction(); 驱动不支持;
QSqlQuery query(m_sqlDb);
......@@ -169,7 +172,8 @@ bool PrintOrderPromotionDB::insertCouponPromotion(OrderObject* orderObj, const Q
" prod_seq, coupon_seq, promotion_type, discount_fee, promotion_qty, promotion_sku, promotion_name ) "
" VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) ");
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态
// query.addBindValue( orderObj->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
query.addBindValue(posCheckNo.toInt()); // --订单自动生产小票号
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue(i+1); // --主商品序号;
......@@ -223,7 +227,8 @@ bool PrintOrderPromotionDB::insertNormalPromotion(OrderObject* orderObj, const Q
" prod_seq, coupon_seq, promotion_type, discount_fee, promotion_qty, promotion_sku, promotion_name ) "
" VALUES(?, ?, ?, ?, ?, ?, ?, ?, ? , ?, ?) ");
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态
// query.addBindValue( orderObj->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
query.addBindValue(posCheckNo.toInt()); // --订单自动生产小票号
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue(i+1); // --主商品序号;
......
......@@ -146,6 +146,9 @@ bool PrintCupStickPosDB::insertOrderProduct(OrderObject* orderObj,const QString&
QLOG_ERROR()<<"[<<<<---PrintCupStickPosDB::insertOrderProduct: Begin transaction Failed--->>>>]"<<m_sqlDb.lastError().text();
}
//刷新 存储订单 销售退货状态的内存标识;
orderObj->orderSaleRefundStatus = orderObj->orderStatus == 6 ? 6 : 3 ;
bool retInsCoupProd = false;
bool retInsNorProd = false;
// WSG-杯贴祝福-商品券号关联数据;
......@@ -193,7 +196,8 @@ bool PrintCupStickPosDB::insertCouponProd(OrderObject* orderObj, const QString&
" VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) select @@identity ");
query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int);
// query.addBindValue( orderObj->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue(i+1); // --主商品序号;
......@@ -292,7 +296,8 @@ bool PrintCupStickPosDB::insertCouponSubProd(OrderObject* orderObj, const int ma
" VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,? ,? ,?) select @@identity ");
query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int);
// query.addBindValue( orderObj->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue(0); // --商品序号;
......@@ -425,7 +430,8 @@ bool PrintCupStickPosDB::insertNormalProd(OrderObject* orderObj, const QString&
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) select @@identity ");
query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int);
// query.addBindValue( orderObj->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue(i+1); // --主商品序号;
query.addBindValue(dish->code); // --主商品SKU
......@@ -515,7 +521,8 @@ bool PrintCupStickPosDB::insertNormalSubProd(OrderObject* orderObj, const int ma
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) select @@identity ");
query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int);
// query.addBindValue( orderObj->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue(0); // --商品序号;
query.addBindValue(subdish->code); // --商品SKU
......@@ -638,7 +645,8 @@ bool PrintCupStickPosDB::insertDeliveryPackageAndPack(OrderObject* orderObj, con
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int);
// query.addBindValue( orderObj->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue( orderObj->proList.count() + 1 ); // --商品序号;
query.addBindValue(orderObj->packageSku); // --商品SKU //不入机模式,无需考虑入机POSkey限制
......@@ -678,7 +686,8 @@ bool PrintCupStickPosDB::insertDeliveryPackageAndPack(OrderObject* orderObj, con
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int);
// query.addBindValue( orderObj->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
query.addBindValue(qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss")); // --商品入库时间
query.addBindValue( orderObj->proList.count() +1 + insertPackPlaceHolderSeq ); // --商品序号;
query.addBindValue("6000201"); // --商品SKU //不入机模式,无需考虑入机POSkey限制
......
......@@ -79,6 +79,9 @@ bool PrintMsgQueueDB::insertOrderPrtMsg( OrderObject* orderObj, const QString& p
}
bool result = false;
//刷新 存储订单 销售退货状态的内存标识;
orderObj->orderSaleRefundStatus = orderObj->orderStatus == 6 ? 6 : 3 ;
QSqlQuery query(m_sqlDb);
query.prepare("INSERT INTO tb_print_msr_customer(chk_num, print_status, "
" order_id, order_status, create_datetime ) "
......@@ -86,7 +89,8 @@ bool PrintMsgQueueDB::insertOrderPrtMsg( OrderObject* orderObj, const QString& p
query.addBindValue(posCheckNo.toInt()); // --小票号
query.addBindValue(0); // --打印状态: 0:未打印 1:已打印;
query.addBindValue(orderObj->id); // --订单编号
query.addBindValue(orderObj->orderStatus); // --订单状态(int);
// query.addBindValue( orderObj->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
QDateTime qdaTi = QDateTime::currentDateTimeUtc();
QString createTime = qdaTi.addSecs(60*60*8).toString("yyyy-MM-dd hh:mm:ss");
query.addBindValue(createTime); // --POS开单时间
......
......@@ -840,6 +840,9 @@ bool PrintSumBillPosDB::insertOrderSumBill(OrderObject* orderObj, const QString&
}
bool result;
//刷新 存储订单 销售退货状态的内存标识;
orderObj->orderSaleRefundStatus = orderObj->orderStatus == 6 ? 6 : 3 ;
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, "
......@@ -874,7 +877,8 @@ 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->orderStatus ); // --订单状态(int);
query.addBindValue( orderObj->orderSaleRefundStatus ); // --订单 销售退货状态 内存标识(int);
query.addBindValue((orderObj->waybillId).length()?orderObj->waybillId:QString("0") ); // --物流编号
query.addBindValue((orderObj->pickupCode).length()?orderObj->pickupCode.toInt():0 ); // --取餐号;
query.addBindValue(orderObj->riderPhone); // --配送者电话
......
......@@ -237,6 +237,7 @@ public:
bool isCancle;
bool isORSPush;
bool isORSCancle;
int orderSaleRefundStatus; // 订单销售退货状态, 防止订单状态3, 4, 5 切换过程中, 石基打印程序 使用订单号和订单状态 关联不到数据库数据;
//获取数据库中订单的标志数据;
int dataBaseIsOrderExistInt;
int dataBaseIsPushInt;
......
......@@ -16,14 +16,16 @@ DetailForm::DetailForm(QWidget *parent) :
connect(this, &DetailForm::processRepealOrder, &FlowControl::GetInstance(), &FlowControl::onProcessRepealOrder);
connect(this, &DetailForm::processReTryInputOrder, &FlowControl::GetInstance(), &FlowControl::onProcessReTryInputOrder);
m_rejectForm=NULL;
m_refuseForm=NULL;
_Init();
}
DetailForm::~DetailForm()
{
QLOG_INFO() << QString("[<<<<---DetailForm::~DetailForm: begin--->>>>]");
delete ui;
// New 时指定了父类对象指针;
QLOG_INFO() << QString("[<<<<---DetailForm::~DetailForm: end--->>>>]");
}
void DetailForm::InitData(OrderObject *orderObject)
......@@ -320,7 +322,7 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailBtn2->hide();
}
//星巴克:电商-MOP 需要显示退单按钮(便于 当日退 / 跨日退);
if( "EC-MOP" == orderObject->channel ){
if ( "EC-MOP" == orderObject->channel && OrderObject::Refunded != orderObject->orderStatus ) {
ui->detailBtn2->show();
}
......@@ -337,11 +339,7 @@ void DetailForm::InitData(OrderObject *orderObject)
{
ui->detailBtn3->hide();
}
if(m_rejectForm==NULL) {
m_rejectForm = new RejectForm(this);
} else {
// 未使用此退单模块;
}
if(m_refuseForm==NULL) {
m_refuseForm = new RefuseForm(this);
}
......@@ -411,8 +409,13 @@ void DetailForm::onOperaBtnClicked()
<< m_refuseForm->m_reasonStr << m_refuseForm->m_refundDishesListString;
emit processRepealOrder( pBtn->property("orderId").toString(),m_refuseForm->m_reasonCode,m_refuseForm->m_reasonStr,m_refuseForm->m_refundDishesListString);
hide(); //为了友好用户的使用体验感,hide() 还是需要在接受完取消订单原因后,再隐藏;
} else {
QLOG_INFO() << QString("[<<<<---DetailForm::onOperaBtnClicked: m_refuseForm->exec() != QDialog::Accepted--->>>>]");
}
if ( m_refuseForm )
m_refuseForm->clearAllRadioBtnCheck();
} else {
emit processOrder(pBtn->property("operation").toString(), pBtn->property("orderId").toString());
}
......@@ -437,16 +440,18 @@ void DetailForm::on_detailBtn0_clicked()
void DetailForm::hideDetailAllFrom()
{
this->hide();
if ( m_rejectForm ) {
m_rejectForm->hide();
delete m_rejectForm;
m_rejectForm = NULL;
}
QLOG_INFO()<<QString("[<<<<---DetailForm::hideDetailAllFrom: begin:--->>>>]");
if ( m_refuseForm ) {
m_refuseForm->hide();
delete m_refuseForm;
m_refuseForm = NULL;
if ( m_refuseForm && m_refuseForm->isVisible() ) {
//delete m_refuseForm;
//m_refuseForm = NULL;
m_refuseForm->hideSelectProductFrom();
m_refuseForm->reject();
}
QLOG_INFO()<<QString("[<<<<---DetailForm::hideDetailAllFrom: middle:--->>>>]");
this->hide();
QLOG_INFO()<<QString("[<<<<---DetailForm::hideDetailAllFrom: Finished:--->>>>]");
}
......@@ -37,7 +37,7 @@ private:
* 返回:NULL
* */
void _Init();
RejectForm *m_rejectForm;
RefuseForm *m_refuseForm;
QString GetProductName(dishesObject* dish);
......
......@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 2,2021,9,7
PRODUCTVERSION 2,2021,9,7
FILEVERSION 2,2021,9,24
PRODUCTVERSION 2,2021,9,24
//*************************************************************************//
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
......@@ -31,8 +31,8 @@ VS_VERSION_INFO VERSIONINFO
VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "Delivery Order Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "2.2021.9.7"
VALUE "FileVersion", "2.2021.9.7"
VALUE "ProductVersion", "2.2021.9.24"
VALUE "FileVersion", "2.2021.9.24"
//*************************************************************************//
END
END
......
......@@ -228,7 +228,8 @@ void MainForm::on_mainBtnHide_clicked()
hide();
ui->mainEdtSearch->clear();
m_padForm->hide();
if (m_detailForm) {
if (m_detailForm && m_detailForm->isVisible() ) {
QLOG_INFO() << QString("[<<<<---MainForm::on_mainBtnHide_clicked: m_detailForm=--->>>>]")<< m_detailForm;
m_detailForm->hideDetailAllFrom();
}
if (m_alertForm) {
......
......@@ -38,7 +38,8 @@
//#define APP_VERSION "2.2021.4.19"
//#define APP_VERSION "2.2021.5.11"
//#define APP_VERSION "2.2021.8.12"
#define APP_VERSION "2.2021.9.7"
//#define APP_VERSION "2.2021.9.7"
#define APP_VERSION "2.2021.9.24"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号
......@@ -95,12 +96,17 @@
#define JSON_SKIPRECORDPOS "skipRecord"
#define JSON_PASSWORD "password"
#define JSON_IPADDRESS "iPAddress"
#define JSON_IP_ADDRESS "ipAddress"
#define JSON_MACHINECODE "machineCode"
#define JSON_PARTNERID "partnerId"
#define JSON_ORGCODE "orgCode"
#define JSON_SUBORGCODE "subOrgCode"
#define JSON_POSNO "posNo"
#define JSON_POS_IP_ADDR "posIp"
#define JSON_POS_WORKS_NUM "decouplePosNo"
#define JSON_POS_HOST_NAME "posHostName"
#define JSON_POS_MAC_ADDRESS "posMacAddress"
#define JSON_STORENAME "StoreName"
#define JSON_OPEN_TCP_CHANNEL "openTcpChannel"
#define JSON_USERID "userId"
......@@ -178,6 +184,8 @@
#define JSON_TCP_STA_RST "ok"
#define JSON_TCP_STA_CODE "code"
#define JSON_TCP_DEVICE_ID "deviceId"
#define JSON_TCP_DEVICE_HOST_NAME "deviceHostName"
#define JSON_TCP_DEVICE_WORKS_NUM "deviceWorkStationNum"
#define JSON_TCP_DEVICE_IP "deviceIp"
#define JSON_TCP_DEVICE_PORT "devicePort"
#define JSON_TCP_DEVICE_TYPE "deviceType"
......
......@@ -14,11 +14,27 @@ refDishesForm::refDishesForm(QWidget *parent) :
connect(this, &refDishesForm::updDishes, &FlowControl::GetInstance(), &FlowControl::onUpdDishesForRef);
}
refDishesForm::~refDishesForm()
{
QLOG_INFO() << QString("[<<<<---refDishesForm::~refDishesForm: begin--->>>>]");
delete ui;
while ( m_btnList.size() ) {
QPushButton * tempBtn = m_btnList.takeFirst();
tempBtn->deleteLater();
}
while ( m_twiList.size() ) {
QTableWidgetItem *tempItem = m_twiList.takeFirst();
delete tempItem;
tempItem = NULL;
}
QLOG_INFO() << QString("[<<<<---refDishesForm::~refDishesForm: end--->>>>]");
}
void refDishesForm::InitData(OrderObject *obj)
{
// 清除之前的菜品按钮信息
......@@ -76,6 +92,7 @@ void refDishesForm::InitData(OrderObject *obj)
}
}
void refDishesForm::_Init()
{
ui->refDishesBtnOk->setEnabled(false);
......@@ -103,6 +120,7 @@ void refDishesForm::_Init()
m_dishesMap.clear();
}
void refDishesForm::on_refDishesBtnOk_clicked()
{
//别的客户用来更新菜单用的;目前 starbucks No Need;
......@@ -111,11 +129,13 @@ void refDishesForm::on_refDishesBtnOk_clicked()
accept();
}
void refDishesForm::on_refDishesBtnCancle_clicked()
{
reject();
}
void refDishesForm::onDishesBtnToggled(bool checked)
{
QPushButton* btn = (QPushButton*)sender();
......
......@@ -17,7 +17,10 @@ RefuseForm::RefuseForm(QWidget *parent) :
RefuseForm::~RefuseForm()
{
QLOG_INFO() << QString("[<<<<---RefuseForm::~RefuseForm: begin--->>>>]");
delete ui;
// m_refDishesForm->deleteLater(); // New 时指定了父类对象指针;
QLOG_INFO() << QString("[<<<<---RefuseForm::~RefuseForm: end--->>>>]");
}
void RefuseForm::SetOrderInfo(OrderObject *obj)
......@@ -69,7 +72,8 @@ void RefuseForm::on_reason2_toggled(bool checked)
QLOG_INFO() << QString("[<<<<---RefuseForm::on_reason2_toggled: m_refundDishesList:%1--->>>>]")<<m_refundDishesList;
on_refuseBtnOk_clicked();
QLOG_INFO() << QString("[<<<<---RefuseForm::on_refuseBtnOk_clicked--->>>>]");
}else{
} else {
QLOG_INFO() << QString("[<<<<---RefuseForm::on_reason2_toggled: QDialog::Accepted != m_refDishesForm->exec()--->>>>]");
_Init();
}
}
......@@ -172,3 +176,20 @@ void RefuseForm::clearAllRadioBtnCheck(){
ui->reason7->setAutoExclusive(true);
}
void RefuseForm::hideSelectProductFrom(){
if ( m_refDishesForm && m_refDishesForm->isVisible() ) {
QLOG_INFO() << QString("[<<<<---RefuseForm::hideSelectProductFrom Before m_refDishesForm->reject(); --->>>>]");
m_refDishesForm->reject();
/*
if ( m_refDishesForm ) {
m_refDishesForm->deleteLater();
QLOG_INFO() << QString("[<<<<---RefuseForm::hideSelectProductFrom m_refDishesForm->deleteLater(); --->>>>]");
}
*/
QLOG_INFO() << QString("[<<<<---RefuseForm::hideSelectProductFrom After m_refDishesForm->reject(); --->>>>]");
} else {
QLOG_INFO() << QString("[<<<<---RefuseForm::hideSelectProductFrom Finished --->>>>]");
}
}
......@@ -58,6 +58,8 @@ private slots:
public slots:
void clearAllRadioBtnCheck();
void hideSelectProductFrom();
private:
Ui::RefuseForm *ui;
......
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