4.9 KiB
4.9 KiB
🔍 CORREÇÃO E MELHORIA DO CARREGAMENTO DE NOTAS FISCAIS OFFLINE
🔍 PROBLEMA IDENTIFICADO
Análise dos Logs:
Nos logs fornecidos, observamos que:
- ✅ Notas fiscais são carregadas da API durante a carga inicial
- ✅ Notas fiscais são salvas no SQLite (
Salvas 9 notas fiscais no banco local) - ❌ Mas quando tenta carregar do SQLite, retorna 0 notas (
📄 0 notas fiscais carregadas do SQLite)
Possíveis Causas:
- Problema na função
getCustomerInvoicesFromLocal - Problema na estrutura da tabela
customer_invoices - Problema na função
saveInvoicesToLocal - 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
- Fazer Login e aguardar a carga inicial
- Verificar Logs - deve mostrar:
🚨 DEBUG - saveInvoicesToLocal🚨 Verificação - Total de notas fiscais no SQLite: X
- Tentar carregar notas fiscais - deve mostrar:
🚨 DEBUG - getCustomerInvoicesFromLocal🚨 X notas fiscais carregadas do SQLite
- 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
- Execute o app e faça login
- Analise os logs com os novos debug messages
- Identifique o cenário baseado nos logs
- 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! 🔍