mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 05:10:31 +00:00
add server to monorepo.
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
import { Service, Inject } from 'typedi';
|
||||
import {
|
||||
ICustomerEventCreatedPayload,
|
||||
ICustomerEventDeletedPayload,
|
||||
ICustomerOpeningBalanceEditedPayload,
|
||||
} from '@/interfaces';
|
||||
import events from '@/subscribers/events';
|
||||
import { CustomerGLEntriesStorage } from '../CustomerGLEntriesStorage';
|
||||
|
||||
@Service()
|
||||
export class CustomerWriteGLOpeningBalanceSubscriber {
|
||||
@Inject()
|
||||
private customerGLEntries: CustomerGLEntriesStorage;
|
||||
|
||||
/**
|
||||
* Attaches events with handlers.
|
||||
*/
|
||||
public attach(bus) {
|
||||
bus.subscribe(
|
||||
events.customers.onCreated,
|
||||
this.handleWriteOpenBalanceEntries
|
||||
);
|
||||
bus.subscribe(
|
||||
events.customers.onDeleted,
|
||||
this.handleRevertOpeningBalanceEntries
|
||||
);
|
||||
bus.subscribe(
|
||||
events.customers.onOpeningBalanceChanged,
|
||||
this.handleRewriteOpeningEntriesOnChanged
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the writing opening balance journal entries once the customer created.
|
||||
* @param {ICustomerEventCreatedPayload} payload -
|
||||
*/
|
||||
private handleWriteOpenBalanceEntries = async ({
|
||||
tenantId,
|
||||
customer,
|
||||
trx,
|
||||
}: ICustomerEventCreatedPayload) => {
|
||||
// Writes the customer opening balance journal entries.
|
||||
if (customer.openingBalance) {
|
||||
await this.customerGLEntries.writeCustomerOpeningBalance(
|
||||
tenantId,
|
||||
customer.id,
|
||||
trx
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles the deleting opeing balance journal entrise once the customer deleted.
|
||||
* @param {ICustomerEventDeletedPayload} payload -
|
||||
*/
|
||||
private handleRevertOpeningBalanceEntries = async ({
|
||||
tenantId,
|
||||
customerId,
|
||||
trx,
|
||||
}: ICustomerEventDeletedPayload) => {
|
||||
await this.customerGLEntries.revertCustomerOpeningBalance(
|
||||
tenantId,
|
||||
customerId,
|
||||
trx
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Handles the rewrite opening balance entries once opening balnace changed.
|
||||
* @param {ICustomerOpeningBalanceEditedPayload} payload -
|
||||
*/
|
||||
private handleRewriteOpeningEntriesOnChanged = async ({
|
||||
tenantId,
|
||||
customer,
|
||||
trx,
|
||||
}: ICustomerOpeningBalanceEditedPayload) => {
|
||||
if (customer.openingBalance) {
|
||||
await this.customerGLEntries.rewriteCustomerOpeningBalance(
|
||||
tenantId,
|
||||
customer.id,
|
||||
trx
|
||||
);
|
||||
} else {
|
||||
await this.customerGLEntries.revertCustomerOpeningBalance(
|
||||
tenantId,
|
||||
customer.id,
|
||||
trx
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user