mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-15 20:30:33 +00:00
72 lines
1.9 KiB
TypeScript
72 lines
1.9 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { OnEvent } from '@nestjs/event-emitter';
|
|
import { events } from '@/common/events/events';
|
|
import { VendorGLEntriesStorage } from '../VendorGLEntriesStorage';
|
|
import {
|
|
IVendorEventCreatedPayload,
|
|
IVendorEventDeletedPayload,
|
|
IVendorOpeningBalanceEditedPayload,
|
|
} from '../types/Vendors.types';
|
|
|
|
@Injectable()
|
|
export class VendorsWriteGLOpeningSubscriber {
|
|
constructor(
|
|
private readonly vendorGLEntriesStorage: VendorGLEntriesStorage,
|
|
) {}
|
|
|
|
/**
|
|
* Writes the open balance journal entries once the vendor created.
|
|
* @param {IVendorEventCreatedPayload} payload -
|
|
*/
|
|
@OnEvent(events.vendors.onCreated)
|
|
public async handleWriteOpeningBalanceEntries({
|
|
vendor,
|
|
trx,
|
|
}: IVendorEventCreatedPayload) {
|
|
// Writes the vendor opening balance journal entries.
|
|
if (vendor.openingBalance) {
|
|
await this.vendorGLEntriesStorage.writeVendorOpeningBalance(
|
|
vendor.id,
|
|
trx,
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Revert the opening balance journal entries once the vendor deleted.
|
|
* @param {IVendorEventDeletedPayload} payload -
|
|
*/
|
|
@OnEvent(events.vendors.onDeleted)
|
|
public async handleRevertOpeningBalanceEntries({
|
|
vendorId,
|
|
trx,
|
|
}: IVendorEventDeletedPayload) {
|
|
await this.vendorGLEntriesStorage.revertVendorOpeningBalance(
|
|
vendorId,
|
|
trx,
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Handles the rewrite opening balance entries once opening balance changed.
|
|
* @param {IVendorOpeningBalanceEditedPayload} payload -
|
|
*/
|
|
@OnEvent(events.vendors.onOpeningBalanceChanged)
|
|
public async handleRewriteOpeningEntriesOnChanged({
|
|
vendor,
|
|
trx,
|
|
}: IVendorOpeningBalanceEditedPayload) {
|
|
if (vendor.openingBalance) {
|
|
await this.vendorGLEntriesStorage.rewriteVendorOpeningBalance(
|
|
vendor.id,
|
|
trx,
|
|
);
|
|
} else {
|
|
await this.vendorGLEntriesStorage.revertVendorOpeningBalance(
|
|
vendor.id,
|
|
trx,
|
|
);
|
|
}
|
|
}
|
|
}
|