var dadosNCM = new DadosNCM(); function DadosNCM() { this.list = null; this.meta = [ { name: 'ncm', type: 'int' }, { name: 'ncm_codigo', type: 'string' }, { name: 'ncm_desc', type: 'string' }, { name: 'ncm_busca', type: 'string' }, { name: 'ncmX', type: 'string' }, ]; this.dataAdapter = null; this.currentGridId = null; this.colunas = null; this.key = 'ncm'; this.allowAdd = true; this.tooltipOff = false; this.editorHeight = 0; this.createDataAdapter = function() { var source = { localdata: dadosNCM.list, datatype: "array", datafields: dadosNCM.meta, autoBind: true }; dadosNCM.dataAdapter = new $.jqx.dataAdapter(source); } this.clear = function() { dadosNCM.list = null; dadosNCM.dataAdapter = null; dadosNCM.currentGridId = null; dadosNCM.colunas = null; dadosNCM.key = 'ncm_codigo'; dadosNCM.onAddCCFunction = null; dadosNCM.allowAdd = null; dadosNCM.tooltipOff = false; dadosNCM.editorHeight = 0; } this.update = function(f) { dadosNCM.clear(); var url = http.getUrl('contahub.cmds.NCMCmd', 'getNCMsDeBusca') + '?emp=' + index.emp ; http.callHTTP( url, function(dados) { // console.log('getNCMsOK', dados); dadosNCM.list = dados.list; for (var i=0; i < dadosNCM.list.length; i++) { dadosNCM.list[i].ncmX = dadosNCM.list[i].ncm_codigo + ' → ' + dadosNCM.list[i].ncm_busca; } dadosNCM.createDataAdapter(); if (f) { f(); } }, http.alert ); } this.getDescFromCodigo = function(codigo) { var list = dadosNCM.list; for (var i=0; i < list.length; i++) { if (codigo == list[i].ncm_codigo) { return list[i].ncm_desc; } } return null; } this.getHierarchy = function(codigo) { var list = this.list; var result = new Array(); var i = 0; for (var i=0; i < list.length; i++) { var c = list[i]; if ( (codigo.toLowerCase() == c.ncm_codigo.toLowerCase()) || (codigo.toLowerCase().indexOf(c.ncm_codigo.toLowerCase())==0) ) { result.push(c); } } return result; } this.setGridId = function( gridId) { tooltipOff = false; dadosNCM.currentGridId = gridId; $('#' + dadosNCM.currentGridId).jqxTooltip(); return dadosNCM; } this.setColunas = function(colunas) { dadosNCM.colunas = colunas; return dadosNCM; } this.setKey = function(key) { dadosNCM.key = key; return dadosNCM; } this.tooltip = function (element, pageX, pageY) { if (dadosNCM.tooltipOff) { return; } var cell = $('#' + dadosNCM.currentGridId ).jqxGrid('getcellatposition', pageX, pageY); var coluna = cell.column; if (dadosNCM.colunas.indexOf(coluna)!=-1) { var ncm = cell.value; // console.log('tooltip', ncm, dadosNCM.currentGridId); if (ncm && (ncm!='')) { this.contador++; var html = '
NCM ' + ncm + '...
'; $('#' + dadosNCM.currentGridId).jqxTooltip({ content: html, autoHide: true, closeOnClick: true, theme: 'orange' }); $('#' + dadosNCM.currentGridId).jqxTooltip('open', pageX + 10, pageY + 0); dadosNCM.getNCM(ncm); return; } } $('#' + dadosNCM.currentGridId).jqxTooltip('close'); } this.contador = 0; this.tabelaTooltip = function(dados, ncm) { var tab = document.getElementById('tabTooltipNCM' + this.contador); if (!tab) { console.error('tabTooltipNCM não encontrado', this.contador); return } // console.log('tabelaTooltip', ncm, dados, tab); var ncms = dados['_contahub.entities.NCM']; var cest = dados['_contahub.entities.CEST']; var html = ''; var achou = false; for (var i=0; i < ncms.length; i++) { var bold = (i==ncms.length-1) ? '' : ''; var busca = ''; if (ncms[i].ncm_busca && (ncms[i].ncm_busca!='')) { busca = ' (' + ncms[i].ncm_busca + ')'; } html += '' + bold + ncms[i].ncm_codigo + '' + '' + bold + ncms[i].ncm_descoficial + busca + '' + '' ; if (ncm==ncms[i].ncm_codigo) { achou = true; } } if (!achou) { html += 'NCM Inexistente'; } if (cest && (cest.length>0)) { html += '---------- CEST\'s do NCM ----------'; for (var i=0; i < cest.length; i++) { html += '' + cest[i].cest_codigo + '' + '' + cest[i].cest_descoficial ; if (cest[i].q>0) { html += '(' + cest[i].q + ' produtos)'; } html += '' + '' ; } } tab.innerHTML = html; // console.log('tabelaTooltip', html, tab); } this.NCMS = new Array(); this.getNCM = function(ncm) { for (var i=0; i < dadosNCM.NCMS.length; i++) { if (dadosNCM.NCMS[i].ncm_codigo==ncm) { dadosNCM.tabelaTooltip(dadosNCM.NCMS[i].dados, ncm); return; } } var url = http.getUrl('contahub.cmds.NCMCmd', 'getNCM') + '?ncm_codigo=' + ncm ; http.callHTTP( url, function(dados) { console.log('getNCMOK', dados); dadosNCM.NCMS.push( {"ncm_codigo": ncm, "dados": dados } ); dadosNCM.tabelaTooltip(dados, ncm); }, http.alert ); } this.createEditorNCM = function (row, cellvalue, editor, cellText, width, height) { console.log('createEditorNCM', row, cellvalue, editor, width, height); dadosNCM.editorHeight = height; } this.initEditorNCM = function (row, cellvalue, editor, celltext, pressedkey) { console.log('initEditorNCM', row, cellvalue, editor, celltext, pressedkey); var inputField = $("").prependTo(editor); inputField.jqxInput( {placeHolder: "Centro de Custo" , source: dadosNCM.dataAdapter , searchMode: "containsignorecase" , displayMember: "ncmX" , valueMember: dadosNCM.key , minLength:1 , width: 350 , height: dadosNCM.editorHeight , theme:'orange' , filter: input.filterContainsAllTokens , sort: input.noSort , highlight: input.highlightTokens }); $('#' + dadosNCM.currentGridId).jqxTooltip('close'); dadosNCM.tooltipOff = true; if (pressedkey) { inputField.val(pressedkey); inputField.jqxInput('selectLast'); } else { if (cellvalue) { inputField.val(cellvalue); } else { inputField.val(''); } inputField.jqxInput('selectAll'); } $('#' + dadosNCM.currentGridId).jqxTooltip('close'); dadosNCM.tooltipOff = true; } this.getEditorValueNCM = function (row, cellvalue, editor) { dadosNCM.tooltipOff = false; var inputField = editor.find('input'); var x = inputField.val(); inputField.jqxInput('destroy'); console.log('getEditorValueNCM', x, row, cellvalue, editor); return x; } this.mouseOverCCInexistente = function (codigo,event) { console.log('+++', codigo, event); dadosNCM.codigoInexistente = codigo; } this.mouseOutCCInexistente = function (codigo,event) { console.log('---', codigo, event); dadosNCM.codigoInexistente = null; } this.tooltipCEST = function (element, pageX, pageY) { if (dadosNCM.tooltipOff) { return; } var cell = $('#' + dadosNCM.currentGridId ).jqxGrid('getcellatposition', pageX, pageY); var coluna = cell.column; // console.log( 'tootipCEST', coluna, cell.value ); var cest = cell.value; // console.log('tooltip', cest, dadosNCM.currentGridId); if (cest && (cest!='')) { var html = '
CEST ' + cest + '...
'; $('#' + dadosNCM.currentGridId).jqxTooltip({ content: html, autoHide: true, closeOnClick: true, theme: 'orange' }); $('#' + dadosNCM.currentGridId).jqxTooltip('open', pageX + 10, pageY + 0); dadosNCM.getCEST(cest); return; } $('#' + dadosNCM.currentGridId).jqxTooltip('close'); } this.tabelaTooltipCEST = function(dados, cest) { var tab = document.getElementById('tabTooltipCEST'); if (!tab) { return } var cests = dados['_contahub.entities.CEST']; var ncms = dados['_contahub.entities.NCM']; var html = ''; var achou = false; for (var i=0; i < cests.length; i++) { var bold = (i==cests.length-1) ? '' : ''; html += '' + bold + cests[i].cest_codigo + '' + '' + bold + cests[i].cest_descoficial + '' + '' ; if (cest==cests[i].cest_codigo) { achou = true; } } if (!achou) { html += 'CEST Inexistente'; } if (ncms && (ncms.length>0)) { html += '---------- NCM\'s do CEST ----------'; for (var i=0; i < ncms.length; i++) { html += '' + ncms[i].ncm_codigo + '' + '' + ncms[i].ncm_descoficial ; if (ncms[i].q>0) { html += '(' + ncms[i].q + ' produtos)'; } html += '' + '' ; } } tab.innerHTML = html; } this.CESTS = new Array(); this.getCEST = function(cest) { for (var i=0; i < dadosNCM.CESTS.length; i++) { if (dadosNCM.CESTS[i].cest_codigo==cest) { dadosNCM.tabelaTooltipCEST(dadosNCM.CESTS[i].dados, cest); return; } } var url = http.getUrl('contahub.cmds.NCMCmd', 'getCEST') + '?cest_codigo=' + cest ; http.callHTTP( url, function(dados) { // console.log('getCESTOK', dados); dadosNCM.CESTS.push( {"cest_codigo": cest, "dados": dados } ); dadosNCM.tabelaTooltipCEST(dados, cest); }, http.alert ); } }