UNPKG

tplus-pos

Version:

pos module

139 lines (116 loc) 5.81 kB
'use strict'; 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