fix: preserve reviewer risk notice after standard adjustment
This commit is contained in:
@@ -24,6 +24,9 @@ import {
|
||||
buildEmployeeProfileAdviceItems,
|
||||
buildTravelReceiptMaterialPrompts
|
||||
} from '../src/views/scripts/travelRequestDetailAdviceModel.js'
|
||||
import {
|
||||
filterSubmitterResolvedRiskCards
|
||||
} from '../src/views/scripts/travelRequestDetailStandardAdjustment.js'
|
||||
|
||||
const detailViewTemplate = readFileSync(
|
||||
fileURLToPath(new URL('../src/views/TravelRequestDetailView.vue', import.meta.url)),
|
||||
@@ -708,7 +711,8 @@ test('expense detail shows standard-adjusted reimbursable amount separately from
|
||||
assert.match(detailViewTemplate, /submitConfirmAmountDisplay/)
|
||||
assert.match(detailViewStyle, /\.expense-original-amount[\s\S]*text-decoration-line: line-through/)
|
||||
assert.match(detailViewScript, /const expenseTotal = computed\(\(\) => \{[\s\S]*item\.reimbursableAmount/)
|
||||
assert.match(detailViewScript, /filterSubmitterStandardAdjustedRiskCards/)
|
||||
assert.match(detailViewScript, /filterSubmitterResolvedRiskCards/)
|
||||
assert.doesNotMatch(detailViewScript, /filterSubmitterStandardAdjustedRiskCards/)
|
||||
assert.match(detailViewScript, /acceptExpenseClaimStandardAdjustment/)
|
||||
assert.match(detailExpenseModelScript, /STANDARD_ADJUSTMENT_RISK_SOURCE = 'reimbursement_standard_adjustment'/)
|
||||
assert.match(requestsComposableScript, /STANDARD_ADJUSTMENT_RISK_SOURCE = 'reimbursement_standard_adjustment'/)
|
||||
@@ -744,6 +748,66 @@ test('expense detail shows standard-adjusted reimbursable amount separately from
|
||||
assert.equal(item.hasStandardAdjustment, true)
|
||||
})
|
||||
|
||||
test('standard adjustment resolves submitter risk prompt only after accepted while reviewer still sees notice', () => {
|
||||
const originalRiskCard = {
|
||||
id: 'risk-hotel-1',
|
||||
source: 'attachment_analysis',
|
||||
itemId: 'expense-item-1',
|
||||
tone: 'high',
|
||||
risk: '住宿票据金额超过职级标准。'
|
||||
}
|
||||
const reviewerNoticeCard = {
|
||||
id: 'standard-adjustment-1',
|
||||
source: 'reimbursement_standard_adjustment',
|
||||
itemId: 'expense-item-1',
|
||||
tone: 'medium',
|
||||
risk: '提交人已选择按职级标准报销,超出部分由员工自担。'
|
||||
}
|
||||
const expenseItems = [{ id: 'expense-item-1' }]
|
||||
const standardAdjustmentMap = buildStandardAdjustmentMap({
|
||||
riskFlags: [
|
||||
{
|
||||
source: 'reimbursement_standard_adjustment',
|
||||
item_id: 'expense-item-1',
|
||||
original_amount: '880.00',
|
||||
reimbursable_amount: '600.00',
|
||||
employee_absorbed_amount: '280.00'
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
assert.deepEqual(
|
||||
filterSubmitterResolvedRiskCards({
|
||||
cards: [originalRiskCard],
|
||||
businessStage: 'reimbursement',
|
||||
isCurrentApplicant: true,
|
||||
expenseItems,
|
||||
standardAdjustmentMap: new Map()
|
||||
}),
|
||||
[originalRiskCard]
|
||||
)
|
||||
assert.deepEqual(
|
||||
filterSubmitterResolvedRiskCards({
|
||||
cards: [originalRiskCard],
|
||||
businessStage: 'reimbursement',
|
||||
isCurrentApplicant: true,
|
||||
expenseItems,
|
||||
standardAdjustmentMap
|
||||
}),
|
||||
[]
|
||||
)
|
||||
assert.deepEqual(
|
||||
filterSubmitterResolvedRiskCards({
|
||||
cards: [originalRiskCard, reviewerNoticeCard],
|
||||
businessStage: 'reimbursement',
|
||||
isCurrentApplicant: false,
|
||||
expenseItems,
|
||||
standardAdjustmentMap
|
||||
}),
|
||||
[originalRiskCard, reviewerNoticeCard]
|
||||
)
|
||||
})
|
||||
|
||||
test('expense item upload remains limited to one receipt per detail row', () => {
|
||||
assert.match(detailViewTemplate, /ref="expenseUploadInput"[\s\S]*type="file"/)
|
||||
assert.doesNotMatch(
|
||||
|
||||
Reference in New Issue
Block a user