UNPKG

tplus-pos

Version:

pos module

262 lines (225 loc) 8.37 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.MergeDetailsProcessorBlock = undefined; var _map = require('babel-runtime/core-js/map'); var _map2 = _interopRequireDefault(_map); 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 _tplusPoslogin = require('tplus-poslogin'); var _Enum = require('../../commom/Enum'); var _mutantsUtil = require('mutants-util'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** *合并行处理 * * @export * @class MergeDetailsProcessorBlock * @auther 马坚 */ /** *合并行处理 *Created by majianb on 2019/4/10 * @export * @class MergeDetailsProcessorBlock */ var MergeDetailsProcessorBlock = exports.MergeDetailsProcessorBlock = function () { function MergeDetailsProcessorBlock() { (0, _classCallCheck3.default)(this, MergeDetailsProcessorBlock); } (0, _createClass3.default)(MergeDetailsProcessorBlock, null, [{ key: 'execute', value: function execute(dto, targetIndex) { var _this = this; // 扫描相同商品累加 var accwhenScan = (0, _tplusPoslogin.PosInitData)("AccwhenScan"); if (_mutantsUtil.platform.isVerticalTouch) //自助收银,都会自动累加 { accwhenScan = _Enum.AccwhenScan.accwhenScan_02; } if (_Enum.AccwhenScan.accwhenScan_03 == accwhenScan) { return; } dto.RetailDetails.forEach(function (detail) { var mergeKey = _this.getDetailKey(detail); JSON.setCellValue(detail, "mergeKey", mergeKey); }); if (_Enum.AccwhenScan.accwhenScan_01 == accwhenScan) { // 与上行相同才累加 var returnValue = this.getOriginalNewDetail(dto); var newList = returnValue.newList; var originalList = returnValue.originalList; dto.RetailDetails = new Array(); originalList.forEach(function (detail) { dto.RetailDetails.push(detail); }); if (dto.RetailDetails.length > 0) { var origDetailLast = dto.RetailDetails[targetIndex]; var origDetailKey = JSON.getCellValue(origDetailLast, "mergeKey"); newList.forEach(function (detail) { var detailKey = JSON.getCellValue(detail, "mergeKey"); if (origDetailKey === detailKey) { _this.addDetailValue(origDetailLast, detail); JSON.setCellValue(origDetailLast, "isCurrentOperate", true); } else { var canInsertRow = (0, _tplusPoslogin.PosInitData)("CanInsertRow"); if (canInsertRow) { dto.RetailDetails.splice(targetIndex + 1, 0, detail); } else { dto.RetailDetails.push(detail); } } }); } else { newList.forEach(function (detail) { dto.RetailDetails.push(detail); }); } } if (_Enum.AccwhenScan.accwhenScan_02 == accwhenScan) { // 累加 var retailDetailsMap = new _map2.default(); dto.RetailDetails.forEach(function (detail) { $T.debugger(); var detailKey = JSON.getCellValue(detail, "mergeKey"); var originalDetail = retailDetailsMap.get(detailKey); if (originalDetail) { _this.addDetailValue(originalDetail, detail); JSON.setCellValue(originalDetail, "isCurrentOperate", true); retailDetailsMap.set(detailKey, originalDetail); } else { retailDetailsMap.set(detailKey, detail); } }); dto.RetailDetails = new Array(); retailDetailsMap.forEach(function (value, key, map) { dto.RetailDetails.push(value); }); } dto.RetailDetails.forEach(function (detail) { JSON.ClearDynamicProperty(detail, "mergeKey"); }); } /** * 获取新增的行 * @param {*} dto */ }, { key: 'getOriginalNewDetail', value: function getOriginalNewDetail(dto) { var newList = new Array(); var originalList = new Array(); for (var index = 0; index < dto.RetailDetails.length; index++) { var detail = dto.RetailDetails[index]; var isCurrentOperate = JSON.getCellValue(detail, "isCurrentOperate"); if (isCurrentOperate) { newList.push(detail); } else { originalList.push(detail); } } var returnValue = {}; returnValue.newList = newList; returnValue.originalList = originalList; return returnValue; } /** * 获取原来最后一行 * @param {*} dto */ }, { key: 'getLastOriginalDetail', value: function getLastOriginalDetail(dto) { for (var index = 0; index < dto.RetailDetails.length; index++) { var detail = dto.RetailDetails[index]; var isCurrentOperate = JSON.getCellValue(detail, "isCurrentOperate"); if (isCurrentOperate) { return index - 1; } } return -1; } }, { key: 'getDetailKey', /** * 获取当前列的key * * @param {*} detail * @returns * @memberof MergeDetailsProcessorBlock */ value: function getDetailKey(detail) { if (detail.Inventory.IsSerialNumber) //序列号存货不合并,以行号作唯一键 return "Code|Code=" + detail.Code; var returnKey = ""; var keyFields = "FreeItem0,FreeItem1,FreeItem2,FreeItem3,FreeItem4,FreeItem5,FreeItem6,FreeItem7,FreeItem8,FreeItem9"; keyFields += ",Idinventory,Idunit,Idunit2,Batch,ProductionDate,ExpiryDate,TaxPrice,DiscountRate,MemberDiscountRate,Idperson,IsPresent,PromotionIdStr,ReturnSourceDetailId,SerialNumber"; var keyArrays = keyFields.split(","); for (var index = 0; index < keyArrays.length; index++) { var value = ""; if (JSON.getCellValue(detail, keyArrays[index])) { value = JSON.getCellValue(detail, keyArrays[index]); } if (value && (keyArrays[index] == 'ProductionDate' || keyArrays[index] == 'ExpiryDate')) { var date = value; if (typeof value == "string") { date = new Date(value); } value = date.toLocaleDateString(); } returnKey = returnKey + "|" + keyArrays[index] + "=" + this.cutNumberZero(value); } return returnKey; } }, { key: 'cutNumberZero', value: function cutNumberZero(old) { if (!Number.isNumber(old)) { return old; } //拷贝一份 返回去掉零的新串 old = old + ""; var newstr = old; //循环变量 小数部分长度 var leng = old.length - old.indexOf(".") - 1; //判断是否有效数 if (old.indexOf(".") > -1) { //循环小数部分 for (var i = leng; i > 0; i--) { //如果newstr末尾有0 if (newstr.lastIndexOf("0") > -1 && newstr.substr(newstr.length - 1, 1) == 0) { var k = newstr.lastIndexOf("0"); //如果小数点后只有一个0 去掉小数点 if (newstr.charAt(k - 1) == ".") { return Number(newstr.substring(0, k - 1)); } else { //否则 去掉一个0 newstr = newstr.substring(0, k); } } else { //如果末尾没有0 return Number(newstr); } } } return Number(old); } }, { key: 'addDetailValue', value: function addDetailValue(currentDetail, oldDetail) { var fields = 'Quantity,Quantity2,Amount,TaxAmount,Tax,DetailDiscountAmount,RetailAmount'; var keyArrays = fields.split(","); for (var index = 0; index < keyArrays.length; index++) { var currentValue = JSON.getCellValue(currentDetail, keyArrays[index]); var OldValue = JSON.getCellValue(oldDetail, keyArrays[index]); JSON.setCellValue(currentDetail, keyArrays[index], Math.Add(currentValue, OldValue)); } } }]); return MergeDetailsProcessorBlock; }(); //# sourceMappingURL=MergeDetailsProcessorBlock.js.map