30 lines
907 B
TypeScript
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;
|
|
};
|