Files
cfw-autumn/shared/utils/cusEntUtils/balanceUtils/cusEntToPrepaidQuantity.ts
John Yeo 3d47e1effa wip
2025-11-12 11:01:19 +00:00

30 lines
907 B
TypeScript

import { Decimal } from "decimal.js";
import type { FullCusEntWithFullCusProduct } from "../../../models/cusProductModels/cusEntModels/cusEntWithProduct.js";
import { cusEntToCusPrice } from "../../productUtils/convertUtils.js";
import { isPrepaidPrice } from "../../productUtils/priceUtils.js";
export const cusEntToPrepaidQuantity = ({
cusEnt,
}: {
cusEnt: FullCusEntWithFullCusProduct;
}) => {
// 2. If cus ent is not prepaid, skip
const cusPrice = cusEntToCusPrice({ cusEnt });
if (!cusPrice || !isPrepaidPrice({ price: cusPrice.price })) return 0;
// 3. Get quantity
const options = cusEnt.customer_product.options.find(
(option) =>
option.internal_feature_id === cusEnt.entitlement.internal_feature_id,
);
if (!options) return 0;
const quantityWithUnits = new Decimal(options.quantity)
.mul(cusPrice.price.config.billing_units ?? 1)
.toNumber();
return quantityWithUnits;
};