Commit fc9ca9f7 by gujin.wang

完成退款功能

parent c906f78f
......@@ -14,6 +14,7 @@ FMPePay::FMPePay(const FMPContext ctx)
_databasename(DEFAULT_EPAY_DATABASENAME),
_table(DEFAULT_EPAY_TABLE),
_redeem_table(DEFAULT_REDEEM_TABLE),
_vip_table(DEFAULT_VIP_TABLE),
_businessdate(QDateTime::currentDateTime().toString("yyyy-MM-dd")),
_ordershelflife(DEFAULT_EPAY_ORDERLIFE),
_operator_id(DEFAULT_EPAY_OPTID),
......
......@@ -41,7 +41,8 @@ private:
QString _url;
QString _databasename;
QString _table;
QString _redeem_table;
QString _redeem_table; //存放卡券核销详情
QString _vip_table;
QString _businessdate;
QString _store_id;
QString _station_id;
......
......@@ -19,6 +19,11 @@ public:
return d.toString().toFloat() / 100;
}
if(idx.column() == 17 && role == Qt::DisplayRole){
QVariant d = QSqlTableModel::data(idx, role);
return d.toString().toFloat()/100;
}
if ((idx.column() == 12) && role == Qt::DisplayRole) {
QVariant d = QSqlTableModel::data(idx,role);
if (d.toBool()) {
......
......@@ -61,6 +61,7 @@
#define DEFAULT_EPAY_DATABASENAME "fmp_test.db"
#define DEFAULT_EPAY_TABLE "fmp_pay"
#define DEFAULT_REDEEM_TABLE "fmp_redeem"
#define DEFAULT_VIP_TABLE "fmp_vip"
#define DEFAULT_EPAY_CONNECTNAME "fmp_pay_connect"
#define DEFAULT_EPAY_ORDERLIFE 60
#define DEFAULT_EPAY_STRID "99999"
......
......@@ -25,7 +25,7 @@
#include <QFuture>
#include <QTcpSocket>
#include <QHostAddress>
#include <QSqlError>
#include <QSqlQuery>
#include <fmp_home_i.h>
......@@ -56,7 +56,7 @@ FMPePayPrivate::FMPePayPrivate(FMPePay *parent)
{
_db = new FMPDataBase(q->_databasename);
QString sql = "create table " + q->_table + " ("
QString sql = "create table if not exists" + q->_table + " ("
"fmId varchar(40), "
"code varchar(40), "
"pay_transId varchar(40), "
......@@ -74,16 +74,15 @@ FMPePayPrivate::FMPePayPrivate(FMPePay *parent)
"statusCode integer,"
"operator_id varchar(40),"
"addtime TIMESTAMP default (datetime('now', 'localtime')),"
"pay_total integer,"
"PRIMARY KEY (trans_id)"
"pay_total integer"
")";
FMP_INFO() << " creat table sql:" << sql;
if(_db->creat(sql) == false)
{
FMP_WARN() << "creat table fmp_pay failed";
FMP_WARN() << "creat table " + q->_table + " failed";
}
sql = "create table " + q->_redeem_table + "("
sql = "create table if not exists" + q->_redeem_table + "("
"trans_id varchar(40),"
"pay_id varchar(50),"
"code varchar(20),"
......@@ -94,7 +93,19 @@ FMPePayPrivate::FMPePayPrivate(FMPePay *parent)
FMP_INFO() << "create table sql: " << sql;
if(_db->creat(sql) == false)
{
FMP_WARN() << "create table fmp_redeem failed";
FMP_WARN() << "create table " + q->_redeem_table + " failed";
}
sql = "create table if not exists" + q->_vip_table + "("
"trans_id varchar(40),"
"pay_id varchar(50),"
"code varchar(20),"
"pid varchar(20),"
"total_amount integer)";
FMP_INFO() << "create table sql: " << sql;
if(_db->creat(sql) == false)
{
FMP_WARN() << "create table " + q->_vip_table + " failed";
}
}
......@@ -362,7 +373,12 @@ QByteArray FMPePayPrivate::DockPayRespond()
if (_origin_response.contains("ext")) {
pay_ch["ext"] = _origin_response["ext"];
}
//只有卡券支付时,不存在微信/支付宝支付方式
if(!_origin_response["fmId"].toString().isEmpty())
{
pay_channels.append(pay_ch);
}
//添加卡券支付详情
foreach (QJsonObject result, _payDialog->_redeem_results) {
......@@ -662,26 +678,123 @@ void FMPePayPrivate::GetApiReqMode(int type)
_model->select();
}
void FMPePayPrivate::ControlRefundJson(const QJsonObject &trans)
void FMPePayPrivate::ControlVipRefundJson(const QJsonObject &trans)
{
_origin_response = QJsonObject();
FMP_INFO() << "RefundJson trans: " << trans;
QtConcurrent::run( [&, trans, this ]()
{
QtConcurrent::run([&, trans, this]{
Q_Q(FMPePay);
QStringList keylist;
QSqlQuery query;
qDebug() << trans["trans_id"].toString();
if(!_db->find(q->_table, query, keylist, QString("trans_id='%1'").arg(trans["trans_id"].toString())) || !query.next())
{
emit error(QString::fromLocal8Bit("交易记录不存在"));
return;
}
QJsonObject posRequest;
posRequest["pos_ver"] = 1;
posRequest["operator_id"] = q->_operator_id;
posRequest["fm_cmd"] = 1004;
posRequest["pos_id"] = q->_station_id;
posRequest["store_id"] = q->_store_id;
posRequest["business_date"] = QDate::currentDate().toString("yyyyMMdd");
QJsonObject transactions;
transactions["refund_amount"] = query.value("total_amount").toInt();
transactions["fm_id"] = query.value("fmId").toString();
transactions["trans_id"] = trans["trans_id"].toString();
posRequest["transactions"] = transactions;
posRequest["from_pay"] = 1;
QByteArray reqData = QJsonDocument(posRequest).toJson();
QTcpSocket socket;
socket.connectToHost(QHostAddress::LocalHost, 23770);
if(!socket.waitForConnected())
{
FMP_ERROR() << QString::fromLocal8Bit("发送会员退单请求失败: ") << socket.errorString();
emit error(socket.errorString());
return;
}
if(socket.write(reqData) <= 0)
{
FMP_ERROR() << QString::fromLocal8Bit("发送会员退单请求失败: ") << socket.errorString();
emit error(socket.errorString());
return;
}
if(!socket.waitForBytesWritten())
{
FMP_ERROR() << QString::fromLocal8Bit("发送会员退单请求失败: ") << socket.errorString();
emit error(socket.errorString());
return;
}
if(!socket.waitForReadyRead())
{
FMP_ERROR() << QString::fromLocal8Bit("接收会员退单请求失败: ") << socket.errorString();
emit error(socket.errorString());
return;
}
QByteArray resArray = socket.readAll();
socket.disconnectFromHost();
socket.close();
QJsonObject resJson = QJsonDocument::fromJson(resArray).object();
if(resJson["statusCode"].toInt() != 100)
{
FMP_ERROR() << QString::fromLocal8Bit("会员退单请求失败: ") << resJson["msg"].toString();
emit error(resJson["msg"].toString());
return;
}
QJsonObject outjson;
outjson[SQL_KEY_PAYID] = QString::fromLocal8Bit("非码会员支付");
outjson[SQL_KEY_FMID] = query.value("fmId").toString();
outjson[SQL_KEY_PAYTRANSID] = resJson["memberTransId"].toString();
outjson[SQL_KEY_TOTALAMOUNT] = query.value("total_amount").toInt();
//修改客户数据库
WritePosDatabase(trans["trans_id"].toString());
//修改本地sqlite数据库
QVariantHash hash;
hash.insert(SQL_KEY_ISREFUND, true);
hash.insert(SQL_KEY_REFUND_DATE, QDateTime::currentDateTime().toString("yyyy-MM-dd"));
if(!_db->update(q->_table, hash, QString("trans_id = '%1' and fm_id='%2'").arg(trans["trans_id"].toString()).arg(transactions["fm_id"].toString())))
{
FMP_ERROR() << "refund data update failed";
}
emit finished(outjson);
FMP_INFO() << "finished(outjson)";
});
}
void FMPePayPrivate::ControlRefundJson(const QJsonObject &trans)
{
_origin_response = QJsonObject();
FMP_INFO() << "RefundJson trans: " << trans;
QtConcurrent::run([&, trans, this]{
Q_Q(FMPePay);
QStringList keylist;
QSqlQuery query;
QString errors;
QJsonObject outjson;
bool dock_success = false;
QString payTransId = trans[FMP_JKEY_PAY_TRANSID].toString();
QString fmTransId = trans[FMP_JKEY_FM_ORDERID].toString();
QString transId = trans[FMP_JKEY_POS_TRANSID].toString();
if(!fmTransId.isEmpty()) //fm_id为空时,说明只有卡券支付
{
keylist.append(SQL_KEY_EBCODE);
keylist.append(SQL_KEY_TRANSID);
bool dock_success = false;
if(_reverse_flag) {
emit error(QString::fromLocal8Bit("网络连接异常(冲正...)"));
return ;
}
QString payTransId = trans[FMP_JKEY_PAY_TRANSID].toString();
QString fmTransId = trans[FMP_JKEY_FM_ORDERID].toString();
QJsonObject t = trans;
if (!payTransId.isEmpty()) {
if(!_db->find(q->_table, query, keylist, QString(QString(SQL_KEY_PAYTRANSID) + " = '%1'").arg(payTransId)) || !query.next()) {
......@@ -698,22 +811,19 @@ void FMPePayPrivate::ControlRefundJson(const QJsonObject &trans)
emit error(QString::fromLocal8Bit("获取门店信息失败"));
return;
}
FMP_INFO() << "refund json : " << _docked_request;
QString errors;
QJsonObject outjson;
if(!HttpPost(outjson, _docked_request ,errors, q->_time_out)) {
if(!HttpPost(outjson, _docked_request, errors, q->_time_out))
{
emit error(errors);
_origin_response = outjson;
}
else {
else
{
dock_success = true;
QVariantHash hash;
QSqlQuery tmpquery;
QStringList tmpkeylist;
tmpkeylist << SQL_KEY_PAYTRANSID << SQL_KEY_FMID << SQL_KEY_PAYID;
keylist.clear();
keylist << SQL_KEY_PAYTRANSID << SQL_KEY_FMID << SQL_KEY_PAYID;
hash.insert(SQL_KEY_ISREFUND, true);
hash.insert(SQL_KEY_REFUND_DATE, QDateTime::currentDateTime().toString("yyyy-MM-dd"));
......@@ -724,7 +834,7 @@ void FMPePayPrivate::ControlRefundJson(const QJsonObject &trans)
FMP_ERROR() << "refund data update failed";
}
if(!_db->find(q->_table, tmpquery, tmpkeylist, QString("pay_transId = '%1' or fmId = '%2'").arg(payTransId).arg(fmTransId)) || !tmpquery.next())
if(!_db->find(q->_table, query, /*keylist*/QStringList(), QString("pay_transId = '%1' or fmId = '%2'").arg(payTransId).arg(fmTransId)) || !query.next())
{
FMP_ERROR() << "refund data update failed";
......@@ -735,45 +845,92 @@ void FMPePayPrivate::ControlRefundJson(const QJsonObject &trans)
}
else
{
outjson.insert(SQL_KEY_PAYTRANSID, tmpquery.value(0).toString());
outjson.insert(SQL_KEY_FMID, tmpquery.value(1).toString());
outjson.insert(SQL_KEY_PAYID, tmpquery.value(2).toString());
outjson.insert(SQL_KEY_PAYTRANSID, query.value(0).toString());
outjson.insert(SQL_KEY_FMID, query.value(1).toString());
outjson.insert(SQL_KEY_PAYID, query.value(2).toString());
outjson.insert(SQL_KEY_TOTALAMOUNT, trans[FMP_JKEY_REFUND_AMOUNT]);
}
FMP_INFO() << "refund success view json : " << outjson;
if (_is_api) {
_origin_response = outjson;
//如果该笔支付使用的是微信,则调用会员退单结算
if(trans["pay_ebcode"].toString() == "10004")
{
QJsonObject posRequest;
posRequest["pos_ver"] = 1;
posRequest["operator_id"] = q->_operator_id;
posRequest["fm_cmd"] = 1004;
posRequest["pos_id"] = q->_station_id;
posRequest["store_id"] = q->_store_id;
posRequest["business_date"] = QDate::currentDate().toString("yyyyMMdd");
QJsonObject transactions;
transactions["refund_amount"] = query.value("total_amount").toInt();
transactions["fm_id"] = query.value("pay_transId").toString();
transactions["trans_id"] = trans["trans_id"].toString();
posRequest["transactions"] = transactions;
posRequest["from_pay"] = 1;
QByteArray reqData = QJsonDocument(posRequest).toJson();
FMP_DEBUG() << QString::fromLocal8Bit("会员退单结算: ") << reqData;
QTcpSocket socket;
socket.connectToHost(QHostAddress::LocalHost, 23770);
if(!socket.waitForConnected())
{
FMP_ERROR() << QString::fromLocal8Bit("发送会员退单请求失败: ") << socket.errorString();
emit error(socket.errorString());
return;
}
//退款后冲正被核销的卡券
//先从fmp_pay表中根据fmId查找到 trans_id
tmpquery.clear();
if(!_db->find(q->_table, tmpquery, QStringList(), QString("fmId='%1'").arg(fmTransId)))
if(socket.write(reqData) <= 0)
{
FMP_ERROR() << "cannot find the order's trans_id, coupon reversal failed";
FMP_ERROR() << QString::fromLocal8Bit("发送会员退单请求失败: ") << socket.errorString();
emit error(socket.errorString());
return;
}
else
if(!socket.waitForBytesWritten())
{
if(!tmpquery.first())
FMP_ERROR() << QString::fromLocal8Bit("发送会员退单请求失败: ") << socket.errorString();
emit error(socket.errorString());
return;
}
if(!socket.waitForReadyRead())
{
FMP_ERROR() << "there is no such order.";
FMP_ERROR() << QString::fromLocal8Bit("接收会员退单请求失败: ") << socket.errorString();
emit error(socket.errorString());
return;
}
else
QByteArray resArray = socket.readAll();
socket.disconnectFromHost();
socket.close();
QJsonObject resJson = QJsonDocument::fromJson(resArray).object();
if(resJson["statusCode"].toInt() != 100)
{
QString transId = tmpquery.value("trans_id").toString();
tmpquery.clear();
if(_db->find(q->_redeem_table, tmpquery, QStringList(), QString("trans_id='%1'").arg(transId)))
FMP_ERROR() << QString::fromLocal8Bit("会员退单请求失败: ") << resJson;
// emit error(resJson["msg"].toString());
// return;
}
}
FMP_INFO() << "refund success view json : " << outjson;
if (_is_api) {
_origin_response = outjson;
}
}
}
int statusCode = 100;
//退款后冲正被核销的卡券(如果有的话)
if(_db->find(q->_redeem_table, query, QStringList(), QString("trans_id='%1'").arg(transId)))
{
while(tmpquery.next())
while(query.next())
{
QByteArray redeemReq = tmpquery.value("redeem_json").toByteArray();
QByteArray redeemReq = query.value("redeem_json").toByteArray();
QJsonParseError e;
QJsonDocument redeemDoc = QJsonDocument::fromJson(redeemReq, &e);
if(e.error != QJsonParseError::NoError)
{
FMP_ERROR() << e.errorString();
statusCode = e.error;
}
else
{
......@@ -786,18 +943,37 @@ void FMPePayPrivate::ControlRefundJson(const QJsonObject &trans)
{
FMP_ERROR() << "search fmp_redeem table failed, or there is no relevant coupon need to reverse.";
}
//修改客户数据库
WritePosDatabase(trans["trans_id"].toString());
if(fmTransId.isEmpty()) //只有卡券支付时,需自己构建返回的结果json
{
outjson[FMP_JKEY_FM_ORDERID] = transId;
outjson[SQL_KEY_PAYID] = QString::fromLocal8Bit("非码优惠券支付");
outjson[SQL_KEY_PAYTRANSID] = transId;
outjson[FMP_RPAY_PAY_RETURN_STATUSCODE] = statusCode;
outjson[SQL_KEY_TOTALAMOUNT] = trans["refund_amount"].toDouble()/100.0;
QVariantHash hash;
hash.insert(SQL_KEY_ISREFUND, true);
hash.insert(SQL_KEY_REFUND_DATE, QDateTime::currentDateTime().toString("yyyy-MM-dd"));
if(!_db->update(q->_table, hash, QString("trans_id = '%1'").arg(transId)))
{
FMP_ERROR() << "refund data update failed";
}
}
emit finished(outjson);
FMP_INFO() << "finished(outjson)";
}
if (!dock_success) {
emit apiError();
FMP_INFO() << "emit apiError()";
}
});
FMP_INFO() << "Refund done";
}
......@@ -827,7 +1003,7 @@ bool FMPePayPrivate::GetPayJson(const QString& sum, const QString& code)
qDebug() << "get store infomation from settings";
int ver = 2;
qDebug() << q->_store_id;
transaction.insert(FMP_EPAY_TRANSTRACTION_CODE, code);
if (_is_api) {
QJsonObject origin_trans = _origin_request["transactions"].toObject();
......@@ -868,6 +1044,8 @@ bool FMPePayPrivate::GetPayJson(const QString& sum, const QString& code)
_docked_request.insert( FMP_EPAY_TRANSTRACTION, transactionarry);
qDebug() << _docked_request;
return true;
}
......@@ -990,7 +1168,12 @@ void FMPePayPrivate::writeOrderToSqlite()
if (_origin_response.contains("ext")) {
pay_ch["ext"] = _origin_response["ext"];
}
//只有卡券支付时,不存在微信/支付宝支付方式
if(!_origin_response["fmId"].toString().isEmpty())
{
pay_channels.append(pay_ch);
}
//添加卡券支付详情
foreach (QJsonObject result, _payDialog->_redeem_results) {
......@@ -1014,8 +1197,15 @@ void FMPePayPrivate::writeOrderToSqlite()
FMP_ERROR() << "数据发送监控程序失败:" << json;
}
}
//只有卡券支付时,将total_amount字段置为卡券总金额
if(_origin_response["fmId"].toString().isEmpty())
{
_dbWrite["total_amount"] = _payDialog->_pay_total;
}
_dbWrite[FMP_EPAY_TRANSID]=_pos_trans_id;
_dbWrite["pay_total"] = _payDialog->_pay_total/100; //分->元
_dbWrite["pay_total"] = _payDialog->_pay_total;
if(_dbWrite[FMP_RPAY_PAY_RETURN_STATUSCODE].toInt() == 100){
if (!_db->isRecordExist(q->_table,_pos_trans_id)){
_dbWrite[FMP_EPAY_OPERATORID] = _origin_request[FMP_EPAY_OPERATORID];
......@@ -1032,7 +1222,6 @@ void FMPePayPrivate::writeOrderToSqlite()
QJsonObject origin_trans = _origin_request["transactions"].toObject();
_dbWrite["total_amount"]=origin_trans["order_amount"];
_dbWrite["business_date"]=_origin_request["business_date"];
//_dbWrite[FMP_EPAY_TRANSID] = _origin_request[FMP_EPAY_TRANSID];
_dbWrite[FMP_EPAY_OPERATORID] = _origin_request[FMP_EPAY_OPERATORID];
_db->insert(q->_table, _dbWrite.toVariantHash());
}
......@@ -1429,3 +1618,25 @@ QString FMPePayPrivate::final(QString fm_open_id)
}
return result;
}
void FMPePayPrivate::WritePosDatabase(QString transId)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QString name = QString("driver={sql server};server=%1;database=%2;uid=%3;pwd=%4")
.arg("172.16.13.40").arg("kmcyV51").arg("sa").arg("");
db.setDatabaseName(name);
if(!db.open())
{
FMP_ERROR() << QString::fromLocal8Bit("退款后修改pos数据库失败: ") << db.lastError().text();
}
else
{
QSqlQuery query(db);
QString sql = QString("update d_t_food_Bill0 set bSettle=0,bUnsettle=1,eStatus='%1',cUnSettleMan_C=cSettleMan_C,cUnSettleMan=cSettleMan where bSettle =1 and cBill_C='%2'").arg(QString::fromLocal8Bit("付款")).arg(transId);
FMP_INFO() << QString::fromLocal8Bit("退款时修改pos数据库: ") << sql;
if(!query.exec(sql))
{
FMP_ERROR() << QString::fromLocal8Bit("退款后修改pos数据库失败: ") << query.lastError().text();
}
}
}
......@@ -46,6 +46,8 @@ public:
void ControlRefundJson(const QJsonObject &trans);
void ControlVipRefundJson(const QJsonObject &trans);
void GetCheckMode(QString sum);
void GetMode();
......@@ -108,9 +110,11 @@ signals:
protected slots:
void witedata();
protected slots:
void payVip();
void vipFinal();
QString final(QString fm_open_id = QString());
void WritePosDatabase(QString transId);
public:
......
......@@ -883,19 +883,17 @@ void FMPPayDialog::onBtnConfirmClicked()
{
QJsonObject fakeResponse;
fakeResponse["statusCode"] = 100;
fakeResponse["pay_acount"] = "";
fakeResponse["pay_ebcode"] = "";
fakeResponse["pay_id"] = QString::fromLocal8Bit("微信当面付[条码]");
fakeResponse["pay_account"] = "";
fakeResponse["pay_id"] = QString::fromLocal8Bit("非码优惠券支付");
fakeResponse["pay_transId"] = "";
fakeResponse["fmId"] = "";
fakeResponse["total_amount"] = 0;
fakeResponse["alipay_amount"] = 0;
fakeResponse["total_amount"] = _pay_total;
fakeResponse["alipay_amount"] = _pay_total;
fakeResponse["mcoupon_amount"] = 0;
fakeResponse["invoice_amount"] = _pay_total;
fakeResponse["pay_total"] = _pay_total;
fakeResponse["pay_ebcode"] = "10004";
fakeResponse["pay_ebcode"] = "30000";
fakeResponse["isrefund"] = false;
qDebug() << fakeResponse;
_control->writeOrderToSqlite(fakeResponse);
_control->finished(fakeResponse);
return;
......@@ -1040,7 +1038,17 @@ void FMPPayDialog::on_pushButton_2_clicked()
QJsonObject trans;
trans["refund_amount"] = (int)((model->data(idx.sibling(idx.row(), 6)).toDouble() + 0.005) * 100);
trans["fm_id"] = model->data(idx.sibling(idx.row(),0)).toString();
trans["trans_id"] = model->record(idx.row()).value("trans_id").toString();
QString pay_ebcode = model->record(idx.row()).value("pay_ebcode").toString();
trans["pay_ebcode"]= pay_ebcode;
if(pay_ebcode == "1003")
{
_control->ControlVipRefundJson(trans);
}
else
{
_control->ControlRefundJson(trans);
}
_wait->show();
}
......@@ -1158,7 +1166,7 @@ void FMPPayDialog::redeem()
FMPRedeemInterface* redeem = FMP::GetService<FMPRedeemInterface>();
redeem->StartService();
QJsonObject result = redeem->Redeem(needPay, _products_info);
QJsonObject result = redeem->Redeem( _products_info);
FMP_DEBUG() << "redeem result: " << result;
needPay -= result["discount"].toInt()/100.0;
ui->lineedit_num->setText(QString::number(qMax(0.0, needPay)));
......@@ -1198,15 +1206,27 @@ void FMPPayDialog::ShowPayDetail(const QModelIndex &index)
DetailDialog detailDlg(x, y, dis, this);
//微信支付详情
QSqlRecord record = _control->model()->record(index.row());
QString transId = _control->model()->record(index.row()).value("trans_id").toString();
FMPDataBase* database = _control->GetDB();
QSqlQuery query;
QSqlRecord record;
//微信/支付宝 支付详情
if(!database->find(DEFAULT_EPAY_TABLE, query, QStringList(), QString("trans_id='%1' and pay_ebcode!='%2' and pay_ebcode!='%3'").arg(transId).arg("30000").arg("1003")))
{
FMP_ERROR() << "query fmp_pay failed.";
}
else
{
while(query.next())
{
record = query.record();
detailDlg.AddData(record);
}
}
//卡券支付详情
QString transId = record.value("trans_id").toString();
FMPDataBase* database = _control->GetDB();
QSqlQuery query;
if(!database->find(DEFAULT_REDEEM_TABLE, query, QStringList(), QString("trans_id=%1").arg(transId)))
if(!database->find(DEFAULT_REDEEM_TABLE, query, QStringList(), QString("trans_id='%1'").arg(transId)))
{
FMP_ERROR() << "query redeem info failed";
}
......@@ -1214,10 +1234,25 @@ void FMPPayDialog::ShowPayDetail(const QModelIndex &index)
{
while(query.next())
{
QSqlRecord record = query.record();
record = query.record();
detailDlg.AddData(record);
}
}
//会员支付详情
if(!database->find(DEFAULT_VIP_TABLE, query, QStringList(), QString("trans_id='%1'").arg(transId)))
{
FMP_ERROR() << "query fmp_vip failed.";
}
else
{
while(query.next())
{
record = query.record();
detailDlg.AddData(record);
}
}
detailDlg.exec();
}
......@@ -1235,14 +1270,24 @@ void FMPPayDialog::Reverse()
redeem->StartService();
foreach (QJsonObject obj, _reverses)
{
QSqlQuery query;
FMPDataBase* database = nullptr;
QString coupon = obj["transactions"].toArray()[0].toObject()["code"].toString();
QJsonObject result = redeem->Reverse(obj);
int statusCode = result["statusCode"].toInt();
if(statusCode == 100)
{
//如果冲正成功,则从数据库中删除该券的核销记录
//先增加 本次消费金额 输入框的值(即冲正掉的金额)
database = _control->GetDB();
if(database->find(DEFAULT_REDEEM_TABLE, query, QStringList(), QString("code='%1'").arg(coupon)))
{
FMP_ERROR() << QString::fromLocal8Bit("冲正时查询卡券金额失败. 券码:") << coupon;
}
double cur = ui->lineedit_num->text().toDouble();
cur += query.value("total_amount").toInt()/100.0;
ui->lineedit_num->setText(QString::number(cur));
//如果冲正成功,则从数据库中删除该券的核销记录
if(!database->dlt(DEFAULT_REDEEM_TABLE, "code="+coupon))
{
FMP_ERROR() << "delete from redeem_table failed. code=" << coupon;
......
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