12 KiB
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 |