# SaveInMed - Domínio e Lógica de Negócio Profunda ## 🏢 Arquitetura Multi-Tenant - **Isolamento**: Usamos `company_id` em todas as tabelas transacionais. - **Identificadores**: Usamos **UUID v7** para chaves primárias (sortable e performance-friendly). - **Cadastro**: Toda empresa (`Tenant`) deve fornecer um CNPJ válido. A validação (`is_verified`) é manual pelo admin da plataforma. ## 📦 Gestão de Inventário e Medicamentos - **Lotes e Validades**: O sistema é focado em medicamentos. Produtos sem `batch` (lote) e `expires_at` (validade) são proibidos. - **Preços**: - `price_cents`: Preço base em centavos. - `commercial_discount_cents`: Desconto aplicado. - `tax_substitution_cents`: ST (Substituição Tributária) obrigatória para farmácias. - **Estoque**: Reservas de estoque ocorrem no momento da criação do pedido (`Order`). Se o pedido expirar ou for cancelado, o estoque volta (`InventoryAdjustment`). ## 💰 Fluxo Financeiro e Split de Pagamento - **Ledger (Livro Razão)**: Toda transação gera uma entrada imutável no `ledger_entries`. - **Marketplace Fee**: A plataforma retém uma porcentagem fixa (configurável em `MARKETPLACE_COMMISSION`). - **Withdrawals**: Distribuidoras solicitam saques. O status muda de `PENDING` -> `APPROVED` -> `PAID`. ## 📍 Logística e Geolocalização - **Cálculo de Frete**: Baseado na distância euclidiana entre as coordenadas (lat/long) da Farmácia e da Distribuidora. - **Mapbox**: Usado para geocodificação de endereços no cadastro.