-- Emissões de CT-e (Conhecimento de Transporte Eletrônico)
CREATE TABLE IF NOT EXISTS cte_emissions (
  id INT AUTO_INCREMENT PRIMARY KEY,
  
  -- Identificação do documento
  chave VARCHAR(44) NOT NULL,
  numero INT NOT NULL,
  serie INT NOT NULL DEFAULT 1,
  modelo VARCHAR(2) NOT NULL DEFAULT '57', -- 57 = CT-e
  
  -- Status e controle
  status VARCHAR(20) NOT NULL DEFAULT 'pending', -- pending, authorized, canceled, rejected, error
  protocolo VARCHAR(64) NULL,
  environment VARCHAR(10) NOT NULL DEFAULT 'homolog', -- homolog | prod
  
  -- Remetente (empresa emitente)
  remetente_cnpj VARCHAR(14) NOT NULL,
  remetente_ie VARCHAR(20) NULL,
  remetente_nome VARCHAR(100) NOT NULL,
  remetente_endereco TEXT NULL,
  
  -- Destinatário
  destinatario_cnpj VARCHAR(14) NULL,
  destinatario_cpf VARCHAR(11) NULL,
  destinatario_ie VARCHAR(20) NULL,
  destinatario_nome VARCHAR(100) NOT NULL,
  destinatario_endereco TEXT NULL,
  
  -- Expedidor (se diferente do remetente)
  expedidor_cnpj VARCHAR(14) NULL,
  expedidor_nome VARCHAR(100) NULL,
  
  -- Recebedor (se diferente do destinatário)
  recebedor_cnpj VARCHAR(14) NULL,
  recebedor_nome VARCHAR(100) NULL,
  
  -- Valores e impostos
  vl_total DECIMAL(15,2) NOT NULL DEFAULT 0.00,
  vl_receber DECIMAL(15,2) NOT NULL DEFAULT 0.00,
  vl_icms DECIMAL(15,2) NOT NULL DEFAULT 0.00,
  vl_icms_st DECIMAL(15,2) NOT NULL DEFAULT 0.00,
  
  -- Informações da carga
  produto_predominante VARCHAR(100) NULL,
  peso_bruto DECIMAL(12,3) NOT NULL DEFAULT 0.000,
  peso_liquido DECIMAL(12,3) NOT NULL DEFAULT 0.000,
  qtd_volumes INT NOT NULL DEFAULT 0,
  
  -- Modal e tipo de serviço
  modal VARCHAR(2) NOT NULL DEFAULT '01', -- 01=Rodoviário, 02=Aéreo, 03=Aquaviário, 04=Ferroviário, 05=Dutoviário, 06=Multimodal
  tipo_servico VARCHAR(1) NOT NULL DEFAULT '0', -- 0=Normal, 1=Subcontratação, 2=Redespacho, 3=Redespacho Intermediário, 4=Serviço Vinculado a Multimodal
  
  -- Documentos XML e mensagens
  xml MEDIUMTEXT NULL,
  messages TEXT NULL,
  
  -- Auditoria
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  
  -- Índices
  INDEX idx_cte_remetente (remetente_cnpj),
  INDEX idx_cte_destinatario (destinatario_cnpj),
  INDEX idx_cte_status (status),
  INDEX idx_cte_created (created_at),
  UNIQUE KEY uq_cte_chave (chave)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;