Money normalizer
The normalizeMoney function maps Commercetools BaseMoney into Unified SfMoney.
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
money | BaseMoney | Commercetools money |
Extending
The SfMoney is returned as a part of multiple models, as for example SfProduct, SfProductCatalogItem, and SfCart. If you want to extend the SfMoney with custom fields, you should use the defineNormalizers utility.
import { normalizers as normalizersCT, defineNormalizers } from "@vsf-enterprise/unified-api-commercetools";
const normalizers = defineNormalizers<typeof normalizersCT>()({
...normalizersCT,
normalizeMoney: (money, ctx) => ({
...normalizersCT.normalizeMoney(money, ctx),
type: money.type,
}),
});
Source
money.ts
import { defineNormalizer } from "../defineNormalizer";
export const normalizeMoney = defineNormalizer.normalizeMoney((money) => {
// Invalid types for BaseMoney - fractionDigits are optional
const fractionDigits = money.fractionDigits ?? 2;
const divider = Math.pow(10, fractionDigits);
const amount = money.centAmount / divider;
return {
currency: money.currencyCode,
amount,
precisionAmount: amount.toFixed(fractionDigits),
};
});