%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/sale.mobile.order.barcodes/templates/.default/ |
Current File : /home/bitrix/www/bitrix/components/bitrix/sale.mobile.order.barcodes/templates/.default/script.js |
__MASaleOrderBarcode = function(params) { for(var key in params) this[key] = params[key]; this.INPUT_STYLE_WRONG = 0; this.INPUT_STYLE_OK = 1; this.productData = {}; this.barcodesData = {}; this.barcodesCheckRes = {}; this.isScanning = false; }; __MASaleOrderBarcode.prototype.setBarcodeData = function(inputId, barcode) { this.barcodesData[inputId] = barcode; }; __MASaleOrderBarcode.prototype.setBarcodeCheckRes = function(inputId, checkRes) { this.barcodesCheckRes[inputId] = checkRes; }; __MASaleOrderBarcode.prototype.setInput = function(inputId, barcode) { if(!inputId || !barcode) return; var inp = BX(inputId); if(!inp) return; inp.value = barcode; }; __MASaleOrderBarcode.prototype.getInput = function(inputId) { if(!inputId) return false; var input = BX(inputId); if(!input) return false; return input.value; }; __MASaleOrderBarcode.prototype.extractStoreId = function(inputId) { var tmp = inputId.split("_"), result = ""; if(tmp[2]) result = tmp[2]; return result; }; __MASaleOrderBarcode.prototype.makeInputId = function(storeId, barcodeId) { return 'bar_code_'+storeId+'_'+barcodeId; }; __MASaleOrderBarcode.prototype.check = function(inputId, barcode) { var _this = this; this.flagChecking = true; this.setBarcodeData(inputId, barcode); postData = { barcode: barcode, sessid: BX.bitrix_sessid(), basketItemId: this.basketItemId, id: this.orderId, storeId: this.extractStoreId(inputId), action: "check" }; BX.ajax({ timeout: 30, method: 'POST', dataType: 'json', url: this.ajaxUrl, data: postData, onsuccess: function(result) { if(result && !result.ERROR) { if(result.RESULT == 'Y') { _this.setInputStyle(inputId, _this.INPUT_STYLE_OK); _this.setBarcodeCheckRes(inputId, 'Y'); } else { _this.setInputStyle(inputId, _this.INPUT_STYLE_WRONG); _this.setBarcodeCheckRes(inputId, 'N'); } } else if(result.ERROR) { app.alert({ text: result.ERROR }); } else { app.alert({ text: BX.message('SMOB_CHECK_ERROR') }); } BX.onCustomEvent("onBitrixSaleMOBCheckingComplete"); }, onfailure: function(){ app.alert({ text: BX.message('SMOB_CHECK_ERROR') }); BX.onCustomEvent("onBitrixSaleMOBCheckingComplete"); } }); }; __MASaleOrderBarcode.prototype.setInputStyle = function(inputId, style) { var input = BX(inputId); if(!input) return; if(style == this.INPUT_STYLE_OK) input.style.color = "green"; else if(style == this.INPUT_STYLE_WRONG) input.style.color = "red"; else input.style.color = "#8F9396"; }; __MASaleOrderBarcode.prototype.scan = function(inputId) { var _this = this; this.isScanning = true; app.openBarCodeScanner({ callback:function(data) { if (data.text) { _this.setInput(inputId, data.text); _this.check(inputId, data.text); } else { app.alert( { text: BX.message('SMOB_SCAN_ERROR'), button:"OK" } ); } } }); }; __MASaleOrderBarcode.prototype.setBarcodes = function(params) { if(this.isScanning) { this.isScanning = false; return; } this.productData = params; var barcodesHtml = '', val = '', inpId; for (var storeId in params.STORES) { var barcodes = []; if(params.STORES[storeId].BARCODE) for(var bId in params.STORES[storeId].BARCODE) barcodes.push(params.STORES[storeId].BARCODE[bId]); if(params.STORES[storeId].QUANTITY > 0) { var bcCount = 1; if(params.BARCODE_MULTI == "Y") bcCount = params.STORES[storeId].QUANTITY; for (var i = bcCount - 1; i >= 0; i--) { inpId = this.makeInputId(storeId, i); if(barcodes.length > 0) { val = barcodes.pop(); this.check(inpId, val); } else { val = ''; } barcodesHtml += this.prepareBarcodeHtml(i, params.STORES[storeId], val); } } } var barcodesData = BX("smob_data_div"); if(barcodesData) barcodesData.innerHTML = barcodesHtml; }; __MASaleOrderBarcode.prototype.prepareBarcodeHtml = function(barcodeId, storeData, value) { var result = this.itemTmpl.replace(/##STORE_ID##/g, storeData.STORE_ID); result = result.replace(/##STORE_NAME##/g, storeData.STORE_NAME); result = result.replace(/##BARCODE_ID##/g, barcodeId); result = result.replace(/##VALUE##/g, value); return result; }; __MASaleOrderBarcode.prototype.prepareResult = function() { var stId = '', isAllChecksOK = 'Y'; for(var storeId in this.productData.STORES) { this.productData["STORES"][storeId]["BARCODE"] = []; this.productData["STORES"][storeId]["BARCODE_FOUND"] = []; for(var inputId in this.barcodesData) { stId = this.extractStoreId(inputId); if(stId == storeId) { if(!this.barcodesData[inputId]) this.barcodesData[inputId] = this.getInput(inputId); this.productData["STORES"][storeId]["BARCODE"].push(this.barcodesData[inputId]); delete(this.barcodesData[inputId]); if(!this.barcodesCheckRes[inputId]) this.barcodesCheckRes[inputId] = 'N'; if(isAllChecksOK == 'Y' && this.barcodesCheckRes[inputId] == 'N') isAllChecksOK = 'N'; this.productData["STORES"][storeId]["BARCODE_FOUND"].push(this.barcodesCheckRes[inputId]); delete(this.barcodesCheckRes[inputId]); } } } this.productData["ALL_CHECKS_RESULT"] = isAllChecksOK; return this.productData; }; __MASaleOrderBarcode.prototype.close = function() { if(app.enableInVersion(8)) app.closeModalDialog(); else app.closeController({drop: true}); };