Files
cfw-autumn/shared/utils/cusEntUtils/overageUtils/cusEntToInvoiceOverage.ts
2025-12-15 15:47:26 +00:00

26 lines
771 B
TypeScript

import { Decimal } from "decimal.js";
import type { FullCusEntWithFullCusProduct } from "../../../models/cusProductModels/cusEntModels/cusEntWithProduct";
import { isEntityScopedCusEnt } from "../classifyCusEntUtils";
export const cusEntToInvoiceOverage = ({
cusEnt,
}: {
cusEnt: FullCusEntWithFullCusProduct;
}) => {
// 1. If entity scoped
if (isEntityScopedCusEnt(cusEnt)) {
let totalOverage = new Decimal(0);
for (const [_, entity] of Object.entries(cusEnt.entities || {})) {
const overage = Decimal.max(0, new Decimal(-entity.balance));
totalOverage = totalOverage.add(overage);
}
return totalOverage.toNumber();
}
// 2. If not entity scoped
const overage = Decimal.max(0, new Decimal(-(cusEnt.balance || 0)));
return overage.toNumber();
};