Commit 1214ca83 by wuyang.zou

POS Plugin Skip PackageFee Save

Update Get Pos Workstation id Origin

V 2.2023.4.12
parent f6bed952
Pipeline #42781 failed with stage
in 0 seconds
......@@ -240,6 +240,7 @@ private:
bool m_initPrintOrderPromotionDBRet;
bool m_initCheckPoskeyExistPosDBRet;
bool m_initSaveNoticeMsgDBRet;
bool m_initPosMetaDataDBRet;
// 新增: 记录OMS备用服务的 CallBackUrl 地址; 便于OMS服务异常时,具备热切换功能: 登录 + 订单列表 + 心跳 + 自检单;
QString m_serviceCallBackUrl;
......@@ -468,6 +469,8 @@ private slots:
void _ClickToLogin();
void RefreshPosMetaData();
void _QueryAllNoticeMsg();
void _ClickToNotifySimPullOrder();
......
#include "PosMetaDataDB.h"
#include "QsLog.h"
#include <QDateTime>
#include "Control/flowControl.h"
#include "DTools/configManger.h"
PosMetaDataDB::PosMetaDataDB()
{
QLOG_INFO()<<"[<<<<---PosMetaData:: Structure POS Meta Data Info DataBase--->>>>]";
}
PosMetaDataDB &PosMetaDataDB::getInstance()
{
static PosMetaDataDB posMetaDataDB;
return posMetaDataDB;
}
bool PosMetaDataDB::initPosMetaDataDB(){
bool bRet = false;
m_sqlDb = QSqlDatabase::addDatabase("QODBC","PosMetaData"); //数据库驱动类型为SQL Server
if ( m_sqlDb.isValid() ) {
QLOG_INFO()<<"[<<<<---SqlServer ODBC driver is valid--->>>>]";
QString dsn="DRIVER={SQL SERVER};SERVER=127.0.0.1\\sqlexpress;DATABASE=XextCustomDb";
m_sqlDb.setDatabaseName(dsn); //设置数据源名称
m_sqlDb.setUserName("sa"); //登录用户
m_sqlDb.setPassword("SIM29@123");
if(!m_sqlDb.open()) { //打开数据库
QLOG_ERROR()<<"[<<<<---SqlServer Open Database error:--->>>>]"<<m_sqlDb.lastError().text();
} else {
QLOG_INFO()<<"[<<<<---PosMetaData::SqlServer Test Open database success!:--->>>>]";
QSqlQuery query(m_sqlDb);
QString selectsql ="select * from sys.tables where name='SBUX_SysConfig'" ;
if(!query.exec(selectsql)) {
QLOG_ERROR()<<"[<<<<---PosMetaData::SqlServer Database check SBUX_SysConfig failed--->>>>]"<<query.lastError().text();
}
if(query.next()) {
QLOG_INFO() << "[<<<<---PosMetaData::Table SBUX_SysConfig Has Exist--->>>>]";
bRet = true;
}
m_sqlDb.close();
}
} else {
QLOG_ERROR()<<"[<<<<---SqlServer ODBC driver no valid--->>>>]";
}
return bRet;
}
bool PosMetaDataDB::queryPosMetaDataDB( PosMateDataObject* posMateDataObj) {
QMutexLocker mutex(&m_mutex);
if(!m_sqlDb.open()) {
QLOG_ERROR()<<"[<<<<---SqlServer Database:Open Failed--->>>>]"<<m_sqlDb.lastError().text();
return false;
}
bool result = true;
QSqlQuery query(m_sqlDb);
QString queryPosMetaDataConfig = QString("SELECT [ConfigName], max( CASE [strKey] WHEN 'WorkstationNumber' THEN strValue else '' end ) as 'WorkstationNumber', "
" max( CASE [strKey] WHEN 'EmpNo' THEN strValue else '' end ) as 'EmpNo', "
" max( CASE [strKey] WHEN 'EmpName' THEN strValue else '' end ) as 'EmpName' "
" FROM [XextCustomDb].[dbo].[SBUX_SysConfig] WHERE ConfigName = 'Workstation' group by ConfigName ");
// WorkstationNumber; // EmpNo; // EmpName;
query.prepare( queryPosMetaDataConfig );
if(!query.exec()) {
QLOG_ERROR()<<QString("[<<<<---SqlServer Database::queryPosMetaDataDB Failed, queryPosMetaDataConfig = %1 --->>>>]").arg(queryPosMetaDataConfig)
<<query.lastError().text();
return false;
} else {
if ( query.next() ) {
// QLOG_INFO()<<QString("[<<<<---SqlServer Database::queryPosMetaDataDB Success, query.value(1) = %1, query.value(2) = %2 , query.value(3) = %3--->>>>]")
// .arg( query.value(1).toString() ).arg( query.value(2).toString() ).arg( query.value(3).toString() );
if( query.value(1).toString().length() ) {
posMateDataObj->workstationNumber = query.value(1).toString();
} else {
posMateDataObj->workstationNumber = DEFAULT_WORKSTATION_NUM;
}
if( query.value(2).toString().length() ) {
posMateDataObj->empNo = query.value(2).toString();
} else {
posMateDataObj->empNo = DEFAULT_CASHIER_ID;
}
if( query.value(3).toString().length() ) {
posMateDataObj->empName = query.value(3).toString();
} else {
posMateDataObj->empName = DEFAULT_CASHIER_NAME;
}
}
}
m_sqlDb.close();
return result;
}
#ifndef POSMETADATADB_H
#define POSMETADATADB_H
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QObject>
#include <QMutex>
#include "preDefine.h"
#include <Model/PosMateDataObject.h>
class PosMetaDataDB : public QObject
{
Q_OBJECT
public:
static PosMetaDataDB& getInstance();
/**
*功能:初始化pos本地数据库;方便后期判断 打开pos本地数据库是否成功;
*参数:[无]
*返回:true:能够成功打开POS本地数据库,false:不能够成功打开POS本地数据库
**/
bool initPosMetaDataDB();
/**
*功能:查询 “工作站号” “收银员账号” “收银员名称” 是否存在本地的POS系统中;
*参数:[3]
*返回:true 查询成功,false 查询失败;
**/
bool queryPosMetaDataDB(PosMateDataObject* posMateDataObj);
private:
QMutex m_mutex;
PosMetaDataDB();
PosMetaDataDB(PosMetaDataDB const&);
PosMetaDataDB& operator=(PosMetaDataDB const&);
QSqlDatabase m_sqlDb;
signals:
public slots:
};
#endif // POSMETADATADB_H
......@@ -268,7 +268,7 @@ QJsonObject DataManger::GetSelfCheckReqData()
{
QJsonObject rObj;
rObj.insert(JSON_IPADDRESS,m_posIpAddress);
rObj.insert(JSON_MACHINECODE,"111111111111111");
rObj.insert(JSON_MACHINECODE, MASTER_POS_UNIQUE_ID );
rObj.insert(JSON_STOREID,m_storeId);
rObj.insert(JSON_PARTNERID,m_partnerId);
rObj.insert(JSON_PASSWORD,"posoperator@freemud.cn");
......
......@@ -794,8 +794,6 @@ bool PrintCupStickPosDB::insertDeliveryPackageAndPack(OrderObject* orderObj, con
bool insertPackRet = true ;
int insertPackPlaceHolderSeq = 0;
bool insertPackageFeeRet = true ;
int insertPackageFeePlaceHolderSeq = 0;
bool insertDeliveryFeeRet = true;
QSqlQuery query(m_sqlDb);
QDateTime qdaTi = QDateTime::currentDateTimeUtc();
......@@ -840,7 +838,7 @@ bool PrintCupStickPosDB::insertDeliveryPackageAndPack(OrderObject* orderObj, con
}
}
if( orderObj->channel == "MOD" || orderObj->channel == "ELE" || orderObj->channel == "MT-MOD" ) {
if ( !orderObj->packageFeeAtProduct && ( orderObj->channel == "MOD" || orderObj->channel == "ELE" || orderObj->channel == "MT-MOD" ) ) {
// Insert Package Fee Into tb_main_prod_refinfo;
query.prepare("INSERT INTO tb_main_prod_refinfo(chk_num, order_id, order_status, create_datetime, "
......@@ -876,7 +874,6 @@ bool PrintCupStickPosDB::insertDeliveryPackageAndPack(OrderObject* orderObj, con
insertPackageFeeRet = false;
return false;
} else {
insertPackageFeePlaceHolderSeq = 1;
QLOG_INFO()<<QString("[<<<<---SqlServer Database:Insert OrderId %1 PackageFee:%2 Into tb_main_prod_refinfo Success--->>>>]")
.arg(orderObj->id).arg(orderObj->packageFee);
}
......@@ -884,7 +881,7 @@ bool PrintCupStickPosDB::insertDeliveryPackageAndPack(OrderObject* orderObj, con
// 上游oms 开关已完全打开: 配送费已添加到商品列表中; 顾无需此处配送费整合逻辑;
}
if ( !insertDeliveryFeeRet || !insertPackageFeeRet || !insertPackRet ) {
if ( !insertPackageFeeRet || !insertPackRet ) {
return false;
} else {
return true;
......
#include "PosMateDataObject.h"
PosMateDataObject::PosMateDataObject(const PosMateDataObject &posMateDataObj, QObject *parent):QObject(parent)
{
const QMetaObject *m = posMateDataObj.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++)
{
QMetaProperty qmp = m->property(i);
QString key = QString::fromLatin1(qmp.name());
QVariant value = posMateDataObj.property(key.toUtf8());
this->setProperty(key.toUtf8(), value);
}
}
PosMateDataObject& PosMateDataObject::operator =(const PosMateDataObject& posMateDataObj)
{
const QMetaObject *m = posMateDataObj.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++)
{
QMetaProperty qmp = m->property(i);
QString key = QString::fromLatin1(qmp.name());
QVariant value = posMateDataObj.property(key.toUtf8());
this->setProperty(key.toUtf8(), value);
}
return *this;
}
/*
void PosMateDataObject::FetchDataFromJson(const QJsonObject &json)
{
foreach(QString key, json.keys())
{
setProperty(key.toUtf8(), json[key].toVariant());
}
return;
}
*/
#ifndef POSMATEDATAOBJECT_H
#define POSMATEDATAOBJECT_H
#include <QObject>
#include <QJsonObject>
#include <QVariant>
#include <QMetaProperty>
class PosMateDataObject : public QObject
{
Q_OBJECT
Q_PROPERTY (QString workstationNumber READ getWorkstationNumber WRITE setWorkstationNumber)
Q_PROPERTY (QString empNo READ getEmpNo WRITE setEmpNo)
Q_PROPERTY (QString empName READ getEmpName WRITE setEmpName)
public:
explicit PosMateDataObject(QObject *parent = 0):QObject(parent){}
PosMateDataObject(const PosMateDataObject& posMateDataObj,QObject* parent=0);
PosMateDataObject& operator =(const PosMateDataObject& posMateDataObj);
// void FetchDataFromJson(const QJsonObject &json);
QString workstationNumber;
QString empNo;
QString empName;
protected:
inline QString getWorkstationNumber(){ return workstationNumber; }
inline void setWorkstationNumber(const QString& v){ workstationNumber = v; }
inline QString getEmpNo(){ return empNo; }
inline void setEmpNo(const QString& v){ empNo = v; }
inline QString getEmpName(){ return empName; }
inline void setEmpName(const QString& v){ empName = v; }
};
#endif // POSMATEDATAOBJECT_H
......@@ -116,6 +116,8 @@ class OrderObject : public QObject
Q_PROPERTY (QJsonObject pluginOptions READ getPluginOptions WRITE setPluginOptions)
Q_PROPERTY (int totalPriceForPos READ getTotalPriceForPos WRITE setTotalPriceForPos )
Q_PROPERTY (bool packageFeeAtProduct READ getPackageFeeAtProduct WRITE setPackageFeeAtProduct)
public:
OrderObject(QObject *parent=0)
......@@ -251,6 +253,7 @@ public:
QString tenderDeliveryDiscountBSku; // 配送费 B账户优惠SKU;
int decouplePosVersion; // 解耦POS版本
bool deliveryAtProd; // 配送费已添加到商品列表标志;
bool packageFeeAtProduct; // 包装费已添加到商品列表标志;
int globalServiceType; // 全链路服务类型: globalServiceType【新增字段:int】
int globalOrderType; // 全链路订单类型: globalOrderType 【新增字段:int】
......@@ -542,6 +545,9 @@ public:
inline bool getDeliveryAtProd()const{return deliveryAtProd;}
inline void setDeliveryAtProd(const bool& v){deliveryAtProd = v;}
inline bool getPackageFeeAtProduct()const{return packageFeeAtProduct;}
inline void setPackageFeeAtProduct(const bool& v){packageFeeAtProduct = v;}
inline QString getTenderDeliveryDiscountBSku()const{return tenderDeliveryDiscountBSku;}
inline void setTenderDeliveryDiscountBSku(const QString& v){tenderDeliveryDiscountBSku = v;}
......
......@@ -201,27 +201,8 @@ void DetailForm::InitData(OrderObject *orderObject)
}
/*********************************** 遍历 WSG 券列表:券信息展示 end *********************************************************/
// 新增配送费 + 打包费
ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(QString::fromLocal8Bit("配送费:") + QString("6000101") )); // 配送费
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem(Penny2Dollar(orderObject->deliveryPrice))); // 价格
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString::number(1))); // 数量
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignCenter);
pNum = pNum + 1;
// 新增展示配送费折扣项显示;
if (orderObject->deliveryDiscount > 0 ){
ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem( QString("( ") + QString::fromLocal8Bit("配送费折扣"))); // 配送费折扣
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight);
ui->detailTable0->setItem(pNum, 1, new QTableWidgetItem( QString("-") + Penny2Dollar(orderObject->deliveryDiscount))); // 价格
ui->detailTable0->item(pNum, 1)->setTextAlignment(Qt::AlignCenter);
ui->detailTable0->setItem(pNum, 2, new QTableWidgetItem(QString::number(1) + QString(" )"))); // 数量
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft);
pNum = pNum + 1;
}
// 新增-- 包装费
if ( !orderObject->packageFeeAtProduct ) {
ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem(QString::fromLocal8Bit("包装费:") + QString("6000201") )); // 包装费
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignCenter);
......@@ -231,7 +212,7 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignCenter);
pNum = pNum + 1;
// 新增展示打包费折扣项显示;
if (orderObject->packDiscount > 0){
if (orderObject->packDiscount > 0) {
ui->detailTable0->insertRow(pNum);
ui->detailTable0->setItem(pNum, 0, new QTableWidgetItem( QString("( ") + QString::fromLocal8Bit("包装费折扣"))); // 包装费折扣
ui->detailTable0->item(pNum, 0)->setTextAlignment(Qt::AlignRight);
......@@ -241,6 +222,7 @@ void DetailForm::InitData(OrderObject *orderObject)
ui->detailTable0->item(pNum, 2)->setTextAlignment(Qt::AlignLeft);
pNum = pNum + 1;
}
}
// 新增展示整单折扣项显示;
if (orderObject->orderDiscount> 0){
......
......@@ -83,7 +83,9 @@ SOURCES += main.cpp\
noticeForm.cpp \
DTools/saveNoticeMsgDB.cpp \
Model/NoticeObject.cpp \
PrintTicketSelectForm.cpp
PrintTicketSelectForm.cpp \
Model/PosMateDataObject.cpp \
DTools/PosMetaDataDB.cpp
HEADERS += \
Control/flowControl.h \
......@@ -148,7 +150,9 @@ HEADERS += \
noticeForm.h \
DTools/saveNoticeMsgDB.h \
Model/NoticeObject.h \
PrintTicketSelectForm.h
PrintTicketSelectForm.h \
Model/PosMateDataObject.h \
DTools/PosMetaDataDB.h
FORMS += mainForm.ui \
alertForm.ui \
......
......@@ -7,8 +7,8 @@ IDI_ICON ICON DISCARDABLE "logo.ico"
#endif
VS_VERSION_INFO VERSIONINFO
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
FILEVERSION 2,2023,2,23
PRODUCTVERSION 2,2023,2,23
FILEVERSION 2,2023,4,12
PRODUCTVERSION 2,2023,4,12
//*************************************************************************//
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
......@@ -31,8 +31,8 @@ VS_VERSION_INFO VERSIONINFO
VALUE "OriginalFilename", "fmTakeout.exe"
VALUE "ProductName", "Delivery Order Plugin"
//***每次修改后编译发版必须变更版本号(preDefine.h中APP_VERSION 需要一致)***//
VALUE "ProductVersion", "2.2023.2.23"
VALUE "FileVersion", "2.2023.2.23"
VALUE "ProductVersion", "2.2023.4.12"
VALUE "FileVersion", "2.2023.4.12"
//*************************************************************************//
END
END
......
......@@ -46,7 +46,8 @@
//#define APP_VERSION "2.2022.8.18"
//#define APP_VERSION "2.2022.10.20"
//#define APP_VERSION "2.2022.11.30"
#define APP_VERSION "2.2023.2.23"
//#define APP_VERSION "2.2023.2.23"
#define APP_VERSION "2.2023.4.12"
//修正版本号时,切记修正 FmTakeout.rc 中的版本号
......@@ -318,6 +319,12 @@
#define PROPERTY_SHIFTID "shiftId" // 班次编号
#define PROPERTY_SHIFTNAME "shiftName" // 班次名称
#define MASTER_POS_UNIQUE_ID "111111111111111" // 初始主POS 唯一ID;
#define BACKUP_POS_UNIQUE_ID "222222222222222" // 备机POS (OnePOS) 唯一ID;
#define DEFAULT_CASHIER_ID "90001"
#define DEFAULT_CASHIER_NAME "MICROS"
#define DEFAULT_WORKSTATION_NUM "199"
// 悬浮框: 提醒订单的类型
#define REMIND_NEW_ORDER 2 // 新订单: 目前不存在case
......
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