P2-2部署尝试+compose通配符修复 / D2收尾(唯一单号+前后断言+H5回归17过) / P2-1 StorefrontAdmin真分页 / 后端511+PG4

This commit is contained in:
seagull
2026-09-13 00:25:50 +08:00
parent eef7be7258
commit e0e1430e8d
10 changed files with 319 additions and 33 deletions
+59
View File
@@ -0,0 +1,59 @@
import test from 'node:test'
import assert from 'node:assert/strict'
import {
rowAmount,
linesTotal,
lineTaxAmount,
taxTotal,
roundOffAmount,
netTotal,
openDebts,
debtTotal,
} from '../src/utils/salesman.js'
test('rowAmount / linesTotal', () => {
assert.equal(rowAmount({ qty: 2, price: 12.5 }), 25)
assert.equal(linesTotal([{ qty: 2, price: 12.5 }, { qty: 1, price: 6 }]), 31)
assert.equal(linesTotal([]), 0)
})
test('lineTaxAmount uses 价内拆分 (D4 同公式)', () => {
// 113 @13% → 税 13
assert.ok(Math.abs(lineTaxAmount(113, 0.13) - 13) < 1e-9)
assert.equal(lineTaxAmount(100, 0), 0)
assert.equal(lineTaxAmount(0, 0.13), 0)
})
test('taxTotal sums per-row 价内税', () => {
const rows = [
{ qty: 1, price: 113, taxRate: 0.13 },
{ qty: 1, price: 100, taxRate: 0 },
]
assert.ok(Math.abs(taxTotal(rows) - 13) < 1e-9)
})
test('roundOffAmount 抹零口径与 Salesman.vue 一致', () => {
assert.equal(roundOffAmount(31, ''), 0)
assert.equal(roundOffAmount(31, '1'), 0)
// 31.37 抹角 → 0.07
assert.ok(Math.abs(roundOffAmount(31.37, '0.1') - 0.07) < 1e-9)
// 31.37 抹分 → 0
assert.equal(roundOffAmount(31.37, '0.01'), 0)
})
test('netTotal = 行合计 - 抹零', () => {
const rows = [{ qty: 2, price: 12.5 }, { qty: 1, price: 6 }]
assert.ok(Math.abs(netTotal(rows, '0.1') - 31) < 1e-9)
assert.ok(Math.abs(netTotal([{ qty: 1, price: 31.37 }], '0.1') - 31.3) < 1e-9)
})
test('openDebts 只留 open/partial,debtTotal 求和 balance', () => {
const rows = [
{ id: 1, status: 'open', balance: '31.00' },
{ id: 2, status: 'partial', balance: '10.50' },
{ id: 3, status: 'paid', balance: '0' },
]
assert.equal(openDebts(rows).length, 2)
assert.ok(Math.abs(debtTotal(rows) - 41.5) < 1e-9)
assert.equal(debtTotal([]), 0)
})