text: -- MySQL Script generated by MySQL Workbench
  -- Sat Feb 15 18:43:32 2020
  -- Model: AcrilBox    Version: 1.0
  -- MySQL Workbench Forward Engineering
  
  -- -----------------------------------------------------
  -- Schema db_acrilbox
  -- -----------------------------------------------------
  DROP SCHEMA IF EXISTS db_acrilbox ;
  
  -- -----------------------------------------------------
  -- Schema db_acrilbox
  -- -----------------------------------------------------
  CREATE SCHEMA IF NOT EXISTS db_acrilbox DEFAULT CHARACTER SET utf8 ;
  USE db_acrilbox ;
  
  -- -----------------------------------------------------
  -- Table tb_endereco
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_endereco ;
  
  CREATE TABLE IF NOT EXISTS tb_endereco (
    id_endereco INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    logradouro VARCHAR(45) NOT NULL,
    cidade VARCHAR(45) NOT NULL,
    uf VARCHAR(2) NOT NULL,
    cep VARCHAR(9) NOT NULL,
    numero INT NOT NULL,
    bairro VARCHAR(45) NOT NULL,
    complemento VARCHAR(30) NULL
  );
  
  
  -- -----------------------------------------------------
  -- Table tb_pessoa
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_pessoa ;
  
  CREATE TABLE IF NOT EXISTS tb_pessoa (
    id_pessoa INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    nomePessoa VARCHAR(45) NOT NULL,
    email VARCHAR(45) NULL,
    telefone VARCHAR(16),
    id_endereco INT,
    FOREIGN KEY (id_endereco) REFERENCES tb_endereco (id_endereco)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  insert into tb_pessoa (nomePessoa, email) VALUES("Administrador", "admin@admin.com");
  -- -----------------------------------------------------
  -- Table tb_funcionario
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_funcionario ;
  
  CREATE TABLE IF NOT EXISTS tb_funcionario (
    matricula_funcionario INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    cpf VARCHAR(14) UNIQUE,
    rg VARCHAR(14) UNIQUE,
    sexo ENUM('M', 'F'),
    dtNascimento DATE,
    login VARCHAR(26) NOT NULL,
    senha VARCHAR(256) NOT NULL,
    id_pessoa INT,
    FOREIGN KEY (id_pessoa) REFERENCES tb_pessoa (id_pessoa)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  insert into tb_funcionario (login, senha, id_pessoa) VALUES ("admin", "$2y$12$88TlBQ.H5kc5MmE.OfSBIuXK6wsHeGotquOLJCxjhUCpwGh4BYY96", 1);
  -- -----------------------------------------------------
  -- Table tb_fornecedor
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_fornecedor ;
  
  CREATE TABLE IF NOT EXISTS tb_fornecedor (
    id_fornecedor INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    cpf_cnpj VARCHAR(20) UNIQUE NOT NULL,
    tipo_fornecedor ENUM('Fisico', 'Juridico'),
    id_pessoa INT NOT NULL,
    FOREIGN KEY (id_pessoa) REFERENCES tb_pessoa (id_pessoa)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  
  -- -----------------------------------------------------
  -- Table tb_cliente
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_cliente ;
  
  CREATE TABLE IF NOT EXISTS tb_cliente (
    id_cliente INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    cpf_cnpj VARCHAR(20) UNIQUE NOT NULL,
    saldo_positivo DOUBLE NULL,
    saldo_negativo DOUBLE NULL,
    limite_credito DOUBLE NULL,
    tipo_cliente ENUM('Fisico', 'Juridico'),
    id_pessoa INT NOT NULL,
    FOREIGN KEY (id_pessoa) REFERENCES tb_pessoa (id_pessoa)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  
  -- -----------------------------------------------------
  -- Table tb_servico
  -- -----------------------------------------------------
  /*DROP TABLE IF EXISTS tb_servico ; //Posteriormente será implementado
  
  CREATE TABLE IF NOT EXISTS tb_servico (
    id_servico INT NOT NULL PRIMARY KEY,
    nome VARCHAR(45) NULL,
    descricao VARCHAR(45) NULL,
    tipoServico VARCHAR(45) NULL,
    metragemQuadrada VARCHAR(45) NULL,
    metragemLinear VARCHAR(45) NULL,
    valorServico DOUBLE NULL
  );*/
  
  -- -----------------------------------------------------
  -- Table tb_venda
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_venda ;
  
  CREATE TABLE IF NOT EXISTS tb_venda (
    id_venda INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    dataVenda DATE NOT NULL,
    precoVenda DOUBLE NOT NULL,
    desconto DOUBLE NULL,
    valorTotal DOUBLE NOT NULL,
    id_funcionario INT NOT NULL,
    id_cliente INT NOT NULL,
    FOREIGN KEY (id_funcionario) REFERENCES tb_funcionario (matricula_funcionario),
    FOREIGN KEY (id_cliente) REFERENCES tb_cliente (id_cliente)
  );
  
  -- -----------------------------------------------------
  -- Table tb_compra
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_compra ;
  
  CREATE TABLE IF NOT EXISTS tb_compra (
    id_compra INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    dataCompra DATE NOT NULL,
    valorCompra DOUBLE NOT NULL,
    id_funcionario INT NOT NULL,
    id_fornecedor INT NOT NULL,
    FOREIGN KEY (id_funcionario) REFERENCES tb_funcionario (matricula_funcionario),
    CONSTRAINT id_fornecedor FOREIGN KEY (id_fornecedor) REFERENCES tb_fornecedor (id_fornecedor)
  );
  
  -- -----------------------------------------------------
  -- Table tb_produto
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_produto ;
  
  CREATE TABLE IF NOT EXISTS tb_produto (
    cod_produto INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    nomeProduto VARCHAR(45) NOT NULL,
    codigoBarra VARCHAR(45) NOT NULL,
    corProduto VARCHAR(45) NOT NULL,
    notaFiscal VARCHAR(45) NULL
    );
  
  -- -----------------------------------------------------
  -- Table tb_itemVendido
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_itemVendido ;
  
  CREATE TABLE IF NOT EXISTS tb_itemVendido (
    id_itemVendido INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    precoVenda DOUBLE NOT NULL,
    quantidadeVenda INT NOT NULL,
    id_venda INT NOT NULL,
    cod_produto INT NOT NULL,
    FOREIGN KEY (id_venda) REFERENCES tb_venda (id_venda)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
    FOREIGN KEY (cod_produto) REFERENCES tb_produto (cod_produto)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  
  -- -----------------------------------------------------
  -- Table tb_itemComprado
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_itemComprado ;
  
  CREATE TABLE IF NOT EXISTS tb_itemComprado (
    id_itemComprado INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    precoCompra DOUBLE NOT NULL,
    quantidade INT NOT NULL,
    id_compra INT NOT NULL,
    cod_produto INT NOT NULL,
    FOREIGN KEY (id_compra) REFERENCES tb_compra (id_compra)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
    FOREIGN KEY (cod_produto) REFERENCES tb_produto (cod_produto)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  
  -- -----------------------------------------------------
  -- Table tb_estoque
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_estoque ;
  
  CREATE TABLE IF NOT EXISTS tb_estoque (
    id_estoque INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    cod_produto INT NOT NULL,
    qtdMinima INT NOT NULL,
    qtdMaxima INT NOT NULL,
    qtdAtual_Disponivel INT NOT NULL,
    qtdReal INT NOT NULL,
    FOREIGN KEY (cod_produto) REFERENCES tb_produto (cod_produto)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  
  -- -----------------------------------------------------
  -- Table tb_acessorio
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_acessorio ;
  
  CREATE TABLE IF NOT EXISTS tb_acessorio (
    id_acessorio INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    tipo VARCHAR(45) NOT NULL,
    cod_produto INT NOT NULL,
    FOREIGN KEY (cod_produto) REFERENCES tb_produto (cod_produto)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  
  -- -----------------------------------------------------
  -- Table tb_vidro
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_vidro ;
  
  CREATE TABLE IF NOT EXISTS tb_vidro (
    id_vidro INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    largura DOUBLE NOT NULL,
    altura DOUBLE NOT NULL,
    espessura DOUBLE NOT NULL,
    tipo VARCHAR(45) NULL,
    cod_produto INT NOT NULL,
    FOREIGN KEY (cod_produto) REFERENCES tb_produto (cod_produto)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  
  -- -----------------------------------------------------
  -- Table tb_aluminio
  -- -----------------------------------------------------
  DROP TABLE IF EXISTS tb_aluminio ;
  
  CREATE TABLE IF NOT EXISTS tb_aluminio (
    id_aluminio INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    tipo VARCHAR(45) NULL,
    cod_produto INT NOT NULL,
    FOREIGN KEY (cod_produto) REFERENCES tb_produto (cod_produto)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
  );
  
  
  /********PROCEDURE DE CADASTRAR O FUNCIONARIO********/
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_employee_save`;
  
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_employee_save`;
  
  DELIMITER $$
  USE `db_acrilbox`$$
  CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_employee_save`(
  	pnomePessoa VARCHAR(45),
      pemail VARCHAR(45),
      ptelefone VARCHAR(16),
      pcpf VARCHAR(14),
      prg VARCHAR(12),
      psexo ENUM('M','F'),
      pdtNascimento DATE,
  	plogin VARCHAR(20),
  	psenha VARCHAR(250),
      pcep VARCHAR(9),
      puf VARCHAR(2),
      pcidade VARCHAR(45),
      pbairro VARCHAR(45),
      plogradouro VARCHAR(45),
      pnumero INT(11),
      pcomplemento VARCHAR(30)
      
  )
  BEGIN
  	DECLARE vid_endereco INT;
  	DECLARE vid_pessoa INT;
  	
  	INSERT tb_endereco (logradouro, cidade, uf, cep, numero, complemento, bairro)
  	VALUES (plogradouro, pcidade, puf, pcep, pnumero, pcomplemento, pbairro);
  	
  	SET vid_endereco = LAST_INSERT_ID();
  	
  	INSERT tb_pessoa (nomePessoa, email, telefone, id_endereco)
  	VALUES (pnomePessoa, pemail, ptelefone, vid_endereco);
  	
  	SET vid_pessoa = LAST_INSERT_ID();
  	
  	INSERT tb_funcionario (cpf, rg, sexo, dtNascimento, login, senha, id_pessoa)
  	VALUES (pcpf, prg, psexo, pdtNascimento, plogin, psenha, vid_pessoa);
  	
  	SELECT * FROM tb_endereco e INNER JOIN tb_pessoa p USING(id_endereco)
      INNER JOIN tb_funcionario f USING(id_pessoa) WHERE f.matricula_funcionario = LAST_INSERT_ID();
  	
  END$$
  
  DELIMITER ;
  
  
  /********PROCEDURE DE DELETAR O FUNCIONARIO********/
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_employee_delete`;
  
  DELIMITER $$
  USE `db_acrilbox`$$
  CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_employee_delete`(
  	pmatricula_funcionario INT
  )
  BEGIN
  	DECLARE vid_pessoa INT;
  	DECLARE vid_endereco INT;
  	
  	SELECT id_pessoa INTO vid_pessoa
  	FROM tb_funcionario
  	WHERE matricula_funcionario = pmatricula_funcionario;
  	
  	SELECT id_endereco INTO vid_endereco
  	FROM tb_pessoa
  	WHERE id_pessoa = vid_pessoa;
  	
  	DELETE FROM tb_funcionario WHERE matricula_funcionario = pmatricula_funcionario;
  	DELETE FROM tb_pessoa WHERE id_pessoa = vid_pessoa;
      DELETE FROM tb_endereco WHERE id_endereco = vid_endereco;
      
  
  END$$
  
  DELIMITER ;
  
  
  
  /********PROCEDURE DE ATUALIZAR O FUNCIONARIO********/
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_employee_update`;
  
  DELIMITER $$
  USE `db_acrilbox`$$
  CREATE PROCEDURE `sp_employee_update` (
  	pmatricula_funcionario INT,
  	pnomePessoa VARCHAR(45),
      pemail VARCHAR(45),
      ptelefone VARCHAR(16),
      pcpf VARCHAR(14),
      prg VARCHAR(12),
      psexo ENUM('M','F'),
      pdtNascimento DATE,
  	plogin VARCHAR(20),
  	psenha VARCHAR(250),
      pcep VARCHAR(9),
      puf VARCHAR(2),
      pcidade VARCHAR(45),
      pbairro VARCHAR(45),
      plogradouro VARCHAR(45),
      pnumero INT(11),
      pcomplemento VARCHAR(30)
  )
  BEGIN
  	DECLARE vid_pessoa INT;
  	DECLARE vid_endereco INT;
  	
  	SELECT id_pessoa INTO vid_pessoa
  	FROM tb_funcionario
  	WHERE matricula_funcionario = pmatricula_funcionario;
  	
  	SELECT id_endereco INTO vid_endereco
  	FROM tb_pessoa
  	WHERE id_pessoa = vid_pessoa;
  	
  	UPDATE tb_endereco
  	SET 
  		cep = pcep,
  		uf = puf,
  		cidade = pcidade,
  		bairro = pbairro,
  		logradouro = plogradouro,
  		numero = pnumero,
  		complemento = pcomplemento
  	WHERE id_endereco = vid_endereco;
  	
  	UPDATE tb_pessoa
  	SET 
  		nomePessoa = pnomePessoa,
  		email = pemail,
  		telefone = ptelefone
  	WHERE id_pessoa = vid_pessoa;
  	
  	UPDATE tb_funcionario
  	SET 
  		cpf = pcpf,
  		rg = prg,
  		sexo = psexo,
  		dtNascimento = pdtNascimento,
  		login = plogin,
  		senha = psenha
  	WHERE id_pessoa = vid_pessoa;
  
  	SELECT * FROM tb_endereco e INNER JOIN tb_pessoa p USING(id_endereco)
      INNER JOIN tb_funcionario f USING(id_pessoa) WHERE f.matricula_funcionario = pmatricula_funcionario;
  	
  END$$
  
  DELIMITER ;
  
  
  
  /********PROCEDURE DE CADASTRAR O CLIENTE********/
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_client_save`;
  
  DELIMITER $$
  USE `db_acrilbox`$$
  CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_client_save`(
  	pnomePessoa VARCHAR(45),
      pemail VARCHAR(45),
      ptelefone VARCHAR(16),
      pcpf_cnpj VARCHAR(14), 
  	ptipo_cliente ENUM('Fisico', 'Juridico'),
  	pcep VARCHAR(9),
      puf VARCHAR(2),
      pcidade VARCHAR(45),
      pbairro VARCHAR(45),
      plogradouro VARCHAR(45),
      pnumero INT(11),
      pcomplemento VARCHAR(30),
  	plimite_credito DOUBLE
  )
  BEGIN 
  	DECLARE vid_endereco INT;
  	DECLARE vid_pessoa INT;
  	
  	INSERT INTO tb_endereco (logradouro, cidade, uf, cep, numero, complemento, bairro)
  	VALUES (plogradouro, pcidade, puf, pcep, pnumero, pcomplemento, pbairro);
  	
  	SET vid_endereco = LAST_INSERT_ID();
  	
  	INSERT INTO tb_pessoa (nomePessoa, email, telefone, id_endereco)
  	VALUES (pnomePessoa, pemail, ptelefone, vid_endereco);
  	
  	SET vid_pessoa = LAST_INSERT_ID();
  	
  	INSERT INTO tb_cliente(cpf_cnpj, limite_credito, tipo_cliente, id_pessoa)
  	VALUES (pcpf_cnpj, plimite_credito, ptipo_cliente, vid_pessoa);
  		
  	SELECT * FROM tb_endereco e INNER JOIN tb_pessoa p USING(id_endereco)
      INNER JOIN tb_cliente c USING(id_pessoa) WHERE c.id_cliente = LAST_INSERT_ID();
  	
  END$$
  
  DELIMITER ;
  
  /********PROCEDURE DE ATUALIZAR O CLIENTE********/
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_client_update`;
  
  DELIMITER $$
  USE `db_acrilbox`$$
  CREATE PROCEDURE `sp_client_update` (
  	pid_cliente INT,
      pnomePessoa VARCHAR(45),
      pemail VARCHAR(45),
      ptelefone VARCHAR(16),
      pcpf_cnpj VARCHAR(14), 
  	ptipo_cliente ENUM('Fisico', 'Juridico'),
  	pcep VARCHAR(9),
      puf VARCHAR(2),
      pcidade VARCHAR(45),
      pbairro VARCHAR(45),
      plogradouro VARCHAR(45),
      pnumero INT(11),
      pcomplemento VARCHAR(30),
  	plimite_credito DOUBLE
  )
  BEGIN 
  	DECLARE vid_endereco INT;
  	DECLARE vid_pessoa INT;
  	
  	SELECT id_pessoa INTO vid_pessoa
  	FROM tb_cliente
  	WHERE id_cliente = pid_cliente;
  	
  	SELECT id_endereco INTO vid_endereco
  	FROM tb_pessoa
  	WHERE id_pessoa = vid_pessoa;
  	
  	UPDATE tb_endereco
  	SET 
  		cep = pcep,
  		uf = puf,
  		cidade = pcidade,
  		bairro = pbairro,
  		logradouro = plogradouro,
  		numero = pnumero,
  		complemento = pcomplemento
  	WHERE id_endereco = vid_endereco;
  	
  	UPDATE tb_pessoa
  	SET 
  		nomePessoa = pnomePessoa,
  		email = pemail,
  		telefone = ptelefone
  	WHERE id_pessoa = vid_pessoa;
  	
  	UPDATE tb_cliente
  	SET 
  		cpf_cnpj = pcpf_cnpj,
          limite_credito = plimite_credito,
  		tipo_cliente = ptipo_cliente
  	WHERE id_pessoa = vid_pessoa;
  
  	SELECT * FROM tb_endereco e INNER JOIN tb_pessoa p USING(id_endereco)
      INNER JOIN tb_cliente c USING(id_pessoa) WHERE c.id_cliente= pid_cliente;
  	
  END$$
  
  DELIMITER ;
  
  /********PROCEDURE DE DELETAR O CLIENTE********/
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_client_delete`;
  
  DELIMITER $$
  USE `db_acrilbox`$$
  CREATE PROCEDURE `sp_client_delete` (
  	pid_cliente INT
  )
  BEGIN
  	DECLARE vid_pessoa INT;
  	DECLARE vid_endereco INT;
  	
  	SELECT id_pessoa INTO vid_pessoa
  	FROM tb_cliente
  	WHERE id_cliente = pid_cliente;
  	
  	SELECT id_endereco INTO vid_endereco
  	FROM tb_pessoa
  	WHERE id_pessoa = vid_pessoa;
  	
  	DELETE FROM tb_cliente WHERE id_cliente = pid_cliente;
  	DELETE FROM tb_pessoa WHERE id_pessoa = vid_pessoa;
      DELETE FROM tb_endereco WHERE id_endereco = vid_endereco;
      
  
  END$$
  
  DELIMITER ;
  
  
  /********PROCEDURE DE INSERIR FORNECEDOR********/
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_supplier_save`;
  
  DELIMITER $$
  USE `db_acrilbox`$$
  CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_supplier_save`(
  	pnomePessoa VARCHAR(45),
      pemail VARCHAR(45),
      ptelefone VARCHAR(16),
      pcpf_cnpj VARCHAR(14), 
  	ptipo_fornecedor ENUM('Fisico', 'Juridico'),
  	pcep VARCHAR(9),
      puf VARCHAR(2),
      pcidade VARCHAR(45),
      pbairro VARCHAR(45),
      plogradouro VARCHAR(45),
      pnumero INT(11),
      pcomplemento VARCHAR(30)
  )
  BEGIN 
  	DECLARE vid_endereco INT;
  	DECLARE vid_pessoa INT;
  	
  	INSERT INTO tb_endereco (logradouro, cidade, uf, cep, numero, complemento, bairro)
  	VALUES (plogradouro, pcidade, puf, pcep, pnumero, pcomplemento, pbairro);
  	
  	SET vid_endereco = LAST_INSERT_ID();
  	
  	INSERT INTO tb_pessoa (nomePessoa, email, telefone, id_endereco)
  	VALUES (pnomePessoa, pemail, ptelefone, vid_endereco);
  	
  	SET vid_pessoa = LAST_INSERT_ID();
  	
  	INSERT INTO tb_fornecedor(cpf_cnpj, tipo_fornecedor, id_pessoa)
  	VALUES (pcpf_cnpj, ptipo_fornecedor, vid_pessoa);
  		
  	SELECT * FROM tb_endereco e INNER JOIN tb_pessoa p USING(id_endereco)
      INNER JOIN tb_fornecedor f USING(id_pessoa) WHERE f.id_fornecedor = LAST_INSERT_ID();
  	
  END$$
  
  DELIMITER ;
  
  
  /********PROCEDURE DE ATUALIZAR FORNECEDOR********/
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_supplier_update`;
  
  DELIMITER $$
  USE `db_acrilbox`$$
  CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_supplier_update`(
  	pid_fornecedor INT,
      pnomePessoa VARCHAR(45),
      pemail VARCHAR(45),
      ptelefone VARCHAR(16),
      pcpf_cnpj VARCHAR(14), 
  	ptipo_fornecedor ENUM('Fisico', 'Juridico'),
  	pcep VARCHAR(9),
      puf VARCHAR(2),
      pcidade VARCHAR(45),
      pbairro VARCHAR(45),
      plogradouro VARCHAR(45),
      pnumero INT(11),
      pcomplemento VARCHAR(30)
  )
  BEGIN 
  	DECLARE vid_endereco INT;
  	DECLARE vid_pessoa INT;
  	
  	SELECT id_pessoa INTO vid_pessoa
  	FROM tb_fornecedor
  	WHERE id_fornecedor = pid_fornecedor;
  	
  	SELECT id_endereco INTO vid_endereco
  	FROM tb_pessoa
  	WHERE id_pessoa = vid_pessoa;
  	
  	UPDATE tb_endereco
  	SET 
  		cep = pcep,
  		uf = puf,
  		cidade = pcidade,
  		bairro = pbairro,
  		logradouro = plogradouro,
  		numero = pnumero,
  		complemento = pcomplemento
  	WHERE id_endereco = vid_endereco;
  	
  	UPDATE tb_pessoa
  	SET 
  		nomePessoa = pnomePessoa,
  		email = pemail,
  		telefone = ptelefone
  	WHERE id_pessoa = vid_pessoa;
  	
  	UPDATE tb_fornecedor
  	SET 
  		cpf_cnpj = pcpf_cnpj,
  		tipo_fornecedor = ptipo_fornecedor
  	WHERE id_pessoa = vid_pessoa;
  
  	SELECT * FROM tb_endereco e INNER JOIN tb_pessoa p USING(id_endereco)
      INNER JOIN tb_fornecedor f USING(id_pessoa) WHERE f.id_fornecedor= pid_fornecedor;
  	
  END$$
  
  DELIMITER ;
  
  
  /********PROCEDURE DE DELETAR FORNECEDOR********/
  USE `db_acrilbox`;
  DROP procedure IF EXISTS `sp_supplier_delete`;
  
  DELIMITER $$
  USE `db_acrilbox`$$
  CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_supplier_delete`(
  	pid_fornecedor INT
  )
  BEGIN
  	DECLARE vid_pessoa INT;
  	DECLARE vid_endereco INT;
  	
  	SELECT id_pessoa INTO vid_pessoa
  	FROM tb_fornecedor
  	WHERE id_fornecedor = pid_fornecedor;
  	
  	SELECT id_endereco INTO vid_endereco
  	FROM tb_pessoa
  	WHERE id_pessoa = vid_pessoa;
  	
  	DELETE FROM tb_fornecedor WHERE id_fornecedor = pid_fornecedor;
  	DELETE FROM tb_pessoa WHERE id_pessoa = vid_pessoa;
      DELETE FROM tb_endereco WHERE id_endereco = vid_endereco;
      
  
  END$$
  
  DELIMITER ;