P2-2部署尝试+compose通配符修复 / D2收尾(唯一单号+前后断言+H5回归17过) / P2-1 StorefrontAdmin真分页 / 后端511+PG4
This commit is contained in:
@@ -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)
|
||||
})
|
||||
Reference in New Issue
Block a user