mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-18 13:50:31 +00:00
98 lines
2.4 KiB
TypeScript
98 lines
2.4 KiB
TypeScript
import { Inject, Service } from 'typedi';
|
|
import events from '@/subscribers/events';
|
|
import {
|
|
IBillPaymentEventCreatedPayload,
|
|
IBillPaymentEventDeletedPayload,
|
|
IBillPaymentEventEditedPayload,
|
|
} from '@/interfaces';
|
|
import { BillPaymentGLEntries } from './BillPaymentGLEntries';
|
|
|
|
@Service()
|
|
export class PaymentWriteGLEntriesSubscriber {
|
|
@Inject()
|
|
private billPaymentGLEntries: BillPaymentGLEntries;
|
|
|
|
/**
|
|
* Attaches events with handles.
|
|
*/
|
|
public attach(bus) {
|
|
bus.subscribe(events.billPayment.onCreated, this.handleWriteJournalEntries);
|
|
bus.subscribe(
|
|
events.billPayment.onPrepardExpensesApplied,
|
|
this.handleWritePrepardExpenseGLEntries
|
|
);
|
|
bus.subscribe(
|
|
events.billPayment.onEdited,
|
|
this.handleRewriteJournalEntriesOncePaymentEdited
|
|
);
|
|
bus.subscribe(
|
|
events.billPayment.onDeleted,
|
|
this.handleRevertJournalEntries
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Handles bill payment writing journal entries once created.
|
|
* @param {IBillPaymentEventCreatedPayload} payload -
|
|
*/
|
|
private handleWriteJournalEntries = async ({
|
|
tenantId,
|
|
billPayment,
|
|
trx,
|
|
}: IBillPaymentEventCreatedPayload) => {
|
|
// Records the journal transactions after bills payment
|
|
// and change diff account balance.
|
|
await this.billPaymentGLEntries.writePaymentGLEntries(
|
|
tenantId,
|
|
billPayment.id,
|
|
trx
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Handles rewrite prepard expense GL entries once the bill payment applying to bills.
|
|
* @param {IBillPaymentEventCreatedPayload} payload -
|
|
*/
|
|
private handleWritePrepardExpenseGLEntries = async ({
|
|
tenantId,
|
|
billPaymentId,
|
|
trx,
|
|
}: IBillPaymentEventCreatedPayload) => {
|
|
await this.billPaymentGLEntries.rewritePaymentGLEntries(
|
|
tenantId,
|
|
billPaymentId,
|
|
trx
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Handle bill payment re-writing journal entries once the payment transaction be edited.
|
|
*/
|
|
private handleRewriteJournalEntriesOncePaymentEdited = async ({
|
|
tenantId,
|
|
billPayment,
|
|
trx,
|
|
}: IBillPaymentEventEditedPayload) => {
|
|
await this.billPaymentGLEntries.rewritePaymentGLEntries(
|
|
tenantId,
|
|
billPayment.id,
|
|
trx
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Reverts journal entries once bill payment deleted.
|
|
*/
|
|
private handleRevertJournalEntries = async ({
|
|
tenantId,
|
|
billPaymentId,
|
|
trx,
|
|
}: IBillPaymentEventDeletedPayload) => {
|
|
await this.billPaymentGLEntries.revertPaymentGLEntries(
|
|
tenantId,
|
|
billPaymentId,
|
|
trx
|
|
);
|
|
};
|
|
}
|