UNPKG

daniel-san

Version:

a node-based budget-projection engine that helps your routines and finances find balance. The program features aggregates, terminal and file-based reporting output, multi-currency conversion capability and multi-frequency accounting triggers, including: o

66 lines (55 loc) 1.75 kB
"use strict"; var _require = require('../utility/errorHandling'), errorDisc = _require.errorDisc; var _require2 = require('../constants'), EXECUTING_RULE_INSERTION = _require2.EXECUTING_RULE_INSERTION, EXECUTION_REJECTED = _require2.EXECUTION_REJECTED; var modulateCycleUp = function modulateCycleUp(rule) { var newCycle = rule.cycle % rule.modulus + 1; rule.cycle = newCycle; }; var modulateCycleDown = function modulateCycleDown(rule) { var newCycle = rule.cycle - 1; if (newCycle === 0) newCycle = rule.modulus; rule.cycle = newCycle; }; var isCycleAtModulus = function isCycleAtModulus(rule) { if (rule.cycle === rule.modulus) { return true; // eslint-disable-next-line no-else-return } else { return false; } }; var modulusPhase = function modulusPhase(_ref) { var rule = _ref.rule, processPhase = _ref.processPhase; var transientProcessPhase; try { // if there are modulus/cycle attributes, then execute them transientProcessPhase = processPhase || ''; if (rule.modulus) { if (transientProcessPhase !== EXECUTION_REJECTED && isCycleAtModulus(rule)) { transientProcessPhase = EXECUTING_RULE_INSERTION; } modulateCycleUp(rule); } else if (transientProcessPhase !== EXECUTION_REJECTED) { transientProcessPhase = EXECUTING_RULE_INSERTION; } return transientProcessPhase; } catch (err) { throw errorDisc({ err: err, data: { rule: rule, processPhase: processPhase, transientProcessPhase: transientProcessPhase } }); } }; module.exports = { modulateCycleUp: modulateCycleUp, modulateCycleDown: modulateCycleDown, isCycleAtModulus: isCycleAtModulus, modulusPhase: modulusPhase };