tplus-pos
Version:
pos module
140 lines (119 loc) • 5.6 kB
JavaScript
;
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