From cc21e1856f0e5c91605d9abed71487c7c3ed0f0e Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Tue, 6 Aug 2024 00:48:58 +0200 Subject: [PATCH] fix: Edit bank rule --- .../controllers/Banking/BankingRulesController.ts | 5 +++-- .../GetAutofillCategorizeTransactionTransformer.ts | 14 ++++++++------ .../Banking/RegonizeTranasctions/_utils.ts | 10 +++++++--- .../src/services/Banking/Rules/EditBankRule.ts | 7 ++++--- .../server/src/services/Banking/Rules/types.ts | 2 +- .../CategorizeTransactionBranchField.tsx | 8 ++++---- 6 files changed, 27 insertions(+), 19 deletions(-) diff --git a/packages/server/src/api/controllers/Banking/BankingRulesController.ts b/packages/server/src/api/controllers/Banking/BankingRulesController.ts index 42c073cc3..08c83edff 100644 --- a/packages/server/src/api/controllers/Banking/BankingRulesController.ts +++ b/packages/server/src/api/controllers/Banking/BankingRulesController.ts @@ -34,8 +34,9 @@ export class BankingRulesController extends BaseController { body('conditions.*.comparator') .exists() .isIn(['equals', 'contains', 'not_contain']) - .default('contain'), - body('conditions.*.value').exists(), + .default('contain') + .trim(), + body('conditions.*.value').exists().trim(), // Assign body('assign_category').isString(), diff --git a/packages/server/src/services/Banking/RegonizeTranasctions/GetAutofillCategorizeTransactionTransformer.ts b/packages/server/src/services/Banking/RegonizeTranasctions/GetAutofillCategorizeTransactionTransformer.ts index 46a142e48..af6950261 100644 --- a/packages/server/src/services/Banking/RegonizeTranasctions/GetAutofillCategorizeTransactionTransformer.ts +++ b/packages/server/src/services/Banking/RegonizeTranasctions/GetAutofillCategorizeTransactionTransformer.ts @@ -115,17 +115,19 @@ export class GetAutofillCategorizeTransctionTransformer extends Transformer { } /** - * + * Retrieves the assigned category of recognized transaction, if is not recognized + * returns the default transaction type depends on the transaction normal. * @returns {string} */ public transactionType() { - const assignCategory = + const assignedCategory = this.options.firstUncategorizedTransaction?.recognizedTransaction - ?.assignCategory || null; + ?.assignedCategory; - return assignCategory || this.isDepositTransaction() - ? 'other_income' - : 'other_expense'; + return ( + assignedCategory || + (this.isDepositTransaction() ? 'other_income' : 'other_expense') + ); } /** diff --git a/packages/server/src/services/Banking/RegonizeTranasctions/_utils.ts b/packages/server/src/services/Banking/RegonizeTranasctions/_utils.ts index 2a030b799..1eaa546ec 100644 --- a/packages/server/src/services/Banking/RegonizeTranasctions/_utils.ts +++ b/packages/server/src/services/Banking/RegonizeTranasctions/_utils.ts @@ -1,3 +1,4 @@ +import { lowerCase } from 'lodash'; import UncategorizedCashflowTransaction from '@/models/UncategorizedCashflowTransaction'; import { BankRuleApplyIfTransactionType, @@ -51,12 +52,15 @@ const matchNumberCondition = ( const matchTextCondition = ( transaction: UncategorizedCashflowTransaction, condition: IBankRuleCondition -) => { +): boolean => { switch (condition.comparator) { case BankRuleConditionComparator.Equals: return transaction[condition.field] === condition.value; case BankRuleConditionComparator.Contains: - return transaction[condition.field]?.includes(condition.value.toString()); + const fieldValue = lowerCase(transaction[condition.field]); + const conditionValue = lowerCase(condition.value); + + return fieldValue.includes(conditionValue); case BankRuleConditionComparator.NotContain: return !transaction[condition.field]?.includes( condition.value.toString() @@ -101,4 +105,4 @@ const determineFieldType = (field: string): string => { default: return 'unknown'; } -}; +}; \ No newline at end of file diff --git a/packages/server/src/services/Banking/Rules/EditBankRule.ts b/packages/server/src/services/Banking/Rules/EditBankRule.ts index 5073e1c59..2d6d868f4 100644 --- a/packages/server/src/services/Banking/Rules/EditBankRule.ts +++ b/packages/server/src/services/Banking/Rules/EditBankRule.ts @@ -64,9 +64,10 @@ export class EditBankRuleService { } as IBankRuleEventEditingPayload); // Updates the given bank rule. - await BankRule.query(trx) - .findById(ruleId) - .patch({ ...tranformDTO }); + await BankRule.query(trx).upsertGraphAndFetch({ + ...tranformDTO, + id: ruleId, + }); // Triggers `onBankRuleEdited` event. await this.eventPublisher.emitAsync(events.bankRules.onEdited, { diff --git a/packages/server/src/services/Banking/Rules/types.ts b/packages/server/src/services/Banking/Rules/types.ts index 65e776c12..66017bf2b 100644 --- a/packages/server/src/services/Banking/Rules/types.ts +++ b/packages/server/src/services/Banking/Rules/types.ts @@ -16,7 +16,7 @@ export interface IBankRuleCondition { id?: number; field: BankRuleConditionField; comparator: BankRuleConditionComparator; - value: number; + value: string; } export enum BankRuleConditionType { diff --git a/packages/webapp/src/containers/CashFlow/CategorizeTransaction/drawers/CategorizeTransactionDrawer/CategorizeTransactionBranchField.tsx b/packages/webapp/src/containers/CashFlow/CategorizeTransaction/drawers/CategorizeTransactionDrawer/CategorizeTransactionBranchField.tsx index 29c149ec4..c35cf09a8 100644 --- a/packages/webapp/src/containers/CashFlow/CategorizeTransaction/drawers/CategorizeTransactionDrawer/CategorizeTransactionBranchField.tsx +++ b/packages/webapp/src/containers/CashFlow/CategorizeTransaction/drawers/CategorizeTransactionDrawer/CategorizeTransactionBranchField.tsx @@ -8,15 +8,15 @@ export function CategorizeTransactionBranchField() { const { branches } = useCategorizeTransactionBoot(); return ( - - + + - - + + ); }