tplus-pos
Version:
pos module
262 lines (225 loc) • 8.37 kB
JavaScript
;
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