mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 13:20:31 +00:00
84 lines
2.1 KiB
TypeScript
84 lines
2.1 KiB
TypeScript
// @ts-nocheck
|
|
import React from 'react';
|
|
import intl from 'react-intl-universal';
|
|
import moment from 'moment';
|
|
import * as Yup from 'yup';
|
|
import { castArray } from 'lodash';
|
|
|
|
import { useAppQueryString } from '@/hooks';
|
|
import { transformToForm } from '@/utils';
|
|
|
|
// Filters accounts options.
|
|
export const filterAccountsOptions = [
|
|
{
|
|
key: 'all-accounts',
|
|
name: intl.get('all_accounts'),
|
|
hint: intl.get('all_accounts_including_with_zero_balance'),
|
|
},
|
|
{
|
|
key: 'with-transactions',
|
|
name: intl.get('accounts_with_transactions'),
|
|
hint: intl.get(
|
|
'include_accounts_once_has_transactions_on_given_date_period',
|
|
),
|
|
},
|
|
];
|
|
|
|
/**
|
|
* Retrieves the default general ledger query.
|
|
*/
|
|
export const getDefaultGeneralLedgerQuery = () => ({
|
|
fromDate: moment().startOf('month').format('YYYY-MM-DD'),
|
|
toDate: moment().format('YYYY-MM-DD'),
|
|
basis: 'accrual',
|
|
filterByOption: 'with-transactions',
|
|
branchesIds: [],
|
|
accountsIds: [],
|
|
});
|
|
|
|
/**
|
|
* Retrieves the validation schema of general ledger.
|
|
* @returns {Yup}
|
|
*/
|
|
export const getGeneralLedgerQuerySchema = () => {
|
|
return Yup.object().shape({
|
|
dateRange: Yup.string().optional(),
|
|
fromDate: Yup.date().required(),
|
|
toDate: Yup.date().min(Yup.ref('fromDate')).required(),
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Parses general ledger query of browser location.
|
|
*/
|
|
const parseGeneralLedgerQuery = (locationQuery) => {
|
|
const defaultQuery = getDefaultGeneralLedgerQuery();
|
|
|
|
const transformed = {
|
|
...defaultQuery,
|
|
...transformToForm(locationQuery, defaultQuery),
|
|
};
|
|
return {
|
|
...transformed,
|
|
|
|
// Ensures the branches, accounts ids is always array.
|
|
branchesIds: castArray(transformed.branchesIds),
|
|
accountsIds: castArray(transformed.accountsIds),
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Retrieves the general ledger location query.
|
|
*/
|
|
export const useGeneralLedgerQuery = () => {
|
|
// Retrieves location query.
|
|
const [locationQuery, setLocationQuery] = useAppQueryString();
|
|
|
|
// Merges the default filter query with location URL query.
|
|
const query = React.useMemo(
|
|
() => parseGeneralLedgerQuery(locationQuery),
|
|
[locationQuery],
|
|
);
|
|
return { query, locationQuery, setLocationQuery };
|
|
};
|