Files
sar-android/docs/source-tree-analysis.md
Julio Schlickmann dc61705c91 add project files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 22:33:42 -03:00

12 KiB

Análise da Árvore de Fontes — SARAndroid

SARAndroid/                             ← raiz do projeto Eclipse ADT
│
├── AndroidManifest.xml                 ← registro de Activities, permissões, FileProvider
├── project.properties                  ← target=android-23
├── .classpath                          ← referências aos JARs e pastas de source
├── .project                            ← metadados do Eclipse
├── lint.xml                            ← supressões de lint
├── proguard-project.txt                ← config ProGuard (desativado)
│
├── src/                                ← código-fonte Java
│   └── br/com/jcsinformatica/sarandroid/
│       │
│       ├── Global.java                 ⭐ singleton de estado: empresa, pedido, pedItem
│       ├── GlobalActivity.java         ⭐ base Activity pós-login (configura título)
│       ├── GlobalActivityFragment.java ⭐ base FragmentActivity (UpdatePedidoActivity)
│       ├── SplashScreen.java           ← tela de splash / entry point
│       ├── LoginActivity.java          ← login, seleção de empresa
│       ├── MainActivity.java           ← menu expandable principal
│       ├── ConfigActivity.java         ← configuração de conexão/empresa
│       ├── TestaConexao.java           ← testa conexão PostgreSQL
│       ├── Preferencia.java            ← constantes SharedPreferences
│       ├── Util.java                   ⭐ utilitários: formatação, erro, PDF, conectividade
│       ├── WarningException.java       ← exceção customizada para erros ao usuário
│       │
│       ├── vo/                         ← Value Objects (modelos de dados puros)
│       │   ├── Empresa.java            ⭐ empresa + representante + configs
│       │   ├── Representante.java      ← dados do representante comercial
│       │   ├── Cliente.java            ← cliente (Serializable — passável via Intent)
│       │   ├── Produto.java            ← produto com 3 tabelas de preço
│       │   ├── Pedido.java             ⭐ pedido + LÓGICA DE NEGÓCIO (calc comissão, IPI, ST)
│       │   ├── ItemPedido.java         ← item do pedido
│       │   ├── FormaPagamento.java     ← forma de pagamento
│       │   ├── Pauta.java              ← tabela de preços/descontos por faixa
│       │   ├── PautaProduto.java       ← preço do produto na pauta
│       │   ├── Municipio.java          ← município (FK de Cliente)
│       │   ├── StIcms.java             ← tabela ICMS-ST
│       │   ├── SarConfig.java          ← feature flags da empresa
│       │   ├── Config.java             ← configuração de conexão PostgreSQL
│       │   ├── ConfigFTP.java          ← configuração FTP
│       │   ├── ContaReceber.java       ← conta a receber (read-only)
│       │   ├── Recebimento.java        ← recebimento de título (read-only)
│       │   ├── Fotos.java              ← foto de produto
│       │   ├── ProdutoMedidas.java     ← medidas do produto
│       │   └── TesConfig.java          ← config TES fiscal
│       │
│       ├── database/                   ← DAOs SQLite (*DB.java / *BD.java)
│       │   ├── DatabaseHelper.java     ⭐ SQLiteOpenHelper — schema v40, onUpgrade
│       │   ├── ClienteDB.java          ← CRUD cliente + sync por MD5
│       │   ├── PedidoDB.java           ← CRUD pedido
│       │   ├── ItemPedidoDB.java       ← CRUD itens de pedido
│       │   ├── ProdutoDB.java          ← CRUD produto
│       │   ├── FormaPagamentoDB.java   ← CRUD forma de pagamento
│       │   ├── MunicipioDB.java        ← CRUD município
│       │   ├── PautaDB.java            ← CRUD pauta
│       │   ├── RepresentanteDB.java    ← CRUD representante
│       │   ├── ConfigDB.java           ← CRUD config de conexão
│       │   ├── ConfigFtpBD.java        ← CRUD config FTP
│       │   ├── SarConfigBD.java        ← CRUD feature flags
│       │   ├── StIcmsBD.java           ← CRUD tabela ICMS-ST
│       │   ├── EstoqueBD.java          ← estoque de produto
│       │   ├── FotosBD.java            ← fotos de produto
│       │   ├── ContasReceberDB.java    ← contas a receber (read-only sync)
│       │   ├── RecebimentoDB.java      ← recebimentos (read-only sync)
│       │   ├── PedidoConsultaDB.java   ← pedidos consulta (read-only sync)
│       │   └── ItemPedidoConsultaDB.java
│       │
│       ├── postgres/                   ← DAOs PostgreSQL (*PGSQL.java)
│       │   ├── ConnectionManager.java  ⭐ fábrica de conexões JDBC + closeAll
│       │   ├── ClientePGSQL.java       ← lê clientes do servidor
│       │   ├── ProdutoDB.java          ← (atenção: nome igual ao SQLite, pacote diferente)
│       │   ├── FormaPagamentoPGSQL.java
│       │   ├── MunicipioPGSQL.java
│       │   ├── PautaPGSQL.java
│       │   ├── RepresentantePGSQL.java
│       │   ├── SarConfigPGSQL.java
│       │   ├── StIcmsPGSQL.java
│       │   ├── EstoquePGSQL.java
│       │   ├── ContasReceberPGSQL.java
│       │   ├── TesConfigPGSQL.java
│       │   └── ProdutoFotosPGSQL.java
│       │
│       ├── comunicacao/                ← sincronização com servidor
│       │   ├── ComunicaActivity.java   ⭐ orquestrador de sync (único ponto)
│       │   └── AtualizaDados.java      ← Thread background da sync
│       │
│       ├── pedido/                     ← Activities do fluxo de pedido
│       │   ├── UpdatePedidoActivity.java  ⭐ criar/editar pedido (ViewPager + 4 Fragments)
│       │   ├── UpdatePedItemActivity.java ← editar item do pedido
│       │   ├── BrowsePedido.java          ← lista de pedidos
│       │   ├── BrowseHistorico.java       ← histórico de pedidos
│       │   ├── FlexPedidoFragment.java    ← aba Flex do pedido
│       │   ├── ItensPedidoFragment.java   ← aba Itens do pedido
│       │   ├── TotalPedidoFragment.java   ← aba Total do pedido
│       │   ├── ThreadBuscaPedido.java     ← busca assíncrona de pedidos
│       │   └── ThreadAbrirPedido.java     ← abre pedido em background
│       │
│       ├── produto/                    ← Activities de produtos
│       │   ├── BrowseProduto.java      ← lista de produtos
│       │   ├── UpdateProduto.java      ← visualizar produto (read-only)
│       │   ├── FotosProduto.java       ← galeria de fotos do produto
│       │   └── ThreadBuscaProduto.java
│       │
│       ├── cliente/                    ← Activities de clientes
│       │   ├── BrowseCliente.java      ← lista de clientes
│       │   ├── UpdateCliente.java      ← criar/editar cliente
│       │   ├── BrowseCTR.java          ← contas a receber do cliente
│       │   └── ThreadBuscaCliente.java
│       │
│       ├── consulta/                   ← Activities de consulta/relatório
│       │   ├── pedido/
│       │   │   ├── BrowsePedidoConsulta.java  ← pedidos do servidor (read-only)
│       │   │   ├── ThreadBuscaPedidoConsulta.java
│       │   │   └── ThreadAbrirPedidoConsulta.java
│       │   └── vendas/
│       │       ├── ConsultaVendasActivity.java ← resumo de vendas
│       │       └── TotalVendas.java
│       │
│       ├── municipio/                  ← busca de município
│       │   ├── BrowseMunicipio.java
│       │   └── ThreadBuscaMunicipio.java
│       │
│       ├── fotos/                      ← atualização de fotos via FTP
│       │   └── AtualizaFotos.java      ← baixa fotos do servidor FTP
│       │
│       └── uimodels/                   ← adapters e componentes de UI customizados
│           ├── ExpandableListAdapter.java    ← menu principal
│           ├── PedidoTabAdapter.java         ← abas do pedido (ViewPager)
│           ├── SimpleArrayAdapterClienteBrowser.java
│           ├── SimpleArrayAdapterProdutoBrowser.java
│           ├── SimpleArrayAdapterPedidoBrowser.java
│           ├── SimpleArrayAdapterPedItens.java
│           ├── SimpleArrayAdapterMunicipioBrowser.java
│           ├── SimpleArrayAdapterHisto.java
│           ├── SimpleArrayAdapterConsultaTotalVendas.java
│           ├── SimpleArrayAdapterCTR.java
│           ├── AutoCompleteValorAdapter.java
│           ├── BaseAdapterFotosProduto.java
│           ├── ExpandedListView.java         ← ListView que expande dentro de ScrollView
│           ├── CepEditText.java              ← campo CEP com máscara
│           ├── CnpjEditText.java             ← campo CNPJ com máscara
│           ├── CpfEditText.java              ← campo CPF com máscara
│           └── vo/
│               ├── PedidoList.java           ← VO para exibição em lista de pedidos
│               ├── CTRList.java              ← VO para lista CTR
│               └── HistoList.java            ← VO para histórico
│
├── res/                                ← recursos Android
│   ├── layout/                         ← XMLs de tela (activity_*.xml, fragment_*.xml)
│   ├── menu/                           ← menus de opções (menu_*.xml)
│   ├── drawable/                       ← backgrounds, botões, seletores
│   ├── anim/                           ← animações de transição entre telas
│   ├── values/                         ← strings.xml, styles.xml, colors
│   ├── values-v11/ values-v14/         ← estilos por versão de API
│   ├── color/                          ← seletores de cor
│   └── xml/
│       └── provider_paths.xml          ← caminhos FileProvider para PDF/fotos
│
├── lib/                                ← JARs de dependências
│   ├── postgresql-8.2-512.jdbc3.jar    ← driver JDBC PostgreSQL (fixo — não atualizar)
│   ├── joda-time-2.5.jar               ← data/hora
│   ├── commons-net-3.3.jar             ← FTP
│   └── commons-net-3.3-sources.jar
│
├── gen/                                ← código gerado (R.java) — não editar
├── bin/                                ← build output — não versionar
└── assets/                             ← assets adicionais (vazio)

Pontos de Entrada

Arquivo Papel
SplashScreen.java Entry point do app (LAUNCHER no Manifest)
DatabaseHelper.java Criação/migração do schema SQLite
ComunicaActivity.java Entry point da sincronização com servidor

Pastas Críticas

Pasta Importância
vo/ Modelos compartilhados por toda a app
database/ Todo acesso ao SQLite passa aqui
postgres/ Toda comunicação remota passa aqui
comunicacao/ Única pasta que orquestra sync
pedido/ Fluxo mais complexo — 4 fragments + 2 activities