Uecko_ERP/modules/customer-invoices/src/api/controllers/get-customer-invoice/presenter/get-invoice.presenter.ts

60 lines
2.1 KiB
TypeScript
Raw Normal View History

2025-06-12 06:55:17 +00:00
import { IGetCustomerInvoiceResponseDTO } from "../../../../common/dto";
import { CustomerInvoice, CustomerInvoiceItem } from "../../../domain";
2025-06-11 15:13:44 +00:00
export interface IGetCustomerInvoicePresenter {
2025-06-12 06:55:17 +00:00
toDTO: (customerInvoice: CustomerInvoice) => IGetCustomerInvoiceResponseDTO;
2025-06-11 15:13:44 +00:00
}
export const getCustomerInvoicePresenter: IGetCustomerInvoicePresenter = {
2025-06-12 06:55:17 +00:00
toDTO: (customerInvoice: CustomerInvoice): IGetCustomerInvoiceResponseDTO => ({
id: customerInvoice.id.toPrimitive(),
customerInvoice_status: customerInvoice.status.toString(),
customerInvoice_number: customerInvoice.customerInvoiceNumber.toString(),
customerInvoice_series: customerInvoice.customerInvoiceSeries.toString(),
issue_date: customerInvoice.issueDate.toDateString(),
operation_date: customerInvoice.operationDate.toDateString(),
2025-06-11 15:13:44 +00:00
language_code: "ES",
2025-06-12 06:55:17 +00:00
currency: customerInvoice.customerInvoiceCurrency.toString(),
subtotal: customerInvoice.calculateSubtotal().toPrimitive(),
total: customerInvoice.calculateTotal().toPrimitive(),
2025-06-11 15:13:44 +00:00
items:
2025-06-12 06:55:17 +00:00
customerInvoice.items.size() > 0
? customerInvoice.items.map((item: CustomerInvoiceItem) => ({
2025-06-11 15:13:44 +00:00
description: item.description.toString(),
quantity: item.quantity.toPrimitive(),
unit_measure: "",
unit_price: item.unitPrice.toPrimitive(),
subtotal: item.calculateSubtotal().toPrimitive(),
//tax_amount: item.calculateTaxAmount().toPrimitive(),
total: item.calculateTotal().toPrimitive(),
}))
: [],
2025-06-12 06:55:17 +00:00
//sender: {}, //await CustomerInvoiceParticipantPresenter(customerInvoice.senderId, context),
2025-06-11 15:13:44 +00:00
2025-06-12 06:55:17 +00:00
/*recipient: await CustomerInvoiceParticipantPresenter(customerInvoice.recipient, context),
items: customerInvoiceItemPresenter(customerInvoice.items, context),
2025-06-11 15:13:44 +00:00
payment_term: {
payment_type: "",
due_date: "",
},
due_amount: {
2025-06-12 06:55:17 +00:00
currency: customerInvoice.currency.toString(),
2025-06-11 15:13:44 +00:00
precision: 2,
amount: 0,
},
custom_fields: [],
metadata: {
create_time: "",
last_updated_time: "",
delete_time: "",
},*/
}),
};