var dadosCC = new DadosCC();
function DadosCC()
{
this.list = null;
this.meta = [
{ name: 'cc', type: 'int' },
{ name: 'cc_codigo', type: 'string' },
{ name: 'cc_desc', type: 'string' },
{ name: 'ccx', type: 'string' },
];
this.dataAdapter = null;
this.currentGridId = null;
this.colunas = null;
this.key = 'cc';
this.onAddCCFunction = null;
this.allowAdd = true;
this.tooltipOff = false;
this.editorHeight = 0;
this.newCC = function(cc)
{
console.log('newCC', dadosCC.list);
dadosCC.list.push(cc);
dadosCC.createDataAdapter();
}
this.createDataAdapter = function()
{
var source = {
localdata: dadosCC.list,
datatype: "array",
datafields: dadosCC.meta,
autoBind: true
};
dadosCC.dataAdapter = new $.jqx.dataAdapter(source);
}
this.clear = function()
{
dadosCC.list = null;
dadosCC.dataAdapter = null;
dadosCC.currentGridId = null;
dadosCC.colunas = null;
dadosCC.key = 'cc';
dadosCC.onAddCCFunction = null;
dadosCC.allowAdd = null;
dadosCC.tooltipOff = false;
dadosCC.editorHeight = 0;
}
this.update = function(f)
{
dadosCC.clear();
var url = http.getUrl('contahub.cmds.fin.FinanceiroCmd', 'getCCs')
+ '?emp=' + index.emp
;
http.callHTTP( url,
function(dados)
{
console.log('getCCsOK', dados);
dadosCC.list = dados.list;
for (var i=0; i < dadosCC.list.length; i++)
{
dadosCC.list[i].ccx = dadosCC.list[i].cc_codigo + ' → ' + dadosCC.list[i].cc_desc;
}
dadosCC.createDataAdapter();
if (f)
{
f();
}
},
http.alert
);
}
this.getDescFromCC = function(cc)
{
var list = dadosCC.list;
if (!list)
{
return null;
}
for (var i=0; i < list.length; i++)
{
if (cc == list[i].cc)
{
return list[i].cc_desc;
}
}
return null;
}
this.getDadosFromCC = function(cc)
{
var list = dadosCC.list;
if (!list)
{
return null;
}
for (var i=0; i < list.length; i++)
{
if (cc == list[i].cc)
{
return list[i];
}
}
return null;
}
this.getCodigoFromCC = function(cc)
{
var list = dadosCC.list;
if (!list)
{
return null;
}
for (var i=0; i < list.length; i++)
{
if (cc == list[i].cc)
{
return list[i].cc_codigo;
}
}
return null;
}
this.getDescFromCodigo = function(codigo)
{
var list = dadosCC.list;
for (var i=0; i < list.length; i++)
{
if (codigo.toLowerCase() == list[i].cc_codigo.toLowerCase())
{
return list[i].cc_desc;
}
}
return null;
}
this.getCCFromCodigo = function(codigo)
{
var list = dadosCC.list;
for (var i=0; i < list.length; i++)
{
if (codigo && codigo.toLowerCase && (codigo.toLowerCase() == list[i].cc_codigo.toLowerCase()))
{
return list[i].cc;
}
}
return null;
}
this.getHierarchy = function(codigo)
{
var list = this.list;
var result = new Array();
if (codigo)
{
var i = 0;
for (var i=0; i < list.length; i++)
{
var c = list[i];
if ( (codigo.toLowerCase() == c.cc_codigo.toLowerCase()) || (codigo.toLowerCase().indexOf(c.cc_codigo.toLowerCase() +'.')==0) )
{
result.push(c);
}
}
}
return result;
}
this.getHierarchyTable = function(codigo, datafield, row)
{
if (! codigo)
{
return '';
}
// codigo = codigo.trim();
if (codigo=='')
{
return '';
}
var ccs = this.getHierarchy(codigo);
var s = '
'
var achou = false;
var existentes = '';
for (var i=0; i < ccs.length; i++)
{
existentes += ' ' + ccs[i].cc_codigo + ' ';
var bold = (i==ccs.length-1) ? '' : '';
s += '' + bold + ccs[i].cc_codigo + ' '
+ '' + util.repl(' ', ccs[i].cc_codigo.length) + bold + ccs[i].cc_desc + ' '
+ ' '
;
if (codigo.toLowerCase()==ccs[i].cc_codigo.toLowerCase())
{
achou = true;
}
}
if (!achou)
{
var ss = '';
while (codigo.length>0)
{
var bold = '';
var botao = '';
if ( (dadosCC.allowAdd) && (codigo.indexOf('.')!=-1) )
{
botao = ' ';
}
ss = '' + bold + codigo + ' ' + util.repl(' ', codigo.length) + bold + 'CC Inexistente' + botao + ' '
+ ss;
if (codigo.indexOf('.')==-1)
{
break;
}
codigo = codigo.substring(0, codigo.lastIndexOf('.'));
if (existentes.indexOf(' ' + codigo + ' ')!=-1)
{
break;
}
}
s += ss;
}
s += '
'
return s;
}
this.addCCInexistente = function(codigo, datafield, row)
{
while (codigo.endsWith('.'))
{
codigo = codigo.substring(0, codigo.length-1);
}
if (codigo=='')
{
window.alert('Código inválido');
return;
}
var pai = codigo.substring(0, codigo.lastIndexOf('.'));
var paiCC = dadosCC.getCCFromCodigo( pai );
if (! (paiCC))
{
window.alert('Centro de Custo superior inexistente: ' + pai);
return;
}
var desc = codigo.substring(codigo.lastIndexOf('.')+1);
var desc = window.prompt('Descriçao para o Centro de Custo [' + codigo + ']', desc);
if ( (desc) && (desc.trim()!=null) )
{
console.log( 'addCCInexistente' , codigo, desc );
var formData = [ { "id": "cc_codigo", "value": codigo },
{ "id": "cc_desc", "value": desc },
];
var url = http.getUrl('contahub.cmds.fin.FinanceiroCmd', 'addCC')
+ '?emp=' + index.emp
;
http.callHTTP( url, function(dados) {
console.log('addCCOK', row, dados);
dados.ccx = dados.cc_codigo + ' → ' + dados.cc_desc;
dadosCC.list.push( dados );
dadosCC.createDataAdapter();
if (dadosCC.onAddCCFunction)
{
dadosCC.onAddCCFunction( dados, datafield, row );
}
}, http.alert, formData );
}
}
this.extrato = function(codigo, event)
{
var url = window.location.href;
var d0 = util.getHashParameter('d0');
if (d0!='')
{
d0 = '#d0=' + d0;
}
var d1 = util.getHashParameter('d1');
if (d1!='')
{
d1 = '#d1=' + d1;
}
if (url.indexOf('#')>0)
{
url = url.substring(0, url.indexOf('#') );
}
url = '#financeiro.extrato' + d0 + d1 + '#cc_codigo=' + codigo;
console.log('extrato', url, codigo, d0, d1, event.ctrlKey);
if ( (event.ctrlKey) || (event.shiftKey) || (event.altKey) )
{
window.location = url;
}
else
{
window.open(url);
}
}
this.setGridId = function( gridId)
{
tooltipOff = false;
dadosCC.currentGridId = gridId;
$('#' + dadosCC.currentGridId).jqxTooltip();
return dadosCC;
}
this.setColunas = function(colunas)
{
dadosCC.colunas = '|' + colunas + '|';
return dadosCC;
}
this.setKey = function(key)
{
dadosCC.key = key;
return dadosCC;
}
this.allowAddCC = function( f )
{
dadosCC.allowAdd = true;
dadosCC.onAddCCFunction = f;
return dadosCC;
}
this.disallowAddCC = function( )
{
dadosCC.allowAdd = false;
dadosCC.onAddCCFunction = null;
return dadosCC;
}
this.tooltip = function (element, pageX, pageY)
{
if (dadosCC.tooltipOff)
{
return;
}
var cell = $('#' + dadosCC.currentGridId ).jqxGrid('getcellatposition', pageX, pageY);
var coluna = cell.column;
// console.log('tooltip', coluna, dadosCC.colunas);
if (dadosCC.colunas.indexOf('|' + coluna + '|')!=-1)
{
var cc = cell.value;
if (dadosCC.codigoInexistente)
{
cc = dadosCC.codigoInexistente;
}
if (cc)
{
var codigo = cc;
if ( (dadosCC.key=='cc_codigo') || (dadosCC.codigoInexistente) ) // key
{
cc = dadosCC.getCCFromCodigo(codigo);
}
else
{
codigo = dadosCC.getCodigoFromCC(cc);
}
var s = dadosCC.getHierarchyTable(codigo, coluna, cell.row);
$('#' + dadosCC.currentGridId).jqxTooltip({ content: s, autoHide: true, closeOnClick: true, theme: 'orange' });
$('#' + dadosCC.currentGridId).jqxTooltip('open', pageX + 10, pageY + 0);
return;
}
}
$('#' + dadosCC.currentGridId).jqxTooltip('close');
}
this.createEditorCC = function (row, cellvalue, editor, cellText, width, height)
{
console.log('createEditorCC', row, cellvalue, editor, width, height);
dadosCC.editorHeight = height;
}
this.initEditorCC = function (row, cellvalue, editor, celltext, pressedkey)
{
// console.log('initEditorCC', row, cellvalue, editor, celltext, pressedkey);
var inputField = $(" ").prependTo(editor);
inputField.jqxInput( {placeHolder: "Centro de Custo"
, source: dadosCC.dataAdapter
, searchMode: "containsignorecase"
, displayMember: "ccx"
, valueMember: dadosCC.key
, minLength:1
, width: 350
, height: dadosCC.editorHeight
, theme:'orange'
, filter: input.filterContainsAllTokens
, sort: input.noSort
, highlight: input.highlightTokens
});
$('#' + dadosCC.currentGridId).jqxTooltip('close');
dadosCC.tooltipOff = true;
if (pressedkey)
{
inputField.val(pressedkey);
inputField.jqxInput('selectLast');
}
else
{
if (cellvalue)
{
inputField.val(cellvalue);
}
else
{
inputField.val('');
}
inputField.jqxInput('selectAll');
}
$('#' + dadosCC.currentGridId).jqxTooltip('close');
dadosCC.tooltipOff = true;
}
this.getEditorValueCC = function (row, cellvalue, editor)
{
dadosCC.tooltipOff = false;
var inputField = editor.find('input');
var x = inputField.val();
inputField.jqxInput('destroy');
console.log('getEditorValueCC', x, row, cellvalue, editor);
return x;
}
this.renderCC = function (row, column, value, defaultHtml)
{
var cc = value;
if (cc)
{
var codigo = cc;
if (dadosCC.key=='cc_codigo')
{
cc = dadosCC.getCCFromCodigo(codigo);
}
else
{
codigo = dadosCC.getCodigoFromCC(cc);
}
var dados = dadosCC.getDadosFromCC(cc);
if (dados)
{
codigo = dados.cc_codigo + ' → ' + dados.cc_desc;
}
else
{
// var botao = '';
var span0 = '';
var span1 = '';
if ( (dadosCC.allowAdd) && (value.indexOf('.')!=-1) )
{
// botao = ' ';
span0 = '';
span1 = ' ';
}
codigo = span0 + '' + value + ' ' + span1;
}
return grid.replaceInDefaultHTML(defaultHtml, codigo);
}
return defaultHtml;
}
this.mouseOverCCInexistente = function (codigo,event)
{
// console.log('+++', codigo, event);
dadosCC.codigoInexistente = codigo;
}
this.mouseOutCCInexistente = function (codigo,event)
{
// console.log('---', codigo, event);
dadosCC.codigoInexistente = null;
}
}