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 () => {
|
test('automatic fee adjustment confirms the ten percent tolerance boundary', async () => {
|
||||||
const source = await readFile(moduleFile, 'utf8')
|
const source = await readFile(moduleFile, 'utf8')
|
||||||
assert.match(source, /reason: `\$\{context\.marker\}-自动费用版本调整`, toleranceConfirmed: true/)
|
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 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 adjustedAdditional = money(initial.additionalAmount) + 0.01
|
||||||
const adjustResponse = await context.request('PUT',
|
const adjustResponse = await context.request('PUT',
|
||||||
`/api/platform/v1/inbounds/${encodeURIComponent(inboundId)}/fees/published?tenantId=${encodeURIComponent(tenantId)}`,
|
`/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'
|
Number(adjusted?.feeVersion) > Number(initial.feeVersion) && adjusted?.feeStatus === 'CALCULATED'
|
||||||
&& adjusted?.nextProcessStatus === 'WAIT_SPLIT' && money(adjusted?.totalAmount) >= adjustedAdditional,
|
&& adjusted?.nextProcessStatus === 'WAIT_SPLIT' && money(adjusted?.totalAmount) >= adjustedAdditional,
|
||||||
`oldVersion=${initial.feeVersion}, newVersion=${adjusted?.feeVersion ?? 'missing'}, status=${adjusted?.feeStatus || 'missing'}, process=${adjusted?.nextProcessStatus || 'missing'}`, OPTIONS)
|
`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 }
|
if (!adjusted?.feeId) { finish(context, start); return }
|
||||||
|
|
||||||
const adjustedDetails = await listDetails(context, tenantId, inboundId, '回查调整后的派生详情版本')
|
const adjustedDetails = await listDetails(context, tenantId, inboundId, '回查调整后的派生详情版本')
|
||||||
@@ -108,7 +111,10 @@ export async function run(context) {
|
|||||||
&& id(row.sourceFeeId) === id(sent?.feeId))
|
&& id(row.sourceFeeId) === id(sent?.feeId))
|
||||||
context.assert(MODULE, '仅人工发布后费用为 SENT 且派生明细为 PUBLISHED', sendResponse,
|
context.assert(MODULE, '仅人工发布后费用为 SENT 且派生明细为 PUBLISHED', sendResponse,
|
||||||
sent?.feeStatus === 'SENT' && sent?.nextProcessStatus === 'WAIT_SPLIT'
|
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)
|
`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')
|
const feeItemsResponse = await context.request('GET', '/api/platform/v1/fee-items?page=1&size=200&status=ACTIVE')
|
||||||
|
|||||||
Reference in New Issue
Block a user