tplus-pos
Version:
pos module
76 lines (58 loc) • 2.82 kB
JavaScript
;
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