entregas_app/docs/CORRECAO_CARREGAMENTO_NOTAS...

4.9 KiB

🔍 CORREÇÃO E MELHORIA DO CARREGAMENTO DE NOTAS FISCAIS OFFLINE

🔍 PROBLEMA IDENTIFICADO

Análise dos Logs:

Nos logs fornecidos, observamos que:

  1. Notas fiscais são carregadas da API durante a carga inicial
  2. Notas fiscais são salvas no SQLite (Salvas 9 notas fiscais no banco local)
  3. Mas quando tenta carregar do SQLite, retorna 0 notas (📄 0 notas fiscais carregadas do SQLite)

Possíveis Causas:

  1. Problema na função getCustomerInvoicesFromLocal
  2. Problema na estrutura da tabela customer_invoices
  3. Problema na função saveInvoicesToLocal
  4. Problema de timing/sincronização

🔧 MELHORIAS IMPLEMENTADAS

1. Logs Detalhados na Função getCustomerInvoicesFromLocal

Arquivo: src/services/database.ts Linhas: 448-493

Adicionado:

console.log('🚨 DEBUG - getCustomerInvoicesFromLocal');
console.log('🚨 customerId:', customerId);
console.log('🚨 usingSQLite:', usingSQLite);
console.log('🚨 Executando query SQLite...');
console.log('🚨 Resultado da query:', result);
console.log('🚨 result.rows:', result.rows);
console.log('🚨 result.rows._array:', result.rows._array);
console.log('🚨 invoices:', invoices);

2. Logs Detalhados na Função saveInvoicesToLocal

Arquivo: src/services/offlineSyncService.ts Linhas: 339-395

Adicionado:

console.log('🚨 DEBUG - saveInvoicesToLocal');
console.log('🚨 Total de invoices para salvar:', invoices.length);
console.log('🚨 Primeira invoice:', invoices[0]);
console.log('🚨 Salvando invoice:', { id, invoiceId, customerId, customerName });
console.log('🚨 Verificação - Total de notas fiscais no SQLite:', verifyResult.rows._array[0].count);

3. Verificação de Integridade

Adicionado: Verificação automática após salvar para confirmar que os dados foram realmente inseridos no SQLite.

🎯 RESULTADO ESPERADO

Logs Esperados Após Correção:

LOG  🚨 DEBUG - saveInvoicesToLocal
LOG  🚨 Total de invoices para salvar: 9
LOG  🚨 Primeira invoice: { customerId: 436036, invoiceId: 31761, ... }
LOG  🚨 Salvando invoice: { id: "436036-31761", invoiceId: 31761, ... }
LOG  🚨 Salvas 9 notas fiscais no banco local
LOG  🚨 Verificação - Total de notas fiscais no SQLite: 9

// Depois, ao carregar:
LOG  🚨 DEBUG - getCustomerInvoicesFromLocal
LOG  🚨 customerId: 436036
LOG  🚨 usingSQLite: true
LOG  🚨 Executando query SQLite...
LOG  🚨 Resultado da query: { rows: { _array: [...] } }
LOG  🚨 result.rows._array: [{ id: "436036-31761", ... }]
LOG  🚨 1 notas fiscais carregadas do SQLite para cliente 436036

🧪 COMO TESTAR

  1. Fazer Login e aguardar a carga inicial
  2. Verificar Logs - deve mostrar:
    • 🚨 DEBUG - saveInvoicesToLocal
    • 🚨 Verificação - Total de notas fiscais no SQLite: X
  3. Tentar carregar notas fiscais - deve mostrar:
    • 🚨 DEBUG - getCustomerInvoicesFromLocal
    • 🚨 X notas fiscais carregadas do SQLite
  4. Verificar se as notas aparecem offline

🔍 DIAGNÓSTICO

Se os logs mostrarem:

Cenário 1: Dados não estão sendo salvos

LOG  🚨 Verificação - Total de notas fiscais no SQLite: 0

Causa: Problema na função saveInvoicesToLocal

Cenário 2: Dados estão sendo salvos mas não carregados

LOG  🚨 Verificação - Total de notas fiscais no SQLite: 9
LOG  🚨 result.rows._array: []

Causa: Problema na query SQL ou estrutura da tabela

Cenário 3: Dados estão sendo salvos e carregados

LOG  🚨 Verificação - Total de notas fiscais no SQLite: 9
LOG  🚨 result.rows._array: [{ id: "436036-31761", ... }]
LOG  🚨 1 notas fiscais carregadas do SQLite

Causa: Problema resolvido!

PRÓXIMOS PASSOS

  1. Execute o app e faça login
  2. Analise os logs com os novos debug messages
  3. Identifique o cenário baseado nos logs
  4. Reporte os resultados para correção específica

Estrutura da Tabela customer_invoices:

CREATE TABLE IF NOT EXISTS customer_invoices (
  id TEXT PRIMARY KEY,                    -- Formato: "customerId-invoiceId"
  invoiceId TEXT,                         -- ID da nota fiscal
  transactionId INTEGER,                  -- ID da transação
  customerId TEXT,                        -- ID do cliente
  customerName TEXT,                      -- Nome do cliente
  invoiceValue REAL,                      -- Valor da nota fiscal
  status TEXT,                            -- Status da nota fiscal
  items TEXT,                             -- Itens em JSON
  created_at INTEGER,                     -- Timestamp de criação
  sync_status TEXT DEFAULT 'pending'      -- Status de sincronização
);

Com esses logs detalhados, poderemos identificar exatamente onde está o problema e corrigi-lo definitivamente! 🔍