Files
bigcapital/server/src/subscribers/manualJournals.ts
2020-12-12 13:26:36 +02:00

64 lines
2.1 KiB
TypeScript

import { Inject, Container } from 'typedi';
import { On, EventSubscriber } from "event-dispatch";
import events from 'subscribers/events';
import SettingsService from 'services/Settings/SettingsService';
import ManualJournalsService from 'services/ManualJournals/ManualJournalsService';
@EventSubscriber()
export class ManualJournalSubscriber {
logger: any;
settingsService: SettingsService;
constructor() {
this.logger = Container.get('logger');
this.settingsService = Container.get(SettingsService);
}
/**
* Handle manual journal created event.
* @param {{ tenantId: number, manualJournal: IManualJournal }}
*/
@On(events.manualJournals.onCreated)
public async handleWriteJournalEntries({ tenantId, manualJournal }) {
const manualJournalsService = Container.get(ManualJournalsService);
await manualJournalsService
.writeJournalEntries(tenantId, manualJournal.id, manualJournal);
}
/**
* Handle manual journal edited event.
* @param {{ tenantId: number, manualJournal: IManualJournal }}
*/
@On(events.manualJournals.onEdited)
public async handleRewriteJournalEntries({ tenantId, manualJournal }) {
const manualJournalsService = Container.get(ManualJournalsService);
await manualJournalsService
.writeJournalEntries(tenantId, manualJournal.id, manualJournal, true);
}
/**
* Handle manual journal deleted event.
* @param {{ tenantId: number, manualJournalId: number }}
*/
@On(events.manualJournals.onDeleted)
public async handleRevertJournalEntries({ tenantId, manualJournalId, }) {
const manualJournalsService = Container.get(ManualJournalsService);
await manualJournalsService
.writeJournalEntries(tenantId, manualJournalId, null, true);
}
/**
* Handle increment next number of manual journal once be created.
*/
@On(events.manualJournals.onCreated)
public async handleJournalNextNumberIncrement({ tenantId }) {
const query = {
group: 'manual_journals',
key: 'next_number',
};
await this.settingsService.incrementNextNumber(tenantId, query);
}
}