mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 21:30:31 +00:00
fix: sale invoices payment amount once invoice created, edited or deleted.
This commit is contained in:
@@ -22,7 +22,7 @@ import JournalEntry from 'services/Accounting/JournalEntry';
|
||||
import JournalPosterService from 'services/Sales/JournalPosterService';
|
||||
import TenancyService from 'services/Tenancy/TenancyService';
|
||||
import DynamicListingService from 'services/DynamicListing/DynamicListService';
|
||||
import { formatDateFields } from 'utils';
|
||||
import { formatDateFields, entriesAmountDiff } from 'utils';
|
||||
import { ServiceError } from 'exceptions';
|
||||
import CustomersService from 'services/Contacts/CustomersService';
|
||||
import ItemsEntriesService from 'services/Items/ItemsEntriesService';
|
||||
@@ -218,7 +218,7 @@ export default class PaymentReceiveService {
|
||||
})),
|
||||
});
|
||||
|
||||
await this.eventDispatcher.dispatch(events.paymentReceipts.onCreated, {
|
||||
await this.eventDispatcher.dispatch(events.paymentReceive.onCreated, {
|
||||
tenantId, paymentReceive, paymentReceiveId: paymentReceive.id,
|
||||
});
|
||||
this.logger.info('[payment_receive] updated successfully.', { tenantId, paymentReceive });
|
||||
@@ -282,7 +282,7 @@ export default class PaymentReceiveService {
|
||||
entries: paymentReceiveDTO.entries,
|
||||
});
|
||||
|
||||
await this.eventDispatcher.dispatch(events.paymentReceipts.onEdited, {
|
||||
await this.eventDispatcher.dispatch(events.paymentReceive.onEdited, {
|
||||
tenantId, paymentReceiveId, paymentReceive, oldPaymentReceive
|
||||
});
|
||||
this.logger.info('[payment_receive] upserted successfully.', { tenantId, paymentReceiveId });
|
||||
@@ -313,7 +313,7 @@ export default class PaymentReceiveService {
|
||||
// Deletes the payment receive transaction.
|
||||
await PaymentReceive.query().findById(paymentReceiveId).delete();
|
||||
|
||||
await this.eventDispatcher.dispatch(events.paymentReceipts.onDeleted, {
|
||||
await this.eventDispatcher.dispatch(events.paymentReceive.onDeleted, {
|
||||
tenantId, paymentReceiveId, oldPaymentReceive,
|
||||
});
|
||||
this.logger.info('[payment_receive] deleted successfully.', { tenantId, paymentReceiveId });
|
||||
@@ -457,21 +457,15 @@ export default class PaymentReceiveService {
|
||||
const { SaleInvoice } = this.tenancy.models(tenantId);
|
||||
const opers: Promise<T>[] = [];
|
||||
|
||||
const oldEntriesTable = chain(oldPaymentReceiveEntries)
|
||||
.groupBy('invoiceId')
|
||||
.mapValues((group) => (sumBy(group, 'paymentAmount') || 0) * -1)
|
||||
.value();
|
||||
|
||||
const diffEntries = chain(newPaymentReceiveEntries)
|
||||
.groupBy('invoiceId')
|
||||
.mapValues((group) => (sumBy(group, 'paymentAmount') || 0))
|
||||
.mapValues((value, key) => value - (oldEntriesTable[key] || 0))
|
||||
.mapValues((value, key) => ({ invoiceId: key, paymentAmount: value }))
|
||||
.filter((entry) => entry.paymentAmount != 0)
|
||||
.values()
|
||||
.value();
|
||||
|
||||
const diffEntries = entriesAmountDiff(
|
||||
newPaymentReceiveEntries,
|
||||
oldPaymentReceiveEntries,
|
||||
'paymentAmount',
|
||||
'invoiceId',
|
||||
);
|
||||
diffEntries.forEach((diffEntry: any) => {
|
||||
if (diffEntry.paymentAmount === 0) { return; }
|
||||
|
||||
const oper = SaleInvoice.changePaymentAmount(
|
||||
diffEntry.invoiceId,
|
||||
diffEntry.paymentAmount
|
||||
|
||||
@@ -120,7 +120,7 @@ export default class SaleEstimateService {
|
||||
});
|
||||
|
||||
this.logger.info('[sale_estimate] insert sale estimated success.');
|
||||
await this.eventDispatcher.dispatch(events.saleEstimates.onCreated);
|
||||
await this.eventDispatcher.dispatch(events.saleEstimate.onCreated);
|
||||
|
||||
return saleEstimate;
|
||||
}
|
||||
@@ -169,7 +169,7 @@ export default class SaleEstimateService {
|
||||
})),
|
||||
});
|
||||
|
||||
await this.eventDispatcher.dispatch(events.saleEstimates.onEdited, {
|
||||
await this.eventDispatcher.dispatch(events.saleEstimate.onEdited, {
|
||||
tenantId, estimateId, saleEstimate, oldSaleEstimate,
|
||||
});
|
||||
this.logger.info('[sale_estiamte] edited successfully', { tenantId, estimateId });
|
||||
@@ -199,7 +199,7 @@ export default class SaleEstimateService {
|
||||
await SaleEstimate.query().where('id', estimateId).delete();
|
||||
this.logger.info('[sale_estimate] deleted successfully.', { tenantId, estimateId });
|
||||
|
||||
await this.eventDispatcher.dispatch(events.saleEstimates.onDeleted, {
|
||||
await this.eventDispatcher.dispatch(events.saleEstimate.onDeleted, {
|
||||
tenantId, saleEstimateId: estimateId, oldSaleEstimate,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ export default class SaleInvoicesService extends SalesInvoicesCost {
|
||||
|
||||
this.logger.info('[sale_invoice] inserting sale invoice to the storage.');
|
||||
const saleInvoice = await SaleInvoice.query()
|
||||
.insertGraph({
|
||||
.insertGraphAndFetch({
|
||||
...omit(saleInvoiceObj, ['entries']),
|
||||
|
||||
entries: saleInvoiceObj.entries.map((entry) => ({
|
||||
@@ -190,7 +190,7 @@ export default class SaleInvoicesService extends SalesInvoicesCost {
|
||||
|
||||
this.logger.info('[sale_invoice] trying to update sale invoice.');
|
||||
const saleInvoice: ISaleInvoice = await SaleInvoice.query()
|
||||
.upsertGraph({
|
||||
.upsertGraphAndFetch({
|
||||
id: saleInvoiceId,
|
||||
...omit(saleInvoiceObj, ['entries', 'invLotNumber']),
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ export default class SalesReceiptService {
|
||||
...omit(entry, ['id', 'amount']),
|
||||
}))
|
||||
});
|
||||
await this.eventDispatcher.dispatch(events.saleReceipts.onCreated, { tenantId, saleReceipt });
|
||||
await this.eventDispatcher.dispatch(events.saleReceipt.onCreated, { tenantId, saleReceipt });
|
||||
|
||||
this.logger.info('[sale_receipt] sale receipt inserted successfully.', { tenantId });
|
||||
|
||||
@@ -144,7 +144,7 @@ export default class SalesReceiptService {
|
||||
});
|
||||
|
||||
this.logger.info('[sale_receipt] edited successfully.', { tenantId, saleReceiptId });
|
||||
await this.eventDispatcher.dispatch(events.saleReceipts.onEdited, {
|
||||
await this.eventDispatcher.dispatch(events.saleReceipt.onEdited, {
|
||||
oldSaleReceipt, tenantId, saleReceiptId, saleReceipt,
|
||||
});
|
||||
return saleReceipt;
|
||||
@@ -166,7 +166,7 @@ export default class SalesReceiptService {
|
||||
await SaleReceipt.query().where('id', saleReceiptId).delete();
|
||||
|
||||
this.logger.info('[sale_receipt] deleted successfully.', { tenantId, saleReceiptId });
|
||||
await this.eventDispatcher.dispatch(events.saleReceipts.onDeleted);
|
||||
await this.eventDispatcher.dispatch(events.saleReceipt.onDeleted);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user