mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-18 13:50:31 +00:00
fix: Sync Plaid credit card account type
This commit is contained in:
@@ -129,6 +129,7 @@ export const ACCOUNT_TYPES = [
|
|||||||
normal: ACCOUNT_NORMAL.CREDIT,
|
normal: ACCOUNT_NORMAL.CREDIT,
|
||||||
rootType: ACCOUNT_ROOT_TYPE.LIABILITY,
|
rootType: ACCOUNT_ROOT_TYPE.LIABILITY,
|
||||||
parentType: ACCOUNT_PARENT_TYPE.CURRENT_LIABILITY,
|
parentType: ACCOUNT_PARENT_TYPE.CURRENT_LIABILITY,
|
||||||
|
multiCurrency: true,
|
||||||
balanceSheet: true,
|
balanceSheet: true,
|
||||||
incomeSheet: false,
|
incomeSheet: false,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -11,6 +11,12 @@ export default class UncategorizedCashflowTransaction extends mixin(
|
|||||||
) {
|
) {
|
||||||
id!: number;
|
id!: number;
|
||||||
date!: Date | string;
|
date!: Date | string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transaction amount.
|
||||||
|
* Negative represents to spending and positive to deposit/card charge.
|
||||||
|
* @param {number}
|
||||||
|
*/
|
||||||
amount!: number;
|
amount!: number;
|
||||||
categorized!: boolean;
|
categorized!: boolean;
|
||||||
accountId!: number;
|
accountId!: number;
|
||||||
|
|||||||
@@ -4,11 +4,27 @@ import {
|
|||||||
Institution as PlaidInstitution,
|
Institution as PlaidInstitution,
|
||||||
AccountBase as PlaidAccount,
|
AccountBase as PlaidAccount,
|
||||||
TransactionBase as PlaidTransactionBase,
|
TransactionBase as PlaidTransactionBase,
|
||||||
|
AccountType as PlaidAccountType,
|
||||||
} from 'plaid';
|
} from 'plaid';
|
||||||
import {
|
import {
|
||||||
CreateUncategorizedTransactionDTO,
|
CreateUncategorizedTransactionDTO,
|
||||||
IAccountCreateDTO,
|
IAccountCreateDTO,
|
||||||
} from '@/interfaces';
|
} from '@/interfaces';
|
||||||
|
import { ACCOUNT_TYPE } from '@/data/AccountTypes';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the system account type from the given Plaid account type.
|
||||||
|
* @param {PlaidAccountType} plaidAccountType
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
const getAccountTypeFromPlaidAccountType = (
|
||||||
|
plaidAccountType: PlaidAccountType
|
||||||
|
) => {
|
||||||
|
if (plaidAccountType === PlaidAccountType.Credit) {
|
||||||
|
return ACCOUNT_TYPE.CREDIT_CARD;
|
||||||
|
}
|
||||||
|
return ACCOUNT_TYPE.BANK;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Transformes the Plaid account to create cashflow account DTO.
|
* Transformes the Plaid account to create cashflow account DTO.
|
||||||
@@ -28,7 +44,7 @@ export const transformPlaidAccountToCreateAccount = R.curry(
|
|||||||
code: '',
|
code: '',
|
||||||
description: plaidAccount.official_name,
|
description: plaidAccount.official_name,
|
||||||
currencyCode: plaidAccount.balances.iso_currency_code,
|
currencyCode: plaidAccount.balances.iso_currency_code,
|
||||||
accountType: 'cash',
|
accountType: getAccountTypeFromPlaidAccountType(plaidAccount.type),
|
||||||
active: true,
|
active: true,
|
||||||
bankBalance: plaidAccount.balances.current,
|
bankBalance: plaidAccount.balances.current,
|
||||||
accountMask: plaidAccount.mask,
|
accountMask: plaidAccount.mask,
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { CashflowAccountTransformer } from './CashflowAccountTransformer';
|
|||||||
import TenancyService from '@/services/Tenancy/TenancyService';
|
import TenancyService from '@/services/Tenancy/TenancyService';
|
||||||
import DynamicListingService from '@/services/DynamicListing/DynamicListService';
|
import DynamicListingService from '@/services/DynamicListing/DynamicListService';
|
||||||
import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable';
|
import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable';
|
||||||
|
import { ACCOUNT_TYPE } from '@/data/AccountTypes';
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class GetCashflowAccountsService {
|
export default class GetCashflowAccountsService {
|
||||||
@@ -41,14 +42,20 @@ export default class GetCashflowAccountsService {
|
|||||||
const accounts = await CashflowAccount.query().onBuild((builder) => {
|
const accounts = await CashflowAccount.query().onBuild((builder) => {
|
||||||
dynamicList.buildQuery()(builder);
|
dynamicList.buildQuery()(builder);
|
||||||
|
|
||||||
builder.whereIn('account_type', ['bank', 'cash']);
|
builder.whereIn('account_type', [
|
||||||
|
ACCOUNT_TYPE.BANK,
|
||||||
|
ACCOUNT_TYPE.CASH,
|
||||||
|
ACCOUNT_TYPE.CREDIT_CARD,
|
||||||
|
]);
|
||||||
builder.modify('inactiveMode', filter.inactiveMode);
|
builder.modify('inactiveMode', filter.inactiveMode);
|
||||||
});
|
});
|
||||||
// Retrieves the transformed accounts.
|
// Retrieves the transformed accounts.
|
||||||
return this.transformer.transform(
|
const transformed = await this.transformer.transform(
|
||||||
tenantId,
|
tenantId,
|
||||||
accounts,
|
accounts,
|
||||||
new CashflowAccountTransformer()
|
new CashflowAccountTransformer()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return transformed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export class GetCashflowTransactionService {
|
|||||||
private tenancy: HasTenancyService;
|
private tenancy: HasTenancyService;
|
||||||
|
|
||||||
@Inject()
|
@Inject()
|
||||||
private transfromer: TransformerInjectable;
|
private transformer: TransformerInjectable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the given cashflow transaction.
|
* Retrieve the given cashflow transaction.
|
||||||
@@ -37,7 +37,7 @@ export class GetCashflowTransactionService {
|
|||||||
this.throwErrorCashflowTranscationNotFound(cashflowTransaction);
|
this.throwErrorCashflowTranscationNotFound(cashflowTransaction);
|
||||||
|
|
||||||
// Transformes the cashflow transaction model to POJO.
|
// Transformes the cashflow transaction model to POJO.
|
||||||
return this.transfromer.transform(
|
return this.transformer.transform(
|
||||||
tenantId,
|
tenantId,
|
||||||
cashflowTransaction,
|
cashflowTransaction,
|
||||||
new CashflowTransactionTransformer()
|
new CashflowTransactionTransformer()
|
||||||
|
|||||||
Reference in New Issue
Block a user