Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fmtakeout
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
李定达
fmtakeout
Commits
4b517863
Commit
4b517863
authored
Sep 25, 2018
by
李定达
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.model层剔除上一次订单状态退单状态;2.新旧数据库兼容;3.调整界面逻辑订单和tabel页面绑定
parent
c6986cae
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
122 additions
and
217 deletions
+122
-217
takeout/base/Arithmetic/util.cpp
+2
-0
takeout/base/Print/printlib.cpp
+0
-2
takeout/control/orderprintwork.cpp
+1
-4
takeout/model/posorderpool.cpp
+21
-102
takeout/model/posorderpool.h
+12
-12
takeout/preDefine.h
+3
-1
takeout/view/detailForm.cpp
+14
-7
takeout/view/floatForm.cpp
+6
-5
takeout/view/mainForm.cpp
+53
-81
takeout/view/mainForm.h
+10
-3
No files found.
takeout/base/Arithmetic/util.cpp
View file @
4b517863
...
@@ -44,6 +44,7 @@ QString GetOperByStatus(int status, bool bRefuse)
...
@@ -44,6 +44,7 @@ QString GetOperByStatus(int status, bool bRefuse)
return
"NULL"
;
return
"NULL"
;
break
;
break
;
case
20
:
case
20
:
case
22
:
if
(
bRefuse
)
if
(
bRefuse
)
{
{
return
QString
::
fromLocal8Bit
(
OPERATION_REFUSEREFUND
);
return
QString
::
fromLocal8Bit
(
OPERATION_REFUSEREFUND
);
...
@@ -94,6 +95,7 @@ QString GetOperNameByStatus(int status, bool bRefuse)
...
@@ -94,6 +95,7 @@ QString GetOperNameByStatus(int status, bool bRefuse)
return
"NULL"
;
return
"NULL"
;
break
;
break
;
case
20
:
case
20
:
case
22
:
if
(
bRefuse
)
if
(
bRefuse
)
{
{
return
QString
::
fromLocal8Bit
(
OPERATIONNAME_REFUSEREFUND
);
return
QString
::
fromLocal8Bit
(
OPERATIONNAME_REFUSEREFUND
);
...
...
takeout/base/Print/printlib.cpp
View file @
4b517863
...
@@ -125,7 +125,6 @@ bool PrintLib::DoPrint(const QString &content, OrderObject *orderObject, QString
...
@@ -125,7 +125,6 @@ bool PrintLib::DoPrint(const QString &content, OrderObject *orderObject, QString
QByteArray
iniData
=
_GetPrintIni
().
toLocal8Bit
();
QByteArray
iniData
=
_GetPrintIni
().
toLocal8Bit
();
char
inichar
[
2048
]
=
{
0x0
};
char
inichar
[
2048
]
=
{
0x0
};
strcpy
(
inichar
,
iniData
.
data
());
strcpy
(
inichar
,
iniData
.
data
());
QLOG_INFO
()
<<
"4444444444444444444"
<<
m_b_load_sucfl
;
if
(
m_b_load_sucfl
)
if
(
m_b_load_sucfl
)
{
{
if
(
!
f_LaodAddress
())
if
(
!
f_LaodAddress
())
...
@@ -139,7 +138,6 @@ bool PrintLib::DoPrint(const QString &content, OrderObject *orderObject, QString
...
@@ -139,7 +138,6 @@ bool PrintLib::DoPrint(const QString &content, OrderObject *orderObject, QString
return
false
;
return
false
;
}
}
_order
=
orderObject
;
_order
=
orderObject
;
QLOG_INFO
()
<<
"55555555555555555555"
<<
_order
->
delivery_time
;
bool
result
;
bool
result
;
PrintDocument
doc
=
PrintDocument
::
ParseToDocument
(
content
,
result
,
error
);
PrintDocument
doc
=
PrintDocument
::
ParseToDocument
(
content
,
result
,
error
);
if
(
!
result
)
if
(
!
result
)
...
...
takeout/control/orderprintwork.cpp
View file @
4b517863
...
@@ -41,10 +41,7 @@ bool orderprintwork::event(QEvent *e)
...
@@ -41,10 +41,7 @@ bool orderprintwork::event(QEvent *e)
OrderObject
order
;
OrderObject
order
;
PrintLib
print
;
PrintLib
print
;
int
last_status
;
PosOrderPool
::
GetOrderObject
(
map
[
EVENT_KEY_ORDERID
].
toString
(),
order
);
PosOrderPool
::
GetOrderObject
(
map
[
EVENT_KEY_ORDERID
].
toString
(),
order
,
last_status
);
QLOG_INFO
()
<<
"begin print ..."
;
QLOG_INFO
()
<<
"begin print ..."
;
...
...
takeout/model/posorderpool.cpp
View file @
4b517863
...
@@ -14,10 +14,13 @@
...
@@ -14,10 +14,13 @@
#include "QsLog.h"
#include "QsLog.h"
#include "base/DB/fm_database.h"
#include "base/DB/fm_database.h"
//互斥读写
//互斥读写
QMap
<
QString
,
Order_Info
>
PosOrderPool
::
s_order_pool
;
QMap
<
QString
,
Order_Info
>
PosOrderPool
::
s_order_pool
;
//写互斥锁
//写互斥锁
QMutex
PosOrderPool
::
s_mutex
;
QMutex
PosOrderPool
::
s_mutex
;
//已有订单
QStringList
PosOrderPool
::
s_order_list
;
PosOrderPool
::
PosOrderPool
(
QObject
*
parent
)
:
QObject
(
parent
)
PosOrderPool
::
PosOrderPool
(
QObject
*
parent
)
:
QObject
(
parent
)
{
{
...
@@ -40,11 +43,6 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
...
@@ -40,11 +43,6 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
unsigned
int
nowtimer
=
QDateTime
::
currentDateTime
().
toTime_t
();
unsigned
int
nowtimer
=
QDateTime
::
currentDateTime
().
toTime_t
();
for
(
auto
it
=
s_order_pool
.
begin
();
it
!=
s_order_pool
.
end
();
)
for
(
auto
it
=
s_order_pool
.
begin
();
it
!=
s_order_pool
.
end
();
)
{
{
// QLOG_INFO() << QThread::currentThreadId() << it.key();
// Order_Info info = it.value();
// QLOG_INFO() << QThread::currentThreadId() << info.order_id << info.order_change_time
// << info.order_last_status << info.order_refund_status <<
// info.order_status << info.order_write_status;
if
(
it
.
value
().
order_change_time
>
nowtimer
&&
(
it
.
value
().
order_status
==
CompleteRefundOrder
||
it
.
value
().
order_status
==
CompleteOrder
))
if
(
it
.
value
().
order_change_time
>
nowtimer
&&
(
it
.
value
().
order_status
==
CompleteRefundOrder
||
it
.
value
().
order_status
==
CompleteOrder
))
{
{
...
@@ -56,7 +54,7 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
...
@@ -56,7 +54,7 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
continue
;
continue
;
}
}
if
(
it
.
value
().
order_change_time
<
nowtimer
&&
nowtimer
-
it
.
value
().
order_change_time
>
86400
)
if
(
it
.
value
().
order_change_time
<
nowtimer
&&
nowtimer
-
it
.
value
().
order_change_time
>
ORDER_SAVE_DATE
)
{
{
QVariantMap
map
;
QVariantMap
map
;
map
.
insert
(
EVENT_KEY_ORDERID
,
it
.
key
());
map
.
insert
(
EVENT_KEY_ORDERID
,
it
.
key
());
...
@@ -72,7 +70,7 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
...
@@ -72,7 +70,7 @@ PosOrderPool::PosOrderPool(QObject *parent) : QObject(parent)
s_mutex
.
unlock
();
s_mutex
.
unlock
();
}
}
_timer
.
stop
();
_timer
.
stop
();
_timer
.
start
(
600000
);
_timer
.
start
(
DEFALUE_CHECK_TIME
);
});
});
_timer
.
start
(
10000
);
_timer
.
start
(
10000
);
...
@@ -89,11 +87,6 @@ void PosOrderPool::loadOrders()
...
@@ -89,11 +87,6 @@ void PosOrderPool::loadOrders()
list
.
append
(
DB_KEY_ORDERWRITETIMR
);
list
.
append
(
DB_KEY_ORDERWRITETIMR
);
list
.
append
(
DB_KEY_ORDERREFUNDSATUS
);
list
.
append
(
DB_KEY_ORDERREFUNDSATUS
);
list
.
append
(
DB_KEY_ORDERPRINTFSTATUS
);
list
.
append
(
DB_KEY_ORDERPRINTFSTATUS
);
// list.append(DB_KEY_RESERVED1);
// list.append(DB_KEY_RESERVED2);
// list.append(DB_KEY_RESERVED3);
// list.append(DB_KEY_RESERVED4);
// list.append(DB_KEY_RESERVED5);
QSqlQuery
query
;
QSqlQuery
query
;
...
@@ -108,80 +101,15 @@ void PosOrderPool::loadOrders()
...
@@ -108,80 +101,15 @@ void PosOrderPool::loadOrders()
info
.
order_write_status
=
query
.
value
(
2
).
toInt
();
info
.
order_write_status
=
query
.
value
(
2
).
toInt
();
info
.
order_refund_status
=
query
.
value
(
3
).
toInt
();
info
.
order_refund_status
=
query
.
value
(
3
).
toInt
();
info
.
order_print_status
=
query
.
value
(
4
).
toInt
();
info
.
order_print_status
=
query
.
value
(
4
).
toInt
();
info
.
order_last_status
=
DefaultOrder
;
info
.
order_status
=
DefaultOrder
;
info
.
order_status
=
DefaultOrder
;
info
.
order_refund
=
DefaultOrder
;
info
.
order_refund
=
DefaultOrder
;
info
.
order_last_refund
=
DefaultOrder
;
// info.reserved1 = query.value(5).toInt();
// info.reserved2 = query.value(6).toInt();
// info.reserved3 = query.value(7).toInt();
// info.reserved4 = query.value(8).toInt();
// info.reserved5 = query.value(9).toInt();
s_mutex
.
lock
();
s_mutex
.
lock
();
s_order_pool
.
insert
(
info
.
order_id
,
info
);
s_order_pool
.
insert
(
info
.
order_id
,
info
);
s_order_list
.
append
(
info
.
order_id
);
s_mutex
.
unlock
();
s_mutex
.
unlock
();
}
}
}
}
void
PosOrderPool
::
GetOrderStatusAndLastStatus
(
Order_Info
orderinfo
,
int
&
status
,
int
&
laststatus
)
{
if
(
orderinfo
.
order_last_refund
!=
orderinfo
.
order_refund
)
{
if
((
orderinfo
.
order_status
==
ServiceOrder
||
orderinfo
.
order_status
==
CompleteOrder
||
orderinfo
.
order_status
==
CancelOrder
)
&&
orderinfo
.
order_last_status
==
DefaultOrder
)
{
status
=
orderinfo
.
order_status
;
laststatus
=
orderinfo
.
order_last_status
;
return
;
}
if
((
orderinfo
.
order_refund
==
ApplicationRefundOrder
||
orderinfo
.
order_refund
==
ApplicationPartialRefundOrder
))
{
status
=
orderinfo
.
order_refund
;
laststatus
=
orderinfo
.
order_status
;
return
;
}
if
(
orderinfo
.
order_last_refund
==
ApplicationPartialRefundOrder
&&
orderinfo
.
order_refund
==
CompleteRefundOrder
)
{
status
=
orderinfo
.
order_status
;
laststatus
=
orderinfo
.
order_last_refund
;
return
;
}
if
(
orderinfo
.
order_last_refund
==
ApplicationRefundOrder
&&
orderinfo
.
order_refund
==
CompleteRefundOrder
)
{
status
=
orderinfo
.
order_refund
;
laststatus
=
orderinfo
.
order_last_refund
;
return
;
}
if
(
orderinfo
.
order_last_refund
==
ApplicationPartialRefundOrder
&&
orderinfo
.
order_refund
==
RefusingRefundOrder
)
{
status
=
orderinfo
.
order_status
;
laststatus
=
orderinfo
.
order_last_refund
;
return
;
}
if
(
orderinfo
.
order_last_refund
==
ApplicationRefundOrder
&&
orderinfo
.
order_refund
==
RefusingRefundOrder
)
{
status
=
orderinfo
.
order_status
;
laststatus
=
orderinfo
.
order_last_refund
;
return
;
}
}
status
=
orderinfo
.
order_status
;
laststatus
=
orderinfo
.
order_last_status
;
return
;
}
void
PosOrderPool
::
removeOrderInfo
(
QString
key
)
void
PosOrderPool
::
removeOrderInfo
(
QString
key
)
{
{
s_order_pool
.
remove
(
key
);
s_order_pool
.
remove
(
key
);
...
@@ -207,9 +135,6 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
...
@@ -207,9 +135,6 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
INITORDERINFO
(
order
,
info
);
INITORDERINFO
(
order
,
info
);
QLOG_DEBUG
()
<<
"%%%%%%%%%%%%%%%%%%%%%%%%%%%"
<<
info
.
order_id
<<
info
.
order_refund
<<
info
.
order_last_refund
;
QLOG_DEBUG
()
<<
"%%%%%%%%%%%%%%%%%%%%%%%%%%%"
<<
info
.
order_id
<<
info
.
order_status
<<
info
.
order_last_status
;
s_order_pool
.
insert
(
order
.
order_id
,
info
);
s_order_pool
.
insert
(
order
.
order_id
,
info
);
DEFAULTPOSTEVENT
(
PosEvent
::
s_change_order
,
order
.
order_id
);
DEFAULTPOSTEVENT
(
PosEvent
::
s_change_order
,
order
.
order_id
);
...
@@ -232,14 +157,14 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
...
@@ -232,14 +157,14 @@ bool PosOrderPool::TryInsertOrder(OrderObject order)
Order_Info
info
;
Order_Info
info
;
QLOG_DEBUG
()
<<
"$$$$$$$$$$$$$$$$$$$$$$$$$$$"
<<
info
.
order_id
<<
info
.
order_refund
<<
info
.
order_last_refund
;
QLOG_DEBUG
()
<<
"$$$$$$$$$$$$$$$$$$$$$$$$$$$"
<<
info
.
order_id
<<
info
.
order_refund
;
QLOG_DEBUG
()
<<
"$$$$$$$$$$$$$$$$$$$$$$$$$$$"
<<
info
.
order_id
<<
info
.
order_status
<<
info
.
order_last_status
;
QLOG_DEBUG
()
<<
"$$$$$$$$$$$$$$$$$$$$$$$$$$$"
<<
info
.
order_id
<<
info
.
order_status
;
UPDATEORDERINFO
(
oldinfo
,
order
,
info
);
UPDATEORDERINFO
(
oldinfo
,
order
,
info
);
QLOG_DEBUG
()
<<
"@@@@@@@@@@@@@@@@@@@@@@@@@@@"
<<
info
.
order_id
<<
info
.
order_refund
<<
info
.
order_last_refund
;
QLOG_DEBUG
()
<<
"@@@@@@@@@@@@@@@@@@@@@@@@@@@"
<<
info
.
order_id
<<
info
.
order_refund
;
QLOG_DEBUG
()
<<
"@@@@@@@@@@@@@@@@@@@@@@@@@@@"
<<
info
.
order_id
<<
info
.
order_status
<<
info
.
order_last_status
;
QLOG_DEBUG
()
<<
"@@@@@@@@@@@@@@@@@@@@@@@@@@@"
<<
info
.
order_id
<<
info
.
order_status
;
if
(
oldinfo
.
order_status
!=
order
.
status
||
oldinfo
.
order_refund
!=
order
.
refund_status
)
if
(
oldinfo
.
order_status
!=
order
.
status
||
oldinfo
.
order_refund
!=
order
.
refund_status
)
...
@@ -275,25 +200,22 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun
...
@@ -275,25 +200,22 @@ bool PosOrderPool::TryChangeOrderStatus(QString key, int order_status, int refun
Order_Info
info
=
s_order_pool
[
key
];
Order_Info
info
=
s_order_pool
[
key
];
if
((
info
.
order_last_status
!=
info
.
order_status
&&
info
.
order_status
!=
order_status
)
||
if
(
info
.
order_status
!=
order_status
||
info
.
order_refund
!=
refundstatus
)
(
refundstatus
!=
DefaultOrder
&&
info
.
order_last_refund
!=
info
.
order_refund
&&
info
.
order_refund
!=
refundstatus
))
{
{
if
(
info
.
order_status
!=
order_status
)
if
(
info
.
order_status
!=
order_status
)
{
{
info
.
order_last_status
=
info
.
order_status
;
info
.
order_status
=
(
Order_Status
)
order_status
;
info
.
order_status
=
(
Order_Status
)
order_status
;
info
.
order_data
.
status
=
order_status
;
info
.
order_data
.
status
=
order_status
;
}
}
if
(
info
.
order_refund
!=
refundstatus
)
if
(
info
.
order_refund
!=
refundstatus
)
{
{
info
.
order_last_refund
=
info
.
order_refund
;
info
.
order_refund
=
(
Order_Status
)
refundstatus
;
info
.
order_refund
=
(
Order_Status
)
refundstatus
;
info
.
order_data
.
refund_status
=
refundstatus
;
info
.
order_data
.
refund_status
=
refundstatus
;
}
}
QLOG_DEBUG
()
<<
"+++++++++++++++++++++++++++"
<<
info
.
order_refund
<<
info
.
order_last_refund
;
QLOG_DEBUG
()
<<
"+++++++++++++++++++++++++++"
<<
info
.
order_refund
;
QLOG_DEBUG
()
<<
"+++++++++++++++++++++++++++"
<<
info
.
order_status
<<
info
.
order_last_status
;
QLOG_DEBUG
()
<<
"+++++++++++++++++++++++++++"
<<
info
.
order_status
;
QLOG_DEBUG
()
<<
"+++++++++++++++++++++++++++"
<<
order_status
<<
refundstatus
;
QLOG_DEBUG
()
<<
"+++++++++++++++++++++++++++"
<<
order_status
<<
refundstatus
;
...
@@ -360,7 +282,7 @@ bool PosOrderPool::TryChangeOrderRefundStatus(QString key, int order_refund_stat
...
@@ -360,7 +282,7 @@ bool PosOrderPool::TryChangeOrderRefundStatus(QString key, int order_refund_stat
return
false
;
return
false
;
}
}
bool
PosOrderPool
::
GetOrderObject
(
QString
key
,
OrderObject
&
order
,
int
&
last_status
)
bool
PosOrderPool
::
GetOrderObject
(
QString
key
,
OrderObject
&
order
)
{
{
QMutexLocker
loker
(
&
s_mutex
);
QMutexLocker
loker
(
&
s_mutex
);
...
@@ -369,19 +291,12 @@ bool PosOrderPool::GetOrderObject(QString key, OrderObject &order, int &last_sta
...
@@ -369,19 +291,12 @@ bool PosOrderPool::GetOrderObject(QString key, OrderObject &order, int &last_sta
Order_Info
info
=
s_order_pool
[
key
];
Order_Info
info
=
s_order_pool
[
key
];
int
status
=
DefaultOrder
;
GetOrderStatusAndLastStatus
(
info
,
status
,
last_status
);
QLOG_DEBUG
()
<<
"####################"
<<
info
.
order_id
<<
"order status : "
<<
status
<<
"; last status : "
<<
last_status
;
order
=
info
.
order_data
;
order
=
info
.
order_data
;
order
.
status
=
status
;
return
true
;
return
true
;
}
}
bool
PosOrderPool
::
GetOrderStatus
(
QString
key
,
int
&
status
,
int
&
last_status
)
bool
PosOrderPool
::
GetOrderStatus
(
QString
key
,
int
&
status
,
int
&
refund_status
,
bool
&
oldorder
)
{
{
QMutexLocker
loker
(
&
s_mutex
);
QMutexLocker
loker
(
&
s_mutex
);
...
@@ -390,9 +305,13 @@ bool PosOrderPool::GetOrderStatus(QString key, int &status, int &last_status)
...
@@ -390,9 +305,13 @@ bool PosOrderPool::GetOrderStatus(QString key, int &status, int &last_status)
Order_Info
info
=
s_order_pool
[
key
];
Order_Info
info
=
s_order_pool
[
key
];
GetOrderStatusAndLastStatus
(
info
,
status
,
last_status
);
status
=
info
.
order_status
;
refund_status
=
info
.
order_refund_status
;
QLOG_DEBUG
()
<<
"###############order status : "
<<
status
<<
"; last status : "
<<
last_status
;
if
(
s_order_list
.
contains
(
info
.
order_id
,
Qt
::
CaseInsensitive
))
oldorder
=
true
;
else
oldorder
=
false
;
return
true
;
return
true
;
}
}
...
...
takeout/model/posorderpool.h
View file @
4b517863
...
@@ -17,21 +17,21 @@
...
@@ -17,21 +17,21 @@
if(oldorder.order_refund != neworder.refund_status) \
if(oldorder.order_refund != neworder.refund_status) \
{ \
{ \
info.order_refund = (Order_Status)neworder.refund_status; \
info.order_refund = (Order_Status)neworder.refund_status; \
info.order_last_refund = oldorder.order_refund;
\
/*info.order_last_refund = oldorder.order_refund;*/
\
} \
} \
else \
else \
{ \
{ \
info.order_refund = (Order_Status)oldorder.order_refund; \
info.order_refund = (Order_Status)oldorder.order_refund; \
info.order_last_refund = oldorder.order_last_refund;
\
/*info.order_last_refund = oldorder.order_last_refund;*/
\
} \
} \
if(oldorder.order_status != neworder.status) \
if(oldorder.order_status != neworder.status) \
{ \
{ \
info.order_last_status = oldorder.order_status;
\
/*info.order_last_status = oldorder.order_status;*/
\
info.order_status = (Order_Status)neworder.status; \
info.order_status = (Order_Status)neworder.status; \
} \
} \
else \
else \
{ \
{ \
info.order_last_status = oldorder.order_last_status;
\
/*info.order_last_status = oldorder.order_last_status;*/
\
info.order_status = oldorder.order_status; \
info.order_status = oldorder.order_status; \
} \
} \
info.order_write_status = oldorder.order_write_status; \
info.order_write_status = oldorder.order_write_status; \
...
@@ -44,8 +44,8 @@
...
@@ -44,8 +44,8 @@
info.order_id = neworder.order_id; \
info.order_id = neworder.order_id; \
info.order_data = neworder; \
info.order_data = neworder; \
info.order_refund = (Order_Status)neworder.refund_status; \
info.order_refund = (Order_Status)neworder.refund_status; \
info.order_last_refund = DefaultOrder;
\
/*info.order_last_refund = DefaultOrder;*/
\
info.order_last_status = DefaultOrder;
\
/*info.order_last_status = DefaultOrder;*/
\
info.order_status = (Order_Status)neworder.status; \
info.order_status = (Order_Status)neworder.status; \
info.order_write_status = 0; \
info.order_write_status = 0; \
info.order_refund_status = 0; \
info.order_refund_status = 0; \
...
@@ -95,9 +95,9 @@ typedef struct
...
@@ -95,9 +95,9 @@ typedef struct
//订单状态
//订单状态
Order_Status
order_status
;
Order_Status
order_status
;
//订单上一次状态
//订单上一次状态
Order_Status
order_last_status
;
//
Order_Status order_last_status;
//退单状态
//退单状态
Order_Status
order_last_refund
;
//
Order_Status order_last_refund;
//退单状态
//退单状态
Order_Status
order_refund
;
Order_Status
order_refund
;
//本地写单状态
//本地写单状态
...
@@ -129,9 +129,9 @@ public:
...
@@ -129,9 +129,9 @@ public:
static
QMap
<
QString
,
Order_Info
>
getS_order_pool
();
static
QMap
<
QString
,
Order_Info
>
getS_order_pool
();
static
bool
GetOrderObject
(
QString
key
,
OrderObject
&
order
,
int
&
last_status
);
static
bool
GetOrderObject
(
QString
key
,
OrderObject
&
order
);
static
bool
GetOrderStatus
(
QString
key
,
int
&
status
,
int
&
last_status
);
static
bool
GetOrderStatus
(
QString
key
,
int
&
status
,
int
&
refund_status
,
bool
&
oldorder
);
static
bool
GetOrderBaseInfo
(
QString
key
,
QVariantHash
&
hash
);
static
bool
GetOrderBaseInfo
(
QString
key
,
QVariantHash
&
hash
);
...
@@ -152,8 +152,6 @@ private:
...
@@ -152,8 +152,6 @@ private:
explicit
PosOrderPool
(
QObject
*
parent
=
0
);
explicit
PosOrderPool
(
QObject
*
parent
=
0
);
static
void
GetOrderStatusAndLastStatus
(
Order_Info
orderinfo
,
int
&
status
,
int
&
laststatus
);
void
loadOrders
();
void
loadOrders
();
private
:
private
:
//互斥读写
//互斥读写
...
@@ -162,6 +160,8 @@ private:
...
@@ -162,6 +160,8 @@ private:
static
QMutex
s_mutex
;
static
QMutex
s_mutex
;
//定时清理订单池
//定时清理订单池
QTimer
_timer
;
QTimer
_timer
;
//本地已有订单;
static
QStringList
s_order_list
;
};
};
#endif // POSORDERPOOL_H
#endif // POSORDERPOOL_H
takeout/preDefine.h
View file @
4b517863
...
@@ -217,7 +217,9 @@
...
@@ -217,7 +217,9 @@
#define REFUNDREPORT 1
#define REFUNDREPORT 1
#define ENTRYREPORT 0
#define ENTRYREPORT 0
//订单保存时间
#define ORDER_SAVE_DATE (24*60*60)
#define DEFALUE_CHECK_TIME (10*60*1000)
//缺省值
//缺省值
#define DEFAULT_APP_VER "1.0"
#define DEFAULT_APP_VER "1.0"
#define DEFAULT_SYSTEM_VER "1.0"
#define DEFAULT_SYSTEM_VER "1.0"
...
...
takeout/view/detailForm.cpp
View file @
4b517863
...
@@ -111,8 +111,15 @@ void DetailForm::InitData(OrderObject *orderObject)
...
@@ -111,8 +111,15 @@ void DetailForm::InitData(OrderObject *orderObject)
// ui->detailBtn0->hide();
// ui->detailBtn0->hide();
// }
// }
ui
->
detailBtn2
->
setText
(
GetOperNameByStatus
(
orderObject
->
status
,
true
));
int
tmpstatus
=
0
;
ui
->
detailBtn2
->
setProperty
(
"operation"
,
GetOperByStatus
(
orderObject
->
status
,
true
));
if
(
orderObject
->
refund_status
==
20
||
orderObject
->
refund_status
==
100
||
orderObject
->
refund_status
==
22
)
tmpstatus
=
orderObject
->
refund_status
;
else
tmpstatus
=
orderObject
->
status
;
ui
->
detailBtn2
->
setText
(
GetOperNameByStatus
(
tmpstatus
,
true
));
ui
->
detailBtn2
->
setProperty
(
"operation"
,
GetOperByStatus
(
tmpstatus
,
true
));
ui
->
detailBtn2
->
setProperty
(
"orderId"
,
orderObject
->
order_id
);
ui
->
detailBtn2
->
setProperty
(
"orderId"
,
orderObject
->
order_id
);
if
(
ui
->
detailBtn2
->
text
().
compare
(
QString
::
fromLocal8Bit
(
OPERATIONNAME_REFUNDORDER
))
==
0
)
if
(
ui
->
detailBtn2
->
text
().
compare
(
QString
::
fromLocal8Bit
(
OPERATIONNAME_REFUNDORDER
))
==
0
)
...
@@ -137,19 +144,19 @@ void DetailForm::InitData(OrderObject *orderObject)
...
@@ -137,19 +144,19 @@ void DetailForm::InitData(OrderObject *orderObject)
// else
// else
// ui->detailBtn3->show();
// ui->detailBtn3->show();
ui
->
detailBtn3
->
setText
(
GetOperNameByStatus
(
orderObject
->
status
));
ui
->
detailBtn3
->
setText
(
GetOperNameByStatus
(
tmp
status
));
ui
->
detailBtn3
->
setProperty
(
"operation"
,
GetOperByStatus
(
orderObject
->
status
));
ui
->
detailBtn3
->
setProperty
(
"operation"
,
GetOperByStatus
(
tmp
status
));
ui
->
detailBtn3
->
setProperty
(
"orderId"
,
orderObject
->
order_id
);
ui
->
detailBtn3
->
setProperty
(
"orderId"
,
orderObject
->
order_id
);
ui
->
detailBtn3
->
setProperty
(
"ordertype"
,
orderObject
->
order_type
);
ui
->
detailBtn3
->
setProperty
(
"ordertype"
,
orderObject
->
order_type
);
QLOG_DEBUG
()
<<
"----------------------------------------"
<<
orderObject
->
order_id
<<
";"
<<
orderObject
->
refund_status
<<
orderObject
->
status
;
QLOG_DEBUG
()
<<
"----------------------------------------"
<<
orderObject
->
order_id
<<
";"
<<
orderObject
->
refund_status
<<
tmp
status
;
if
((
orderObject
->
order_type
==
1
||
orderObject
->
order_type
==
2
)
&&
if
((
orderObject
->
order_type
==
1
||
orderObject
->
order_type
==
2
)
&&
ui
->
detailBtn3
->
text
().
compare
(
QString
::
fromLocal8Bit
(
OPERATIONNAME_MAKEOVER
))
==
0
&&
ui
->
detailBtn3
->
text
().
compare
(
QString
::
fromLocal8Bit
(
OPERATIONNAME_MAKEOVER
))
==
0
&&
orderObject
->
status
==
2
&&
orderObject
->
status
==
2
&&
orderObject
->
refund_status
!=
20
)
orderObject
->
refund_status
!=
20
)
{
{
QLOG_DEBUG
()
<<
"++++++++++++++++++++++++++++++++++"
<<
orderObject
->
order_id
<<
";"
<<
orderObject
->
refund_status
<<
orderObject
->
status
;
QLOG_DEBUG
()
<<
"++++++++++++++++++++++++++++++++++"
<<
orderObject
->
order_id
<<
";"
<<
orderObject
->
refund_status
<<
tmp
status
;
ui
->
detailBtn3
->
setText
(
QString
::
fromLocal8Bit
(
OPERATIONNAME_SENDOUT
));
ui
->
detailBtn3
->
setText
(
QString
::
fromLocal8Bit
(
OPERATIONNAME_SENDOUT
));
ui
->
detailBtn3
->
setProperty
(
"operation"
,
OPERATION_SENDOUT
);
ui
->
detailBtn3
->
setProperty
(
"operation"
,
OPERATION_SENDOUT
);
...
@@ -161,7 +168,7 @@ void DetailForm::InitData(OrderObject *orderObject)
...
@@ -161,7 +168,7 @@ void DetailForm::InitData(OrderObject *orderObject)
ui
->
detailBtn3
->
setProperty
(
"operation"
,
OPERATION_COMPLETE
);
ui
->
detailBtn3
->
setProperty
(
"operation"
,
OPERATION_COMPLETE
);
}
}
if
(
!
GetOperByStatus
(
orderObject
->
status
).
compare
(
"NULL"
))
if
(
!
GetOperByStatus
(
tmp
status
).
compare
(
"NULL"
))
{
{
ui
->
detailBtn3
->
hide
();
ui
->
detailBtn3
->
hide
();
}
}
...
...
takeout/view/floatForm.cpp
View file @
4b517863
...
@@ -56,19 +56,20 @@ bool FloatForm::event(QEvent *e)
...
@@ -56,19 +56,20 @@ bool FloatForm::event(QEvent *e)
GETEVENTINFO
(
orderid
,
e
,
QString
);
GETEVENTINFO
(
orderid
,
e
,
QString
);
int
lastorderstatus
,
orderstatus
;
int
refundstatus
,
orderstatus
;
bool
neworder
;
if
(
!
PosOrderPool
::
GetOrderStatus
(
orderid
,
orderstatus
,
lastorderstatus
))
if
(
!
PosOrderPool
::
GetOrderStatus
(
orderid
,
orderstatus
,
refundstatus
,
neworder
))
return
true
;
return
true
;
if
(
(
orderstatus
==
NewOrder
&&
lastorderstatus
==
DefaultOrder
)
||
if
(
neworder
&&
(
orderstatus
==
NewOrder
||
orderstatus
==
FirmOrder
)
&&
(
orderstatus
==
FirmOrder
&&
lastorderstatus
==
DefaultOrder
)
)
refundstatus
!=
ApplicationRefundOrder
)
{
{
onStartRemind
(
0
);
onStartRemind
(
0
);
return
true
;
return
true
;
}
}
if
(
orderstatus
==
ApplicationRefundOrder
||
orderstatus
==
ApplicationPartialRefundOrder
)
if
(
neworder
&&
(
refundstatus
==
ApplicationRefundOrder
||
refundstatus
==
ApplicationPartialRefundOrder
)
)
{
{
onStartRemind
(
1
);
onStartRemind
(
1
);
return
true
;
return
true
;
...
...
takeout/view/mainForm.cpp
View file @
4b517863
...
@@ -144,12 +144,11 @@ bool MainForm::event(QEvent *e)
...
@@ -144,12 +144,11 @@ bool MainForm::event(QEvent *e)
GETEVENTINFO
(
orderid
,
e
,
QString
);
GETEVENTINFO
(
orderid
,
e
,
QString
);
OrderObject
order
;
OrderObject
order
;
int
lastorderstatus
;
if
(
!
PosOrderPool
::
GetOrderObject
(
orderid
,
order
,
lastorderstatus
))
if
(
!
PosOrderPool
::
GetOrderObject
(
orderid
,
order
))
return
true
;
return
true
;
onChangeOrderStatus
(
&
order
,
lastorderstatus
);
onChangeOrderStatus
(
&
order
);
return
true
;
return
true
;
}
}
...
@@ -172,8 +171,7 @@ bool MainForm::event(QEvent *e)
...
@@ -172,8 +171,7 @@ bool MainForm::event(QEvent *e)
GETEVENTINFO
(
value
,
e
,
QVariantMap
);
GETEVENTINFO
(
value
,
e
,
QVariantMap
);
if
(
value
.
contains
(
EVENT_KEY_ORDERID
)
&&
value
.
contains
(
EVENT_KEY_ORDERSTATUS
))
if
(
value
.
contains
(
EVENT_KEY_ORDERID
)
&&
value
.
contains
(
EVENT_KEY_ORDERSTATUS
))
onOrderClear
(
value
[
EVENT_KEY_ORDERID
].
toString
(),
value
[
EVENT_KEY_ORDERSTATUS
].
toInt
());
deleteOrderItem
(
value
[
EVENT_KEY_ORDERID
].
toString
());
return
true
;
return
true
;
}
}
...
@@ -451,6 +449,7 @@ QPushButton *MainForm::_GetTabBtnByOrderStatus(int orderStatus)
...
@@ -451,6 +449,7 @@ QPushButton *MainForm::_GetTabBtnByOrderStatus(int orderStatus)
return
ui
->
mainBtnFinsh
;
return
ui
->
mainBtnFinsh
;
break
;
break
;
case
20
:
case
20
:
case
22
:
return
ui
->
mainBtnRefund
;
return
ui
->
mainBtnRefund
;
break
;
break
;
default
:
default
:
...
@@ -459,6 +458,26 @@ QPushButton *MainForm::_GetTabBtnByOrderStatus(int orderStatus)
...
@@ -459,6 +458,26 @@ QPushButton *MainForm::_GetTabBtnByOrderStatus(int orderStatus)
}
}
}
}
QPushButton
*
MainForm
::
_GetTabBtn
(
QTableWidget
*
view
)
{
if
(
view
==
ui
->
mainTableNew
)
return
ui
->
mainBtnNew
;
if
(
view
==
ui
->
mainTableMake
)
return
ui
->
mainBtnMake
;
if
(
view
==
ui
->
mainTableSend
)
return
ui
->
mainBtnSend
;
if
(
view
==
ui
->
mainTableFinsh
)
return
ui
->
mainBtnFinsh
;
if
(
view
==
ui
->
mainTableRefund
)
return
ui
->
mainBtnRefund
;
return
ui
->
mainBtnOther
;
}
void
MainForm
::
onHideAlert
()
void
MainForm
::
onHideAlert
()
{
{
m_alertForm
->
hide
();
m_alertForm
->
hide
();
...
@@ -498,32 +517,17 @@ void MainForm::onSetNetStatus(const QString &status)
...
@@ -498,32 +517,17 @@ void MainForm::onSetNetStatus(const QString &status)
ui
->
mainLabNetStatus
->
setText
(
status
);
ui
->
mainLabNetStatus
->
setText
(
status
);
}
}
void
MainForm
::
onChangeOrderStatus
(
OrderObject
*
orderObject
,
int
oldStatus
)
void
MainForm
::
deleteOrderItem
(
QString
orderid
)
{
{
_SetTablesSortEnable
(
false
);
_SetTablesSortEnable
(
false
);
QTableWidget
*
table
;
if
(
m_order_table_map
.
contains
(
orderid
))
QPushButton
*
tabBtn
;
// 非首次收到的订单需要现在原先表中删除
if
(
oldStatus
!=
-
100
)
{
{
tabBtn
=
_GetTabBtnByOrderStatus
(
1
);
QTableWidget
*
table
=
m_order_table_map
[
orderid
];
table
=
findChild
<
QTableWidget
*>
(
tabBtn
->
property
(
"tableName"
).
toString
());
QPushButton
*
tabBtn
=
_GetTabBtn
(
table
);
for
(
int
i
=
0
;
i
<
table
->
rowCount
();
i
++
)
{
if
(
!
table
->
item
(
i
,
1
)
->
text
().
compare
(
orderObject
->
order_id
))
{
table
->
removeRow
(
i
);
QString
btnText
(
tabBtn
->
property
(
"name"
).
toString
());
btnText
=
QString
(
"%1
\n
%2"
).
arg
(
table
->
rowCount
()).
arg
(
btnText
);
tabBtn
->
setText
(
btnText
);
}
}
tabBtn
=
_GetTabBtnByOrderStatus
(
6
);
table
=
findChild
<
QTableWidget
*>
(
tabBtn
->
property
(
"tableName"
).
toString
());
for
(
int
i
=
0
;
i
<
table
->
rowCount
();
i
++
)
for
(
int
i
=
0
;
i
<
table
->
rowCount
();
i
++
)
{
{
if
(
!
table
->
item
(
i
,
1
)
->
text
().
compare
(
order
Object
->
order_
id
))
if
(
!
table
->
item
(
i
,
1
)
->
text
().
compare
(
orderid
))
{
{
table
->
removeRow
(
i
);
table
->
removeRow
(
i
);
QString
btnText
(
tabBtn
->
property
(
"name"
).
toString
());
QString
btnText
(
tabBtn
->
property
(
"name"
).
toString
());
...
@@ -531,35 +535,20 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
...
@@ -531,35 +535,20 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
tabBtn
->
setText
(
btnText
);
tabBtn
->
setText
(
btnText
);
}
}
}
}
}
_SetTablesSortEnable
(
true
);
}
tabBtn
=
_GetTabBtnByOrderStatus
(
2
);
void
MainForm
::
onChangeOrderStatus
(
OrderObject
*
orderObject
)
table
=
findChild
<
QTableWidget
*>
(
tabBtn
->
property
(
"tableName"
).
toString
());
{
for
(
int
i
=
0
;
i
<
table
->
rowCount
();
i
++
)
_SetTablesSortEnable
(
false
);
{
QString
orderid
=
orderObject
->
order_id
;
if
(
!
table
->
item
(
i
,
1
)
->
text
().
compare
(
orderObject
->
order_id
))
{
table
->
removeRow
(
i
);
QString
btnText
(
tabBtn
->
property
(
"name"
).
toString
());
btnText
=
QString
(
"%1
\n
%2"
).
arg
(
table
->
rowCount
()).
arg
(
btnText
);
tabBtn
->
setText
(
btnText
);
}
}
tabBtn
=
_GetTabBtnByOrderStatus
(
5
);
if
(
m_order_table_map
.
contains
(
orderid
))
table
=
findChild
<
QTableWidget
*>
(
tabBtn
->
property
(
"tableName"
).
toString
());
{
for
(
int
i
=
0
;
i
<
table
->
rowCount
();
i
++
)
QTableWidget
*
table
=
m_order_table_map
[
orderid
];
{
QPushButton
*
tabBtn
=
_GetTabBtn
(
table
);
if
(
!
table
->
item
(
i
,
1
)
->
text
().
compare
(
orderObject
->
order_id
))
{
table
->
removeRow
(
i
);
QString
btnText
(
tabBtn
->
property
(
"name"
).
toString
());
btnText
=
QString
(
"%1
\n
%2"
).
arg
(
table
->
rowCount
()).
arg
(
btnText
);
tabBtn
->
setText
(
btnText
);
}
}
tabBtn
=
_GetTabBtnByOrderStatus
(
200
);
table
=
findChild
<
QTableWidget
*>
(
tabBtn
->
property
(
"tableName"
).
toString
());
for
(
int
i
=
0
;
i
<
table
->
rowCount
();
i
++
)
for
(
int
i
=
0
;
i
<
table
->
rowCount
();
i
++
)
{
{
if
(
!
table
->
item
(
i
,
1
)
->
text
().
compare
(
orderObject
->
order_id
))
if
(
!
table
->
item
(
i
,
1
)
->
text
().
compare
(
orderObject
->
order_id
))
...
@@ -570,37 +559,22 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
...
@@ -570,37 +559,22 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
tabBtn
->
setText
(
btnText
);
tabBtn
->
setText
(
btnText
);
}
}
}
}
}
tabBtn
=
_GetTabBtnByOrderStatus
(
20
);
int
tmpstatus
;
table
=
findChild
<
QTableWidget
*>
(
tabBtn
->
property
(
"tableName"
).
toString
());
for
(
int
i
=
0
;
i
<
table
->
rowCount
();
i
++
)
{
if
(
!
table
->
item
(
i
,
1
)
->
text
().
compare
(
orderObject
->
order_id
))
{
table
->
removeRow
(
i
);
QString
btnText
(
tabBtn
->
property
(
"name"
).
toString
());
btnText
=
QString
(
"%1
\n
%2"
).
arg
(
table
->
rowCount
()).
arg
(
btnText
);
tabBtn
->
setText
(
btnText
);
}
}
tabBtn
=
_GetTabBtnByOrderStatus
(
3
);
if
(
orderObject
->
refund_status
==
20
||
orderObject
->
refund_status
==
22
||
table
=
findChild
<
QTableWidget
*>
(
tabBtn
->
property
(
"tableName"
).
toString
());
orderObject
->
refund_status
==
100
)
for
(
int
i
=
0
;
i
<
table
->
rowCount
();
i
++
)
tmpstatus
=
orderObject
->
refund_status
;
{
else
if
(
!
table
->
item
(
i
,
1
)
->
text
().
compare
(
orderObject
->
order_id
))
tmpstatus
=
orderObject
->
status
;
{
table
->
removeRow
(
i
);
QString
btnText
(
tabBtn
->
property
(
"name"
).
toString
());
btnText
=
QString
(
"%1
\n
%2"
).
arg
(
table
->
rowCount
()).
arg
(
btnText
);
tabBtn
->
setText
(
btnText
);
}
}
}
// 将数据插入到表中
// 将数据插入到表中
tabBtn
=
_GetTabBtnByOrderStatus
(
orderObject
->
status
);
QPushButton
*
tabBtn
=
_GetTabBtnByOrderStatus
(
tmpstatus
);
table
=
findChild
<
QTableWidget
*>
(
tabBtn
->
property
(
"tableName"
).
toString
());
QTableWidget
*
table
=
findChild
<
QTableWidget
*>
(
tabBtn
->
property
(
"tableName"
).
toString
());
m_order_table_map
.
insert
(
orderObject
->
order_id
,
table
);
table
->
insertRow
(
0
);
table
->
insertRow
(
0
);
QTableWidgetItem
*
item0
=
new
QTableWidgetItem
(
QString
::
number
(
orderObject
->
order_index
)
+
"#"
+
orderObject
->
channel_name
);
QTableWidgetItem
*
item0
=
new
QTableWidgetItem
(
QString
::
number
(
orderObject
->
order_index
)
+
"#"
+
orderObject
->
channel_name
);
item0
->
setTextAlignment
(
Qt
::
AlignCenter
);
item0
->
setTextAlignment
(
Qt
::
AlignCenter
);
...
@@ -688,9 +662,7 @@ void MainForm::onMainTableItemClicked(QTableWidgetItem *item)
...
@@ -688,9 +662,7 @@ void MainForm::onMainTableItemClicked(QTableWidgetItem *item)
OrderObject
order
;
OrderObject
order
;
int
lastStatus
;
if
(
!
PosOrderPool
::
GetOrderObject
(
orderId
,
order
))
if
(
!
PosOrderPool
::
GetOrderObject
(
orderId
,
order
,
lastStatus
))
return
;
return
;
onHideAlert
();
onHideAlert
();
...
...
takeout/view/mainForm.h
View file @
4b517863
...
@@ -36,7 +36,6 @@ public:
...
@@ -36,7 +36,6 @@ public:
virtual
bool
event
(
QEvent
*
e
);
virtual
bool
event
(
QEvent
*
e
);
void
setStoreinfo
(
const
QVariantMap
&
storeinfo
);
void
setStoreinfo
(
const
QVariantMap
&
storeinfo
);
private
:
private
:
Ui
::
MainForm
*
ui
;
Ui
::
MainForm
*
ui
;
// 时间定时器
// 时间定时器
...
@@ -49,7 +48,8 @@ private:
...
@@ -49,7 +48,8 @@ private:
QVariantMap
m_storeinfo
;
QVariantMap
m_storeinfo
;
// 所有的表
// 所有的表
QList
<
QTableWidget
*>
m_tableList
;
QList
<
QTableWidget
*>
m_tableList
;
// 订单对应的表
QMap
<
QString
,
QTableWidget
*>
m_order_table_map
;
// 通知窗口
// 通知窗口
AlertForm
*
m_alertForm
;
AlertForm
*
m_alertForm
;
// 人员选择窗口
// 人员选择窗口
...
@@ -95,6 +95,13 @@ private:
...
@@ -95,6 +95,13 @@ private:
* */
* */
QPushButton
*
_GetTabBtnByOrderStatus
(
int
orderStatus
);
QPushButton
*
_GetTabBtnByOrderStatus
(
int
orderStatus
);
QPushButton
*
_GetTabBtn
(
QTableWidget
*
view
);
/* 功能:删除订单数据
* 参数:[1]订单编号
* 返回:
* */
void
deleteOrderItem
(
QString
orderid
);
signals
:
signals
:
/* 功能:处理订单
/* 功能:处理订单
* 参数:[1]操作动作名[2]订单编号[3]配送员信息
* 参数:[1]操作动作名[2]订单编号[3]配送员信息
...
@@ -242,7 +249,7 @@ public slots:
...
@@ -242,7 +249,7 @@ public slots:
* 参数:[1]订单对象[2]旧订单的状态
* 参数:[1]订单对象[2]旧订单的状态
* 返回:NULL
* 返回:NULL
* */
* */
void
onChangeOrderStatus
(
OrderObject
*
orderObject
,
int
oldStatus
);
void
onChangeOrderStatus
(
OrderObject
*
orderObject
);
/* 功能:显示配送员选择窗口
/* 功能:显示配送员选择窗口
* 参数:[1]订单编号[2]配送员信息
* 参数:[1]订单编号[2]配送员信息
* 返回:NULL
* 返回:NULL
...
...
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