re-structure to monorepo.

This commit is contained in:
a.bouhuolia
2023-02-03 01:02:31 +02:00
parent 8242ec64ba
commit 7a0a13f9d5
10400 changed files with 46966 additions and 17223 deletions

View File

@@ -0,0 +1,246 @@
// @ts-nocheck
import t from '@/store/types';
/**
* Toggles display of the balance sheet filter drawer.
* @param {boolean} toggle
*/
export function toggleBalanceSheetFilterDrawer(toggle) {
return {
type: `${t.BALANCE_SHEET}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the trial balance sheet filter drawer.
* @param {boolean} toggle
*/
export function toggleTrialBalanceSheetFilterDrawer(toggle) {
return {
type: `${t.TRIAL_BALANCE_SHEET}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the journal sheet filter drawer.
* @param {boolean} toggle
*/
export function toggleJournalSheeetFilterDrawer(toggle) {
return {
type: `${t.JOURNAL}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the profit/loss filter drawer.
* @param {boolean} toggle
*/
export function toggleProfitLossFilterDrawer(toggle) {
return {
type: `${t.PROFIT_LOSS}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the general ledger filter drawer.
* @param {boolean} toggle
*/
export function toggleGeneralLedgerFilterDrawer(toggle) {
return {
type: `${t.GENERAL_LEDGER}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the AR aging summary filter drawer.
* @param {boolean} toggle -
*/
export function toggleARAgingSummaryFilterDrawer(toggle) {
return {
type: `${t.AR_AGING_SUMMARY}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the AP aging summary filter drawer.
* @param {boolean} toggle -
*/
export function toggleAPAgingSummaryFilterDrawer(toggle) {
return {
type: `${t.AP_AGING_SUMMARY}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the purchases by items filter drawer.
* @param {boolean} toggle
*/
export function togglePurchasesByItemsFilterDrawer(toggle) {
return {
type: `${t.PURCHASES_BY_ITEMS}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the sells by items filter drawer.
* @param {boolean} toggle
*/
export function toggleSalesByItemsFilterDrawer(toggle) {
return {
type: `${t.SALES_BY_ITEMS}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the inventory valuation filter drawer.
* @param {boolean} toggle
*/
export function toggleInventoryValuationFilterDrawer(toggle) {
return {
type: `${t.INVENTORY_VALUATION}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the customers balance summary filter drawer.
* @param {boolean} toggle
*/
export function toggleCustomersBalanceSummaryFilterDrawer(toggle) {
return {
type: `${t.CUSTOMERS_BALANCE_SUMMARY}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the vendors balance summary filter drawer.
* @param {boolean} toggle
*/
export function toggleVendorsBalanceSummaryFilterDrawer(toggle) {
return {
type: `${t.VENDORS_BALANCE_SUMMARY}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the customers transactions filter drawer.
* @param {boolean} toggle
*/
export function toggleCustomersTransactionsFilterDrawer(toggle) {
return {
type: `${t.CUSTOMERS_TRANSACTIONS}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the vendors transactions filter drawer.
* @param {boolean} toggle
*/
export function toggleVendorsTransactionsFilterDrawer(toggle) {
return {
type: `${t.VENDORS_TRANSACTIONS}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggle display of the cash flow statement filter drawer.
* @param {boolean} toggle
*/
export function toggleCashFlowStatementFilterDrawer(toggle) {
return {
type: `${t.CASH_FLOW_STATEMENT}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggles display of the inventory item details filter drawer.
* @param {boolean} toggle
*/
export function toggleInventoryItemDetailsFilterDrawer(toggle) {
return {
type: `${t.INVENTORY_ITEM_DETAILS}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggle display of the Realized Gain or Loss filter drawer.
* @param {boolean} toggle
*/
export function toggleRealizedGainOrLossFilterDrawer(toggle) {
return {
type: `${t.REALIZED_GAIN_OR_LOSS}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggle display of the Unrealized Gain or Loss filter drawer.
* @param {boolean} toggle
*/
export function toggleUnrealizedGainOrLossFilterDrawer(toggle) {
return {
type: `${t.UNREALIZED_GAIN_OR_LOSS}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}
/**
* Toggle display of the project Profitability summary filter drawer.
* @param {boolean} toggle
*/
export function toggleProjectProfitabilitySummaryFilterDrawer(toggle) {
return {
type: `${t.PROJECT_PROFITABILITY_SUMMARY}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`,
payload: {
toggle,
},
};
}

View File

@@ -0,0 +1,191 @@
// @ts-nocheck
import { omit, chain } from 'lodash';
import moment from 'moment';
export const mapBalanceSheetToTableRows = (accounts) => {
return accounts.map((account) => {
return {
...account,
children: mapBalanceSheetToTableRows([
...(account.children ? account.children : []),
...(account.total && account.children && account.children.length > 0
? [
{
name: `Total ${account.name}`,
row_types: ['total-row', account.section_type],
total: { ...account.total },
...(account.total_periods && {
total_periods: account.total_periods,
}),
},
]
: []),
]),
};
});
};
export const profitLossToTableRowsMapper = () => {};
export const journalToTableRowsMapper = (journal) => {
const TYPES = {
ENTRY: 'ENTRY',
TOTAL_ENTRIES: 'TOTAL_ENTRIES',
EMPTY_ROW: 'EMPTY_ROW',
};
const entriesMapper = (transaction) => {
return transaction.entries.map((entry, index) => ({
...(index === 0
? {
date: transaction.date,
reference_type: transaction.reference_type,
reference_id: transaction.reference_id,
reference_type_formatted: transaction.reference_type_formatted,
}
: {}),
rowType: TYPES.ENTRY,
...entry,
}));
};
return chain(journal)
.map((transaction) => {
const entries = entriesMapper(transaction);
return [
...entries,
{
rowType: TYPES.TOTAL_ENTRIES,
currency_code: transaction.currency_code,
credit: transaction.credit,
debit: transaction.debit,
formatted_credit: transaction.formatted_credit,
formatted_debit: transaction.formatted_debit,
},
{
rowType: TYPES.EMPTY_ROW,
},
];
})
.flatten()
.value();
};
export const generalLedgerToTableRows = (accounts) => {
return chain(accounts)
.map((account) => {
return {
name: '',
code: account.code,
rowType: 'ACCOUNT_ROW',
date: account.name,
children: [
{
...account.opening_balance,
name: 'Opening balance',
rowType: 'OPENING_BALANCE',
},
...account.transactions.map((transaction) => ({
...transaction,
name: account.name,
code: account.code,
date: moment(transaction.date).format('DD MMM YYYY'),
})),
{
...account.closing_balance,
name: 'Closing balance',
rowType: 'CLOSING_BALANCE',
},
],
};
})
.value();
};
export const ARAgingSummaryTableRowsMapper = (sheet, total) => {
const rows = [];
const mapAging = (agingPeriods) => {
return agingPeriods.reduce((acc, aging, index) => {
acc[`aging-${index}`] = aging.total.formatted_amount;
return acc;
}, {});
};
sheet.customers.forEach((customer) => {
const agingRow = mapAging(customer.aging);
rows.push({
rowType: 'customer',
name: customer.customer_name,
...agingRow,
current: customer.current.formatted_amount,
total: customer.total.formatted_amount,
});
});
if (rows.length <= 0) {
return [];
}
return [
...rows,
{
name: '',
rowType: 'total',
current: sheet.total.current.formatted_amount,
...mapAging(sheet.total.aging),
total: sheet.total.total.formatted_amount,
},
];
};
export const APAgingSummaryTableRowsMapper = (sheet, total) => {
const rows = [];
const mapAging = (agingPeriods) => {
return agingPeriods.reduce((acc, aging, index) => {
acc[`aging-${index}`] = aging.total.formatted_amount;
return acc;
}, {});
};
sheet.vendors.forEach((vendor) => {
const agingRow = mapAging(vendor.aging);
rows.push({
rowType: 'vendor',
name: vendor.vendor_name,
...agingRow,
current: vendor.current.formatted_amount,
total: vendor.total.formatted_amount,
});
});
if (rows.length <= 0) {
return [];
}
return [
...rows,
{
name: '',
rowType: 'total',
current: sheet.total.current.formatted_amount,
...mapAging(sheet.total.aging),
total: sheet.total.total.formatted_amount,
},
];
};
export const mapTrialBalanceSheetToRows = (sheet) => {
const results = [];
if (sheet.accounts) {
sheet.accounts.forEach((account) => {
results.push(account);
});
}
if (sheet.total) {
results.push({
rowType: 'total',
...sheet.total,
});
}
return results;
};

View File

@@ -0,0 +1,127 @@
// @ts-nocheck
import { createReducer } from '@reduxjs/toolkit';
import t from '@/store/types';
// Initial state.
const initialState = {
balanceSheet: {
displayFilterDrawer: false,
},
trialBalance: {
displayFilterDrawer: false,
},
generalLedger: {
displayFilterDrawer: false,
},
journal: {
displayFilterDrawer: false,
},
profitLoss: {
displayFilterDrawer: false,
},
ARAgingSummary: {
displayFilterDrawer: false,
},
APAgingSummary: {
displayFilterDrawer: false,
},
purchasesByItems: {
displayFilterDrawer: false,
},
salesByItems: {
displayFilterDrawer: false,
},
inventoryValuation: {
displayFilterDrawer: false,
},
customersBalanceSummary: {
displayFilterDrawer: false,
},
vendorsBalanceSummary: {
displayFilterDrawer: false,
},
customersTransactions: {
displayFilterDrawer: false,
},
vendorsTransactions: {
displayFilterDrawer: false,
},
cashFlowStatement: {
displayFilterDrawer: false,
},
inventoryItemDetails: {
displayFilterDrawer: false,
},
realizedGainOrLoss: {
displayFilterDrawer: false,
},
unrealizedGainOrLoss: {
displayFilterDrawer: false,
},
projectProfitabilitySummary: {
dispalyFilterDrawer: false,
},
};
/**
* Financial statement filter toggle.
*/
const financialStatementFilterToggle = (financialName, statePath) => {
return {
[`${financialName}/${t.DISPLAY_FILTER_DRAWER_TOGGLE}`]: (state, action) => {
state[statePath].displayFilterDrawer =
typeof action?.payload?.toggle !== 'undefined'
? action.payload.toggle
: !state[statePath].displayFilterDrawer;
},
};
};
export default createReducer(initialState, {
...financialStatementFilterToggle(t.BALANCE_SHEET, 'balanceSheet'),
...financialStatementFilterToggle(t.TRIAL_BALANCE_SHEET, 'trialBalance'),
...financialStatementFilterToggle(t.JOURNAL, 'journal'),
...financialStatementFilterToggle(t.GENERAL_LEDGER, 'generalLedger'),
...financialStatementFilterToggle(t.PROFIT_LOSS, 'profitLoss'),
...financialStatementFilterToggle(t.AR_AGING_SUMMARY, 'ARAgingSummary'),
...financialStatementFilterToggle(t.AP_AGING_SUMMARY, 'APAgingSummary'),
...financialStatementFilterToggle(t.PURCHASES_BY_ITEMS, 'purchasesByItems'),
...financialStatementFilterToggle(t.SALES_BY_ITEMS, 'salesByItems'),
...financialStatementFilterToggle(
t.INVENTORY_VALUATION,
'inventoryValuation',
),
...financialStatementFilterToggle(
t.CUSTOMERS_BALANCE_SUMMARY,
'customersBalanceSummary',
),
...financialStatementFilterToggle(
t.VENDORS_BALANCE_SUMMARY,
'vendorsBalanceSummary',
),
...financialStatementFilterToggle(
t.CUSTOMERS_TRANSACTIONS,
'customersTransactions',
),
...financialStatementFilterToggle(
t.VENDORS_TRANSACTIONS,
'vendorsTransactions',
),
...financialStatementFilterToggle(t.CASH_FLOW_STATEMENT, 'cashFlowStatement'),
...financialStatementFilterToggle(
t.INVENTORY_ITEM_DETAILS,
'inventoryItemDetails',
),
...financialStatementFilterToggle(
t.REALIZED_GAIN_OR_LOSS,
'realizedGainOrLoss',
),
...financialStatementFilterToggle(
t.UNREALIZED_GAIN_OR_LOSS,
'unrealizedGainOrLoss',
),
...financialStatementFilterToggle(
t.PROJECT_PROFITABILITY_SUMMARY,
'projectProfitabilitySummary',
),
});

View File

@@ -0,0 +1,280 @@
// @ts-nocheck
import { createSelector } from 'reselect';
// Financial Statements selectors.
export const sheetByTypeSelector = (sheetType) => (state, props) => {
return state.financialStatements[sheetType];
};
export const filterDrawerByTypeSelector = (sheetType) => (state) => {
return sheetByTypeSelector(sheetType)(state)?.displayFilterDrawer;
};
export const balanceSheetFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('balanceSheet')(state);
};
export const profitLossSheetFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('profitLoss')(state);
};
export const generalLedgerFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('generalLedger')(state);
};
// Trial balance filter drawer selector.
export const trialBalanceFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('trialBalance')(state);
};
export const journalFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('journal')(state);
};
export const ARAgingSummaryFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('ARAgingSummary')(state);
};
export const APAgingSummaryFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('APAgingSummary')(state);
};
export const purchasesByItemsFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('purchasesByItems')(state);
};
export const salesByItemsFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('salesByItems')(state);
};
export const inventoryValuationFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('inventoryValuation')(state);
};
export const customerBalanceSummaryFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('customersBalanceSummary')(state);
};
export const vendorsBalanceSummaryFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('vendorsBalanceSummary')(state);
};
export const customersTransactionsFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('customersTransactions')(state);
};
export const vendorsTransactionsFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('vendorsTransactions')(state);
};
export const cashFlowStatementFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('cashFlowStatement')(state);
};
export const inventoryItemDetailsDrawerFilter = (state) => {
return filterDrawerByTypeSelector('inventoryItemDetails')(state);
};
export const realizedGainOrLossFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('realizedGainOrLoss')(state);
};
export const unrealizedGainOrLossFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('unrealizedGainOrLoss')(state);
};
export const projectProfitabilitySummaryFilterDrawerSelector = (state) => {
return filterDrawerByTypeSelector('projectProfitabilitySummary')(state);
};
/**
* Retrieve balance sheet filter drawer.
*/
export const getBalanceSheetFilterDrawer = createSelector(
balanceSheetFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve whether trial balance sheet display filter drawer.
*/
export const getTrialBalanceSheetFilterDrawer = createSelector(
trialBalanceFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve profit/loss filter drawer.
*/
export const getProfitLossFilterDrawer = createSelector(
profitLossSheetFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve whether display general ledger (GL) filter drawer.
*/
export const getGeneralLedgerFilterDrawer = createSelector(
generalLedgerFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve whether display journal sheet filter drawer.
*/
export const getJournalFilterDrawer = createSelector(
journalFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve whether display AR aging summary drawer filter.
*/
export const getARAgingSummaryFilterDrawer = createSelector(
ARAgingSummaryFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve whether display AR aging summary drawer filter.
*/
export const getAPAgingSummaryFilterDrawer = createSelector(
APAgingSummaryFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve financial statement query by the given sheet index.
*/
export const getFinancialSheetQueryFactory = (sheetType) =>
createSelector(sheetByTypeSelector(sheetType), (sheet) => {
return sheet && sheet.query ? sheet.query : {};
});
/**
* Retrieve whether purchases by items display filter drawer.
*/
export const getPurchasesByItemsFilterDrawer = createSelector(
purchasesByItemsFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve whether sales by items display filter drawer.
*/
export const getSalesByItemsFilterDrawer = createSelector(
salesByItemsFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve whether sells by items display filter drawer.
*/
export const getInventoryValuationFilterDrawer = createSelector(
inventoryValuationFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve customers balance summary filter drawer.
*/
export const getCustomersBalanceSummaryFilterDrawer = createSelector(
customerBalanceSummaryFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve vendors balance summary filter drawer.
*/
export const getVendorsBalanceSummaryFilterDrawer = createSelector(
vendorsBalanceSummaryFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve customers transactions filter drawer.
*/
export const getCustomersTransactionsFilterDrawer = createSelector(
customersTransactionsFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve vendors transactions filter drawer.
*/
export const getVendorsTransactionsFilterDrawer = createSelector(
vendorsTransactionsFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve cash flow statement filter drawer.
*/
export const getCashFlowStatementFilterDrawer = createSelector(
cashFlowStatementFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve inventory item details filter drawer.
*/
export const getInventoryItemDetailsFilterDrawer = createSelector(
inventoryItemDetailsDrawerFilter,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve Realized Gain or Loss filter drawer.
*/
export const getRealizedGainOrLossFilterDrawer = createSelector(
realizedGainOrLossFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
/**
* Retrieve Unrealized Gain or Loss filter drawer.
*/
export const getUnrealizedGainOrLossFilterDrawer = createSelector(
unrealizedGainOrLossFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);
export const getProjectProfitabilitySummaryFilterDrawer = createSelector(
projectProfitabilitySummaryFilterDrawerSelector,
(isOpen) => {
return isOpen;
},
);

View File

@@ -0,0 +1,23 @@
// @ts-nocheck
export default {
BALANCE_SHEET: 'BALANCE_SHEET',
TRIAL_BALANCE_SHEET: 'TRIAL_BALANCE_SHEET',
JOURNAL: 'JOURNAL',
GENERAL_LEDGER: 'GENERAL_LEDGER',
PROFIT_LOSS: 'PROFIT_LOSS',
AR_AGING_SUMMARY: 'AR_AGING_SUMMARY',
AP_AGING_SUMMARY: 'AP_AGING_SUMMARY',
DISPLAY_FILTER_DRAWER_TOGGLE: 'DISPLAY_FILTER_DRAWER_TOGGLE',
PURCHASES_BY_ITEMS: 'PURCHASES_BY_ITEMS',
SALES_BY_ITEMS: 'SALES_BY_ITEMS',
INVENTORY_VALUATION: 'INVENTORY_VALUATION',
CUSTOMERS_BALANCE_SUMMARY: 'CUSTOMERS BALANCE SUMMARY',
VENDORS_BALANCE_SUMMARY: 'VENDORS BALANCE SUMMARY',
CUSTOMERS_TRANSACTIONS: 'CUSTOMERS TRANSACTIONS',
VENDORS_TRANSACTIONS: 'VENDORS TRANSACTIONS',
CASH_FLOW_STATEMENT: 'CASH FLOW STATEMENT',
INVENTORY_ITEM_DETAILS: 'INVENTORY ITEM DETAILS',
PROJECT_PROFITABILITY_SUMMARY: 'PROJECT PROFITABILITY SUMMARY',
REALIZED_GAIN_OR_LOSS: 'REALIZED GAIN OR LOSS',
UNREALIZED_GAIN_OR_LOSS: 'UNREALIZED GAIN OR LOSS',
};