diff --git a/src/lib/reportExportBuilders.ts b/src/lib/reportExportBuilders.ts index fd7d90e..24fbaf9 100644 --- a/src/lib/reportExportBuilders.ts +++ b/src/lib/reportExportBuilders.ts @@ -324,9 +324,14 @@ export const resolveScaleMethodFee = (row: ScaleMethodRowLike, mode: 'cost' | 'a workRatio: row.workRatio }) : null - const basicFee = allUnchecked ? null : (toFiniteNumber(row.budgetFee) ?? computedSplit?.total ?? null) - const basicFeeBasic = allUnchecked ? null : (toFiniteNumber(row.budgetFeeBasic) ?? computedSplit?.basic ?? null) - const basicFeeOptional = allUnchecked ? null : (toFiniteNumber(row.budgetFeeOptional) ?? computedSplit?.optional ?? null) + const basicFee = allUnchecked + ? null + : (benchmarkBudgetBasic != null && benchmarkBudgetOptional != null + ? roundTo(benchmarkBudgetBasic + benchmarkBudgetOptional, 2) + : null) + const basicFeeBasic = allUnchecked ? null : benchmarkBudgetBasic + const basicFeeOptional = allUnchecked ? null : benchmarkBudgetOptional + const serviceFee = allUnchecked ? null : (toFiniteNumber(row.budgetFee) ?? computedSplit?.total ?? null) const basicFormula = typeof row.basicFormula === 'string' && row.basicFormula.trim() ? row.basicFormula : (basicChecked ? (benchmarkSplit?.basicFormula ?? '') : '') @@ -337,6 +342,7 @@ export const resolveScaleMethodFee = (row: ScaleMethodRowLike, mode: 'cost' | 'a basicFee, basicFeeBasic, basicFeeOptional, + serviceFee, basicFormula, optionalFormula } @@ -462,11 +468,12 @@ export const buildMethod1 = (rows: ScaleMethodRowLike[] | undefined) => { const cost = toFiniteNumber(row.amount) const feeResolved = resolveScaleMethodFee(row, 'cost') const basicFee = feeResolved.basicFee - if (basicFee != null) hasTotalValue = true + const serviceFee = feeResolved.serviceFee + if (serviceFee != null) hasTotalValue = true const basicFeeBasic = feeResolved.basicFeeBasic const basicFeeOptional = feeResolved.basicFeeOptional const remark = typeof row.remark === 'string' ? row.remark : '' - if (basicFee == null) return null + if (basicFee == null && serviceFee == null) return null return { proNum, major, @@ -480,7 +487,7 @@ export const buildMethod1 = (rows: ScaleMethodRowLike[] | undefined) => { majorCoe: toFiniteNumberOrZero(row.majorFactor), processCoe: toFiniteNumber(row.workStageFactor) ?? 1, proportion: toFiniteNumber(row.workRatio) ?? 1, - fee: toMoney(basicFee), + fee: toMoney(serviceFee), remark } }) @@ -513,11 +520,12 @@ export const buildMethod2 = (rows: ScaleMethodRowLike[] | undefined) => { const area = toFiniteNumber(row.landArea) const feeResolved = resolveScaleMethodFee(row, 'area') const basicFee = feeResolved.basicFee - if (basicFee != null) hasTotalValue = true + const serviceFee = feeResolved.serviceFee + if (serviceFee != null) hasTotalValue = true const basicFeeBasic = feeResolved.basicFeeBasic const basicFeeOptional = feeResolved.basicFeeOptional const remark = typeof row.remark === 'string' ? row.remark : '' - if (basicFee == null) return null + if (basicFee == null && serviceFee == null) return null return { proNum, major, @@ -531,7 +539,7 @@ export const buildMethod2 = (rows: ScaleMethodRowLike[] | undefined) => { majorCoe: toFiniteNumberOrZero(row.majorFactor), processCoe: toFiniteNumber(row.workStageFactor) ?? 1, proportion: toFiniteNumber(row.workRatio) ?? 1, - fee: toMoney(basicFee), + fee: toMoney(serviceFee), remark } })