Merge pull request #565 from bigcapitalhq/fix-edit-bank-rule

fix: Edit bank rule
This commit is contained in:
Ahmed Bouhuolia
2024-08-06 00:50:05 +02:00
committed by GitHub
6 changed files with 27 additions and 19 deletions

View File

@@ -34,8 +34,9 @@ export class BankingRulesController extends BaseController {
body('conditions.*.comparator') body('conditions.*.comparator')
.exists() .exists()
.isIn(['equals', 'contains', 'not_contain']) .isIn(['equals', 'contains', 'not_contain'])
.default('contain'), .default('contain')
body('conditions.*.value').exists(), .trim(),
body('conditions.*.value').exists().trim(),
// Assign // Assign
body('assign_category').isString(), body('assign_category').isString(),

View File

@@ -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} * @returns {string}
*/ */
public transactionType() { public transactionType() {
const assignCategory = const assignedCategory =
this.options.firstUncategorizedTransaction?.recognizedTransaction this.options.firstUncategorizedTransaction?.recognizedTransaction
?.assignCategory || null; ?.assignedCategory;
return assignCategory || this.isDepositTransaction() return (
? 'other_income' assignedCategory ||
: 'other_expense'; (this.isDepositTransaction() ? 'other_income' : 'other_expense')
);
} }
/** /**

View File

@@ -1,3 +1,4 @@
import { lowerCase } from 'lodash';
import UncategorizedCashflowTransaction from '@/models/UncategorizedCashflowTransaction'; import UncategorizedCashflowTransaction from '@/models/UncategorizedCashflowTransaction';
import { import {
BankRuleApplyIfTransactionType, BankRuleApplyIfTransactionType,
@@ -51,12 +52,15 @@ const matchNumberCondition = (
const matchTextCondition = ( const matchTextCondition = (
transaction: UncategorizedCashflowTransaction, transaction: UncategorizedCashflowTransaction,
condition: IBankRuleCondition condition: IBankRuleCondition
) => { ): boolean => {
switch (condition.comparator) { switch (condition.comparator) {
case BankRuleConditionComparator.Equals: case BankRuleConditionComparator.Equals:
return transaction[condition.field] === condition.value; return transaction[condition.field] === condition.value;
case BankRuleConditionComparator.Contains: 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: case BankRuleConditionComparator.NotContain:
return !transaction[condition.field]?.includes( return !transaction[condition.field]?.includes(
condition.value.toString() condition.value.toString()
@@ -101,4 +105,4 @@ const determineFieldType = (field: string): string => {
default: default:
return 'unknown'; return 'unknown';
} }
}; };

View File

@@ -64,9 +64,10 @@ export class EditBankRuleService {
} as IBankRuleEventEditingPayload); } as IBankRuleEventEditingPayload);
// Updates the given bank rule. // Updates the given bank rule.
await BankRule.query(trx) await BankRule.query(trx).upsertGraphAndFetch({
.findById(ruleId) ...tranformDTO,
.patch({ ...tranformDTO }); id: ruleId,
});
// Triggers `onBankRuleEdited` event. // Triggers `onBankRuleEdited` event.
await this.eventPublisher.emitAsync(events.bankRules.onEdited, { await this.eventPublisher.emitAsync(events.bankRules.onEdited, {

View File

@@ -16,7 +16,7 @@ export interface IBankRuleCondition {
id?: number; id?: number;
field: BankRuleConditionField; field: BankRuleConditionField;
comparator: BankRuleConditionComparator; comparator: BankRuleConditionComparator;
value: number; value: string;
} }
export enum BankRuleConditionType { export enum BankRuleConditionType {

View File

@@ -8,15 +8,15 @@ export function CategorizeTransactionBranchField() {
const { branches } = useCategorizeTransactionBoot(); const { branches } = useCategorizeTransactionBoot();
return ( return (
<FFormGroup name={'branchId'} label={'Branch'} fastField inline> <FeatureCan feature={Features.Branches}>
<FeatureCan feature={Features.Branches}> <FFormGroup name={'branchId'} label={'Branch'} fastField inline>
<BranchSuggestField <BranchSuggestField
name={'branchId'} name={'branchId'}
items={branches} items={branches}
popoverProps={{ minimal: true }} popoverProps={{ minimal: true }}
fill fill
/> />
</FeatureCan> </FFormGroup>
</FFormGroup> </FeatureCan>
); );
} }