修复业绩明细商品金额重复计算(订单侧按子订单去重)
订单侧聚合改为先按「子订单号 + 条码」去重再求和,避免拆单/子单重复计入商品金额。
This commit is contained in:
parent
12eb5d03d9
commit
3dd90dc52c
@ -460,12 +460,20 @@ class SyncStoreReceiptOrderMatches extends Command
|
||||
['ops_jst_orders', 'ops_jst_order_item'],
|
||||
] as [$ordersTable, $itemsTable]) {
|
||||
try {
|
||||
// 同一线上订单号在聚水潭可能对应多个 o_id(拆单/子单),且子单会重复包含
|
||||
// 同一批子订单商品行;先按「子订单号 + 条码」去重再求和,避免重复计算。
|
||||
$result = $mirror->select(
|
||||
"SELECT o.so_id as so_id, o.shop_name as shop_name, SUM(i.amount) as amount
|
||||
FROM tmp_receipt_order_nos t
|
||||
STRAIGHT_JOIN {$ordersTable} o ON o.so_id = t.no
|
||||
STRAIGHT_JOIN {$itemsTable} i ON i.o_id = o.o_id
|
||||
GROUP BY o.so_id, o.shop_name"
|
||||
"SELECT so_id, shop_name, SUM(amount) as amount
|
||||
FROM (
|
||||
SELECT o.so_id as so_id, o.shop_name as shop_name,
|
||||
CONCAT(COALESCE(NULLIF(i.outer_oi_id, ''), CONCAT('o', o.o_id, '-', i.oi_id)), '|', i.sku_id) as dedup_key,
|
||||
MAX(i.amount) as amount
|
||||
FROM tmp_receipt_order_nos t
|
||||
STRAIGHT_JOIN {$ordersTable} o ON o.so_id = t.no
|
||||
STRAIGHT_JOIN {$itemsTable} i ON i.o_id = o.o_id
|
||||
GROUP BY o.so_id, o.shop_name, dedup_key
|
||||
) d
|
||||
GROUP BY so_id, shop_name"
|
||||
);
|
||||
} catch (Throwable $exception) {
|
||||
$this->error('订单侧查询失败(' . $ordersTable . '):' . $exception->getMessage());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user