Commit f64982da by guanghui.cui

1、增加发票抬头字段

2、小票增加pos单号字段
parent 4bb20744
......@@ -21,8 +21,10 @@ Database::Database()
"fm_id VARCHAR (40) PRIMARY KEY,"
"paid_trans_id VARCHAR (40) DEFAULT (''),"
"pay_ebcode VARCHAR (40) DEFAULT (''),"
"pos_order_id VARCHAR (40) DEFAULT (''),"
"products_fee INTEGER DEFAULT (0),"
"shop_fee INTEGER DEFAULT (0),"
"service_fee INTEGER DEFAULT (0),"
"dis_shop_fee INTEGER DEFAULT (0),"
"isprint BOOLEAN DEFAULT (0),"
"isPosOK BOOLEAN DEFAULT (0),"
"isPosRefundOK BOOLEAN DEFAULT (0),"
......@@ -116,6 +118,22 @@ bool Database::isPosWriteOK(const QString &orderId)
return false;
}
QString Database::GetPOSOrderId(const QString &orderId)
{
QString posOrderId;
QSqlQuery query(_db);
query.prepare(QString("select pos_order_id from OrderInfo where paid_trans_id=%1").arg(orderId));
if(!query.exec())
{
QLOG_ERROR()<<query.lastError().text();
}
while(query.next())
{
posOrderId = query.value(0).toString();
}
return posOrderId;
}
QString Database::GetInfoTableName()
{
return _nameInfo;
......
......@@ -17,6 +17,7 @@ public:
bool isPosWriteOK(const QString &orderId);
QString GetInfoTableName();
QString GetProductTableName();
QString GetPOSOrderId(const QString &orderId);
private:
void delOldData(); //删除超过六个月的数据
private:
......
......@@ -482,6 +482,16 @@ void OrderObject::setBillFile(const QString &v)
bill_file = v;
}
QString OrderObject::getInvoiceTitle() const
{
return invoice_title;
}
void OrderObject::setInvoiceTitle(const QString &v)
{
invoice_title = v;
}
QList<ComdObject *> OrderObject::_ReadObjectMates(const QString &mates_str)
{
QList<ComdObject*> mate_list, primitive_mates, dup_list;
......
......@@ -66,6 +66,8 @@ public:
Q_PROPERTY (int package_fee READ getpackage_fee WRITE setpackage_fee)
Q_PROPERTY (QString invoice_title READ getInvoiceTitle WRITE setInvoiceTitle)
Q_PROPERTY (QStringList dis_desc READ getdis_desc WRITE setdis_desc)
protected:
......@@ -186,6 +188,9 @@ protected:
QString getBillFile() const;
void setBillFile(const QString &v);
QString getInvoiceTitle() const ;
void setInvoiceTitle(const QString& v);
QList<ComdObject*> _ReadObjectMates(const QString &mates_str);
public:
......@@ -238,6 +243,7 @@ public:
int delivery_type; //Delivery type
int delivery_time; //Delivery time
QString bill_file; //Bill file
QString invoice_title; //发票抬头
int paid_fee; //已付金额
int rest_fee; //未付
......
......@@ -18,6 +18,7 @@
#include <QFileInfo>
#include <QPointer>
#include "XCBOperate.h"
#include "DClasses/Database.h"
DetailsForm::DetailsForm(OrderObject *orderObj, QWidget *parent) :
QDialog(parent),
......@@ -40,7 +41,7 @@ DetailsForm::DetailsForm(OrderObject *orderObj, QWidget *parent) :
connect(ui->detailsTable, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SLOT(onItemClicked(QTreeWidgetItem*,int)));
connect(this, SIGNAL(reprintLable(const OrderObject*)), &WBillControl::GetInstance(), SLOT(PrintLable(const OrderObject*)));
connect(this, SIGNAL(reprintLable(const OrderObject*,const QString)), &WBillControl::GetInstance(), SLOT(PrintLable(const OrderObject*,const QString)));
}
DetailsForm::~DetailsForm()
......@@ -788,6 +789,7 @@ void DetailsForm::onSucessful(const QString &msg, const QString &extra)
void DetailsForm::on_detailsBtn3_clicked()
{
QLOG_TRACE() << __FUNCTION__ << "reprinter";
emit reprintLable(m_orderObj);
QString posOrderId=Database::getInstance().GetPOSOrderId(m_orderObj->order_id);
emit reprintLable(m_orderObj,posOrderId);
//WBillControl::GetInstance().PrintLable(m_orderObj);
}
......@@ -55,7 +55,7 @@ private slots:
signals:
void ntFormClose();
void orderMateChanged(const QString &order_id);
void reprintLable(const OrderObject *orderObj);
void reprintLable(const OrderObject *orderObj,const QString posOrderId);
};
#endif // DETAILSFORM_H
......@@ -357,7 +357,11 @@ void MainForm::onFloatMoved(QPoint pos)
void MainForm::_InitUI()
{
#ifdef Q_OS_LINUX
this->setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint |Qt::FramelessWindowHint);
#else
this->setWindowFlags(windowFlags() /*| Qt::WindowStaysOnTopHint |Qt::FramelessWindowHint*/);
#endif
//this->showFullScreen();
m_size = this->size();
......
......@@ -365,6 +365,11 @@ void BillsManger::ProcOrders(const QString &operaName, const QString &orderId, i
}
else if (!operaName.compare(OPERABTN_NAME_MAKE)) {
bool res = WriteBill(orderId);
if (m_ordersMap.contains(orderId)) {
OrderObject *order = m_ordersMap[orderId];
emit sWriteBill(order);
}
QLOG_INFO() << QString("manually making order[%1] sucessful.").arg(orderId);
_CheckReservations();
// emit sucessful(OPERABTN_NAME_MAKE + QString("成功"));
......
......@@ -106,6 +106,7 @@ void WBillControl::SetStoreInfo(const QString &partner_id, const QString &storeI
void WBillControl::DoOrderEntry(const OrderObject *orderObject)
{
int iPosOrderStatus=0;
QString orderId;
QTcpSocket *socket = new QTcpSocket(this);
// 连接
QByteArray byteSlip=GetOrderEntryData(orderObject, false);
......@@ -121,15 +122,16 @@ void WBillControl::DoOrderEntry(const OrderObject *orderObject)
QJsonObject recvJson = QJsonDocument::fromJson(socket->readAll()).object();
QLOG_INFO() <<"write order back:"<< recvJson;
bool res=1;
orderId=recvJson["orderid"].toString();
iPosOrderStatus=recvJson["statusCode"].toInt();
if(101==iPosOrderStatus)
{
res=0;
QLOG_INFO() << "write order failed:" << recvJson["msg"].toString();
}
QString sql = QString("update %1 set products_fee=%2,shop_fee=%3,isPosOK=%4 where fm_id='%5';")
QString sql = QString("update %1 set products_fee=%2,service_fee=%3,dis_shop_fee=%4,pos_order_id='%5',isPosOK=%6 where fm_id='%7';")
.arg(Database::getInstance().GetInfoTableName())
.arg(orderObject->product_fee).arg(orderObject->shop_fee).arg(res).arg(orderObject->fm_id);
.arg(orderObject->product_fee).arg(orderObject->service_fee).arg(orderObject->dis_shop_fee).arg(orderId).arg(res).arg(orderObject->fm_id);
if(Database::getInstance().execSql(sql)){
emit sUpdatePosRes(orderObject);
}
......@@ -142,7 +144,7 @@ void WBillControl::DoOrderEntry(const OrderObject *orderObject)
if(102!=iPosOrderStatus){
QLOG_INFO() << "开始打印小票";
//打印小票
PrintLable(orderObject);
PrintLable(orderObject,orderId);
}
}
......@@ -358,14 +360,14 @@ void WBillControl::setMenu(const QByteArray &JsonMenu)
}
}
void WBillControl::PrintLable(const OrderObject *obj)
void WBillControl::PrintLable(const OrderObject *obj,const QString posOrderId)
{
//外卖单打印
printTakeout(obj);
printTakeout(obj,posOrderId);
//上菜单打印
printMenu(obj);
printMenu(obj,posOrderId);
//收银单打印
printBill(obj);
printBill(obj,posOrderId);
//厨房单打印
for(int i=0; i < obj->proList.size(); i++)
{
......@@ -378,19 +380,19 @@ void WBillControl::PrintLable(const OrderObject *obj)
QVector<SetMenuItem> vecItem = it.value();
for(SetMenuItem item:vecItem){
QLOG_INFO() << "------ child menu id:"<<item.strMenuId;
printCook(obj,item.strMenuId,item.num);
printCook(obj,item.strMenuId,item.num,posOrderId);
}
}
else{
QLOG_INFO() << "------ menu pid:"<<pid;
printCook(obj,pid,num);
printCook(obj,pid,num,posOrderId);
}
}
}
//厨房单打印
void WBillControl::printCook(const OrderObject *obj,const QString& menuId,int num,bool bJump)
void WBillControl::printCook(const OrderObject *obj,const QString& menuId,int num,const QString &posOrderId,bool bJump)
{
for(PrinterMenu menu:vecMenu){
if(menu.strMenuId==menuId){
......@@ -435,25 +437,27 @@ void WBillControl::printCook(const OrderObject *obj,const QString& menuId,int nu
tObj.insert("type", 2);
tAry.insert(2, tObj);
QString posOrder="POS单号:";
posOrder+=posOrderId;
tObj.insert("text", posOrder);
tObj.insert("type", 2);
tAry.insert(3, tObj);
QString datetime =QDateTime::currentDateTime().toString("日期:yyyy-MM-dd 时间:hh:mm");
tObj.insert("text", datetime);
tObj.insert("type", 2);
tAry.insert(3, tObj);
tAry.insert(4, tObj);
std::string stdSep="----------------------------------------";
tObj.insert("text", stdSep.data());
tObj.insert("type", 1);
tAry.insert(4, tObj);
tAry.insert(5, tObj);
QByteArray menuName=QString::number(num).toLatin1();
menuName.append(" ");
menuName.append(QTextCodec::codecForName("GBK")->toUnicode(menu.strMenuName.toLatin1()));
tObj.insert("text", menuName.data());
tObj.insert("type", 3);
tAry.insert(5, tObj);
tObj.insert("text", "");
tObj.insert("type", 1);
tAry.insert(6, tObj);
tObj.insert("text", "");
......@@ -468,6 +472,10 @@ void WBillControl::printCook(const OrderObject *obj,const QString& menuId,int nu
tObj.insert("type", 1);
tAry.insert(9, tObj);
tObj.insert("text", "");
tObj.insert("type", 1);
tAry.insert(10, tObj);
rObj.insert("print", tAry);
qDebug() << rObj;
......@@ -532,7 +540,7 @@ void WBillControl::printCook(const OrderObject *obj,const QString& menuId,int nu
QByteArray strArrayNew = docNew.toJson( QJsonDocument::Compact);
QLOG_INFO() << "------jump json string:"<<strArrayNew;
if(sendToPrintServer(strArrayNew)){
printCook(obj,menuId,num,true);
printCook(obj,menuId,num,posOrderId,true);
}
else
{
......@@ -577,7 +585,7 @@ bool WBillControl::sendToPrintServer(QByteArray &JsonPrint)
}
//外卖单打印
void WBillControl::printTakeout(const OrderObject *obj)
void WBillControl::printTakeout(const OrderObject *obj,const QString &posOrderId)
{
#ifdef Q_OS_LINUX
int fd=-1;
......@@ -674,6 +682,18 @@ void WBillControl::printTakeout(const OrderObject *obj)
std::string stdId=strId.toStdString();
print(charset_u2g(stdId).data(),3);
QString strPosId="POS单号:";
strPosId+=posOrderId;
std::string stdPosId=strPosId.toStdString();
print(charset_u2g(stdPosId).data(),3);
if(!obj->invoice_title.isEmpty()){
QString strInvoiceTitle="发票抬头:";
strInvoiceTitle+=obj->invoice_title;
std::string stdInvoiceTitle=strInvoiceTitle.toStdString();
print(charset_u2g(stdInvoiceTitle).data(),3);
}
QString strRemark="备注:";
strRemark+=obj->remark;
std::string stdRemark=strRemark.toStdString();
......@@ -698,7 +718,7 @@ void WBillControl::printTakeout(const OrderObject *obj)
}
//上菜单打印
void WBillControl::printMenu(const OrderObject *obj)
void WBillControl::printMenu(const OrderObject *obj,const QString &posOrderId)
{
#ifdef Q_OS_LINUX
int fd=-1;
......@@ -734,6 +754,11 @@ void WBillControl::printMenu(const OrderObject *obj)
std::string stdOrder=order.toStdString();
print(charset_u2g(stdOrder).data(),1);
QString posOrder="POS单号:";
posOrder+=posOrderId;
std::string stdPosOrder=posOrder.toStdString();
print(charset_u2g(stdPosOrder).data(),1);
QString datetime =QDateTime::currentDateTime().toString("日期:yyyy-MM-dd 时间:hh:mm");
std::string stdDatetime=datetime.toStdString();
print(charset_u2g(stdDatetime).data(),1);
......@@ -786,7 +811,7 @@ void WBillControl::printMenu(const OrderObject *obj)
}
//收银单打印
void WBillControl::printBill(const OrderObject *obj)
void WBillControl::printBill(const OrderObject *obj,const QString &posOrderId)
{
#ifdef Q_OS_LINUX
int fd=-1;
......@@ -834,6 +859,11 @@ void WBillControl::printBill(const OrderObject *obj)
std::string stdOrder=order.toStdString();
print(charset_u2g(stdOrder).data(),1);
QString posOrder="POS单号:";
posOrder+=posOrderId;
std::string stdPosOrder=posOrder.toStdString();
print(charset_u2g(stdPosOrder).data(),1);
QString datetime =QDateTime::currentDateTime().toString("日期:yyyy-MM-dd 时间:hh:mm");
std::string stdDatetime=datetime.toStdString();
print(charset_u2g(stdDatetime).data(),1);
......
......@@ -64,7 +64,7 @@ public slots:
void RefundOrder(const QString& orderId);
//打印小票
void PrintLable(const OrderObject *obj);
void PrintLable(const OrderObject *obj,const QString posOrderId);
private:
/* 功能:获取写入销售单数据
......@@ -104,16 +104,16 @@ private:
* 参数:[4]打印跳转
* 返回:
* */
void printCook(const OrderObject *obj,const QString& menuId,int num,bool bJump=false);
void printCook(const OrderObject *obj,const QString& menuId,int num,const QString &posOrderId,bool bJump=false);
//外卖单打印
void printTakeout(const OrderObject *obj);
void printTakeout(const OrderObject *obj,const QString &posOrderId);
//上菜单打印
void printMenu(const OrderObject *obj);
void printMenu(const OrderObject *obj,const QString &posOrderId);
//收银账单打印
void printBill(const OrderObject *obj);
void printBill(const OrderObject *obj,const QString &posOrderId);
//厨房小票信息发送到monitor
bool sendToPrintServer(QByteArray &JsonPrint);
......
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