import { UpdateCustomerInvoiceByIdResponseDTO } from "@erp/customer-invoices/common/dto"; import { toEmptyString } from "@repo/rdx-ddd"; import { CustomerInvoice } from "../../../domain"; import { GetCustomerInvoiceItemsAssembler } from "./get-invoice-items.assembler"; export class GetCustomerInvoiceAssembler { private _itemsAssembler!: GetCustomerInvoiceItemsAssembler; constructor() { this._itemsAssembler = new GetCustomerInvoiceItemsAssembler(); } public toDTO(invoice: CustomerInvoice): UpdateCustomerInvoiceByIdResponseDTO { const items = this._itemsAssembler.toDTO(invoice); return { id: invoice.id.toString(), company_id: invoice.companyId.toString(), invoice_number: invoice.invoiceNumber.toString(), status: invoice.status.toPrimitive(), series: toEmptyString(invoice.series, (value) => value.toString()), invoice_date: invoice.invoiceDate.toDateString(), operation_date: toEmptyString(invoice.operationDate, (value) => value.toDateString()), notes: toEmptyString(invoice.notes, (value) => value.toString()), language_code: invoice.languageCode.toString(), currency_code: invoice.currencyCode.toString(), /*subtotal_amount: { value: invoice.subtotalAmount.value.toString(), scale: invoice.subtotalAmount.scale.toString(), }, discount_percentage: { value: invoice.discountPercentage.value.toString(), scale: invoice.discountPercentage.scale.toString(), }, discount_amount: { value: invoice.discountAmount.value.toString(), scale: invoice.discountAmount.scale.toString(), }, taxable_amount: { value: invoice.taxableAmount.value.toString(), scale: invoice.taxableAmount.scale.toString(), }, tax_amount: { value: invoice.taxAmount.value.toString(), scale: invoice.taxAmount.scale.toString(), }, total_amount: { value: invoice.totalAmount.value.toString(), scale: invoice.totalAmount.scale.toString(), },*/ items, metadata: { entity: "customer-invoices", }, }; } }