111 lines
3.3 KiB
TypeScript
111 lines
3.3 KiB
TypeScript
import { toEmptyString } from "@repo/rdx-ddd";
|
|
import { UpdateCustomerInvoiceByIdResponseDTO } from "../../../../common/dto";
|
|
import { CustomerInvoice } from "../../../domain";
|
|
import { UpdateCustomerInvoiceItemsAssembler } from "./update-invoice-items.assembler";
|
|
|
|
export class UpdateCustomerInvoiceAssembler {
|
|
private _itemsAssembler!: UpdateCustomerInvoiceItemsAssembler;
|
|
|
|
constructor() {
|
|
this._itemsAssembler = new UpdateCustomerInvoiceItemsAssembler();
|
|
}
|
|
|
|
public toDTO(invoice: CustomerInvoice): UpdateCustomerInvoiceByIdResponseDTO {
|
|
const items = this._itemsAssembler.toDTO(invoice);
|
|
|
|
return {
|
|
id: invoice.id.toPrimitive(),
|
|
company_id: invoice.companyId.toPrimitive(),
|
|
|
|
invoice_number: invoice.invoiceNumber.toString(),
|
|
status: invoice.status.toPrimitive(),
|
|
series: invoice.series.toString(),
|
|
|
|
issue_date: invoice.issueDate.toDateString(),
|
|
operation_date: toEmptyString(invoice.operationDate, (value) => value.toDateString()),
|
|
|
|
notes: toEmptyString(invoice.notes, (value) => value.toPrimitive()),
|
|
|
|
language_code: invoice.languageCode.toPrimitive(),
|
|
currency_code: invoice.currencyCode.toPrimitive(),
|
|
|
|
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",
|
|
},
|
|
|
|
//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 CustomerInvoiceParticipantAssembler(customerInvoice.senderId, context),
|
|
|
|
/*recipient: await CustomerInvoiceParticipantAssembler(customerInvoice.recipient, context),
|
|
items: customerInvoiceItemAssembler(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: "",
|
|
},*/
|
|
};
|
|
}
|
|
}
|