// import { Inject, Service } from 'typedi'; // import events from '@/subscribers/events'; // import { VendorGLEntriesStorage } from '../VendorGLEntriesStorage'; // import { // IVendorEventCreatedPayload, // IVendorEventDeletedPayload, // IVendorOpeningBalanceEditedPayload, // } from '@/interfaces'; // @Service() // export class VendorsWriteGLOpeningSubscriber { // @Inject() // private vendorGLEntriesStorage: VendorGLEntriesStorage; // /** // * Constructor method. // */ // public attach(bus) { // bus.subscribe( // events.vendors.onCreated, // this.handleWriteOpeningBalanceEntries // ); // bus.subscribe( // events.vendors.onDeleted, // this.handleRevertOpeningBalanceEntries // ); // bus.subscribe( // events.vendors.onOpeningBalanceChanged, // this.handleRewriteOpeningEntriesOnChanged // ); // } // /** // * Writes the open balance journal entries once the vendor created. // * @param {IVendorEventCreatedPayload} payload - // */ // private handleWriteOpeningBalanceEntries = async ({ // tenantId, // vendor, // trx, // }: IVendorEventCreatedPayload) => { // // Writes the vendor opening balance journal entries. // if (vendor.openingBalance) { // await this.vendorGLEntriesStorage.writeVendorOpeningBalance( // tenantId, // vendor.id, // trx // ); // } // }; // /** // * Revert the opening balance journal entries once the vendor deleted. // * @param {IVendorEventDeletedPayload} payload - // */ // private handleRevertOpeningBalanceEntries = async ({ // tenantId, // vendorId, // trx, // }: IVendorEventDeletedPayload) => { // await this.vendorGLEntriesStorage.revertVendorOpeningBalance( // tenantId, // vendorId, // trx // ); // }; // /** // * Handles the rewrite opening balance entries once opening balnace changed. // * @param {ICustomerOpeningBalanceEditedPayload} payload - // */ // private handleRewriteOpeningEntriesOnChanged = async ({ // tenantId, // vendor, // trx, // }: IVendorOpeningBalanceEditedPayload) => { // if (vendor.openingBalance) { // await this.vendorGLEntriesStorage.rewriteVendorOpeningBalance( // tenantId, // vendor.id, // trx // ); // } else { // await this.vendorGLEntriesStorage.revertVendorOpeningBalance( // tenantId, // vendor.id, // trx // ); // } // }; // }