UNPKG

tplus-pos

Version:

pos module

76 lines (58 loc) 2.82 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.SplitAmountProcessor = undefined; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); require('../../commom/Challenger'); var _REAlgorithmAdapter2 = require('../../commom/REAlgorithmAdapter'); var _REAlgorithmAdapter3 = _interopRequireDefault(_REAlgorithmAdapter2); var _Format = require('../../commom/Format'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * 按指定金额进行分摊至明细行 */ var SplitAmountProcessor = exports.SplitAmountProcessor = function () { function SplitAmountProcessor() { (0, _classCallCheck3.default)(this, SplitAmountProcessor); } (0, _createClass3.default)(SplitAmountProcessor, null, [{ key: 'execute', value: function execute(dto, detailList, amount, toField, algorithmMethod, isAccumulate) { $T.debugger(); amount = parseFloat(amount); var sortedDetails = detailList.sort(function (a, b) { return a.TaxAmount - b.TaxAmount; }); var totalTaxAmount = detailList.Sum('TaxAmount'); var usedChange = 0; this.format = new _Format.Format(); for (var i = 0; i < sortedDetails.length; i++) { var changeAmount = 0; if (!isAccumulate) { sortedDetails[i][toField] = 0; } if (i == sortedDetails.length - 1) { changeAmount = this.format.FormatAmount(Math.Minus(amount, usedChange)); } else { var tempScale = Math.Divide(amount, totalTaxAmount, true); changeAmount = this.format.FormatAmount(Math.Multiply(tempScale, sortedDetails[i].TaxAmount)); } sortedDetails[i][toField] = Math.Add(sortedDetails[i][toField], changeAmount); sortedDetails[i].TaxAmount = this.format.FormatAmount(Math.Minus(sortedDetails[i].TaxAmount - sortedDetails[i][toField])); //调用明细行的金额改变Processor var _REAlgorithmAdapter = new _REAlgorithmAdapter3.default(dto); //_REAlgorithmAdapter.AmountTaxChange(sortedDetails[i]); _REAlgorithmAdapter[algorithmMethod](sortedDetails[i]); usedChange = Math.Add(usedChange, changeAmount); } } }]); return SplitAmountProcessor; }(); /**格式化函数 */ /**格式化函数 */ //# sourceMappingURL=SplitAmountProcessor.js.map