Uecko_ERP/modules/customer-invoices/src/web/adapters/invoice-resume-dto.adapter.ts
2025-11-14 16:48:09 +01:00

64 lines
2.2 KiB
TypeScript

import { MoneyDTOHelper, PercentageDTOHelper, formatCurrency } from "@erp/core";
import type { InvoiceSummaryFormData } from "../schemas/invoice-resume.form.schema";
import type { CustomerInvoiceSummary } from "../schemas/invoices.api.schema";
/**
* Convierte el DTO completo de API a datos numéricos para el formulario.
*/
export const invoiceResumeDtoToFormAdapter = {
fromDto(dtos: CustomerInvoiceSummary[], context?: any) {
return dtos.map(
(dto) =>
({
...dto,
subtotal_amount: MoneyDTOHelper.toNumber(dto.subtotal_amount),
subtotal_amount_fmt: formatCurrency(
MoneyDTOHelper.toNumber(dto.subtotal_amount),
Number(dto.total_amount.scale || 2),
dto.currency_code,
dto.language_code
),
discount_percentage: PercentageDTOHelper.toNumber(dto.discount_percentage),
discount_percentage_fmt: PercentageDTOHelper.toNumericString(dto.discount_percentage),
discount_amount: MoneyDTOHelper.toNumber(dto.discount_amount),
discount_amount_fmt: formatCurrency(
MoneyDTOHelper.toNumber(dto.discount_amount),
Number(dto.total_amount.scale || 2),
dto.currency_code,
dto.language_code
),
taxable_amount: MoneyDTOHelper.toNumber(dto.taxable_amount),
taxable_amount_fmt: formatCurrency(
MoneyDTOHelper.toNumber(dto.taxable_amount),
Number(dto.total_amount.scale || 2),
dto.currency_code,
dto.language_code
),
taxes_amount: MoneyDTOHelper.toNumber(dto.taxes_amount),
taxes_amount_fmt: formatCurrency(
MoneyDTOHelper.toNumber(dto.taxes_amount),
Number(dto.total_amount.scale || 2),
dto.currency_code,
dto.language_code
),
total_amount: MoneyDTOHelper.toNumber(dto.total_amount),
total_amount_fmt: formatCurrency(
MoneyDTOHelper.toNumber(dto.total_amount),
Number(dto.total_amount.scale || 2),
dto.currency_code,
dto.language_code
),
//taxes: dto.taxes,
}) as unknown as InvoiceSummaryFormData
);
},
};