function loadSelectEmpresa(elemento, placeholder = 'SELECIONE A EMPRESA') {
const ts = new TomSelect(`${elemento}`, {
maxItems: 1,
create: false,
allowEmptyOption: true,
placeholder: placeholder,
persist: false,
searchField: ['cnpj', 'nome', 'fantasia'],
render: {
option(data, escape) {
if (data.value == 0) {
return `
TODAS EMPRESAS
`;
} else if (data.value == -1) {
return `SELECIONE A EMPRESA
`
}
const cnpj = escape(data.cnpj);
const nome = escape(data.nome);
const nomeFantasia = escape(data.fantasia);
const inativo = escape(data.inativo);
return `
${cnpj}
${nome}
${nomeFantasia}
`;
},
item(data, escape) {
if (data.value == 0) {
return ` TODAS EMPRESAS
`;
} else if (data.value == -1) {
return `SELECIONE A EMPRESA
`
}
const cnpj = escape(data.cnpj);
const nome = escape(data.nome);
const inativo = escape(data.inativo);
return `
${nome}
(${cnpj})
`;
}
}
});
return ts;
}
function loadSelectBancoConexao(elemento, placeholder = 'SELECIONE O BANCO') {
const ts = new TomSelect(`${elemento}`, {
maxItems: 1,
create: false,
allowEmptyOption: true,
placeholder: placeholder,
persist: false,
searchField: ['name'],
render: {
option(data, escape) {
if (data.value == 0) {
return ` TODOS BANCOS
`;
} else if (data.value == -1) {
return `SELECIONE O BANCO
`
}
const connectorName = escape(data.name)
const connectorImage = escape(data.image);
const connectionStatus = escape(data.status);
const isOpenFinance = escape(data.isopenfinance);
return `
${connectorName}
Status: ${CONNECTION_STATUS_APIOF[connectionStatus].label}
${isOpenFinance ? 'Conector Openfinance' : 'Conector Direto'}
`;
},
item(data, escape) {
if (data.value == 0) {
return ` TODOS BANCOS
`;
} else if (data.value == -1) {
return `SELECIONE O BANCO
`
}
const connectorName = escape(data.name)
const connectorImage = escape(data.image);
const connectionStatus = escape(data.status);
return `
${connectorName}
(${CONNECTION_STATUS_APIOF[connectionStatus].label})
`;
}
}
});
return ts;
}
function loadSelectContas(elemento, placeholder = 'SELECIONE A CONTA') {
const ts = new TomSelect(`${elemento}`, {
maxItems: 1,
create: false,
allowEmptyOption: true,
placeholder: placeholder,
persist: false,
searchField: ['name'],
render: {
option(data, escape) {
if (data.value == 0) {
return ` TODAS CONTAS
`;
} else if (data.value == -1) {
return `SELECIONE A CONTA
`
}
const type = escape(data.type);
const subtype = escape(data.subtype);
const brandCard = escape(data.cbrand);
const lastFourDigitsCard = escape(data.lastfourdigitscard);
const bankBranch = escape(data.bbranch);
const bankAccountNumber = escape(data.baccountnumber);
const bankCode = escape(data.bcode);
const name = escape(data.name);
const smallFooterText = (type == TYPE_ACCOUNT_OF.CREDIT)
? `**** **** **** ${lastFourDigitsCard}`
: (type == TYPE_ACCOUNT_OF.BANK) && `AG: ${bankBranch} • C.C: ${bankAccountNumber}`;
const headerText = (type == TYPE_ACCOUNT_OF.CREDIT)
? `${brandCard} ${name} • ${SUBTYPE_ACCOUNT_LABEL_OF[subtype]}
`
: (type == TYPE_ACCOUNT_OF.BANK) && `${bankCode} - ${name} • ${SUBTYPE_ACCOUNT_LABEL_OF[subtype]}
`;
return `
${headerText}
${TYPE_ACCOUNT_LABEL_OF[type]}
${smallFooterText}
`;
},
item(data, escape) {
if (data.value == 0) {
return ` TODAS CONTAS
`;
} else if (data.value == -1) {
return `SELECIONE A CONTA
`
}
const type = escape(data.type);
const subtype = escape(data.subtype);
const brandCard = escape(data.cbrand);
const lastFourDigitsCard = escape(data.lastfourdigitscard);
const bankBranch = escape(data.bbranch);
const bankAccountNumber = escape(data.baccountnumber);
const bankCode = escape(data.bcode);
const name = escape(data.name);
const headerText = (type == TYPE_ACCOUNT_OF.CREDIT)
? `${brandCard} ${name} • ${SUBTYPE_ACCOUNT_LABEL_OF[subtype]}`
: (type == TYPE_ACCOUNT_OF.BANK) && ` ${bankCode} - ${name} • ${SUBTYPE_ACCOUNT_LABEL_OF[subtype]}`;
const dataAccount = (type == TYPE_ACCOUNT_OF.CREDIT)
? `**** **** **** ${lastFourDigitsCard}`
: `AG: ${bankBranch} • C.C: ${bankAccountNumber}`;
return `
${headerText}
(${dataAccount})
`;
}
}
});
return ts;
}
function loadSelectPlanoConta(elemento, placeholder = 'SELECIONE O PLANO DE CONTA') {
const ts = new TomSelect(`${elemento}`, {
maxItems: 1,
create: false,
allowEmptyOption: true,
placeholder: placeholder,
persist: false,
searchField: ['codcontabil', 'descricao', 'natureza', 'grupo', 'subgrupo'],
render: {
option(data, escape) {
if (data.value == 0) {
return ` TODOS PLANOS DE CONTA
`;
} else if (data.value == -1) {
return `SELECIONE O PLANO DE CONTA
`
}
const descricao = escape(data.descricao);
const natureza = escape(data.natureza);
const grupo = escape(data.grupo);
const subgrupo = escape(data.subgrupo);
const codNatureza = escape(data.codnatureza);
const codGrupo = escape(data.codgrupo);
const codSubGrupo = escape(data.codsubgrupo);
const codPlano = escape(data.codplano);
const codContabil = `${codNatureza}.${codGrupo}.${codSubGrupo}.${codPlano}`;
return `
${natureza}
${codContabil} - ${descricao}
${grupo} • ${subgrupo}
`;
},
item(data, escape) {
if (data.value == 0) {
return ` TODOS PLANOS DE CONTA
`;
} else if (data.value == -1) {
return `SELECIONE O PLANO DE CONTA
`
}
const descricao = escape(data.descricao);
const natureza = escape(data.natureza);
const codNatureza = escape(data.codnatureza);
const codGrupo = escape(data.codgrupo);
const codSubGrupo = escape(data.codsubgrupo);
const codPlano = escape(data.codplano);
const codContabil = `${codNatureza}.${codGrupo}.${codSubGrupo}.${codPlano}`;
return `
${codContabil} - ${descricao}
(${natureza})
`;
}
}
});
return ts;
}
function showTomSelectLoader(tsInstance, position = 'start') {
if (!tsInstance || !tsInstance.wrapper) return;
const control = tsInstance.wrapper.querySelector('.ts-control');
// Evita duplicação
if (control.querySelector('.ts-loader')) return;
const loader = document.createElement('div');
loader.classList.add('ts-loader');
loader.innerHTML = `
Loading...
`;
if (position === 'start') {
control.prepend(loader);
} else {
control.append(loader);
}
control.classList.add('ts-loading');
}
function hideTomSelectLoader(tsInstance) {
if (!tsInstance || !tsInstance.wrapper) return;
const control = tsInstance.wrapper.querySelector('.ts-control');
const loader = control.querySelector('.ts-loader');
if (loader) loader.remove();
control.classList.remove('ts-loading');
}
function resetTomSelectPlaceholder(ts, placeholder) {
ts.clear(true); // limpa seleção
ts.settings.placeholder = placeholder;
if (ts.control_input) {
ts.control_input.placeholder = placeholder;
}
ts.refreshState();
}