colocando todos os valores no analitico

This commit is contained in:
Felipe Batista 2025-10-08 09:11:22 -03:00
parent 88c5e02987
commit 9ad890bb19
1 changed files with 92 additions and 23 deletions

View File

@ -27,7 +27,18 @@ interface AnaliticoItem {
updated_at: string; updated_at: string;
} }
type SortField = 'nome_fornecedor' | 'data_competencia' | 'valor' | 'conta'; type SortField =
| 'data_vencimento'
| 'data_caixa'
| 'codigo_fornecedor'
| 'nome_fornecedor'
| 'codigo_centrocusto'
| 'codigo_conta'
| 'conta'
| 'valor'
| 'historico'
| 'historico2'
| 'recnum';
type SortDirection = 'asc' | 'desc'; type SortDirection = 'asc' | 'desc';
interface SortConfig { interface SortConfig {
@ -50,7 +61,7 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
const [data, setData] = useState<AnaliticoItem[]>([]); const [data, setData] = useState<AnaliticoItem[]>([]);
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [sortConfig, setSortConfig] = useState<SortConfig>({ const [sortConfig, setSortConfig] = useState<SortConfig>({
field: 'data_competencia', field: 'data_vencimento',
direction: 'desc', direction: 'desc',
}); });
@ -150,25 +161,21 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
// Preparar dados para exportação // Preparar dados para exportação
const exportData = data.map((item) => ({ const exportData = data.map((item) => ({
'Código Fornecedor': item.codigo_fornecedor,
'Nome Fornecedor': item.nome_fornecedor,
'Data Competência': new Date(item.data_competencia).toLocaleDateString(
'pt-BR'
),
'Data Vencimento': new Date(item.data_vencimento).toLocaleDateString( 'Data Vencimento': new Date(item.data_vencimento).toLocaleDateString(
'pt-BR' 'pt-BR'
), ),
'Data Pagamento': item.data_pagamento
? new Date(item.data_pagamento).toLocaleDateString('pt-BR')
: '',
'Data Caixa': new Date(item.data_caixa).toLocaleDateString('pt-BR'), 'Data Caixa': new Date(item.data_caixa).toLocaleDateString('pt-BR'),
'Código Fornecedor': item.codigo_fornecedor,
Fornecedor: item.nome_fornecedor,
'Código Centro Custo': item.codigo_centrocusto,
'Centro Custo': item.codigo_centrocusto, // Assumindo que é o mesmo valor
'Código Conta': item.codigo_conta, 'Código Conta': item.codigo_conta,
Conta: item.conta, Conta: item.conta,
'Centro de Custo': item.codigo_centrocusto,
Valor: Valor:
typeof item.valor === 'string' ? parseFloat(item.valor) : item.valor, typeof item.valor === 'string' ? parseFloat(item.valor) : item.valor,
Histórico: item.historico, Histórico: item.historico,
'Histórico 2': item.historico2, 'Histórico 2': item.historico2,
Recnum: item.recnum,
})); }));
// Criar workbook // Criar workbook
@ -251,9 +258,39 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
style={{ backgroundColor: 'white', opacity: 1 }} style={{ backgroundColor: 'white', opacity: 1 }}
> >
<div <div
className="flex p-3 font-semibold text-xs" className="flex p-2 font-semibold text-xs"
style={{ backgroundColor: 'white', opacity: 1 }} style={{ backgroundColor: 'white', opacity: 1 }}
> >
<div className="flex-1 min-w-[100px] max-w-[120px]">
<Button
variant="ghost"
onClick={() => handleSort('data_vencimento')}
className="h-auto p-0 font-semibold"
>
Data Venc.
{getSortIcon('data_vencimento')}
</Button>
</div>
<div className="flex-1 min-w-[100px] max-w-[120px]">
<Button
variant="ghost"
onClick={() => handleSort('data_caixa')}
className="h-auto p-0 font-semibold"
>
Data Caixa
{getSortIcon('data_caixa')}
</Button>
</div>
<div className="flex-1 min-w-[100px] max-w-[120px]">
<Button
variant="ghost"
onClick={() => handleSort('codigo_fornecedor')}
className="h-auto p-0 font-semibold"
>
Cód. Fornec.
{getSortIcon('codigo_fornecedor')}
</Button>
</div>
<div className="flex-1 min-w-[150px] max-w-[200px]"> <div className="flex-1 min-w-[150px] max-w-[200px]">
<Button <Button
variant="ghost" variant="ghost"
@ -264,17 +301,27 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
{getSortIcon('nome_fornecedor')} {getSortIcon('nome_fornecedor')}
</Button> </Button>
</div> </div>
<div className="flex-1 min-w-[100px] max-w-[120px] text-right"> <div className="flex-1 min-w-[100px] max-w-[120px]">
<Button <Button
variant="ghost" variant="ghost"
onClick={() => handleSort('data_competencia')} onClick={() => handleSort('codigo_centrocusto')}
className="h-auto p-0 font-semibold" className="h-auto p-0 font-semibold"
> >
Data Cód. Centro
{getSortIcon('data_competencia')} {getSortIcon('codigo_centrocusto')}
</Button> </Button>
</div> </div>
<div className="flex-1 min-w-[120px] max-w-[150px] text-right"> <div className="flex-1 min-w-[100px] max-w-[120px]">
<Button
variant="ghost"
onClick={() => handleSort('codigo_conta')}
className="h-auto p-0 font-semibold"
>
Cód. Conta
{getSortIcon('codigo_conta')}
</Button>
</div>
<div className="flex-1 min-w-[120px] max-w-[150px]">
<Button <Button
variant="ghost" variant="ghost"
onClick={() => handleSort('conta')} onClick={() => handleSort('conta')}
@ -294,7 +341,11 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
{getSortIcon('valor')} {getSortIcon('valor')}
</Button> </Button>
</div> </div>
<div className="flex-1 min-w-[200px] max-w-[300px]">Histórico</div> <div className="flex-1 min-w-[150px] max-w-[200px]">Histórico</div>
<div className="flex-1 min-w-[150px] max-w-[200px]">
Histórico 2
</div>
<div className="flex-1 min-w-[100px] max-w-[120px]">Recnum</div>
</div> </div>
</div> </div>
@ -310,14 +361,26 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
) : ( ) : (
sortedData.map((row, index) => ( sortedData.map((row, index) => (
<div key={index} className="flex border-b hover:bg-gray-50"> <div key={index} className="flex border-b hover:bg-gray-50">
<div className="flex-1 min-w-[100px] max-w-[120px] p-1 text-xs">
{formatDate(row.data_vencimento)}
</div>
<div className="flex-1 min-w-[100px] max-w-[120px] p-1 text-xs">
{formatDate(row.data_caixa)}
</div>
<div className="flex-1 min-w-[100px] max-w-[120px] p-1 text-xs">
{row.codigo_fornecedor || '-'}
</div>
<div className="flex-1 min-w-[150px] max-w-[200px] p-1 text-xs"> <div className="flex-1 min-w-[150px] max-w-[200px] p-1 text-xs">
{row.nome_fornecedor || '-'} {row.nome_fornecedor || '-'}
</div> </div>
<div className="flex-1 min-w-[100px] max-w-[120px] text-right p-1 text-xs"> <div className="flex-1 min-w-[100px] max-w-[120px] p-1 text-xs">
{formatDate(row.data_competencia)} {row.codigo_centrocusto || '-'}
</div> </div>
<div className="flex-1 min-w-[120px] max-w-[150px] text-right p-1 text-xs"> <div className="flex-1 min-w-[100px] max-w-[120px] p-1 text-xs">
{row.conta} {row.codigo_conta || '-'}
</div>
<div className="flex-1 min-w-[120px] max-w-[150px] p-1 text-xs">
{row.conta || '-'}
</div> </div>
<div className="flex-1 min-w-[100px] max-w-[120px] text-right p-1 text-xs font-medium"> <div className="flex-1 min-w-[100px] max-w-[120px] text-right p-1 text-xs font-medium">
{formatCurrency( {formatCurrency(
@ -326,9 +389,15 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
: row.valor : row.valor
)} )}
</div> </div>
<div className="flex-1 min-w-[200px] max-w-[300px] p-1 text-xs"> <div className="flex-1 min-w-[150px] max-w-[200px] p-1 text-xs">
{row.historico || '-'} {row.historico || '-'}
</div> </div>
<div className="flex-1 min-w-[150px] max-w-[200px] p-1 text-xs">
{row.historico2 || '-'}
</div>
<div className="flex-1 min-w-[100px] max-w-[120px] p-1 text-xs">
{row.recnum || '-'}
</div>
</div> </div>
)) ))
)} )}