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 = '
';
$('#' + 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 = '';
$('#' + 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
);
}
}