mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 13:20:31 +00:00
feat: run re-recognizing bank transactions on edit bank rule
This commit is contained in:
@@ -116,6 +116,6 @@ const determineFieldType = (field: string): string => {
|
||||
case 'description':
|
||||
case 'payee':
|
||||
default:
|
||||
return 'unknown';
|
||||
return 'text';
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Inject, Service } from 'typedi';
|
||||
import { isEqual, omit } from 'lodash';
|
||||
import events from '@/subscribers/events';
|
||||
import {
|
||||
IBankRuleEventCreatedPayload,
|
||||
@@ -55,10 +56,22 @@ export class TriggerRecognizedTransactions {
|
||||
private async recognizedTransactionsOnRuleEdited({
|
||||
tenantId,
|
||||
editRuleDTO,
|
||||
oldBankRule,
|
||||
bankRule,
|
||||
ruleId,
|
||||
}: IBankRuleEventEditedPayload) {
|
||||
const payload = { tenantId, ruleId };
|
||||
|
||||
// Cannot continue if the new and old bank rule values are the same,
|
||||
// after excluding `createdAt` and `updatedAt` dates.
|
||||
if (
|
||||
isEqual(
|
||||
omit(bankRule, ['createdAt', 'updatedAt']),
|
||||
omit(oldBankRule, ['createdAt', 'updatedAt'])
|
||||
)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
await this.agenda.now(
|
||||
'rerecognize-uncategorized-transactions-job',
|
||||
payload
|
||||
|
||||
@@ -47,6 +47,7 @@ export class EditBankRuleService {
|
||||
|
||||
const oldBankRule = await BankRule.query()
|
||||
.findById(ruleId)
|
||||
.withGraphFetched('conditions')
|
||||
.throwIfNotFound();
|
||||
|
||||
const tranformDTO = this.transformDTO(editRuleDTO);
|
||||
@@ -64,15 +65,15 @@ export class EditBankRuleService {
|
||||
} as IBankRuleEventEditingPayload);
|
||||
|
||||
// Updates the given bank rule.
|
||||
await BankRule.query(trx).upsertGraphAndFetch({
|
||||
const bankRule = await BankRule.query(trx).upsertGraphAndFetch({
|
||||
...tranformDTO,
|
||||
id: ruleId,
|
||||
});
|
||||
|
||||
// Triggers `onBankRuleEdited` event.
|
||||
await this.eventPublisher.emitAsync(events.bankRules.onEdited, {
|
||||
tenantId,
|
||||
oldBankRule,
|
||||
bankRule,
|
||||
ruleId,
|
||||
editRuleDTO,
|
||||
trx,
|
||||
|
||||
@@ -110,6 +110,8 @@ export interface IBankRuleEventEditingPayload {
|
||||
export interface IBankRuleEventEditedPayload {
|
||||
tenantId: number;
|
||||
ruleId: number;
|
||||
oldBankRule: IBankRule;
|
||||
bankRule: IBankRule;
|
||||
editRuleDTO: IEditBankRuleDTO;
|
||||
trx?: Knex.Transaction;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user