Commit 506fa128 by shangshang.dai

Fix 1:修复入账的编码由pid改为stock_barcode,正式上线版本

parent 10ea5cfd
......@@ -192,6 +192,7 @@ bool FmPlugin::DoOrderEntry(const OrderObject *orderObject, const QString &cashi
{
QJsonObject recvJson;
recvJson = QJsonDocument::fromJson(recvArray).object();
qDebug() << recvJson;
QString uuid = recvJson["uuid"].toString();
if(uuid.isEmpty())
{
......@@ -476,12 +477,13 @@ QByteArray FmPlugin::_GetOrderEntryData(const OrderObject *orderObject, const QS
QJsonArray products;
for(int i=0; i < orderObject->proList.count(); i++)
{
qDebug() <<orderObject->order_id << i;
ProductObject *pObj = orderObject->proList.at(i);
if(!pObj->sub_products.isEmpty())
{
//qDebug() << "有子商品";
// 组合商品应收的钱
float zh_ys_fee = _Penny2Dollar(pObj->price*pObj->productAmount);
//qDebug() << "组合应收" <<zh_ys_fee << pObj->price << pObj->productAmount;
// 组合商品实际收到的钱
float zh_ss_fee = zh_ys_fee*(1-(float)orderObject->dis_shop_fee/orderObject->product_fee);
// 组合的成本
......@@ -495,7 +497,9 @@ QByteArray FmPlugin::_GetOrderEntryData(const OrderObject *orderObject, const QS
foreach(ProductObject *cpObj, pObj->sub_products)
{
float ratio = (float)cpObj->unit_ratio/100;
// qDebug() << "子商品:" << cpObj->name << cpObj->productAmount<<cpObj->cost <<ratio;
// 该商品的成本金额
float cb_fee = _Penny2Dollar(cpObj->productAmount*ratio*cpObj->cost);
......@@ -503,31 +507,33 @@ QByteArray FmPlugin::_GetOrderEntryData(const OrderObject *orderObject, const QS
float ys_fee = zh_ys_fee*(cb_fee/zh_cb_fee);
// 该商品实际收到的钱 组合实际收的钱*(该商品的成本/组合成本)
float ss_fee = zh_ss_fee*(cb_fee/zh_cb_fee);
// qDebug() << "该商品价格 " << cb_fee << ys_fee << ss_fee;
// // 该商品应收的钱
// float ys_fee = _Penny2Dollar(cpObj->price*cpObj->productAmount);
// // 该商品实际收到的钱
// float ss_fee = ys_fee*(1-(float)orderObject->dis_shop_fee/orderObject->product_fee);
if(_proMap.contains(cpObj->pid))
if(_proMap.contains(cpObj->stock_barcode))
{
Product_elemet elemet;
elemet.skuId = cpObj->pid;
elemet.qty = _proMap.value(cpObj->pid).qty + cpObj->productAmount*ratio;
elemet.ys_fee = _proMap.value(cpObj->pid).ys_fee + ys_fee;
elemet.ss_fee = _proMap.value(cpObj->pid).ss_fee + ss_fee;
elemet.note = _proMap.value(cpObj->pid).note + cb_fee;
_proMap.insert(cpObj->pid, elemet);
elemet.skuId = cpObj->stock_barcode;
elemet.qty = _proMap.value(cpObj->stock_barcode).qty + cpObj->productAmount*ratio;
elemet.ys_fee = _proMap.value(cpObj->stock_barcode).ys_fee + ys_fee;
elemet.ss_fee = _proMap.value(cpObj->stock_barcode).ss_fee + ss_fee;
elemet.note = _proMap.value(cpObj->stock_barcode).note + cb_fee;
_proMap.insert(cpObj->stock_barcode, elemet);
//qDebug() << "商品插入表格0 " << elemet.skuId << elemet.qty << elemet.ys_fee << elemet.ss_fee << elemet.note;
}else
{
Product_elemet elemet;
elemet.skuId = cpObj->pid;
elemet.skuId = cpObj->stock_barcode;
elemet.qty = cpObj->productAmount*ratio;
elemet.ys_fee = ys_fee;
elemet.ss_fee = ss_fee;
elemet.note = cb_fee;
_proMap.insert(cpObj->pid, elemet);
_proMap.insert(cpObj->stock_barcode, elemet);
//qDebug() << "商品插入表格1 " << elemet.skuId << elemet.qty << elemet.ys_fee << elemet.ss_fee << elemet.note;
}
}
}else
......@@ -539,24 +545,24 @@ QByteArray FmPlugin::_GetOrderEntryData(const OrderObject *orderObject, const QS
// 该商品实际收到的钱
float ss_fee = ys_fee*(1-(float)orderObject->dis_shop_fee/orderObject->product_fee);
if(_proMap.contains(pObj->pid))
if(_proMap.contains(pObj->stock_barcode))
{
Product_elemet elemet;
elemet.skuId = pObj->pid;
elemet.qty = _proMap.value(pObj->pid).qty + pObj->productAmount*ratio;
elemet.ys_fee = _proMap.value(pObj->pid).ys_fee + ys_fee;
elemet.ss_fee = _proMap.value(pObj->pid).ss_fee + ss_fee;
elemet.note = _proMap.value(pObj->pid).note + _Penny2Dollar(pObj->productAmount*ratio*pObj->cost);
_proMap.insert(pObj->pid, elemet);
elemet.skuId = pObj->stock_barcode;
elemet.qty = _proMap.value(pObj->stock_barcode).qty + pObj->productAmount*ratio;
elemet.ys_fee = _proMap.value(pObj->stock_barcode).ys_fee + ys_fee;
elemet.ss_fee = _proMap.value(pObj->stock_barcode).ss_fee + ss_fee;
elemet.note = _proMap.value(pObj->stock_barcode).note + _Penny2Dollar(pObj->productAmount*ratio*pObj->cost);
_proMap.insert(pObj->stock_barcode, elemet);
}else
{
Product_elemet elemet;
elemet.skuId = pObj->pid;
elemet.skuId = pObj->stock_barcode;
elemet.qty = pObj->productAmount*ratio;
elemet.ys_fee = ys_fee;
elemet.ss_fee = ss_fee;
elemet.note = _Penny2Dollar(pObj->productAmount*ratio*pObj->cost);
_proMap.insert(pObj->pid, elemet);
_proMap.insert(pObj->stock_barcode, elemet);
}
}
}
......@@ -610,6 +616,24 @@ QByteArray FmPlugin::_GetFeeData(const OrderObject *orderObject, QString uuid)
double sendFee;
sendFee = _Penny2Dollar(orderObject->send_fee);
double packFee = 0;
int packTmp = 0;
for(int i=0; i < orderObject->proList.count(); i++)
{
ProductObject *pObj = orderObject->proList.at(i);
if(!pObj->sub_products.isEmpty())
{
foreach(ProductObject *cpObj, pObj->sub_products)
{
packTmp += cpObj->pack_charge;
}
}else
{
packTmp += pObj->pack_charge;
}
}
packFee = _Penny2Dollar(packTmp);
QJsonObject rObj;
rObj.insert("num",orderObject->order_view_id.isEmpty()?orderObject->order_id:orderObject->order_view_id);
......@@ -619,14 +643,14 @@ QByteArray FmPlugin::_GetFeeData(const OrderObject *orderObject, QString uuid)
rObj.insert("filDate",QDateTime::fromTime_t(orderObject->create_time).toString("yyyy-MM-ddThh:mm:ss.zzz+0800"));
rObj.insert("filler","非码外卖");
rObj.insert("note", QDateTime::currentDateTime().toString("yyyy-MM-ddThh:mm:ss.zzz+0800"));
rObj.insert("total", serviceFee+sendFee);
rObj.insert("total", serviceFee+sendFee+packFee);
rObj.insert("customFieldS1", m_storeId);
rObj.insert("customFieldS2", uuid);
rObj.insert("customFieldN1",0);
rObj.insert("customFieldN2",0);
QJsonArray array;
QJsonObject cObj0, cObj1;
QJsonObject cObj0, cObj1, cObj2;
cObj0.insert("line", 1);
cObj0.insert("itemName","服务费");
cObj0.insert("total", serviceFee);
......@@ -662,6 +686,17 @@ QByteArray FmPlugin::_GetFeeData(const OrderObject *orderObject, QString uuid)
cObj1.insert("customFieldN2", 0);
cObj1.insert("note","");
array.insert(1, cObj1);
cObj2.insert("line", 3);
cObj2.insert("itemName", "包装费");
cObj2.insert("total", packFee);
cObj2.insert("customFieldS1", "");
cObj2.insert("customFieldS2", "");
cObj2.insert("customFieldN1", 0);
cObj2.insert("customFieldN2", 0);
cObj2.insert("note","");
array.insert(2, cObj2);
rObj.insert("details", array);
return QJsonDocument(rObj).toJson(QJsonDocument::Compact);
......
......@@ -223,7 +223,7 @@ bool FlowControl::_PullOrder()
}
// 订单完成后两小时写销售单
if(orderObject->status == 6 || orderObject->status == 200 )
if(orderObject->status == 6 || orderObject->status == 200)
{
bool bWrite = true;
// 检查转换信息是否正常、不正常则不写销售单(防止数据出问题影响门店正常数据)
......@@ -231,7 +231,7 @@ bool FlowControl::_PullOrder()
{
if(pro->sub_products.isEmpty())
{
if(pro->unit_ratio < 0)
if(pro->unit_ratio <= 0)
{
bWrite = false;
break;
......@@ -240,7 +240,7 @@ bool FlowControl::_PullOrder()
{
foreach(ProductObject* cpro, pro->sub_products)
{
if(cpro->unit_ratio < 0)
if(cpro->unit_ratio <= 0)
{
bWrite = false;
break;
......@@ -248,9 +248,11 @@ bool FlowControl::_PullOrder()
}
}
}
if(bWrite)
{
QLOG_INFO() << QString("will entry %1").arg(orderObject->order_id);
//TODO
QTimer::singleShot(1000*60*60, [orderObject, this](){
QLOG_INFO() << QString("订单[%1]进入队列").arg(orderObject->order_id);
m_mutex.lock();
......
......@@ -18,6 +18,26 @@ void ProductObject::FromJson(const QJsonObject &json)
return;
}
int ProductObject::getpack_charge() const
{
return pack_charge;
}
void ProductObject::setpack_charge(const int &v)
{
pack_charge = v;
}
QString ProductObject::getstock_barcode() const
{
return stock_barcode;
}
void ProductObject::setstock_barcode(const QString &v)
{
stock_barcode = v;
}
int ProductObject::getcost() const
{
return cost;
......
......@@ -24,6 +24,8 @@ public:
Q_PROPERTY (int productAmount READ getProductAmount WRITE setProductAmount)
Q_PROPERTY (int cost READ getcost WRITE setcost)
Q_PROPERTY (int unit_ratio READ getunit_ratio WRITE setunit_ratio)
Q_PROPERTY (QString stock_barcode READ getstock_barcode WRITE setstock_barcode)
Q_PROPERTY (int pack_charge READ getpack_charge WRITE setpack_charge)
QString pid;
QString name;
......@@ -31,12 +33,22 @@ public:
int price;
int productAmount;
QString stock_barcode; // 鲜丰特有入账短编码
int pack_charge; // 鲜丰特有的包装费(用于核算成本)
int cost; // 成本价
int unit_ratio; // 商品系数
QList<ProductObject *> sub_products; // 子商品
protected:
int getpack_charge() const;
void setpack_charge(const int& v);
QString getstock_barcode() const;
void setstock_barcode(const QString& v);
int getcost() const;
void setcost(const int& v);
......
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