tplus-pos
Version:
pos module
132 lines (112 loc) • 4.89 kB
JavaScript
;
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