优化
This commit is contained in:
@@ -140,16 +140,12 @@ async function createAp(context, fixture, source, role) {
|
||||
return value
|
||||
}
|
||||
|
||||
async function findPayableBySource(context, feeSourceId) {
|
||||
const listResponse = await context.request('GET', `${BASE}/payable-settlements?customerId=10001&page=1&pageSize=200`)
|
||||
for (const item of rows(data(listResponse))) {
|
||||
const detailResponse = await context.request('GET', `${BASE}/settlements/${settlementId(item)}`)
|
||||
const value = data(detailResponse)
|
||||
if (value?.direction === 'PAYABLE' && value?.lines?.some((line) => id(line.feeSourceId) === id(feeSourceId))) {
|
||||
return { response: detailResponse, value }
|
||||
}
|
||||
}
|
||||
return { response: listResponse, value: null }
|
||||
async function recoverPayable(context, settlement, feeSourceId) {
|
||||
if (!settlementId(settlement)) return null
|
||||
const response = await context.request('GET', `${BASE}/settlements/${settlementId(settlement)}`)
|
||||
const value = data(response)
|
||||
return value?.direction === 'PAYABLE' && value?.lines?.some((line) => id(line.feeSourceId) === id(feeSourceId))
|
||||
? { response, value } : null
|
||||
}
|
||||
|
||||
function verifySettlementState(context, direction, role, response, value, expectedStatus) {
|
||||
@@ -183,6 +179,13 @@ async function recoverExistingDemo(context, reportPath) {
|
||||
|
||||
const payableIds = ['307', '310']
|
||||
const roles = ['apUnpaid', 'apPartial']
|
||||
matrix.payableSettlements ??= {}
|
||||
if (!settlementId(matrix.payableSettlements.apUnpaid)) {
|
||||
matrix.payableSettlements.apUnpaid = { settlementId: process.env.FINANCE_DEMO_AP_UNPAID_ID }
|
||||
}
|
||||
if (!settlementId(matrix.payableSettlements.apPartial)) {
|
||||
matrix.payableSettlements.apPartial = { settlementId: process.env.FINANCE_DEMO_AP_PARTIAL_ID }
|
||||
}
|
||||
for (let index = 0; index < roles.length; index += 1) {
|
||||
const role = roles[index]
|
||||
const detail = await sourceDetail(context, payableIds[index])
|
||||
@@ -204,7 +207,8 @@ async function recoverExistingDemo(context, reportPath) {
|
||||
continue
|
||||
}
|
||||
const approved = await approveAndInclude(context, { feeSourceId: payableIds[index] }, role)
|
||||
const existing = approved?.statementGenerated === true ? await findPayableBySource(context, payableIds[index]) : null
|
||||
const existing = approved?.statementGenerated === true
|
||||
? await recoverPayable(context, matrix.payableSettlements[role], payableIds[index]) : null
|
||||
const recoverySupplierId = role === 'apPartial'
|
||||
? id(matrix.payableSettlements?.apPaid?.supplierId)
|
||||
: id(fixture.supplier?.supplierId)
|
||||
@@ -215,10 +219,10 @@ async function recoverExistingDemo(context, reportPath) {
|
||||
`settlementId=${settlementId(existing.value)}, feeSourceId=${payableIds[index]}`)
|
||||
if (!settlementId(settlement)) continue
|
||||
if (role === 'apUnpaid') matrix.payableSettlements[role] = settlement
|
||||
else {
|
||||
else if (Number(settlement.paidAmount ?? 0) === 0) {
|
||||
const amount = Math.max(0.01, Math.floor(outstanding(settlement) * 50) / 100)
|
||||
matrix.payableSettlements[role] = (await pay(context, fixture, settlement, amount, role)).value
|
||||
}
|
||||
} else matrix.payableSettlements[role] = settlement
|
||||
verifySettlementState(context, 'PAYABLE', role, detail.response, matrix.payableSettlements[role],
|
||||
role === 'apUnpaid' ? 'UNPAID' : 'PARTIALLY_PAID')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user