import { IGetCustomerInvoiceResponseDTO } from "../../../../common/dto"; import { CustomerInvoice, CustomerInvoiceItem } from "../../../domain"; export interface IGetCustomerInvoicePresenter { toDTO: (customerInvoice: CustomerInvoice) => IGetCustomerInvoiceResponseDTO; } export const getCustomerInvoicePresenter: IGetCustomerInvoicePresenter = { 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(), language_code: "ES", currency: customerInvoice.customerInvoiceCurrency.toString(), subtotal: customerInvoice.calculateSubtotal().toPrimitive(), total: customerInvoice.calculateTotal().toPrimitive(), items: customerInvoice.items.size() > 0 ? customerInvoice.items.map((item: CustomerInvoiceItem) => ({ 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(), })) : [], //sender: {}, //await CustomerInvoiceParticipantPresenter(customerInvoice.senderId, context), /*recipient: await CustomerInvoiceParticipantPresenter(customerInvoice.recipient, context), items: customerInvoiceItemPresenter(customerInvoice.items, context), payment_term: { payment_type: "", due_date: "", }, due_amount: { currency: customerInvoice.currency.toString(), precision: 2, amount: 0, }, custom_fields: [], metadata: { create_time: "", last_updated_time: "", delete_time: "", },*/ }), };