# Módulo Gestor Contratos

Módulo addon para gestão completa de contratos eletrônicos no ERP GestorEasy, inspirado no DocuSign.

## Funcionalidades

### 📄 Criação e Edição de Contratos
- Editor de texto rico com suporte a variáveis dinâmicas
- Modelos de contrato reutilizáveis
- Preenchimento automático de dados (cliente, fornecedor, venda)
- Formatação rica (negrito, tabelas, cabeçalhos, rodapés)

### 📑 Modelos e Templates
- Biblioteca de modelos prontos
- Categorias de contratos (venda, locação, prestação de serviço, etc.)
- Controle de versões
- Duplicação de modelos

### 🖋️ Assinatura Eletrônica e Digital
- Múltiplos signatários com ordem configurável
- Autenticação via e-mail, SMS ou token
- Registro de IP, data, hora e identidade digital
- Suporte a certificado digital (ICP-Brasil)

### 📬 Envio e Notificação
- Envio automático de contratos para assinatura
- Notificações em tempo real
- Lembretes automáticos
- E-mails personalizados

### 📁 Armazenamento e Gestão
- Repositório seguro de contratos
- Controle de acesso por nível de usuário
- Backup automático
- Download em PDF

### 📊 Painel de Controle e Auditoria
- Dashboard com estatísticas
- Linha do tempo de ações
- Logs completos para auditoria
- Conformidade com LGPD

### 🔐 Segurança e Conformidade
- Criptografia de dados
- Assinatura digital conforme ICP-Brasil
- Conformidade com LGPD
- Expiração automática de contratos

### 🔗 Integrações Internas
- Integração com módulo de Vendas
- Integração com Financeiro
- Integração com Cadastro de Clientes e Fornecedores
- Geração automática de contratos

## Instalação

1. As migrações serão aplicadas automaticamente ao acessar o módulo
2. As permissões serão criadas automaticamente
3. Configure as integrações de assinatura em Configurações

## Uso

### Criar um Contrato

1. Acesse `/contratos`
2. Clique em "Novo Contrato"
3. Selecione um modelo ou crie do zero
4. Preencha as variáveis
5. Adicione signatários
6. Envie para assinatura

### Criar um Modelo

1. Acesse `/contratos/modelos`
2. Clique em "Novo Modelo"
3. Edite o conteúdo usando variáveis como `[NOME_CLIENTE]`, `[VALOR_CONTRATO]`, etc.
4. Salve o modelo

### Assinar um Contrato

1. O signatário recebe um e-mail com link de assinatura
2. Acessa o link
3. Visualiza o contrato
4. Assina digitalmente
5. Recebe confirmação

## Variáveis Disponíveis

### Dados da Empresa
- `[NOME_EMPRESA]` - Nome da empresa
- `[CNPJ_EMPRESA]` - CNPJ da empresa
- `[EMAIL_EMPRESA]` - E-mail da empresa
- `[TELEFONE_EMPRESA]` - Telefone da empresa
- `[ENDERECO_EMPRESA]` - Endereço da empresa
- `[CIDADE_EMPRESA]` - Cidade da empresa
- `[ESTADO_EMPRESA]` - Estado da empresa
- `[CEP_EMPRESA]` - CEP da empresa
- `[DATA_ATUAL]` - Data atual (dd/mm/yyyy)
- `[DATA_ATUAL_EXTENSO]` - Data atual por extenso

### Dados do Cliente
- `[NOME_CLIENTE]` - Nome do cliente
- `[EMAIL_CLIENTE]` - E-mail do cliente
- `[TELEFONE_CLIENTE]` - Telefone do cliente
- `[CPF_CNPJ_CLIENTE]` - CPF/CNPJ do cliente
- `[ENDERECO_CLIENTE]` - Endereço do cliente
- `[CIDADE_CLIENTE]` - Cidade do cliente
- `[ESTADO_CLIENTE]` - Estado do cliente
- `[CEP_CLIENTE]` - CEP do cliente

### Dados do Fornecedor
- `[NOME_FORNECEDOR]` - Nome do fornecedor
- `[EMAIL_FORNECEDOR]` - E-mail do fornecedor
- `[TELEFONE_FORNECEDOR]` - Telefone do fornecedor
- `[CNPJ_FORNECEDOR]` - CNPJ do fornecedor
- `[ENDERECO_FORNECEDOR]` - Endereço do fornecedor
- `[CIDADE_FORNECEDOR]` - Cidade do fornecedor
- `[ESTADO_FORNECEDOR]` - Estado do fornecedor
- `[CEP_FORNECEDOR]` - CEP do fornecedor

### Dados da Venda
- `[NUMERO_PEDIDO]` - Número do pedido
- `[DATA_PEDIDO]` - Data do pedido
- `[VALOR_TOTAL]` - Valor total do pedido
- `[ITENS_PEDIDO]` - Itens do pedido

## API

### Contratos
- `GET /api/contratos` - Lista contratos
- `GET /api/contratos/{id}` - Busca contrato
- `POST /api/contratos` - Cria contrato
- `PUT /api/contratos/{id}` - Atualiza contrato
- `POST /api/contratos/{id}/enviar` - Envia para assinatura
- `POST /api/contratos/{id}/arquivar` - Arquivar contrato
- `POST /api/contratos/{id}/cancelar` - Cancelar contrato
- `GET /api/contratos/{id}/historico` - Histórico do contrato
- `GET /api/contratos/dashboard` - Dashboard de estatísticas

### Modelos
- `GET /api/contratos/modelos` - Lista modelos
- `GET /api/contratos/modelos/{id}` - Busca modelo
- `POST /api/contratos/modelos` - Cria modelo
- `PUT /api/contratos/modelos/{id}` - Atualiza modelo
- `DELETE /api/contratos/modelos/{id}` - Deleta modelo
- `POST /api/contratos/modelos/{id}/duplicar` - Duplica modelo
- `POST /api/contratos/modelos/{id}/preencher` - Preenche modelo

### Assinatura
- `GET /api/contratos/assinatura/{id}?token=xxx` - Visualiza contrato para assinatura (pública)
- `POST /api/contratos/assinatura/{id}?token=xxx` - Assina contrato (pública)
- `GET /api/contratos/assinatura/{id}/link` - Gera link de assinatura

## Permissões

- `contratos.read` - Visualizar contratos
- `contratos.create` - Criar contratos
- `contratos.update` - Editar contratos
- `contratos.delete` - Excluir contratos
- `contratos.assinatura` - Assinar contratos
- `contratos.modelos.read` - Visualizar modelos
- `contratos.modelos.create` - Criar modelos
- `contratos.modelos.update` - Editar modelos
- `contratos.modelos.delete` - Excluir modelos
- `contratos.config` - Configurar módulo
- `contratos.auditoria` - Visualizar auditoria

## Funcionalidades Avançadas Implementadas

### ✅ Assinatura Digital Própria (Inspirada no DocuSign)
- **Assinatura Digital Interna**: Sistema completo de assinatura digital próprio
- **Certificado Digital ICP-Brasil**: Suporte a certificados A1/A3 do módulo Fiscal
- **Validação de Integridade**: Verificação de que o contrato não foi alterado após assinatura
- **Hash Criptográfico**: SHA-256 para garantir integridade
- **Múltiplos Signatários**: Ordem configurável de assinatura
- **Assinatura por Imagem**: Desenho da assinatura (base64)
- **Registro Completo**: IP, data, hora, user agent, certificado

### ✅ Geração de PDF
- Geração automática de PDF com formatação profissional
- Inclusão de assinaturas no PDF
- Download direto do PDF
- Suporte a TCPDF e DomPDF

### ✅ Integrações Internas
- **Vendas**: Geração automática de contratos a partir de pedidos de venda
- **Financeiro**: Geração automática de contratos a partir de contas a receber/pagar
- **Clientes/Fornecedores**: Preenchimento automático de dados

### ✅ Renovação de Contratos
- Renovação automática de contratos
- Manutenção de termos ou criação de novos
- Histórico de renovações

### ✅ Configurações
- Configuração de provedores de assinatura
- Configuração de expiração e lembretes
- Configuração de segurança e criptografia

## Características da Assinatura Digital Própria

### Segurança
- **Hash SHA-256**: Garante integridade do documento
- **Validação de Integridade**: Verifica se o contrato não foi alterado após assinatura
- **Registro Completo**: IP, data, hora, user agent, certificado
- **Token de Acesso**: Links seguros com expiração
- **Ordem de Assinatura**: Controle de sequência de signatários

### Tipos de Assinatura
1. **Assinatura por Imagem**: Desenho da assinatura (base64)
2. **Assinatura com Certificado Digital**: Integração com certificados ICP-Brasil (A1/A3)
3. **Assinatura Simples**: Hash criptográfico do conteúdo

### Autenticação
- **E-mail**: Link seguro enviado por e-mail
- **SMS**: Token por SMS (a implementar)
- **Token**: Token único com expiração
- **Certificado Digital**: Autenticação via certificado ICP-Brasil

## Próximos Passos (Opcional)

- [ ] Assinatura via celular com desenho
- [ ] Reconhecimento facial
- [ ] Integração com IA para sugestão de cláusulas
- [ ] Integração com WhatsApp Business
- [ ] Webhook para notificações de assinatura
- [ ] Assinatura com OpenSSL real (openssl_sign)

## Licença

Módulo interno do GestorEasy v3.

