UNPKG

tplus-pos

Version:

pos module

140 lines (119 loc) 5.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.RepeatCashProcessBlock = undefined; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _SplitAmountProcessor = require('../../SplitAmountProcessor'); var _Enum = require('../../../../commom/Enum'); var _UpdateRetailDetailProcessor = require('../UpdateRetailDetailProcessor'); var _CalcMultQuantityControlProcessor = require('../calcmeet/CalcMultQuantityControlProcessor'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * 整单成倍返现,还是组合成倍返现,都是将满足条件的返现总额度算出来,然后执行分摊。 * * */ /** * 执行成倍返现类型 */ var RepeatCashProcessBlock = exports.RepeatCashProcessBlock = function () { function RepeatCashProcessBlock() { (0, _classCallCheck3.default)(this, RepeatCashProcessBlock); } (0, _createClass3.default)(RepeatCashProcessBlock, null, [{ key: 'execute', value: function execute(retailDto, promotionDto, isDetail) { var promotionDetails = []; if (isDetail) { promotionDetails = promotionDto.Details; } else { promotionDetails = promotionDto.SubsDetails; } //按照返现金额倒叙 promotionDetails.sort(function (a, b) { return b.DiscountAmount - a.DiscountAmount; }); //返现总金额 var totalCashBack = 0; //金额还是数量 switch (promotionDto.MeetCondition) { case _Enum.MeetCondition.DR_MeetCondition_00: //数量 totalCashBack = this.getQuantityCashBack(promotionDto, promotionDetails); break; case _Enum.MeetCondition.DR_MeetCondition_01: //金额 totalCashBack = this.getAmountCashBack(promotionDto, promotionDetails); break; } var detaillist = []; promotionDto.RetailDetails.forEach(function (item) { detaillist.push(retailDto.RetailDetails.find(function (it) { return it.Code == item.Code; })); }); //调用分摊方法 _SplitAmountProcessor.SplitAmountProcessor.execute(retailDto, detaillist, totalCashBack, "DetailDiscountAmount", "DiscountAmountChange", true); //更新明细行促销信息 var detaildto = {}; promotionDto.RetailDetails.forEach(function (item) { detaildto = retailDto.RetailDetails.find(function (it) { return it.Code == item.Code; }); if (detaildto) { _UpdateRetailDetailProcessor.UpdateRetailDetailProcessor.execute(detaildto, promotionDto, false, retailDto.Code); } }); } //获取数量条件的总返现金额 }, { key: 'getQuantityCashBack', value: function getQuantityCashBack(promotionDto, promotionDetails) { var totalCashBack = 0; if (promotionDto.TrussCondition == _Enum.TrussCondition.DR_TrussCondition_00) //控制组合数量 { totalCashBack = promotionDetails[0].DiscountAmount; var minMult = _CalcMultQuantityControlProcessor.CalcMultQuantityControlProcessor.execute(promotionDto); totalCashBack = Math.Multiply(promotionDetails[0].DiscountAmount, minMult); } else { //不控制组合数量 var totalQuantity = 0; promotionDto.RetailDetails.forEach(function (item) { totalQuantity = Math.Add(totalQuantity, item.Quantity); }); promotionDetails.forEach(function (item) { if (totalQuantity >= item.QuantityMeet) { var mult = parseInt(Math.Divide(totalQuantity, item.QuantityMeet)); totalCashBack = Math.Add(totalCashBack, Math.Multiply(item.DiscountAmount, mult)); totalQuantity = Math.Minus(totalQuantity, Math.Multiply(item.QuantityMeet, mult)); } }); } return totalCashBack; } //获取数量条件的总返现金额 }, { key: 'getAmountCashBack', value: function getAmountCashBack(promotionDto, promotionDetails) { var totalCashBack = 0; var totalAmount = 0; promotionDto.RetailDetails.forEach(function (item) { totalAmount = totalAmount + item.TaxAmount; }); promotionDetails.forEach(function (item) { if (totalAmount >= item.AmountMeet) { var mult = parseInt(Math.Divide(totalAmount, item.AmountMeet)); totalCashBack = Math.Add(totalCashBack, Math.Multiply(item.DiscountAmount, mult)); totalAmount = Math.Minus(totalAmount, Math.Multiply(item.AmountMeet, mult)); } }); return totalCashBack; } }]); return RepeatCashProcessBlock; }(); //# sourceMappingURL=RepeatCashProcessBlock.js.map