Commit a6840766 by NitefullWind

1. 修复退款问题。 2. 修复结算时订单信息更新错误问题。

parent 00d44745
...@@ -296,6 +296,7 @@ void Pay::setId(unsigned long id) ...@@ -296,6 +296,7 @@ void Pay::setId(unsigned long id)
StoreInfo::StoreInfo() : StoreInfo::StoreInfo() :
Item(), Item(),
_id(0),
_storeId(""), _storeId(""),
_posId(""), _posId(""),
_operatorId(""), _operatorId(""),
......
...@@ -51,8 +51,8 @@ void TaskFinal::packagePOSReq() ...@@ -51,8 +51,8 @@ void TaskFinal::packagePOSReq()
_order->setOrderAmount(getPosJsonValue(PosProps.OrderAmount).toInt()); _order->setOrderAmount(getPosJsonValue(PosProps.OrderAmount).toInt());
_order->setUndisAmount(getPosJsonValue(PosProps.UndisAmount).toInt()); _order->setUndisAmount(getPosJsonValue(PosProps.UndisAmount).toInt());
QJsonObject productObj = getPosJsonValue(PosProps.Products).toObject(); QJsonArray productArray = getPosJsonValue(PosProps.Products).toArray();
QString productText = QJsonDocument(productObj).toJson(QJsonDocument::Compact); QString productText = QJsonDocument(productArray).toJson(QJsonDocument::Compact);
_order->setProductText(productText); _order->setProductText(productText);
DBSP()->persist(_order); DBSP()->persist(_order);
...@@ -68,6 +68,18 @@ void TaskFinal::packagePOSReq() ...@@ -68,6 +68,18 @@ void TaskFinal::packagePOSReq()
setError(FM_API_ERROR, info); setError(FM_API_ERROR, info);
return; return;
} }
if(posReqJsonObj.contains(PosProps.OrderAmount)) {
_order->setOrderAmount(getPosJsonValue(PosProps.OrderAmount).toInt());
}
if(posReqJsonObj.contains(PosProps.UndisAmount)) {
_order->setUndisAmount(getPosJsonValue(PosProps.UndisAmount).toInt());
}
if(posReqJsonObj.contains(PosProps.Products)) {
QJsonArray productArray = getPosJsonValue(PosProps.Products).toArray();
QString productText = QJsonDocument(productArray).toJson(QJsonDocument::Compact);
_order->setProductText(productText);
}
} }
} catch (const odb::exception &e) { } catch (const odb::exception &e) {
...@@ -153,6 +165,8 @@ void TaskFinal::packageServerReq() ...@@ -153,6 +165,8 @@ void TaskFinal::packageServerReq()
DBSP()->update(_order); DBSP()->update(_order);
DBSP()->reload<Order>(_order);
// 从数据库读取支付信息 // 从数据库读取支付信息
PayList payList = _order->payList(); PayList payList = _order->payList();
......
...@@ -45,8 +45,8 @@ void TaskQRPay::packagePOSReq() ...@@ -45,8 +45,8 @@ void TaskQRPay::packagePOSReq()
_order->setOrderAmount(getPosJsonValue(PosProps.OrderAmount).toInt()); _order->setOrderAmount(getPosJsonValue(PosProps.OrderAmount).toInt());
_order->setUndisAmount(getPosJsonValue(PosProps.UndisAmount).toInt()); _order->setUndisAmount(getPosJsonValue(PosProps.UndisAmount).toInt());
QJsonObject productObj = getPosJsonValue(PosProps.Products).toObject(); QJsonArray productArray = getPosJsonValue(PosProps.Products).toArray();
QString productText = QJsonDocument(productObj).toJson(QJsonDocument::Compact); QString productText = QJsonDocument(productArray).toJson(QJsonDocument::Compact);
_order->setProductText(productText); _order->setProductText(productText);
DBSP()->persist(_order); DBSP()->persist(_order);
...@@ -62,6 +62,12 @@ void TaskQRPay::packagePOSReq() ...@@ -62,6 +62,12 @@ void TaskQRPay::packagePOSReq()
setError(FM_API_ERROR, info); setError(FM_API_ERROR, info);
return; return;
} }
_order->setOrderAmount(getPosJsonValue(PosProps.OrderAmount).toInt());
_order->setUndisAmount(getPosJsonValue(PosProps.UndisAmount).toInt());
QJsonArray productArray = getPosJsonValue(PosProps.Products).toArray();
QString productText = QJsonDocument(productArray).toJson(QJsonDocument::Compact);
_order->setProductText(productText);
} }
QByteArray reqData = QJsonDocument(posReqJsonObj).toJson(QJsonDocument::Compact); QByteArray reqData = QJsonDocument(posReqJsonObj).toJson(QJsonDocument::Compact);
......
...@@ -49,7 +49,7 @@ void TaskRefund::packagePOSReq() ...@@ -49,7 +49,7 @@ void TaskRefund::packagePOSReq()
} else { } else {
_order = DBSP()->load<Order>(r.begin()->id()); _order = DBSP()->load<Order>(r.begin()->id());
// 检查订单是否已结算 // 检查支付列表是否为空
if(_order->payList().isEmpty()) { if(_order->payList().isEmpty()) {
QString info = QString::fromLocal8Bit("订单中没有可以进行退款的支付."); QString info = QString::fromLocal8Bit("订单中没有可以进行退款的支付.");
FMP_ERROR() << info; FMP_ERROR() << info;
...@@ -76,8 +76,14 @@ void TaskRefund::setWindow() ...@@ -76,8 +76,14 @@ void TaskRefund::setWindow()
} }
// 未结算,仅有一笔支付则直接退该笔支付 // 未结算,仅有一笔支付则直接退该笔支付
else if(_order->payList().size() == 1) { else if(_order->payList().size() == 1) {
QSharedPointer<Pay> firstPay = _order->payList().first().load(); try{
onRefundPay(firstPay->id()); transaction t(DBSP()->begin());
QSharedPointer<Pay> firstPay = _order->payList().first().load();
t.commit();
onRefundPay(firstPay->id());
} catch (const odb::exception &e) {
FMP_ERROR() << QString::fromLocal8Bit("Exception: ") << e.what();
}
} }
// 其他情况显示界面 // 其他情况显示界面
else { else {
...@@ -104,7 +110,10 @@ void TaskRefund::onRefundPay(unsigned long DBID) ...@@ -104,7 +110,10 @@ void TaskRefund::onRefundPay(unsigned long DBID)
posReqJsonObj[PosProps.TransId] = session()->data(PosProps.TransId).toString(); posReqJsonObj[PosProps.TransId] = session()->data(PosProps.TransId).toString();
try { try {
odb::transaction t(DBSP()->begin()); odb::transaction t;
if(!odb::transaction::has_current()) {
t.reset(DBSP()->begin());
}
QSharedPointer<Pay> payPointer = DBSP()->load<Pay>(DBID); QSharedPointer<Pay> payPointer = DBSP()->load<Pay>(DBID);
posReqJsonObj[PosProps.TransId] = payPointer->fmTransId(); posReqJsonObj[PosProps.TransId] = payPointer->fmTransId();
...@@ -126,7 +135,7 @@ void TaskRefund::onRefundPay(unsigned long DBID) ...@@ -126,7 +135,7 @@ void TaskRefund::onRefundPay(unsigned long DBID)
qobject_cast<FMVipRefund*>(_window)->refresh(); qobject_cast<FMVipRefund*>(_window)->refresh();
qobject_cast<FMVipRefund*>(_window)->setIsRefundSuccess(true); qobject_cast<FMVipRefund*>(_window)->setIsRefundSuccess(true);
} }
t.commit();
} else { } else {
QString msg = searchJsonValue(rspObj, PosProps.Msg).toString(); QString msg = searchJsonValue(rspObj, PosProps.Msg).toString();
FMMsgWnd::FailureWnd(msg, _window); FMMsgWnd::FailureWnd(msg, _window);
......
...@@ -34,7 +34,11 @@ bool FMVipRefund::initWnd(Session *session) ...@@ -34,7 +34,11 @@ bool FMVipRefund::initWnd(Session *session)
unsigned long orderDBID = session->data("RefundOrderDBID").toULongLong(); unsigned long orderDBID = session->data("RefundOrderDBID").toULongLong();
try { try {
odb::transaction t(DBSP()->begin()); odb::transaction t;
if(!odb::transaction::has_current()) {
t.reset(DBSP()->begin());
}
_pays.clear();
_order = DBSP()->load<Order>(orderDBID); _order = DBSP()->load<Order>(orderDBID);
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#define VER_MINOR 1 #define VER_MINOR 1
#define VER_REVISION 0 #define VER_REVISION 0
#define VER_BUILD 47 #define VER_BUILD 48
//! Convert version numbers to string //! Convert version numbers to string
#define _STR(S) #S #define _STR(S) #S
......
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