mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 06:40:31 +00:00
add server to monorepo.
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
import * as R from 'ramda';
|
||||
import { get, isEmpty } from 'lodash';
|
||||
|
||||
export const FinancialHorizTotals = (Base) =>
|
||||
class extends Base {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected assocNodePercentage = R.curry(
|
||||
(assocPath, parentTotal: number, node: any) => {
|
||||
const percentage = this.getPercentageBasis(
|
||||
parentTotal,
|
||||
node.total.amount
|
||||
);
|
||||
return R.assoc(
|
||||
assocPath,
|
||||
this.getPercentageAmountMeta(percentage),
|
||||
node
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {} parentNode -
|
||||
* @param {} horTotalNode -
|
||||
* @param {number} index -
|
||||
*/
|
||||
protected assocPercentageHorizTotal = R.curry(
|
||||
(assocPercentagePath: string, parentNode, horTotalNode, index) => {
|
||||
const parentTotal = get(
|
||||
parentNode,
|
||||
`horizontalTotals[${index}].total.amount`,
|
||||
0
|
||||
);
|
||||
return this.assocNodePercentage(
|
||||
assocPercentagePath,
|
||||
parentTotal,
|
||||
horTotalNode
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param assocPercentagePath
|
||||
* @param parentNode
|
||||
* @param node
|
||||
* @returns
|
||||
*/
|
||||
protected assocPercentageHorizTotals = R.curry(
|
||||
(assocPercentagePath: string, parentNode, node) => {
|
||||
const assocColPerc = this.assocPercentageHorizTotal(
|
||||
assocPercentagePath,
|
||||
parentNode
|
||||
);
|
||||
return R.addIndex(R.map)(assocColPerc)(node.horizontalTotals);
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
assocRowPercentageHorizTotal = R.curry(
|
||||
(assocPercentagePath: string, node, horizTotalNode) => {
|
||||
return this.assocNodePercentage(
|
||||
assocPercentagePath,
|
||||
node.total.amount,
|
||||
horizTotalNode
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected assocHorizontalPercentageTotals = R.curry(
|
||||
(assocPercentagePath: string, node) => {
|
||||
const assocColPerc = this.assocRowPercentageHorizTotal(
|
||||
assocPercentagePath,
|
||||
node
|
||||
);
|
||||
|
||||
return R.map(assocColPerc)(node.horizontalTotals);
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param node
|
||||
* @returns
|
||||
*/
|
||||
protected isNodeHasHorizTotals = (node) => {
|
||||
return !isEmpty(node.horizontalTotals);
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user