feat(fulfillment): 收敛履约状态写入口并追加状态事件
This commit is contained in:
@@ -17,6 +17,7 @@ import {
|
||||
import { rebuildChannelSalesDailyFacts } from './sales-facts-channel-service.js'
|
||||
import { syncFinanceLedgerFromFacts } from './finance-ledger-service.js'
|
||||
import { scheduleVoucherConsumeForOrderItems } from '../fulfillment/voucher-consume-queue-service.js'
|
||||
import { transitionFulfillmentStateWithExecutor } from '../fulfillment/fulfillment-state-service.js'
|
||||
import {
|
||||
calculateManualCostFen,
|
||||
normalizeManualCreditQuantity,
|
||||
@@ -621,19 +622,21 @@ export async function confirmManualFulfillment(payload: JsonObject, session: Adm
|
||||
|
||||
// 人工确认即渠道成立:写新三列,避免订单一直停在 pending。
|
||||
const finalChannel = platformKey === 'on_account' ? 'on_account' : 'manual'
|
||||
await client.query(
|
||||
`
|
||||
UPDATE order_items
|
||||
SET fulfillment_channel = $3,
|
||||
fulfillment_status = 'assigned',
|
||||
fulfillment_source = 'manual_confirm',
|
||||
fulfillment_decided_at = $2,
|
||||
updated_at = $2
|
||||
WHERE id = $1
|
||||
AND fulfillment_status <> 'archived'
|
||||
`,
|
||||
[orderItemId, now, finalChannel],
|
||||
)
|
||||
await transitionFulfillmentStateWithExecutor(client, {
|
||||
orderItemId,
|
||||
patch: {
|
||||
channel: finalChannel,
|
||||
status: 'assigned',
|
||||
source: 'manual_confirm',
|
||||
decidedAt: now,
|
||||
decidedBy: Number(session.userId || 0) || null,
|
||||
pendingReason: null,
|
||||
pendingDetail: null,
|
||||
},
|
||||
eventType: 'manual_fulfillment_confirmed',
|
||||
actor: { type: 'finance', id: session.userId },
|
||||
reason: platformKey,
|
||||
})
|
||||
|
||||
// 人工缺成本异常立即收口,不等下一轮定时任务。
|
||||
await client.query(
|
||||
|
||||
Reference in New Issue
Block a user