diff --git a/src/composables/useExtratoDebitosPortal.js b/src/composables/useExtratoDebitosPortal.js index 94f357f..16bab39 100644 --- a/src/composables/useExtratoDebitosPortal.js +++ b/src/composables/useExtratoDebitosPortal.js @@ -36,17 +36,33 @@ export function useExtratoDebitosPortal() { ) ) + function formatPeriodoRef(date) { + if (!date) return '-' + const d = new Date(date) + if (isNaN(d.getTime())) return '-' + return `${String(d.getMonth() + 1).padStart(2, '0')}/${d.getFullYear()}` + } + + function labelEstadoConta(codigo) { + if (codigo === null || codigo === undefined) return 'Todos' + const opt = opcoesEstadoConta.find(o => o.value === Number(codigo)) + return opt?.label ?? 'Todos' + } + const totalizadores = computed(() => { - let principal = 0, multa = 0, juros = 0, valorTotal = 0 + let lancado = 0, atualizado = 0, multa = 0, juros = 0, desconto = 0, valorTotal = 0 resultados.value.forEach(t => { - t.selecionados?.forEach(d => { - principal += d.valorAtulPrincipal ?? d.valorPrincipal ?? 0 + const lista = t.selecionados?.length > 0 ? t.selecionados : t.debitos || [] + lista.forEach(d => { + lancado += d.valorPrincipal ?? 0 + atualizado += d.valorAtulPrincipal ?? d.valorPrincipal ?? 0 multa += d.valorAtulMulta ?? d.valorMulta ?? 0 juros += d.valorAtulJuros ?? d.valorJuros ?? 0 + desconto += d.valorAtulCorrecao ?? d.valorCorrecao ?? 0 valorTotal += d.valorTotal ?? 0 }) }) - return { principal, multa, juros, valorTotal } + return { lancado, atualizado, multa, juros, desconto, valorTotal } }) function mapearDebitos(dados) { @@ -115,19 +131,61 @@ export function useExtratoDebitosPortal() { } function montarDtoExtrato(usarSelecionados) { + const lista = resultados.value.filter(t => + usarSelecionados ? t.selecionados?.length > 0 : t.debitos?.length > 0 + ) + const params = montarParametrosTributoConta(lista) return { - listaDebitos: resultados.value - .filter(t => (usarSelecionados ? t.selecionados?.length > 0 : t.debitos?.length > 0)) - .map(t => ({ - idTributo: t.idTributo, - identificador: t.identificador, - descricaoTributo: t.descricaoTributo, - siglaTributo: t.siglaTributo, - descricaoContaTributo: t.descricaoContaTributo, - idContaTributo: t.idContaTributo, - totalPagamentos: t.totalPagamentos, - debitos: (usarSelecionados ? t.selecionados : t.debitos).map(mapDebitoPayload), - })), + listaDebitos: lista.map(t => ({ + idTributo: t.idTributo, + identificador: t.identificador, + descricaoTributo: t.descricaoTributo, + siglaTributo: t.siglaTributo, + descricaoContaTributo: t.descricaoContaTributo, + idContaTributo: t.idContaTributo, + totalPagamentos: t.totalPagamentos, + debitos: (usarSelecionados ? t.selecionados : t.debitos).map(mapDebitoPayload), + })), + codTributo: params.codTributo, + descricaoTributo: params.descricaoTributo, + codContaTributo: params.codContaTributo, + descricaoContaTributo: params.descricaoContaTributo, + periodoInicio: formatPeriodoRef(filtro.value.periodoIni), + periodoFim: formatPeriodoRef(filtro.value.periodoFim), + inscricaoMunicipal: '-', + estadoConta: labelEstadoConta(filtro.value.estadoConta), + } + } + + function montarParametrosTributoConta(lista) { + if (!lista?.length) { + return { + codTributo: '-', + descricaoTributo: '-', + codContaTributo: '-', + descricaoContaTributo: '-', + } + } + const chaves = new Map() + for (const item of lista) { + const key = `${item.idTributo ?? ''}_${item.idContaTributo ?? ''}` + if (!chaves.has(key)) chaves.set(key, item) + } + if (chaves.size === 1) { + const t = [...chaves.values()][0] + return { + codTributo: t.idTributo != null ? String(t.idTributo) : (t.identificador ?? '-'), + descricaoTributo: t.descricaoTributo || '-', + codContaTributo: t.idContaTributo != null ? String(t.idContaTributo) : '-', + descricaoContaTributo: t.descricaoContaTributo || '-', + } + } + const tributos = [...new Set(lista.map(t => t.descricaoTributo).filter(Boolean))] + return { + codTributo: 'Diversos', + descricaoTributo: tributos.length ? tributos.join(', ') : 'Diversos tributos', + codContaTributo: '-', + descricaoContaTributo: '-', } } diff --git a/src/pages/portal/debitos.vue b/src/pages/portal/debitos.vue index 68bb853..33622a7 100644 --- a/src/pages/portal/debitos.vue +++ b/src/pages/portal/debitos.vue @@ -124,14 +124,20 @@ function getSegundoNome(texto) { - + - - + + - - + + + + + + + +