mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 12:20:31 +00:00
feat: apply credit note to invoice module
This commit is contained in:
@@ -1,67 +1,52 @@
|
||||
// import { Service, Inject } from 'typedi';
|
||||
// import { sumBy } from 'lodash';
|
||||
// import events from '@/subscribers/events';
|
||||
// import {
|
||||
// IApplyCreditToInvoicesCreatedPayload,
|
||||
// IApplyCreditToInvoicesDeletedPayload,
|
||||
// } from '@/interfaces';
|
||||
// import CreditNoteApplySyncCredit from '../commands/CreditNoteApplySyncCredit.service';
|
||||
import { sumBy } from 'lodash';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import {
|
||||
IApplyCreditToInvoicesCreatedPayload,
|
||||
IApplyCreditToInvoicesDeletedPayload,
|
||||
} from '../types/CreditNoteApplyInvoice.types';
|
||||
import { CreditNoteApplySyncCredit } from '../commands/CreditNoteApplySyncCredit.service';
|
||||
import { OnEvent } from '@nestjs/event-emitter';
|
||||
import { events } from '@/common/events/events';
|
||||
|
||||
// @Service()
|
||||
// export default class CreditNoteApplySyncCreditSubscriber {
|
||||
// @Inject()
|
||||
// syncInvoicedAmountWithCredit: CreditNoteApplySyncCredit;
|
||||
@Injectable()
|
||||
export class CreditNoteApplySyncCreditSubscriber {
|
||||
constructor(
|
||||
private readonly syncInvoicedAmountWithCredit: CreditNoteApplySyncCredit,
|
||||
) {}
|
||||
|
||||
// /**
|
||||
// *
|
||||
// * @param bus
|
||||
// */
|
||||
// attach(bus) {
|
||||
// bus.subscribe(
|
||||
// events.creditNote.onApplyToInvoicesCreated,
|
||||
// this.incrementCreditedAmountOnceApplyToInvoicesCreated
|
||||
// );
|
||||
// bus.subscribe(
|
||||
// events.creditNote.onApplyToInvoicesDeleted,
|
||||
// this.decrementCreditedAmountOnceApplyToInvoicesDeleted
|
||||
// );
|
||||
// }
|
||||
/**
|
||||
* Increment credited amount of credit note transaction once the transaction created.
|
||||
* @param {IApplyCreditToInvoicesCreatedPayload} payload -
|
||||
*/
|
||||
@OnEvent(events.creditNote.onApplyToInvoicesCreated)
|
||||
async incrementCreditedAmountOnceApplyToInvoicesCreated({
|
||||
trx,
|
||||
creditNote,
|
||||
creditNoteAppliedInvoices,
|
||||
}: IApplyCreditToInvoicesCreatedPayload) {
|
||||
const totalCredited = sumBy(creditNoteAppliedInvoices, 'amount');
|
||||
|
||||
// /**
|
||||
// * Increment credited amount of credit note transaction once the transaction created.
|
||||
// * @param {IApplyCreditToInvoicesCreatedPayload} payload -
|
||||
// */
|
||||
// private incrementCreditedAmountOnceApplyToInvoicesCreated = async ({
|
||||
// trx,
|
||||
// creditNote,
|
||||
// tenantId,
|
||||
// creditNoteAppliedInvoices,
|
||||
// }: IApplyCreditToInvoicesCreatedPayload) => {
|
||||
// const totalCredited = sumBy(creditNoteAppliedInvoices, 'amount');
|
||||
await this.syncInvoicedAmountWithCredit.incrementCreditNoteInvoicedAmount(
|
||||
creditNote.id,
|
||||
totalCredited,
|
||||
trx,
|
||||
);
|
||||
}
|
||||
|
||||
// await this.syncInvoicedAmountWithCredit.incrementCreditNoteInvoicedAmount(
|
||||
// tenantId,
|
||||
// creditNote.id,
|
||||
// totalCredited,
|
||||
// trx
|
||||
// );
|
||||
// };
|
||||
|
||||
// /**
|
||||
// * Decrement credited amount of credit note transaction once the transaction deleted.
|
||||
// * @param {IApplyCreditToInvoicesDeletedPayload} payload -
|
||||
// */
|
||||
// private decrementCreditedAmountOnceApplyToInvoicesDeleted = async ({
|
||||
// tenantId,
|
||||
// creditNote,
|
||||
// creditNoteAppliedToInvoice,
|
||||
// trx,
|
||||
// }: IApplyCreditToInvoicesDeletedPayload) => {
|
||||
// await this.syncInvoicedAmountWithCredit.decrementCreditNoteInvoicedAmount(
|
||||
// tenantId,
|
||||
// creditNote.id,
|
||||
// creditNoteAppliedToInvoice.amount,
|
||||
// trx
|
||||
// );
|
||||
// };
|
||||
// }
|
||||
/**
|
||||
* Decrement credited amount of credit note transaction once the transaction deleted.
|
||||
* @param {IApplyCreditToInvoicesDeletedPayload} payload -
|
||||
*/
|
||||
@OnEvent(events.creditNote.onApplyToInvoicesDeleted)
|
||||
async decrementCreditedAmountOnceApplyToInvoicesDeleted({
|
||||
creditNote,
|
||||
creditNoteAppliedToInvoice,
|
||||
trx,
|
||||
}: IApplyCreditToInvoicesDeletedPayload) {
|
||||
await this.syncInvoicedAmountWithCredit.decrementCreditNoteInvoicedAmount(
|
||||
creditNote.id,
|
||||
creditNoteAppliedToInvoice.amount,
|
||||
trx,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,61 +1,47 @@
|
||||
// import { Service, Inject } from 'typedi';
|
||||
// import events from '@/subscribers/events';
|
||||
// import {
|
||||
// IApplyCreditToInvoicesCreatedPayload,
|
||||
// IApplyCreditToInvoicesDeletedPayload,
|
||||
// } from '@/interfaces';
|
||||
// import CreditNoteApplySyncInvoicesCreditedAmount from '../commands/CreditNoteApplySyncInvoices.service';
|
||||
import { OnEvent } from '@nestjs/event-emitter';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import {
|
||||
IApplyCreditToInvoicesCreatedPayload,
|
||||
IApplyCreditToInvoicesDeletedPayload,
|
||||
} from '../types/CreditNoteApplyInvoice.types';
|
||||
import { CreditNoteApplySyncInvoicesCreditedAmount } from '../commands/CreditNoteApplySyncInvoices.service';
|
||||
import { events } from '@/common/events/events';
|
||||
|
||||
// @Service()
|
||||
// export default class CreditNoteApplySyncInvoicesCreditedAmountSubscriber {
|
||||
// @Inject()
|
||||
// private syncInvoicesWithCreditNote: CreditNoteApplySyncInvoicesCreditedAmount;
|
||||
@Injectable()
|
||||
export default class CreditNoteApplySyncInvoicesCreditedAmountSubscriber {
|
||||
constructor(
|
||||
private readonly syncInvoicesWithCreditNote: CreditNoteApplySyncInvoicesCreditedAmount,
|
||||
) {}
|
||||
|
||||
// /**
|
||||
// * Attaches events with handlers.
|
||||
// */
|
||||
// public attach(bus) {
|
||||
// bus.subscribe(
|
||||
// events.creditNote.onApplyToInvoicesCreated,
|
||||
// this.incrementAppliedInvoicesOnceCreditCreated
|
||||
// );
|
||||
// bus.subscribe(
|
||||
// events.creditNote.onApplyToInvoicesDeleted,
|
||||
// this.decrementAppliedInvoicesOnceCreditDeleted
|
||||
// );
|
||||
// }
|
||||
/**
|
||||
* Increment invoices credited amount once the credit note apply to invoices transaction
|
||||
* @param {IApplyCreditToInvoicesCreatedPayload} payload -
|
||||
*/
|
||||
@OnEvent(events.creditNote.onApplyToInvoicesCreated)
|
||||
async incrementAppliedInvoicesOnceCreditCreated({
|
||||
trx,
|
||||
creditNoteAppliedInvoices,
|
||||
}: IApplyCreditToInvoicesCreatedPayload) {
|
||||
await this.syncInvoicesWithCreditNote.incrementInvoicesCreditedAmount(
|
||||
creditNoteAppliedInvoices,
|
||||
trx,
|
||||
);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * Increment invoices credited amount once the credit note apply to invoices transaction
|
||||
// * @param {IApplyCreditToInvoicesCreatedPayload} payload -
|
||||
// */
|
||||
// private incrementAppliedInvoicesOnceCreditCreated = async ({
|
||||
// trx,
|
||||
// tenantId,
|
||||
// creditNoteAppliedInvoices,
|
||||
// }: IApplyCreditToInvoicesCreatedPayload) => {
|
||||
// await this.syncInvoicesWithCreditNote.incrementInvoicesCreditedAmount(
|
||||
// tenantId,
|
||||
// creditNoteAppliedInvoices,
|
||||
// trx
|
||||
// );
|
||||
// };
|
||||
|
||||
// /**
|
||||
// *
|
||||
// * @param {IApplyCreditToInvoicesDeletedPayload} payload -
|
||||
// */
|
||||
// private decrementAppliedInvoicesOnceCreditDeleted = async ({
|
||||
// trx,
|
||||
// creditNoteAppliedToInvoice,
|
||||
// tenantId,
|
||||
// }: IApplyCreditToInvoicesDeletedPayload) => {
|
||||
// // Decrement invoice credited amount.
|
||||
// await this.syncInvoicesWithCreditNote.decrementInvoiceCreditedAmount(
|
||||
// tenantId,
|
||||
// creditNoteAppliedToInvoice.invoiceId,
|
||||
// creditNoteAppliedToInvoice.amount,
|
||||
// trx
|
||||
// );
|
||||
// };
|
||||
// }
|
||||
/**
|
||||
*
|
||||
* @param {IApplyCreditToInvoicesDeletedPayload} payload -
|
||||
*/
|
||||
@OnEvent(events.creditNote.onApplyToInvoicesDeleted)
|
||||
async decrementAppliedInvoicesOnceCreditDeleted({
|
||||
trx,
|
||||
creditNoteAppliedToInvoice,
|
||||
}: IApplyCreditToInvoicesDeletedPayload) {
|
||||
// Decrement invoice credited amount.
|
||||
await this.syncInvoicesWithCreditNote.decrementInvoiceCreditedAmount(
|
||||
creditNoteAppliedToInvoice.invoiceId,
|
||||
creditNoteAppliedToInvoice.amount,
|
||||
trx,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user