UNPKG

tplus-pos

Version:

pos module

132 lines (112 loc) 4.89 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.CalcMultGiftItemProcessBlock = undefined; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _Enum = require('../../../../commom/Enum'); var _CalcMultQuantityControlProcessor = require('./CalcMultQuantityControlProcessor'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * 计算成倍赠送的赠品数量 */ var CalcMultGiftItemProcessBlock = exports.CalcMultGiftItemProcessBlock = function () { function CalcMultGiftItemProcessBlock() { (0, _classCallCheck3.default)(this, CalcMultGiftItemProcessBlock); } (0, _createClass3.default)(CalcMultGiftItemProcessBlock, null, [{ key: 'execute', value: function execute(promotionDto) { if (!promotionDto.IsMultipleGift) { return 1; } var mult = 0; switch (promotionDto.MeetCondition) { case _Enum.MeetCondition.DR_MeetCondition_00: //数量满足条件 mult = this.getQuantityMult(promotionDto); break; case _Enum.MeetCondition.DR_MeetCondition_01: //金额满足条件 mult = this.getAmountMult(promotionDto); break; default: mult = this.getQuantityMult(promotionDto); break; } promotionDto.TotalGiftItem = Math.Multiply(promotionDto.GiftItem, mult); if (promotionDto.PromotionType == _Enum.PromotionType.DR_PromotionType_05) //单品满赠,需要处理影响的数量信息 { promotionDto.EffectQuantity = Math.Multiply(promotionDto.Details[0].QuantityMeet, mult); } //return mult; } //获取数量条件倍数 }, { key: 'getQuantityMult', value: function getQuantityMult(promotionDto) { var minMult = 1; var quantityMeet = 1; //单品满赠和组合满赠是需要数量的 if (promotionDto.PromotionType == _Enum.PromotionType.DR_PromotionType_05) //单品满赠 { quantityMeet = promotionDto.Details[0].QuantityMeet; } if (promotionDto.PromotionType == _Enum.PromotionType.DR_PromotionType_07) { //组合满赠 quantityMeet = promotionDto.QuantityMeet; } if (promotionDto.TrussCondition == _Enum.TrussCondition.DR_TrussCondition_00) //控制组合数量 { minMult = _CalcMultQuantityControlProcessor.CalcMultQuantityControlProcessor.execute(promotionDto); } else //不控制组合数量 { var totalQuantity = this.getTotalQuantity(promotionDto); minMult = parseInt(Math.Divide(totalQuantity, quantityMeet)); } return minMult; } //获取数量条件倍数 }, { key: 'getAmountMult', value: function getAmountMult(promotionDto) { var totalAmount = this.getTotalAmount(promotionDto); var amountMeet = 1; //单品满赠和组合满赠是需要数量的 if (promotionDto.PromotionType == _Enum.PromotionType.DR_PromotionType_06) //整单满赠 { amountMeet = promotionDto.Details[0].AmountMeet; } if (promotionDto.PromotionType == _Enum.PromotionType.DR_PromotionType_07) { //组合满赠 amountMeet = promotionDto.AmountMeet; } return parseInt(Math.Divide(totalAmount, amountMeet)); } //获取总数量 }, { key: 'getTotalQuantity', value: function getTotalQuantity(promotionDto) { var totalQuantity = 0; promotionDto.RetailDetails.forEach(function (item) { totalQuantity = Math.Add(totalQuantity, item.Quantity); }); return totalQuantity; } //获取总金额 }, { key: 'getTotalAmount', value: function getTotalAmount(promotionDto) { var totalAmount = 0; promotionDto.RetailDetails.forEach(function (item) { totalAmount = Math.Add(totalAmount, item.TaxAmount); }); return totalAmount; } }]); return CalcMultGiftItemProcessBlock; }(); //# sourceMappingURL=CalcMultGiftItemProcessBlock.js.map