-- Tabela para gerenciar listas de integração temporária de itens
-- Usada pelas funções: regListaIntegracao, removeListaIntegracaoAntiga, geraListaIntegracao
-- Data de criação: 2025-12-04

CREATE TABLE `gtsys_integracao_inicial` (
  `codigo` INT(11) NOT NULL AUTO_INCREMENT,
  `codigo_lista` BIGINT(20) NOT NULL COMMENT 'Código único da lista de integração gerado por generateUniqueNumber()',
  `codigo_cliente` INT(11) NOT NULL COMMENT 'FK para gtsys_clientes.codigo',
  `codigo_barra` CHAR(15) NOT NULL COMMENT 'Código de barras do item',
  `data` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Data/hora de criação do registro',
  PRIMARY KEY (`codigo`),
  KEY `idx_codigo_lista` (`codigo_lista`),
  KEY `idx_codigo_cliente` (`codigo_cliente`),
  KEY `idx_codigo_barra` (`codigo_barra`),
  KEY `idx_lista_cliente` (`codigo_lista`, `codigo_cliente`),
  KEY `idx_data` (`data`),
  UNIQUE KEY `unq_lista_cliente_barra` (`codigo_lista`, `codigo_cliente`, `codigo_barra`),
  CONSTRAINT `fk_integracao_inicial_cliente` FOREIGN KEY (`codigo_cliente`) REFERENCES `gtsys_clientes` (`codigo`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Tabela temporária para gerenciamento de listas de integração de itens. Registros são automaticamente removidos após 24 horas.';

-- Índices para otimização de consultas
-- idx_codigo_lista: Usado em geraListaIntegracao para verificar se lista existe
-- idx_codigo_cliente: Usado em combinação com codigo_lista nas consultas
-- idx_codigo_barra: Usado no JOIN com gtsys_itens
-- idx_lista_cliente: Índice composto para consultas frequentes de lista + cliente
-- idx_data: Usado em removeListaIntegracaoAntiga para deletar registros antigos
-- unq_lista_cliente_barra: Garante que não haverá duplicatas de barra na mesma lista/cliente

