tplus-pos
Version:
pos module
139 lines (116 loc) • 5.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SelfSingleCashBackProcessBlock = 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 _CalcSinglePromotionProcessor = require('./CalcSinglePromotionProcessor');
var _DiscountProcessBlock = require('../cashback/DiscountProcessBlock');
var _CashBackProcessBlock = require('../cashback/CashBackProcessBlock');
var _XPrieceProcessBlock = require('../cashback/XPrieceProcessBlock');
var _SingleRepeatCashProcessBlock = require('../cashback/SingleRepeatCashProcessBlock');
var _SummaryProcessorBlock = require('../../summary/SummaryProcessorBlock');
var _DiscountPriceProcessBlock = require('../cashback/DiscountPriceProcessBlock');
var _Enum = require('../../../../commom/Enum');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//成倍返现的情况
//返现金的情况
var SelfSingleCashBackProcessBlock = exports.SelfSingleCashBackProcessBlock = function () {
function SelfSingleCashBackProcessBlock() {
(0, _classCallCheck3.default)(this, SelfSingleCashBackProcessBlock);
}
(0, _createClass3.default)(SelfSingleCashBackProcessBlock, null, [{
key: 'execute',
value: function execute(retailDto, detailDto, promotionList) {
if (!promotionList || promotionList.length == 0) {
return;
}
//找到适合执行的促销方案
var matchList = _CalcSinglePromotionProcessor.CalcSinglePromotionProcessor.execute(retailDto, detailDto, promotionList);
if (!matchList || matchList.length == 0) //执行促销
{
return;
}
var promotionDto = this.MatchPromotion(retailDto, detailDto, matchList);
var quantity = promotionDto.RetailDetails.Sum("Quantity");
var promotionDetail = promotionDto.Details.find(function (it) {
return it.QuantityMeet <= quantity;
});
switch (promotionDto.CashBackWay) {//返现方式
case _Enum.CashBackWay.DR_CashBackWay_00:
//折扣的情况
promotionDto.Details = [];
promotionDto.Details.push(promotionDetail);
_DiscountProcessBlock.DiscountProcessBlock.execute(retailDto, promotionDto, true);
break;
case _Enum.CashBackWay.DR_CashBackWay_01:
//返现金的情况
promotionDto.Details = [];
promotionDto.Details.push(promotionDetail);
_CashBackProcessBlock.CashBackProcessBlock.execute(retailDto, promotionDto, true);
break;
case _Enum.CashBackWay.DR_CashBackWay_02:
//阶梯折扣的情况
promotionDto.Details = promotionDto.Details.sort(function (a, b) {
return a.PieceMeet - b.PieceMeet;
});
_XPrieceProcessBlock.XPrieceProcessBlock.execute(retailDto, promotionDto, true);
break;
case _Enum.CashBackWay.DR_CashBackWay_03:
//成倍返现的情况
_SingleRepeatCashProcessBlock.SingleRepeatCashProcessBlock.execute(retailDto, promotionDto);
break;
case _Enum.CashBackWay.DR_CashBackWay_04:
//折后价的情况
_DiscountPriceProcessBlock.DiscountPriceProcessBlock.execute(retailDto, promotionDto);
break;
}
//执行完,调用零售单汇总
_SummaryProcessorBlock.SummaryProcessorBlock.execute(retailDto);
}
}, {
key: 'MatchPromotion',
value: function MatchPromotion(retailDto, detailDto, promotionList) {
//获取优先级精准匹配的
var firstMatcList = promotionList.filter(function (it) {
return it.PromotionObject == _Enum.PromotionObject.DR_PromotionObject_00 && it.Details && it.Details.some(function (x) {
return x.Idinventory == detailDto.Idinventory && x.Idunit == detailDto.Idunit;
}) && it.PromotionStore == _Enum.PromotionStore.DR_PromotionStore_00 && it.Stores && it.Stores.some(function (x) {
return x.Idstore == retailDto.Idstore;
});
}).sort(function (a, b) {
return b.PromotionId - a.PromotionId;
});
if (firstMatcList && firstMatcList.length > 0) {
return firstMatcList[0];
}
//精准没有匹配到
firstMatcList = promotionList.filter(function (it) {
return it.PromotionStore != _Enum.PromotionStore.DR_PromotionStore_04;
}).sort(function (a, b) {
return b.PromotionId - a.PromotionId;
});
if (firstMatcList && firstMatcList.length > 0) {
return firstMatcList[0];
}
promotionList = promotionList.sort(function (a, b) {
return b.PromotionId - a.PromotionId;
});
return promotionList[0];
}
}]);
return SelfSingleCashBackProcessBlock;
}();
//阶梯折扣
//折扣返现的情况
/**
*批量执行单品返现相关处理
*
* @export
* @class SelfSingleCashBackProcessBlock
*/
//# sourceMappingURL=SelfSingleCashBackProcessBlock.js.map