-- --------------------------------------------------------
-- Anfitrião:                    127.0.0.1
-- Versão do servidor:           8.0.43-0ubuntu0.24.04.1 - (Ubuntu)
-- SO do servidor:               Linux
-- HeidiSQL Versão:              12.8.0.6908
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


-- A despejar estrutura da base de dados para gcc_sonangol
CREATE DATABASE IF NOT EXISTS `gcc_sonangol` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `gcc_sonangol`;

-- A despejar estrutura para tabela gcc_sonangol.cliente
CREATE TABLE IF NOT EXISTS `cliente` (
  `clienteId` int NOT NULL,
  `empresaId` int NOT NULL,
  `businessPartnerId` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `endereco_mac_unico` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `arquivoIdentificacao` varchar(50) DEFAULT NULL,
  `bloqueio` enum('0','1') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT '1',
  `nomeCliente` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `nifCliente` varchar(20) DEFAULT NULL,
  `emailCliente` varchar(100) DEFAULT NULL,
  `senhaCliente` varchar(255) DEFAULT NULL,
  `fotoCliente` varchar(255) DEFAULT NULL,
  `telefoneCliente` varchar(20) DEFAULT NULL,
  `enderecoCliente` varchar(150) DEFAULT NULL,
  `cidadeCliente` varchar(50) DEFAULT NULL,
  `provincia` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `paisCliente` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `IBAN` varchar(50) DEFAULT NULL,
  `clienteIdEMIS` varchar(50) DEFAULT NULL,
  `criadoEm` datetime DEFAULT CURRENT_TIMESTAMP,
  `tipoCliente` enum('Particular','Empresa') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT 'Empresa',
  `ultimo_login` datetime DEFAULT NULL,
  `novo_cliente` enum('0','1') DEFAULT '1',
  PRIMARY KEY (`clienteId`),
  UNIQUE KEY `businessPartnerId` (`businessPartnerId`),
  KEY `fk_cliente_empresa` (`empresaId`),
  CONSTRAINT `fk_cliente_empresa` FOREIGN KEY (`empresaId`) REFERENCES `empresa` (`empresaId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.configuracoes
CREATE TABLE IF NOT EXISTS `configuracoes` (
  `id_conf` int NOT NULL AUTO_INCREMENT,
  `clienteIdConf` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `tentativas_login` tinyint NOT NULL DEFAULT '5',
  `codigo_seguranca` varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0000',
  `tempo_de_vida_codigo_seguranca` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0000',
  `servico_mensagens` enum('true','false') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'false',
  `servico_email` enum('true','false') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'false',
  `servico_principal` enum('true','false') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'false',
  PRIMARY KEY (`id_conf`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.conta_movimento
CREATE TABLE IF NOT EXISTS `conta_movimento` (
  `movimentoId` int NOT NULL AUTO_INCREMENT,
  `clienteId` int NOT NULL,
  `tipoMovimento` enum('Crédito','Débito') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
  `valor` decimal(20,2) NOT NULL,
  `descricao` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `clienteIdTipo` enum('Fatura','Pagamento','Ajuste','Outro') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT 'Outro',
  `clienteIdId` int DEFAULT NULL,
  `dataMovimento` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `empresaId` int NOT NULL,
  `usuarioResponsavel` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  PRIMARY KEY (`movimentoId`),
  KEY `idx_cliente` (`clienteId`),
  KEY `idx_empresa` (`empresaId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.conta_saldo
CREATE TABLE IF NOT EXISTS `conta_saldo` (
  `saldoId` int NOT NULL AUTO_INCREMENT,
  `clienteId` int NOT NULL,
  `empresaId` int NOT NULL,
  `saldoAtual` decimal(20,2) NOT NULL DEFAULT '0.00',
  `moeda` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'AOA',
  `ultimaAtualizacao` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`saldoId`),
  UNIQUE KEY `unique_cliente_empresa` (`clienteId`,`empresaId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.empresa
CREATE TABLE IF NOT EXISTS `empresa` (
  `empresaId` int NOT NULL,
  `nomeEmpresa` varchar(100) NOT NULL,
  `razao_social` varchar(100) NOT NULL,
  `data_abertura` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `nif` varchar(20) NOT NULL,
  `endereco` varchar(150) DEFAULT NULL,
  `cidade` varchar(50) DEFAULT NULL,
  `provincia` char(2) DEFAULT NULL,
  `pais` char(3) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `senhaEmpresa` varchar(100) DEFAULT NULL,
  `logoEmpresa` varchar(100) DEFAULT NULL,
  `telefone` varchar(20) DEFAULT NULL,
  `telefone_secundario` varchar(50) NOT NULL,
  `site` varchar(50) NOT NULL,
  `porte_empresa` enum('MEI','Micro','Pequena','Média','Grande') NOT NULL DEFAULT 'Grande',
  `entidadePagamentoEMIS` varchar(6) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  PRIMARY KEY (`empresaId`),
  UNIQUE KEY `nif` (`nif`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.expedicao
CREATE TABLE IF NOT EXISTS `expedicao` (
  `expedicaoId` int NOT NULL AUTO_INCREMENT,
  `facturaId` int NOT NULL,
  `clienteId` int NOT NULL,
  `empresaId` int NOT NULL,
  `dataExpedicao` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `statusEntrega` enum('Pendente','Em Rota','Entregue','Devolvido','Cancelado') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'Pendente',
  `transportadora` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `numeroGuia` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `observacoes` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci,
  PRIMARY KEY (`expedicaoId`),
  KEY `idx_factura` (`facturaId`),
  KEY `idx_cliente` (`clienteId`),
  KEY `idx_empresa` (`empresaId`),
  CONSTRAINT `fk_expedicao_cliente` FOREIGN KEY (`clienteId`) REFERENCES `cliente` (`clienteId`) ON UPDATE CASCADE,
  CONSTRAINT `fk_expedicao_empresa` FOREIGN KEY (`empresaId`) REFERENCES `empresa` (`empresaId`) ON UPDATE CASCADE,
  CONSTRAINT `fk_expedicao_factura` FOREIGN KEY (`facturaId`) REFERENCES `factura` (`facturaId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.expedicao_item
CREATE TABLE IF NOT EXISTS `expedicao_item` (
  `itemExpedicaoId` int NOT NULL AUTO_INCREMENT,
  `expedicaoId` int NOT NULL,
  `produtoId` int NOT NULL,
  `quantidade` int NOT NULL DEFAULT '0',
  `unidadeMedida` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  PRIMARY KEY (`itemExpedicaoId`),
  KEY `idx_expedicao` (`expedicaoId`),
  KEY `fk_expedicao_item_produto` (`produtoId`),
  CONSTRAINT `fk_expedicao_item_expedicao` FOREIGN KEY (`expedicaoId`) REFERENCES `expedicao` (`expedicaoId`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_expedicao_item_produto` FOREIGN KEY (`produtoId`) REFERENCES `produto` (`produtoId`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.factura
CREATE TABLE IF NOT EXISTS `factura` (
  `facturaId` int NOT NULL AUTO_INCREMENT,
  `numeroFactura` varchar(50) NOT NULL DEFAULT '0',
  `arquivoFactura` varchar(50) NOT NULL DEFAULT '0',
  `clienteId` int NOT NULL,
  `cotacaoId` int NOT NULL,
  `empresaId` int NOT NULL,
  `dataEmissao` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `valorTotalFactura` decimal(15,2) NOT NULL,
  `moeda` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT 'AOA',
  `statusFactura` enum('Emitida','Paga','Cancelada','Vencida') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `dataVencimento` date DEFAULT NULL,
  `dataPagamento` date DEFAULT NULL,
  `formaPagamento` enum('Dinheiro','Pagamento por Referência','SDD - Sistema de Débitos Directos','GPO - Gateway Payment Online','Transferência Bancária','TPA','Liquidação Sistema') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT 'Dinheiro',
  `descricao` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci,
  PRIMARY KEY (`facturaId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.faq
CREATE TABLE IF NOT EXISTS `faq` (
  `id` int NOT NULL AUTO_INCREMENT,
  `pergunta` varchar(255) NOT NULL,
  `resposta` text NOT NULL,
  `categoria` varchar(100) DEFAULT NULL,
  `ordem` int DEFAULT '0',
  `ativo` tinyint(1) DEFAULT '1',
  `criado_em` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.movimento
CREATE TABLE IF NOT EXISTS `movimento` (
  `movimentoId` int NOT NULL AUTO_INCREMENT,
  `clienteMov` int NOT NULL,
  `produtoId` int DEFAULT NULL,
  `dataMovimento` date NOT NULL,
  `tipoMovimento` enum('entrada','saida','ajuste','transferencia') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `quantidade` decimal(13,3) NOT NULL,
  `unidadeMedida` char(3) DEFAULT NULL,
  `centroOrigem` char(4) DEFAULT NULL,
  `centroDestino` char(4) DEFAULT NULL,
  `documentoclienteId` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`movimentoId`),
  KEY `fk_movimento_produto` (`produtoId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.movimento_financeiro
CREATE TABLE IF NOT EXISTS `movimento_financeiro` (
  `movimentoFinanceiroId` int NOT NULL AUTO_INCREMENT,
  `tipoMovimento` enum('Entrada','Saída') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
  `descricao` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `valor` decimal(20,2) NOT NULL,
  `dataMovimento` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `clienteIdId` varchar(50) DEFAULT NULL,
  `clienteIdTipo` enum('Fatura','Depósito','Débito','Outro') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT 'Outro',
  `empresaId` int NOT NULL,
  `clienteId` int NOT NULL,
  `objecto` int DEFAULT NULL,
  `observacoes` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci,
  PRIMARY KEY (`movimentoFinanceiroId`) USING BTREE,
  KEY `idx_empresa` (`empresaId`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.pagamento_webhook
CREATE TABLE IF NOT EXISTS `pagamento_webhook` (
  `pagamentoId` int NOT NULL AUTO_INCREMENT,
  `clienteID` int NOT NULL DEFAULT '0',
  `empresaID` int NOT NULL DEFAULT '0',
  `eventId` enum('PR - Pagamento por referência','GPO - Gateway payment Online','SDD - Sistema de debitos directos') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'PR - Pagamento por referência',
  `clienteIdInterna` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `identificacaoPagamento` varchar(100) NOT NULL,
  `entidadePagamento` varchar(100) NOT NULL,
  `statusPagamento` enum('Pendente','Confirmado','Falhou') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'Pendente',
  `IdentificadorPagamento` enum('Sistema','Microserviço','Terceiro') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'Sistema',
  `valor` decimal(20,2) NOT NULL,
  `moeda` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'AOA',
  `dataRecebimento` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `payloadJson` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci,
  PRIMARY KEY (`pagamentoId`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.pedidocotacao
CREATE TABLE IF NOT EXISTS `pedidocotacao` (
  `pedidoCotacaoId` int NOT NULL,
  `numero_cotacao` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'COT-2025-001',
  `dataCriacao` date NOT NULL DEFAULT (now()),
  `clienteID` int NOT NULL DEFAULT '0',
  `statusPedido` enum('Pendente','Aprovado','Rejeitado','Cancelado') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT 'Pendente',
  `produtoID` int DEFAULT NULL,
  `servicoID` int DEFAULT NULL,
  `empresaID` int DEFAULT NULL,
  `descricaoPedido` text,
  `quantidade` int DEFAULT NULL,
  `valorTotal` decimal(20,2) DEFAULT NULL,
  PRIMARY KEY (`pedidoCotacaoId`),
  KEY `fk_pedido_cliente` (`clienteID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para tabela gcc_sonangol.produto
CREATE TABLE IF NOT EXISTS `produto` (
  `produtoId` int NOT NULL,
  `empresaDona` int NOT NULL,
  `codigoProduto` varchar(18) NOT NULL,
  `imagem_produto` varchar(18) DEFAULT 'padrao.png',
  `descricao` varchar(100) DEFAULT NULL,
  `unidadeMedida` char(3) DEFAULT NULL,
  `preco` decimal(13,2) DEFAULT NULL,
  `moedaProduto` char(3) DEFAULT NULL,
  `categoria` varchar(50) DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT '1',
  `dataProduto` datetime DEFAULT (now()),
  PRIMARY KEY (`produtoId`),
  UNIQUE KEY `codigoProduto` (`codigoProduto`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

-- Exportação de dados não seleccionada.

-- A despejar estrutura para disparador gcc_sonangol.cliente_after_insert
SET @OLDTMP_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
DELIMITER //
CREATE TRIGGER `cliente_after_insert` AFTER INSERT ON `cliente` FOR EACH ROW BEGIN
    INSERT INTO configuracoes(clienteIdConf) VALUES (NEW.clienteId);
END//
DELIMITER ;
SET SQL_MODE=@OLDTMP_SQL_MODE;

/*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;
