-- Integração Correios

-- Configuração
CREATE TABLE IF NOT EXISTS correios_config (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- Credenciais
    codigo_empresa VARCHAR(50) NULL,
    senha VARCHAR(255) NULL,
    
    -- Configurações
    cep_origem VARCHAR(10) NULL,
    servico_padrao VARCHAR(10) DEFAULT '04014', -- PAC
    contrato_habilitado BOOLEAN DEFAULT FALSE,
    
    -- Dados do remetente
    nome_remetente VARCHAR(255) NULL,
    cpf_cnpj_remetente VARCHAR(20) NULL,
    telefone_remetente VARCHAR(20) NULL,
    email_remetente VARCHAR(255) NULL,
    logradouro_remetente VARCHAR(255) NULL,
    numero_remetente VARCHAR(20) NULL,
    complemento_remetente VARCHAR(100) NULL,
    bairro_remetente VARCHAR(100) NULL,
    cidade_remetente VARCHAR(100) NULL,
    estado_remetente VARCHAR(2) NULL,
    cep_remetente VARCHAR(10) NULL,
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    UNIQUE KEY uk_tenant (tenant_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Etiquetas geradas
CREATE TABLE IF NOT EXISTS correios_etiquetas (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- Pedido relacionado
    sales_order_id BIGINT UNSIGNED NULL,
    
    -- Dados da etiqueta
    codigo_etiqueta VARCHAR(50) NOT NULL,
    codigo_rastreamento VARCHAR(50) NULL,
    numero_pedido_correios VARCHAR(50) NULL,
    
    -- Serviço
    codigo_servico VARCHAR(10) NOT NULL,
    nome_servico VARCHAR(100) NULL,
    
    -- Remetente
    nome_remetente VARCHAR(255) NOT NULL,
    cpf_cnpj_remetente VARCHAR(20) NULL,
    telefone_remetente VARCHAR(20) NULL,
    email_remetente VARCHAR(255) NULL,
    logradouro_remetente VARCHAR(255) NOT NULL,
    numero_remetente VARCHAR(20) NOT NULL,
    complemento_remetente VARCHAR(100) NULL,
    bairro_remetente VARCHAR(100) NOT NULL,
    cidade_remetente VARCHAR(100) NOT NULL,
    estado_remetente VARCHAR(2) NOT NULL,
    cep_remetente VARCHAR(10) NOT NULL,
    
    -- Destinatário
    nome_destinatario VARCHAR(255) NOT NULL,
    cpf_cnpj_destinatario VARCHAR(20) NULL,
    telefone_destinatario VARCHAR(20) NULL,
    email_destinatario VARCHAR(255) NULL,
    logradouro_destinatario VARCHAR(255) NOT NULL,
    numero_destinatario VARCHAR(20) NOT NULL,
    complemento_destinatario VARCHAR(100) NULL,
    bairro_destinatario VARCHAR(100) NOT NULL,
    cidade_destinatario VARCHAR(100) NOT NULL,
    estado_destinatario VARCHAR(2) NOT NULL,
    cep_destinatario VARCHAR(10) NOT NULL,
    
    -- Dimensões e peso
    peso DECIMAL(10,3) NOT NULL DEFAULT 0.3,
    comprimento DECIMAL(10,2) NOT NULL DEFAULT 16,
    altura DECIMAL(10,2) NOT NULL DEFAULT 2,
    largura DECIMAL(10,2) NOT NULL DEFAULT 11,
    diametro DECIMAL(10,2) NULL,
    
    -- Valores
    valor_declarado DECIMAL(10,2) DEFAULT 0,
    valor_frete DECIMAL(10,2) DEFAULT 0,
    
    -- Arquivos
    pdf_url VARCHAR(500) NULL,
    pdf_path VARCHAR(500) NULL,
    
    -- Status
    status ENUM('pendente', 'gerada', 'postada', 'em_transito', 'entregue', 'cancelada') DEFAULT 'pendente',
    
    -- Datas
    data_geracao DATETIME NULL,
    data_postagem DATETIME NULL,
    data_entrega DATETIME NULL,
    
    -- Observações
    observacoes TEXT NULL,
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    
    INDEX idx_tenant (tenant_id),
    INDEX idx_sales_order (sales_order_id),
    INDEX idx_codigo_etiqueta (codigo_etiqueta),
    INDEX idx_codigo_rastreamento (codigo_rastreamento),
    INDEX idx_status (status),
    INDEX idx_data_geracao (data_geracao)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Logs de operações
CREATE TABLE IF NOT EXISTS correios_logs (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(100) NOT NULL,
    
    -- Tipo de operação
    tipo ENUM('frete', 'etiqueta', 'rastreamento', 'erro') NOT NULL,
    
    -- Status
    status ENUM('sucesso', 'erro', 'aviso') NOT NULL,
    
    -- Dados
    mensagem TEXT NULL,
    detalhes_json TEXT NULL,
    
    -- Metadados
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    
    INDEX idx_tenant (tenant_id),
    INDEX idx_tipo (tipo),
    INDEX idx_status (status),
    INDEX idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

