var autoComplete = new AutoComplete(); var contahub = new ContaHUB(); var telasConfig = new TelasConfig(); setTimeout('contahub.init()',10); function ContaHUB() { this.servidor = 'http://sp.contahub.com'; this.sessao = {}; this.initiated = false; this.init = function() { console.log('contahub.js.jsp init()'); if (!http) { console.error('http not loaded'); setTimeout('contahub.init()',10); return; } var s = window.location.href; console.log('url',s); if (s.indexOf('#')>10) { s = s.substring(0, s.indexOf('#')); } if (s.lastIndexOf('/')>10) { s = s.substring(0, s.lastIndexOf('/')); } http.setServlet( s + '/rest/'); http.setUrlModifier( contahub.urlModifier ); contahub.cookies(); this.initiated = true; } this.cookies = function() { var cookieDevice = http.getCookie('device'); if (cookieDevice) { console.log('cookie device ', cookieDevice); http.setCookie('device', cookieDevice, 360, 'contahub.com'); } else { var id = util.getBrowser(); if (!id) { id = 'X'; } else { id = id.substring(0,1); } var so = util.getSO(); if (so) { id += so.substring(0,1); } id += new Date().getTime(); id += ":" + Math.trunc(9 * Math.random()); http.setCookie('device', id, 360, 'contahub.com'); console.error('novo device id=', id, ' so=', so); } } this.urlModifier = function(url) { if ( (url) && (contahub.emp>0) ) { if (url.indexOf('emp=')==-1) { if (url.indexOf('?')==-1) { url += '?'; } else { url += '&'; } url += 'emp=' + contahub.emp; } if (url.indexOf('nfe=')==-1) { if (url.indexOf('?')==-1) { url += '?'; } else { url += '&'; } url += 'nfe=' + contahub.nfe; } if (smartpos.pos && (url.indexOf('pos=')==-1)) { if (url.indexOf('?')==-1) { url += '?'; } else { url += '&'; } url += 'pos=' + smartpos.pos; } if (index.posEspelhado && (url.indexOf('posEspelhado=')==-1)) { if (url.indexOf('?')==-1) { url += '?'; } else { url += '&'; } url += '_posEspelhado=' + index.posEspelhado; } } return url; } this.getSessao = function(fComSessao, fSemSessao, fFailure) { var url = http.getUrl('contahub.cmds.UsuarioCmd', 'getSessao'); if (smartpos && smartpos.emp) { url += "?_emp=" + smartpos.emp; if (smartpos.pos) { url += "&pos=" + smartpos.pos; url += "&pos_sessao=" + smartpos.sessao; } } http.callHTTP( url , function(dados) { console.log("getSessao:" , dados); contahub.sessao = dados; guru.sessao = dados; // TODO - eliminar isso guru.sessao.Usuario = dados; // TODO if (dados.usr) { contahub.u = dados.Usuario; contahub.configs = contahub.u['_contahub.entities.Config']; contahub.e = dados.Empresa; contahub.ee = dados['_contahub.entities.Empresa']; contahub.usr = dados.usr; contahub.emp = dados.emp; contahub.nfe = dados.nfe; contahub.nfeDesc = dados.nfe_desc; contahub.empresaEhSimples = (dados.nfe_crt=='1'); util.dddPadrao = dados.mun_ddd; contahub.empLabel = dados.emp_nome; contahub.nfe2 = 0; for (var i=0; i< contahub.ee.length; i++) { if ( (contahub.ee[i].emp==contahub.emp) && (contahub.ee[i].nfe!=contahub.nfe) ) { contahub.nfe2 = contahub.ee[i].nfe; break; } } if (contahub.nfe2) { contahub.empLabel = '#' + contahub.nfe + (dados.nfe_desc ? (' ' + dados.nfe_desc) : '') + '→' + contahub.empLabel ; } { var rotinas = contahub.u['_contahub.entities.Rotina']; contahub.u.rtn = {}; for (var i=0; i 1) { if (contahub.e.emp_produto == 6) { return true; } } return false; } this.getIntConfig = function(v) { var s = this.configs[v]; if (!s) { return 0; } return s * 1; } this.getJsonConfig = function(v) { var s = this.configs[v]; if (!s) { return {}; } try { return JSON.parse(s); } catch(e) { console.log(v, s, e); return {}; } } this.getBooleanConfig = function(v) { var s = this.configs[v]; if (!s) { return false; } var result = ("|S|SIM|T|TRUE|".indexOf('|' + s.toUpperCase() + '|')!=-1); return result; } this.lastError = null; this.browser = null; setTimeout(function() { contahub.browser = { appName: navigator.appName, appVersion: navigator.appVersion, language: navigator.language, platform: navigator.platform, onLine: navigator.onLine, userAgent: navigator.userAgent }; },100); this.urlsAbertas = []; this.urls = function(url) { if (contahub.urlsAbertas.length>10) { contahub.urlsAbertas.shift(); } if (url.indexOf('/')!=-1) { url = url.substring(url.lastIndexOf('/')); } var x = {url:url}; try { var d = new Date(); x.date = '' + d; x.hhmmss = dateFunctions.yyyymmdd_hhmmss(d); x.milis = d.getTime(); } catch (e) { } contahub.urlsAbertas.push( x ); } this.onerror = function(msg, url, line, col, error) { contahub.lastError = { msg:msg, line:line, }; try { var d = new Date(); url = (contahub.urlsAbertas.length ? contahub.urlsAbertas[contahub.urlsAbertas.length-1].url : url); contahub.lastError.url = url; { var s = '' + error.stack.substring(); if (s.indexOf('at ')!=-1) { s = s.substring( s.indexOf('at ') ); } while (s.indexOf('jquery') != -1) { var s1 = s.substring(0,s.indexOf('jquery')); var s2 = s.substring(s.indexOf('jquery')); if (s1.lastIndexOf('://')!=-1) { break; } s = s1.substring(0, s1.lastIndexOf('://') + 1); if (s2.indexOf('.js')==-1) { s += s2; break; } s += s2.substring(s2.indexOf('.js')+3); } s = util.replaceAll(s,'@https:',''); s = util.replaceAll(s,'http:',''); s = util.replaceAll(s,'','_'); s = util.replaceAll(s,'\n',' '); s = util.replaceAll(s,' ',' '); s = util.replaceAll(s,' ',' '); s = util.replaceAll(s,' ',' '); s = util.replaceAll(s,'eval at _',''); contahub.lastError.stack = s; } contahub.lastError.hhmmss = dateFunctions.yyyymmdd_hhmmss(d); contahub.lastError.milis = d.getTime(); contahub.lastError.date = '' + d; } catch (e) { console.error(e); } console.error(contahub.lastError); var suppressErrorAlert = true; // If you return true, then error alerts (like in older versions of // Internet Explorer) will be suppressed. return suppressErrorAlert; }; this.lastReport = null; this.reportError = function() { try { if (contahub.lastError && contahub.lastError.noReport) { return; } if ( (!contahub.lastError) || (contahub.lastError.report) ) { return; } if ( contahub.lastReport ) { if (dateFunctions.secondsUntilNow(contahub.lastReport.report)<60) { contahub.lastError.noReport = true; console.error('Nao reporta erros com menos de 1min', contahub.lastReport, contahub.lastError); return; } if (contahub.lastReport.line==contahub.lastError.line) { contahub.lastError.noReport = true; console.error('Nao reporta o mesmo erro', contahub.lastReport, contahub.lastError); return; } } setTimeout( function() { try { contahub.lastReport = contahub.lastError; contahub.lastError.report = new Date(); var s = "error: " + JSON.stringify(contahub.lastReport, null, 2); s += "\n\nbrowser: " + JSON.stringify(contahub.browser, null, 2); s += "\n\nurls: " + JSON.stringify(contahub.urlsAbertas, null, 2); var formData = []; formData.push( {"id": "log_texto", "value": s } ); var url = http.getUrl('contahub.cmds.LogCmd', 'reportJSError') + '?emp=' + index.emp ; http.callHTTP( url , function(dados) { console.log('reportJSError', dados); } , function(msg) { console.log('reportJSError', msg, formData); } , formData ); } catch (e) { console.error(e); } },500); } catch(e) { console.error(e); } } this.v = null; this.vAnterior = null; this.setVenda = function(v) { if (this.v) this.vAnterior = this.v; this.v = null; } this.iFoodMerchants = []; this.iFoodMerchantsObj = {}; this.iFoodLoadMerchants = function() { var url = http.getUrl('contahub.a.iFood.iFood2Cmd', 'getMerchants'); http.callHTTP( url, function(dados) { var mm = dados.merchants; console.log('getMerchants', mm); contahub.iFoodMerchants = mm; contahub.iFoodMerchantsObj = {}; for (var i=0; i1) && (n2.length>1) ) { n1 = n1.shift(); n2 = n2.shift(); console.error(n1, n2); m1._usetokens = true; m2._usetokens = true; } } } console.log('iFood merchants', contahub.iFoodMerchantsObj); }, console.error ); } this.produtosProntos = false; this.produtosNaFila = false; this.processaVendas = function(vv, busca) { contahub.produtosProntos = false; contahub.produtosNaFila = false; var abertas = { maxIcones:0, maxLocalizacao:0, maxComanda:0, maxCliente:0, n:0, }; var fechadas = { maxIcones:0, maxLocalizacao:0, maxComanda:0, maxCliente:0, n:0, }; var tela = {abertas:abertas, fechadas:fechadas, w: $(window).width(), n: vv.length}; for (var i=0; i 1 ? ( v.vd_pessoas + 'p' ) : ''; if (v._desc.indexOf('Bc ')==0) { var desc = 'Bc '; var comp = v._desc.substring(2).trim(); var i = comp.indexOf(' '); if (i!=-1) { desc += comp.substring(0,i); comp = comp.substring(i).trim(); } v._complemento = comp; v._desc = desc; } else if (v._desc.indexOf('iF ')==0) { v._complemento = (v._desc + ' ').substring(0, 5).trim(); v._desc = v._desc.substring(v._desc.lastIndexOf(' ') + 1).trim(); v._ifood = true; if (contahub.iFoodMerchantsObj) { var merchant = contahub.iFoodMerchantsObj[v.vd_localizacao]; if (!merchant) { console.error('merchant nao encontrado:', v.vd_localizacao, contahub.merchantsObj); } else if (merchant._usetokens) { v._vd_localizacao = merchant._tokens.join(' '); } } } if (v._complemento == '') { v._complemento = v._info; v._info = ''; } if ( (v.vd_vrpagamentos ? v.vd_vrpagamentos : 0) + (v.vd_vrfalta ? v.vd_vrfalta : 0) != 0) { v._info = util.money( (v.vd_vrpagamentos ? v.vd_vrpagamentos : 0) + (v.vd_vrfalta ? v.vd_vrfalta : 0) , " R$"); } v._ehDoUsuario = (v.usr_abriu==index.usr); v._abertaPeloCliente = ( (!(v.usr_abriu)) || (v.usr_abriu==0) ); v._fechada = v.vd_hrfechamento ? true : false; if (index.filtro.Usr && (!v._ehDoUsuario) && (!v._abertaPeloCliente) ) { v._filtrado = 'nao é do usuário'; return; } if (index.filtro.Internas && v.vd_interna) { v._filtrado = 'interna'; return; } if (index.filtro.Encerradas && v.vd_hrfechamento) { v._filtrado = 'finalizada'; return; } if (index.filtro.Numericas) { if (v.vd_mesadesc==util.onlyDigits(v.vd_mesadesc)) { v._filtrado = 'numérica'; return; } } if (index.filtro.iF && v._ifood) { v._filtrado = 'ifood'; return; } if (index.filtro.Dv && ( (v.vd_delivery=='D') || (v.vd_delivery=='S') ) && (!v.vd_mesadesc.match(/iF\s/g)) && (!v.vd_mesadesc.match(/aC\s/g)) ) { v._filtrado = 'delivery'; return; } if (index.filtro.Bc && (v.vd_mesadesc.match(/Bc\s/g)) ) { v._filtrado = 'balcao'; return; } if ( (busca!='') && (util.semAcentos(v.vd_mesadesc).toUpperCase().indexOf(busca)==-1) && ( (!v.cli_nome) || (util.semAcentos(v.cli_nome).toUpperCase().indexOf(busca)==-1) ) && ( (!v.vd_localizacao) || (util.semAcentos(v.vd_localizacao).toUpperCase().indexOf(busca)==-1) ) && ( (!v.vd_idexterno) || (util.semAcentos(v.vd_idexterno).toUpperCase().indexOf(busca)==-1) ) ) { v._filtrado = 'busca'; return; } v._filtrado = null; v._cor = v._ehDoUsuario ? 'lime' : 'rgba(85, 255, 0,0.3)'; if ( (v.nfe) && (v.nfe!=index.u.nfe) ) { v._cor = 'red'; v._alt = 'Venda é do CNPH #' + v.nfe; } if (v.vd_hrfechamento) { if ( (contahub.getBooleanConfig('NAVEGACAO_VENDA_INDIVIDUAL_CHECK_IN_OUT')) && (!v.vd_hrsaida) && (v.vd_mesadesc.indexOf('Bc ')!=0) ) { v._cor = 'green'; } else { v._cor = v.vd_qtditens ? (v._ehDoUsuario ? 'rgb(192, 192, 192)' : 'rgba(192, 192, 192,0.3)') : 'white'; } } else if (v.vd_chamando=='S') { v._cor = v._ehDoUsuario ? 'rgb(255, 204, 0)' : 'rgba(255, 204, 0,0.3)'; } else if ( (v.vd_hrencerramento) && (v.vd_vrfalta) ) { v._cor = 'yellow'; v._cor = v._ehDoUsuario ? 'rgb(255, 255, 0)' : 'rgba(255, 255, 0,0.3)'; } else if ( (!v.vd_vrprodutos) && (v._cor!='red') ) { v._cor = 'white'; } else if ( (!v.usr_abriu) && (v.vd_vrprodutos) && (v.cht) && (v.vd_sinalizacao=='B') ) { v._cor = 'cyan'; } v._icones = []; if (v.nf_rejeitada) { v._icones.push(''); } else if (v.nf_contingencia=='S') { v._icones.push(''); } else if (v.nf_nnf && !v.nf_autorizada) { v._icones.push(''); } if (v.vd_sinalizacao) { if (v.vd_sinalizacao.indexOf('G')!=-1) { v._icones.push(''); contahub.produtosProntos = true; } if (v.vd_sinalizacao.indexOf('B')!=-1) { v._icones.push(''); } } if (v.nf_autorizada) { if (v.nf_tipo=='NFe') { v._icones.push(''); } else if (v.nf_tipo=='NFSe') { v._icones.push(''); } else { v._icones.push(''); } } if (v.vd_hrencerramento && !v.vd_hrfechamento) { v._icones.push(''); } if (v.vd_hragendamento) { if (dateFunctions.yyyymmdd(v.vd_hragendamento)==dateFunctions.yyyymmdd(new Date())) { v._icones.push(''); v._agendamento = dateFunctions.hhmm(v.vd_hragendamento); } else { v._icones.push(''); v._agendamento = dateFunctions.ddmmm_thisYear(v.vd_hragendamento); } } if (v.vd_sinalizacao) { if (v.vd_sinalizacao.indexOf('P')!=-1) { v._icones.push(''); } if (v.vd_sinalizacao.indexOf('F')!=-1) { v._icones.push(''); } if (v.vd_sinalizacao.indexOf('C')!=-1) { v._icones.push(''); contahub.produtosNaFila = true; } } if (v.vd_vrpagamentos && !v.vd_hrfechamento) { v._icones.push(''); } if ((v.vd_imprimiuconta=='S') && (!v.vd_hrfechamento)) { v._icones.push(''); } if (v.vd_delivery=='S') { v._icone1 = ''; } else if (v.vd_retirar=='R') { v._icone1 = ''; } else if (v.vd_retirar=='P') { v._icone1 = ''; } else if (v.vd_mesadesc.indexOf('Bc ')==0) { v._icone1 = ''; v._balcao = true; } else { // v._icone1 = ''; } if (v.ech_bloqueado=='S') { v._icone0 = ''; } else if (v.ech_vip > 0) { v._icone0 = ''; } if (v.cht && (v.cht_plataforma=='G')) { v._icone2 = ''; } else if (v.cht && (v.cht_plataforma=='T')) { v._icone2 = ''; } else if (v.vd_mesadesc.indexOf('iF ')==0) { v._icone2 = ''; } else if (v.vd_mesadesc.indexOf('Rp ')==0) { v._icone2 = ''; } else if (v.cli || v.con) { v._icone2 = ''; } v._tela = tela; v._tela2 = v._fechada ? tela.fechadas : tela.abertas; v._tela.n++; v._tela2.n++; if (v._icones && v._icones.length) { v._tela2.maxIcones++; } if (v._cliente && (v._cliente.length>v._tela2.maxCliente)) { v._tela2.maxCliente = v._cliente.length; } if (v._desc && (v._desc.length>v._tela2.maxComanda)) { v._tela2.maxComanda = v._desc.length; } if (v.vd_localizacao && (v.vd_localizacao.length>v._tela2.maxLocalizacao)) { v._tela2.maxLocalizacao = v.vd_localizacao.length; } } this.fillSelect = function(cmd, metodo, key, desc, selId) { var url = http.getUrl(cmd, metodo); http.callHTTP( url, function(dados) { var elem = document.getElementById(selId); var html = elem.innerHTML; for (var i=0; i' + x[desc] + ''; } elem.innerHTML = html; } , http.alert ); } } function AutoComplete() { this.minChar = {prdVenda:3 ,prdCompra:3 ,prd_nfencm:3 ,prd_nfecest:3 ,cli_fone:5 ,cli_cpf:3 ,cli_cep:5 ,cli_nome:3 ,cli_email:3 ,cc_codigo:2 }; this.desconsideraBuscaAnterior = {prd_nfencm:true}; this.buscaAnterior = new Object(); this.lista = new Object(); this.naoSobrescrever = new Object(); this.setInput = function(id) { $("#" + id ).on("input", autoComplete.autocompleteInput); autoComplete.buscaAnterior[id] = null; } this.autocompleteInput = function(e) { index.panelDireitaOpen = new Date(); var id = e.target.id; var val = $(this).val().trim(); var dataList = $('#' + id + 'Datalist'); console.log('autocompleteInput', id, "val:[", val, "]", autoComplete.buscaAnterior[id], e); var minChar = autoComplete.minChar[id] ? autoComplete.minChar[id] : 3; if (val.length < minChar) { dataList.empty(); autoComplete.buscaAnterior[id] = null; console.log('0', val, id, autoComplete.minChar[id], minChar); return; } if (val.indexOf('#')!=-1) { var l = autoComplete.lista[id]; if (!l) { l = []; } console.log('1', val, l); for (var i=0; i < l.length; i++) { var c = l[i]; console.log('2', '[' + c._autocomplete + ']', '[' + val + ']', c); if ( c._autocomplete && (c._autocomplete.trim()==val.trim()) ) { var campos = Object.keys(c); console.log('3', campos, c); for (var j=0; j < campos.length; j++) { var elem = document.getElementById(campos[j]); if (elem) { if ( (autoComplete.naoSobrescrever[id]) && (elem.value.trim()!='') ) { if (autoComplete.naoSobrescrever[id].indexOf(campos[j])!=-1) { console.log('nao sobrescrever', campos[j]); continue; } } if (elem.type.toUpperCase()=='DATE') { if (c[campos[j]].indexOf('T')!=-1) { c[campos[j]] = c[campos[j]].substring(0, c[campos[j]].indexOf('T')); } } elem.value = c[campos[j]]; console.log('4', elem.id, elem.value, elem.type); } } if (autoComplete.onSelected) { autoComplete.onSelected(c); } return; } } } if ( (autoComplete.buscaAnterior[id]) && (val.indexOf(autoComplete.buscaAnterior[id])==0) ) { if (!autoComplete.desconsideraBuscaAnterior[id]) { if (autoComplete.lista[id].length < 30) { return; } } } var url = http.getUrl('contahub.cmds.AutocompleteCmd', 'getAutocomplete_' + id) + '?emp=' + contahub.emp + '&_autocomplete=' + encodeURI(val) ; http.callHTTP( url , function(dados) { console.log('getAutocomplete_' + id, dados, dataList); if (dados.list) { autoComplete.lista[id] = dados.list; autoComplete.buscaAnterior[id] = val; dataList.empty(); for (var i=0; i < dados.list.length; i++) { var opt = $("").attr("value", dados.list[i]._autocomplete); dataList.append(opt); console.log('***' + id, dados.list[i]._autocomplete); } } else { autoComplete.lista[id] = []; } } , console.log ); } } function TelasConfig() { this.telas = { "venda-carrinho": {desc:"Cesta de Compras", v:[ { id:"teclado", desc:"Exibe teclado virtual", checkbox:true, def:false } ,{ id:"omitepagamento", desc:"Omite botões de pagamento", checkbox:true, def:false } ,{ id:"h", desc:"Altura da linha (px)", text:true, def:"39" } ] }, "venda-view": {desc:"Tela de Vendas", v:[ { id:"hpag", desc:"Altura dos botões de pagamento (px)", text:true, def:"29" } ,{ id:"omitepessoas", desc:"Omite botão de número de pessoas", checkbox:true, def:false } ,{ id:"omitecontadetalhada", desc:"Omite botão de conta detalhada", checkbox:true, def:false } ,{ id:"omiteimprimirmini", desc:"Omite botão de imprimir na mini impressora", checkbox:true, def:false } ,{ id:"omiteimprimirfichas", desc:"Omite botão de imprimir fichas", checkbox:true, def:false } ,{ id:"omitebutlocalizacao", desc:"Omite botão de localização", checkbox:true, def:false } ] }, "vendas" : {desc:"Tela de Vendas", v:[ { id:"falta", desc:"Valor (R$) de conta a exibir (Vr.Falta)", text:true, def:"" } ,{ id:"tempo", desc:"Tempo sem consumo a alertar (minutos)", text:true, def:"" } ,{ id:"omiteagente", desc:"Omite status do AgenteLocal", checkbox:true, def:false } /* { id:"if", desc:"Omite iFood (iF)", checkbox:true, def:false } ,{ id:"bc", desc:"Omite Balcão (Bc)", checkbox:true, def:false } ,{ id:"dv", desc:"Omite Delivery (Dv, rP, gM)", checkbox:true, def:false } ,{ id:"internas", desc:"Omite Internas (Insumo,...)", checkbox:true, def:false } ,{ id:"encerradas", desc:"Omite vendas encerradas", checkbox:true, def:false } ,{ id:"finalizadas", desc:"Omite vendas finalizadas", checkbox:true, def:false } ,{ id:"numericas", desc:"Omite vendas numericas", checkbox:true, def:false } ,{ id:"balanca", desc:"Omite Balanças", checkbox:true, def:false } ,{ id:"praca", desc:"Omite vendas fora da Praça", checkbox:true, def:false } ,{ id:"localizacao", desc:"Praça (Localização)", text:true } ,{ id:"ordem", desc:"Ordem das Vendas", options:"", def:"x" } ,{ id:"_imp", desc:"Impressora", options:"", tabela:"contahub.entities.Impressora", } */ ] }, }; this.val = function(tela, v) { var id = 'v_' + tela + '_' + v; if (index.telasConfig[id]!=null) { return index.telasConfig[id]; } var t = telasConfig.telas[tela]; for (var i=0; i