Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fmp_vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaojing.zhang
fmp_vip
Commits
d967b2ef
Commit
d967b2ef
authored
Nov 02, 2017
by
NitefullWind
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 完善退款功能。
parent
3ad0cb12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
95 additions
and
19 deletions
+95
-19
fmvip/database/dbop.cpp
+1
-0
fmvip/items/order.cpp
+10
-0
fmvip/items/order.h
+5
-0
fmvip/task/taskfinal.cpp
+8
-3
fmvip/task/taskfund.cpp
+7
-1
fmvip/task/taskpay.cpp
+7
-1
fmvip/task/taskrefund.cpp
+9
-2
fmvip/windows/fmviprefund.cpp
+29
-3
fmvip/windows/fmviprefund.h
+7
-0
fmvip/windows/forms/fmviprefund.ui
+3
-0
tests/testitem/tst_testitem.cpp
+1
-1
tests/testplugin/tst_testplugin.cpp
+8
-8
No files found.
fmvip/database/dbop.cpp
View file @
d967b2ef
...
...
@@ -55,6 +55,7 @@ bool DBOP::CreateTable(const QString &tableName)
"[fm_open_id] VARCHAR(50), "
"[products] TEXT,"
"[settled] BOOL DEFAULT 0,"
"[refunded] BOOL DEFAULT 0,"
"[storeInfoDBID] INTEGER DEFAULT 0"
");"
;
QString
tablePaySql
=
"CREATE TABLE [Pay]("
...
...
fmvip/items/order.cpp
View file @
d967b2ef
...
...
@@ -131,3 +131,13 @@ void Order::setStoreInfoDBID(int storeInfoDBID)
{
_storeInfoDBID
=
storeInfoDBID
;
}
bool
Order
::
refunded
()
const
{
return
_refunded
;
}
void
Order
::
setRefunded
(
bool
refunded
)
{
_refunded
=
refunded
;
}
fmvip/items/order.h
View file @
d967b2ef
...
...
@@ -25,6 +25,7 @@ namespace FMItem {
Q_PROPERTY
(
QString
fm_open_id
READ
fmOpenId
WRITE
setFmOpenId
)
Q_PROPERTY
(
QString
products
READ
productText
WRITE
setProductText
)
Q_PROPERTY
(
bool
settled
READ
settled
WRITE
setSettled
)
Q_PROPERTY
(
bool
refunded
READ
refunded
WRITE
setRefunded
)
Q_PROPERTY
(
int
storeInfoDBID
READ
storeInfoDBID
WRITE
setStoreInfoDBID
)
// Q_PROPERTY(ItemList payList READ payList WRITE setPayList)
// Q_PROPERTY(ProductList productList READ productList WRITE setProductList)
...
...
@@ -64,6 +65,9 @@ namespace FMItem {
int
storeInfoDBID
()
const
;
void
setStoreInfoDBID
(
int
storeInfoDBID
);
bool
refunded
()
const
;
void
setRefunded
(
bool
refunded
);
private
:
QString
_orderId
;
QString
_fmOrderId
;
...
...
@@ -76,6 +80,7 @@ namespace FMItem {
QString
_productText
;
bool
_settled
;
bool
_refunded
;
int
_storeInfoDBID
;
...
...
fmvip/task/taskfinal.cpp
View file @
d967b2ef
...
...
@@ -27,16 +27,21 @@ TaskFinal::~TaskFinal()
void
TaskFinal
::
packagePOSReq
()
{
QString
orderId
=
getPosJsonValue
(
PosProps
.
OrderId
).
toString
();
DBOP
::
GetOrderByOrderId
(
orderId
,
_order
);
FMItem
::
StoreInfo
storeInfo
;
bool
isOk
=
DBOP
::
GetLastItem
(
&
storeInfo
);
if
(
isOk
)
{
posReqJsonObj
=
storeInfo
.
toJson
(
QStringList
(),
posReqJsonObj
);
_order
->
setStoreInfoDBID
(
storeInfo
.
DBID
());
}
else
{
QString
info
=
QString
::
fromLocal8Bit
(
"未设置门店信息,不能进行结算."
);
FMP_WARN
()
<<
info
;
setError
(
FM_API_ERROR
,
info
);
return
;
}
QString
orderId
=
getPosJsonValue
(
PosProps
.
OrderId
).
toString
();
DBOP
::
GetOrderByOrderId
(
orderId
,
_order
);
if
(
_order
->
isNew
())
{
_order
->
SetPropertiesByJson
(
posReqJsonObj
);
DBOP
::
Save
(
_order
);
...
...
fmvip/task/taskfund.cpp
View file @
d967b2ef
...
...
@@ -13,7 +13,13 @@ TaskFund::TaskFund(QJsonObject &jsonObj, QObject *parent)
void
TaskFund
::
packagePOSReq
()
{
FMItem
::
StoreInfo
storeInfo
;
DBOP
::
GetLastItem
(
&
storeInfo
);
bool
isOk
=
DBOP
::
GetLastItem
(
&
storeInfo
);
if
(
!
isOk
)
{
QString
info
=
QString
::
fromLocal8Bit
(
"未设置门店信息,不能进行充值."
);
FMP_WARN
()
<<
info
;
setError
(
FM_API_ERROR
,
info
);
return
;
}
posReqJsonObj
=
storeInfo
.
toJson
(
QStringList
(),
posReqJsonObj
);
...
...
fmvip/task/taskpay.cpp
View file @
d967b2ef
...
...
@@ -28,7 +28,13 @@ TaskPay::~TaskPay()
void
TaskPay
::
packagePOSReq
()
{
FMItem
::
StoreInfo
storeInfo
;
DBOP
::
GetLastItem
(
&
storeInfo
);
bool
isOk
=
DBOP
::
GetLastItem
(
&
storeInfo
);
if
(
!
isOk
)
{
QString
info
=
QString
::
fromLocal8Bit
(
"未设置门店信息,不能再进行支付."
);
FMP_WARN
()
<<
info
;
setError
(
FM_API_ERROR
,
info
);
return
;
}
posReqJsonObj
=
storeInfo
.
toJson
(
QStringList
(),
posReqJsonObj
);
// 检查订单是否已结算
...
...
fmvip/task/taskrefund.cpp
View file @
d967b2ef
#include "taskrefund.h"
#
include
"taskrefund.h"
#include "fmviprefund.h"
#include "database/dbop.h"
#include "items/item.h"
...
...
@@ -31,6 +31,11 @@ void TaskRefund::packagePOSReq()
bool
isOk
=
DBOP
::
GetLastItem
(
&
storeInfo
);
if
(
isOk
)
{
posReqJsonObj
=
storeInfo
.
toJson
(
QStringList
(),
posReqJsonObj
);
}
else
{
QString
info
=
QString
::
fromLocal8Bit
(
"未设置门店信息,不能进行退款."
);
FMP_WARN
()
<<
info
;
setError
(
FM_API_ERROR
,
info
);
return
;
}
}
...
...
@@ -77,6 +82,7 @@ void TaskRefund::onRefundPay(int DBID)
}
qobject_cast
<
FMVipRefund
*>
(
_window
)
->
refresh
();
qobject_cast
<
FMVipRefund
*>
(
_window
)
->
setIsRefundSuccess
(
true
);
}
else
{
QString
msg
=
searchJsonValue
(
rspObj
,
PosProps
.
Msg
).
toString
();
FMMsgWnd
::
FailureWnd
(
msg
,
_window
);
...
...
@@ -93,9 +99,10 @@ void TaskRefund::onRefundOrder(int DBID)
QJsonObject
rspObj
=
QJsonDocument
::
fromJson
(
rspData
).
object
();
if
(
rspObj
[
PosProps
.
StatusCode
].
toInt
()
==
FM_API_SUCCESS
)
{
orderPointer
->
set
PaidAmount
(
0
);
orderPointer
->
set
Refunded
(
true
);
DBOP
::
Save
(
orderPointer
.
data
());
qobject_cast
<
FMVipRefund
*>
(
_window
)
->
refresh
();
qobject_cast
<
FMVipRefund
*>
(
_window
)
->
setIsRefundSuccess
(
true
);
_refundAmount
=
orderPointer
->
paidAmount
();
}
else
{
...
...
fmvip/windows/fmviprefund.cpp
View file @
d967b2ef
...
...
@@ -13,7 +13,8 @@
FMVipRefund
::
FMVipRefund
(
QDialog
*
parent
)
:
FMVipWnd
(
parent
),
ui
(
new
Ui
::
FMVipRefund
),
order
(
new
FMItem
::
Order
(
this
))
order
(
new
FMItem
::
Order
(
this
))
,
_isRefundSuccess
(
false
)
{
ui
->
setupUi
(
this
);
}
...
...
@@ -52,10 +53,15 @@ bool FMVipRefund::initWnd(Session *session)
.
arg
(
order
->
orderAmount
()
/
100.0
).
arg
(
order
->
paidAmount
()
/
100.0
)
.
arg
(
storeInfo
.
businessDate
()).
arg
(
storeInfo
.
operatorId
())
.
arg
(
storeInfo
.
storeId
()).
arg
(
storeInfo
.
posId
());
if
(
order
->
settled
())
{
if
(
order
->
refunded
())
{
orderInfo
+=
QString
::
fromLocal8Bit
(
"订单已退款
\n
"
);
ui
->
btn_refund_order
->
setEnabled
(
false
);
}
else
if
(
order
->
settled
())
{
orderInfo
+=
QString
::
fromLocal8Bit
(
"订单已结算,可以退整单
\n
"
);
ui
->
btn_refund_order
->
setEnabled
(
true
);
}
else
{
orderInfo
+=
QString
::
fromLocal8Bit
(
"订单还未结算,可以选择退某笔支付
\n
"
);
ui
->
btn_refund_order
->
setEnabled
(
false
);
}
ui
->
textEdit_order
->
setText
(
orderInfo
);
...
...
@@ -87,8 +93,9 @@ bool FMVipRefund::initWnd(Session *session)
btn
->
setProperty
(
"DBID"
,
payPointer
->
DBID
());
connect
(
btn
,
&
QPushButton
::
clicked
,
this
,
&
FMVipRefund
::
onBtnRefundClicked
);
ui
->
tableWidget_pays
->
setCellWidget
(
row
,
col
,
btn
);
btn
->
setCursor
(
QCursor
(
Qt
::
PointingHandCursor
));
if
(
payPointer
->
payAmount
()
<=
payPointer
->
refundAmount
())
{
if
(
(
payPointer
->
payAmount
()
<=
payPointer
->
refundAmount
())
||
order
->
settled
()
||
order
->
refunded
())
{
btn
->
setEnabled
(
false
);
}
}
...
...
@@ -119,3 +126,22 @@ void FMVipRefund::on_btn_refund_order_clicked()
{
emit
refundOrder
(
order
->
DBID
());
}
void
FMVipRefund
::
on_close_btn_clicked
()
{
if
(
_isRefundSuccess
)
{
this
->
accept
();
}
else
{
this
->
reject
();
}
}
bool
FMVipRefund
::
isRefundSuccess
()
const
{
return
_isRefundSuccess
;
}
void
FMVipRefund
::
setIsRefundSuccess
(
bool
isRefundSuccess
)
{
_isRefundSuccess
=
isRefundSuccess
;
}
fmvip/windows/fmviprefund.h
View file @
d967b2ef
...
...
@@ -25,6 +25,9 @@ public:
void
refresh
();
bool
isRefundSuccess
()
const
;
void
setIsRefundSuccess
(
bool
isRefundSuccess
);
signals
:
void
refundPay
(
int
);
void
refundOrder
(
int
);
...
...
@@ -34,11 +37,15 @@ private slots:
void
on_btn_refund_order_clicked
();
void
on_close_btn_clicked
();
private
:
Ui
::
FMVipRefund
*
ui
;
FMItem
::
Order
*
order
;
QList
<
QSharedPointer
<
FMItem
::
Pay
>
>
pays
;
bool
_isRefundSuccess
;
};
#endif // FMVIPREFUND_H
fmvip/windows/forms/fmviprefund.ui
View file @
d967b2ef
...
...
@@ -211,6 +211,9 @@
</item>
<item>
<widget
class=
"QPushButton"
name=
"btn_refund_order"
>
<property
name=
"cursor"
>
<cursorShape>
PointingHandCursor
</cursorShape>
</property>
<property
name=
"text"
>
<string>
退整单
</string>
</property>
...
...
tests/testitem/tst_testitem.cpp
View file @
d967b2ef
...
...
@@ -156,7 +156,7 @@ void TestItem::test_PropertyNames_data()
QTest
::
newRow
(
"Item"
)
<<
gItem
<<
itemPNames
.
length
()
<<
itemPNames
;
orderPNames
<<
"objectName"
<<
"DBID"
<<
"order_id"
<<
"fm_order_id"
<<
"order_amount"
<<
"paid_amount"
<<
"undis_amount"
<<
"fm_open_id"
<<
"products"
<<
"settled"
<<
"storeInfoDBID"
;
<<
"fm_open_id"
<<
"products"
<<
"settled"
<<
"
refunded"
<<
"
storeInfoDBID"
;
QTest
::
newRow
(
"Order"
)
<<
qobject_cast
<
Item
*>
(
gOrder
)
<<
orderPNames
.
length
()
<<
orderPNames
;
payPNames
<<
"objectName"
<<
"DBID"
<<
"pay_id"
<<
"pay_str"
<<
"pay_amount"
<<
"refund_amount"
<<
"dis_amount"
<<
"account"
<<
"trans_id"
<<
"fm_trans_id"
<<
"orderDBID"
;
...
...
tests/testplugin/tst_testplugin.cpp
View file @
d967b2ef
...
...
@@ -47,7 +47,7 @@ void TestPlugin::test_dotask_data()
{
QTest
::
addColumn
<
QByteArray
>
(
"reqData"
);
QTest
::
newRow
(
"Refund"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1004,
\"
order_id
\"
:
\"
2017101800
1
\"
}"
);
QTest
::
newRow
(
"Refund"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1004,
\"
order_id
\"
:
\"
2017101800
3
\"
}"
);
QTest
::
newRow
(
"Refund not"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1004,
\"
order_id
\"
:
\"
12345
\"
}"
);
QTest
::
newRow
(
"SetStoreInfo"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1000,
\"
store_id
\"
:
\"
99999
\"
,
\"
pos_id
\"
:
\"
1
\"
,
\"
business_date
\"
:
\"
20171016
\"
,
\"
operator_id
\"
:
\"
001
\"
}"
);
QTest
::
newRow
(
"SetStoreInfo_need_posId"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1000,
\"
store_id
\"
:
\"
fm9999
\"
,
\"
pos_id
\"
:
\"\"
,
\"
business_date
\"
:
\"
20171016
\"
,
\"
operator_id
\"
:
\"
001
\"
}"
);
...
...
@@ -56,27 +56,27 @@ void TestPlugin::test_dotask_data()
QTest
::
newRow
(
"Login"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1001}"
);
QTest
::
newRow
(
"Pay"
)
<<
QByteArray
(
"{"
"
\"
fm_cmd
\"
: 1003,"
"
\"
order_amount
\"
:900
0
,"
"
\"
trans_amount
\"
: 800
0
,"
"
\"
undis_amount
\"
: 800
0
,"
"
\"
order_id
\"
:
\"
2017101800
1
\"
,"
"
\"
order_amount
\"
:900,"
"
\"
trans_amount
\"
: 800,"
"
\"
undis_amount
\"
: 800,"
"
\"
order_id
\"
:
\"
2017101800
3
\"
,"
"
\"
trans_id
\"
:
\"
100001
\"
,"
"
\"
products
\"
: ["
" {"
"
\"
pid
\"
:
\"
0079020
\"
,"
"
\"
name
\"
:
\"
测试商品1
\"
,"
"
\"
price
\"
: 100
0
,"
"
\"
price
\"
: 100,"
"
\"
consume_num
\"
: 1"
" },"
" { "
"
\"
pid
\"
:
\"
0077842
\"
,"
"
\"
name
\"
:
\"
测试商品2
\"
,"
"
\"
price
\"
: 800
0
,"
"
\"
price
\"
: 800,"
"
\"
consume_num
\"
: 2"
" }"
" ]"
"}"
);
QTest
::
newRow
(
"Order"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1007,
\"
order_id
\"
:
\"
2017101800
1
\"
}"
);
QTest
::
newRow
(
"Order"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1007,
\"
order_id
\"
:
\"
2017101800
3
\"
}"
);
QTest
::
newRow
(
"Fund"
)
<<
QByteArray
(
"{
\"
fm_cmd
\"
: 1002,
\"
order_id
\"
:
\"
20171018001
\"
}"
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment