test: verify manual inbound unit price flow
This commit is contained in:
@@ -27,4 +27,7 @@ test('inbound fee lifecycle covers frozen source, version, publication and WAIT_
|
||||
test('automatic fee adjustment confirms the ten percent tolerance boundary', async () => {
|
||||
const source = await readFile(moduleFile, 'utf8')
|
||||
assert.match(source, /reason: `\$\{context\.marker\}-自动费用版本调整`, toleranceConfirmed: true/)
|
||||
assert.match(source, /adjustedUnitPrice = Number\(\(Math\.max\(0, money\(initial\.unitPrice\)\) \+ 0\.37\)\.toFixed\(4\)\)/)
|
||||
assert.match(source, /人工对客单价写入最新费用版本/)
|
||||
assert.match(source, /money\(published\?\.unitPrice\) === adjustedUnitPrice/)
|
||||
})
|
||||
|
||||
@@ -66,7 +66,7 @@ export async function run(context) {
|
||||
}
|
||||
|
||||
const adjustedQuantity = Math.max(0.0001, money(initial.chargeableQuantity) + 0.01)
|
||||
const adjustedUnitPrice = Math.max(0, money(initial.unitPrice))
|
||||
const adjustedUnitPrice = Number((Math.max(0, money(initial.unitPrice)) + 0.37).toFixed(4))
|
||||
const adjustedAdditional = money(initial.additionalAmount) + 0.01
|
||||
const adjustResponse = await context.request('PUT',
|
||||
`/api/platform/v1/inbounds/${encodeURIComponent(inboundId)}/fees/published?tenantId=${encodeURIComponent(tenantId)}`,
|
||||
@@ -79,6 +79,9 @@ export async function run(context) {
|
||||
Number(adjusted?.feeVersion) > Number(initial.feeVersion) && adjusted?.feeStatus === 'CALCULATED'
|
||||
&& adjusted?.nextProcessStatus === 'WAIT_SPLIT' && money(adjusted?.totalAmount) >= adjustedAdditional,
|
||||
`oldVersion=${initial.feeVersion}, newVersion=${adjusted?.feeVersion ?? 'missing'}, status=${adjusted?.feeStatus || 'missing'}, process=${adjusted?.nextProcessStatus || 'missing'}`, OPTIONS)
|
||||
context.assert(MODULE, '人工对客单价写入最新费用版本', adjustResponse,
|
||||
money(adjusted?.unitPrice) === adjustedUnitPrice,
|
||||
`referenceUnitPrice=${initial.unitPrice ?? 'missing'}, selectedUnitPrice=${adjustedUnitPrice}, persistedUnitPrice=${adjusted?.unitPrice ?? 'missing'}`, OPTIONS)
|
||||
if (!adjusted?.feeId) { finish(context, start); return }
|
||||
|
||||
const adjustedDetails = await listDetails(context, tenantId, inboundId, '回查调整后的派生详情版本')
|
||||
@@ -108,7 +111,10 @@ export async function run(context) {
|
||||
&& id(row.sourceFeeId) === id(sent?.feeId))
|
||||
context.assert(MODULE, '仅人工发布后费用为 SENT 且派生明细为 PUBLISHED', sendResponse,
|
||||
sent?.feeStatus === 'SENT' && sent?.nextProcessStatus === 'WAIT_SPLIT'
|
||||
&& published?.publicationStatus === 'PUBLISHED' && published?.reviewStatus === 'APPROVED',
|
||||
&& money(sent?.unitPrice) === adjustedUnitPrice
|
||||
&& published?.publicationStatus === 'PUBLISHED' && published?.reviewStatus === 'APPROVED'
|
||||
&& money(published?.unitPrice) === adjustedUnitPrice
|
||||
&& money(published?.amount) === money(sent?.totalAmount),
|
||||
`status=${sent?.feeStatus || 'missing'}, process=${sent?.nextProcessStatus || 'missing'}, publication=${published?.publicationStatus || 'missing'}`, OPTIONS)
|
||||
|
||||
const feeItemsResponse = await context.request('GET', '/api/platform/v1/fee-items?page=1&size=200&status=ACTIVE')
|
||||
|
||||
Reference in New Issue
Block a user