完善采购审批流程、企业微信通知和采购专用章
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
/* The same rule as money.py: 4 decimal places, round each line half up to cents. */
|
||||
(function (root) {
|
||||
function units(value) {
|
||||
const s = String(value || '0').trim();
|
||||
if (!/^\d+(\.\d{0,4})?$/.test(s)) throw new Error('数量和单价须为非负数字,最多四位小数');
|
||||
const parts = s.split('.');
|
||||
const n = BigInt(parts[0]) * 10000n + BigInt((parts[1] || '').padEnd(4, '0'));
|
||||
if (n > 9999999990000n) throw new Error('数量或单价过大');
|
||||
return n;
|
||||
}
|
||||
function lineCents(qty, price) {
|
||||
const cents = (units(qty) * units(price) + 500000n) / 1000000n;
|
||||
if (cents > 99999999999999n) throw new Error('金额过大');
|
||||
return cents;
|
||||
}
|
||||
function format(cents) {
|
||||
return (cents / 100n).toString() + '.' + (cents % 100n).toString().padStart(2, '0');
|
||||
}
|
||||
const api = {units, lineCents, format};
|
||||
if (typeof module !== 'undefined') module.exports = api;
|
||||
root.POMoney = api;
|
||||
})(typeof window === 'undefined' ? globalThis : window);
|
||||
Reference in New Issue
Block a user