Skip to content

Commit

Permalink
Merge pull request #654 from bigcapitalhq/expense-credit-card
Browse files Browse the repository at this point in the history
fix: Expense cannot accept credit card as payment account
  • Loading branch information
abouolia authored Sep 3, 2024
2 parents 795303c + 37a8ca4 commit 0c6f23e
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Service, Inject } from 'typedi';
import { sumBy, difference } from 'lodash';
import { ServiceError } from '@/exceptions';
import { ERRORS } from '../constants';
import { ERRORS, SUPPORTED_EXPENSE_PAYMENT_ACCOUNT_TYPES } from '../constants';
import {
IAccount,
IExpense,
Expand Down Expand Up @@ -79,7 +79,9 @@ export class CommandExpenseValidator {
* @throws {ServiceError}
*/
public validatePaymentAccountType = (paymentAccount: number[]) => {
if (!paymentAccount.isParentType(ACCOUNT_PARENT_TYPE.CURRENT_ASSET)) {
if (
!paymentAccount.isAccountType(SUPPORTED_EXPENSE_PAYMENT_ACCOUNT_TYPES)
) {
throw new ServiceError(ERRORS.PAYMENT_ACCOUNT_HAS_INVALID_TYPE);
}
};
Expand Down
11 changes: 11 additions & 0 deletions packages/server/src/services/Expenses/constants.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { ACCOUNT_TYPE } from '@/data/AccountTypes';

export const DEFAULT_VIEW_COLUMNS = [];
export const DEFAULT_VIEWS = [
{
Expand Down Expand Up @@ -76,3 +78,12 @@ export const ExpensesSampleData = [
Publish: 'T',
},
];

export const SUPPORTED_EXPENSE_PAYMENT_ACCOUNT_TYPES = [
ACCOUNT_TYPE.CASH,
ACCOUNT_TYPE.BANK,
ACCOUNT_TYPE.CREDIT_CARD,
ACCOUNT_TYPE.OTHER_CURRENT_ASSET,
ACCOUNT_TYPE.NON_CURRENT_ASSET,
ACCOUNT_TYPE.FIXED_ASSET,
];
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// @ts-nocheck
import React from 'react';
import { InputGroup, FormGroup, Position, Classes } from '@blueprintjs/core';
import { FormGroup, Position, Classes } from '@blueprintjs/core';
import { DateInput } from '@blueprintjs/datetime';
import { FastField, ErrorMessage } from 'formik';
import { CustomersSelect, FormattedMessage as T } from '@/components';
import { CustomersSelect, FInputGroup, FormattedMessage as T } from '@/components';
import classNames from 'classnames';
import { CLASSES } from '@/constants/classes';
import {
Expand All @@ -15,15 +15,14 @@ import {
import { customersFieldShouldUpdate, accountsFieldShouldUpdate } from './utils';
import {
CurrencySelectList,
CustomerSelectField,
FFormGroup,
AccountsSelect,
FieldRequiredHint,
Hint,
} from '@/components';
import { ExpensesExchangeRateInputField } from './components';
import { ACCOUNT_PARENT_TYPE } from '@/constants/accountTypes';
import { useExpenseFormContext } from './ExpenseFormPageProvider';
import { SUPPORTED_EXPENSE_PAYMENT_ACCOUNT_TYPES } from './constants';

/**
* Expense form header.
Expand Down Expand Up @@ -68,7 +67,7 @@ export default function ExpenseFormHeader() {
name={'payment_account_id'}
items={accounts}
placeholder={<T id={'select_payment_account'} />}
filterByParentTypes={[ACCOUNT_PARENT_TYPE.CURRENT_ASSET]}
filterByTypes={SUPPORTED_EXPENSE_PAYMENT_ACCOUNT_TYPES}
allowCreate={true}
fastField={true}
shouldUpdate={accountsFieldShouldUpdate}
Expand Down Expand Up @@ -107,19 +106,15 @@ export default function ExpenseFormHeader() {
formGroupProps={{ label: ' ', inline: true }}
/>

<FastField name={'reference_no'}>
{({ form, field, meta: { error, touched } }) => (
<FormGroup
label={<T id={'reference_no'} />}
className={classNames('form-group--ref_no', Classes.FILL)}
intent={inputIntent({ error, touched })}
helperText={<ErrorMessage name="reference_no" />}
inline={true}
>
<InputGroup minimal={true} {...field} />
</FormGroup>
)}
</FastField>
{/* ----------- Reference No. ----------- */}
<FFormGroup
name={'reference_no'}
label={<T id={'reference_no'} />}
inline={true}
fastField
>
<FInputGroup minimal={true} name={'reference_no'} fastField />
</FFormGroup>

{/* ----------- Customer ----------- */}
<ExpenseFormCustomerSelect />
Expand Down
10 changes: 10 additions & 0 deletions packages/webapp/src/containers/Expenses/ExpenseForm/constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { ACCOUNT_TYPE } from "@/constants";

export const SUPPORTED_EXPENSE_PAYMENT_ACCOUNT_TYPES = [
ACCOUNT_TYPE.CASH,
ACCOUNT_TYPE.BANK,
ACCOUNT_TYPE.CREDIT_CARD,
ACCOUNT_TYPE.OTHER_CURRENT_ASSET,
ACCOUNT_TYPE.NON_CURRENT_ASSET,
ACCOUNT_TYPE.FIXED_ASSET,
];

0 comments on commit 0c6f23e

Please sign in to comment.