69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import { Inject, Service } from 'typedi';
|
|
import events from '@/subscribers/events';
|
|
import HasTenancyService from '@/services/Tenancy/TenancyService';
|
|
import {
|
|
IBankTransactionExcludedEventPayload,
|
|
IBankTransactionUnexcludedEventPayload,
|
|
} from '../_types';
|
|
|
|
@Service()
|
|
export class DecrementUncategorizedTransactionOnExclude {
|
|
@Inject()
|
|
private tenancy: HasTenancyService;
|
|
/**
|
|
* Constructor method.
|
|
*/
|
|
public attach(bus) {
|
|
bus.subscribe(
|
|
events.bankTransactions.onExcluded,
|
|
this.decrementUnCategorizedTransactionsOnExclude.bind(this)
|
|
);
|
|
bus.subscribe(
|
|
events.bankTransactions.onUnexcluded,
|
|
this.incrementUnCategorizedTransactionsOnUnexclude.bind(this)
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Validates the cashflow transaction whether matched with bank transaction on deleting.
|
|
* @param {IManualJournalDeletingPayload}
|
|
*/
|
|
public async decrementUnCategorizedTransactionsOnExclude({
|
|
tenantId,
|
|
uncategorizedTransactionId,
|
|
trx,
|
|
}: IBankTransactionExcludedEventPayload) {
|
|
const { UncategorizedCashflowTransaction, Account } =
|
|
this.tenancy.models(tenantId);
|
|
|
|
const transaction = await UncategorizedCashflowTransaction.query(
|
|
trx
|
|
).findById(uncategorizedTransactionId);
|
|
|
|
await Account.query(trx)
|
|
.findById(transaction.accountId)
|
|
.decrement('uncategorizedTransactions', 1);
|
|
}
|
|
|
|
/**
|
|
* Validates the cashflow transaction whether matched with bank transaction on deleting.
|
|
* @param {IManualJournalDeletingPayload}
|
|
*/
|
|
public async incrementUnCategorizedTransactionsOnUnexclude({
|
|
tenantId,
|
|
uncategorizedTransactionId,
|
|
trx,
|
|
}: IBankTransactionUnexcludedEventPayload) {
|
|
const { UncategorizedCashflowTransaction, Account } =
|
|
this.tenancy.models(tenantId);
|
|
|
|
const transaction = await UncategorizedCashflowTransaction.query().findById(
|
|
uncategorizedTransactionId
|
|
);
|
|
//
|
|
await Account.query(trx)
|
|
.findById(transaction.accountId)
|
|
.increment('uncategorizedTransactions', 1);
|
|
}
|
|
}
|