Facturas de cliente
This commit is contained in:
parent
b123ee4440
commit
198137d426
@ -54,7 +54,13 @@ export class CustomerInvoiceFullPresenter extends Presenter<
|
|||||||
customer_id: invoice.customerId.toString(),
|
customer_id: invoice.customerId.toString(),
|
||||||
recipient,
|
recipient,
|
||||||
|
|
||||||
taxes: invoice.taxes.map((tax) => tax.tax.code).join(),
|
taxes: invoice.taxes.map((taxItem) => {
|
||||||
|
return {
|
||||||
|
tax_code: taxItem.tax.code,
|
||||||
|
taxable_amount: taxItem.taxableAmount.toObjectString(),
|
||||||
|
taxes_amount: taxItem.taxesAmount.toObjectString(),
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
|
||||||
payment_method: payment,
|
payment_method: payment,
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ export interface CustomerInvoiceProps {
|
|||||||
status: CustomerInvoiceStatus;
|
status: CustomerInvoiceStatus;
|
||||||
|
|
||||||
series: Maybe<CustomerInvoiceSerie>;
|
series: Maybe<CustomerInvoiceSerie>;
|
||||||
invoiceNumber: Maybe<DocNumber>;
|
invoiceNumber: Maybe<CustomerInvoiceNumber>;
|
||||||
|
|
||||||
invoiceDate: UtcDate;
|
invoiceDate: UtcDate;
|
||||||
operationDate: Maybe<UtcDate>;
|
operationDate: Maybe<UtcDate>;
|
||||||
|
|||||||
@ -72,33 +72,37 @@ export class CustomerInvoiceItems extends Collection<CustomerInvoiceItem> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public getTaxesAmountByTaxes() {
|
public getTaxesAmountByTaxes(): Array<{
|
||||||
const resultMap = new Map<Tax, { taxableAmount: ItemAmount; taxesAmount: ItemAmount }>();
|
tax: Tax;
|
||||||
|
taxableAmount: ItemAmount;
|
||||||
|
taxesAmount: ItemAmount;
|
||||||
|
}> {
|
||||||
|
const getTaxCode = (tax: Tax): string => tax.code; // clave estable para Map
|
||||||
const currencyCode = this._currencyCode.code;
|
const currencyCode = this._currencyCode.code;
|
||||||
|
|
||||||
|
// Mapeamos por clave (tax code), pero también guardamos el Tax original
|
||||||
|
const resultMap = new Map<
|
||||||
|
string,
|
||||||
|
{ tax: Tax; taxableAmount: ItemAmount; taxesAmount: ItemAmount }
|
||||||
|
>();
|
||||||
|
|
||||||
for (const item of this.getAll()) {
|
for (const item of this.getAll()) {
|
||||||
for (const { taxableAmount, tax, taxesAmount } of item.getTaxesAmountByTaxes()) {
|
for (const { taxableAmount, tax, taxesAmount } of item.getTaxesAmountByTaxes()) {
|
||||||
const { taxableAmount: taxableCurrent, taxesAmount: taxesCurrent } = resultMap.get(tax) ?? {
|
const key = getTaxCode(tax);
|
||||||
|
const current = resultMap.get(key) ?? {
|
||||||
|
tax,
|
||||||
taxableAmount: ItemAmount.zero(currencyCode),
|
taxableAmount: ItemAmount.zero(currencyCode),
|
||||||
taxesAmount: ItemAmount.zero(currencyCode),
|
taxesAmount: ItemAmount.zero(currencyCode),
|
||||||
};
|
};
|
||||||
resultMap.set(tax, {
|
|
||||||
taxableAmount: taxableCurrent.add(taxableAmount),
|
resultMap.set(key, {
|
||||||
taxesAmount: taxesCurrent.add(taxesAmount),
|
tax: current.tax,
|
||||||
|
taxableAmount: current.taxableAmount.add(taxableAmount),
|
||||||
|
taxesAmount: current.taxesAmount.add(taxesAmount),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const items = [];
|
return Array.from(resultMap.values());
|
||||||
for (const [tax, { taxableAmount, taxesAmount }] of resultMap) {
|
|
||||||
items.push({
|
|
||||||
taxableAmount,
|
|
||||||
tax,
|
|
||||||
taxesAmount,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return items;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,13 @@ export const GetCustomerInvoiceByIdResponseSchema = z.object({
|
|||||||
country: z.string(),
|
country: z.string(),
|
||||||
}),
|
}),
|
||||||
|
|
||||||
taxes: z.string(),
|
taxes: z.array(
|
||||||
|
z.object({
|
||||||
|
tax_code: z.string(),
|
||||||
|
taxable_amount: MoneySchema,
|
||||||
|
taxes_amount: MoneySchema,
|
||||||
|
})
|
||||||
|
),
|
||||||
|
|
||||||
payment_method: z
|
payment_method: z
|
||||||
.object({
|
.object({
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user