Files
bigcapital/packages/webapp/src/containers/FinancialStatements/common.tsx
2025-12-11 00:19:55 +02:00

50 lines
1.3 KiB
TypeScript

// @ts-nocheck
import * as R from 'ramda';
import { displayColumnsByOptions } from './constants';
import { transfromToSnakeCase, flatten } from '@/utils';
/**
* Associate display columns by and type properties to query object.
*/
export const transformDisplayColumnsType = (form) => {
const columnType = R.find(
R.propEq('key', form.displayColumnsType),
displayColumnsByOptions,
);
return R.pipe(
R.mergeRight(form),
R.when(
() => R.pathOr(false, ['by'], columnType),
R.assoc('displayColumnsBy', columnType?.by),
),
R.assoc('displayColumnsType', R.propOr('total', 'type', columnType)),
)({});
};
/**
* Associate none zero and none transaction property to query.
*/
const setNoneZeroTransactions = (form) => {
return {
...form,
noneZero: form.filterByOption === 'without-zero-balance',
noneTransactions: form.filterByOption === 'with-transactions',
onlyActive: form.filterByOption === 'with-only-active',
};
};
// filterByOption
export const transformAccountsFilter = (form) => {
return R.compose(R.omit(['filterByOption']), setNoneZeroTransactions)(form);
};
/**
* Transform filter form to http query.
*/
export const transformFilterFormToQuery = (form) => {
return R.compose(
transfromToSnakeCase,
transformAccountsFilter,
transformDisplayColumnsType,
)(form);
};