133 lines
4.9 KiB
Markdown
133 lines
4.9 KiB
Markdown
|
|
# 🔍 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:**
|
||
|
|
```typescript
|
||
|
|
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:**
|
||
|
|
```typescript
|
||
|
|
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`:**
|
||
|
|
```sql
|
||
|
|
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!** 🔍
|