Created
June 17, 2018 17:40
-
-
Save celsojr/8350ff998d2aa8ab95bbcf0c2e00a8f1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- MySQL Workbench Forward Engineering | |
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; | |
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; | |
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; | |
-- ----------------------------------------------------- | |
-- Schema mapa_exemplo | |
-- ----------------------------------------------------- | |
DROP SCHEMA IF EXISTS `mapa_exemplo` ; | |
-- ----------------------------------------------------- | |
-- Schema mapa_exemplo | |
-- ----------------------------------------------------- | |
CREATE SCHEMA IF NOT EXISTS `mapa_exemplo` DEFAULT CHARACTER SET utf8 ; | |
USE `mapa_exemplo` ; | |
-- ----------------------------------------------------- | |
-- Table `mapa_exemplo`.`clientes` | |
-- ----------------------------------------------------- | |
DROP TABLE IF EXISTS `mapa_exemplo`.`clientes` ; | |
CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`clientes` ( | |
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, | |
`razao` VARCHAR(100) NOT NULL, | |
`fantasia` VARCHAR(100) NOT NULL, | |
`telefone` VARCHAR(20) NOT NULL, | |
`email` VARCHAR(100) NOT NULL, | |
`cidade` VARCHAR(100) NOT NULL, | |
`estado` CHAR(2) NOT NULL, | |
`ativo` TINYINT(4) NOT NULL, | |
PRIMARY KEY (`id`), | |
UNIQUE INDEX `id_UNIQUE` (`id` ASC)) | |
ENGINE = InnoDB | |
DEFAULT CHARACTER SET = utf8; | |
-- ----------------------------------------------------- | |
-- Table `mapa_exemplo`.`nota` | |
-- ----------------------------------------------------- | |
DROP TABLE IF EXISTS `mapa_exemplo`.`nota` ; | |
CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`nota` ( | |
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, | |
`numero` INT(11) NOT NULL, | |
`data_emissao` DATE NOT NULL, | |
`id_cliente` INT(10) UNSIGNED NOT NULL, | |
`valor_nota` DECIMAL(12,2) NOT NULL, | |
`perc_comissao` DECIMAL(4,2) NOT NULL, | |
`valor_comissao` DECIMAL(12,2) NOT NULL, | |
`encerrado` TINYINT(4) NOT NULL, | |
PRIMARY KEY (`id`), | |
UNIQUE INDEX `id_UNIQUE` (`id` ASC), | |
UNIQUE INDEX `numero_UNIQUE` (`numero` ASC), | |
INDEX `id_cliente` (`id_cliente` ASC), | |
CONSTRAINT `id_cliente` | |
FOREIGN KEY (`id_cliente`) | |
REFERENCES `mapa_exemplo`.`clientes` (`id`) | |
ON DELETE NO ACTION | |
ON UPDATE NO ACTION) | |
ENGINE = InnoDB | |
DEFAULT CHARACTER SET = utf8; | |
-- ----------------------------------------------------- | |
-- Table `mapa_exemplo`.`nota_item` | |
-- ----------------------------------------------------- | |
DROP TABLE IF EXISTS `mapa_exemplo`.`nota_item` ; | |
CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`nota_item` ( | |
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, | |
`id_produto` INT(10) UNSIGNED NOT NULL, | |
`quantidade` DECIMAL(12,2) NOT NULL, | |
`valor_unitario` DECIMAL(12,2) NOT NULL, | |
`valor_total` DECIMAL(12,2) NULL DEFAULT NULL, | |
PRIMARY KEY (`id`), | |
UNIQUE INDEX `id_UNIQUE` (`id` ASC)) | |
ENGINE = InnoDB | |
DEFAULT CHARACTER SET = utf8; | |
-- ----------------------------------------------------- | |
-- Table `mapa_exemplo`.`produtos` | |
-- ----------------------------------------------------- | |
DROP TABLE IF EXISTS `mapa_exemplo`.`produtos` ; | |
CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`produtos` ( | |
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, | |
`nome` VARCHAR(100) NOT NULL, | |
`descricao` TEXT NULL DEFAULT NULL, | |
`valor_venda` DECIMAL(12,2) NOT NULL, | |
`ativo` TINYINT(4) NOT NULL, | |
PRIMARY KEY (`id`), | |
UNIQUE INDEX `id_UNIQUE` (`id` ASC)) | |
ENGINE = InnoDB | |
DEFAULT CHARACTER SET = utf8; | |
-- ----------------------------------------------------- | |
-- Table `mapa_exemplo`.`tributos` | |
-- ----------------------------------------------------- | |
DROP TABLE IF EXISTS `mapa_exemplo`.`tributos` ; | |
CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`tributos` ( | |
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, | |
`codigo` VARCHAR(20) NOT NULL, | |
`nome` VARCHAR(45) NULL DEFAULT NULL, | |
`aliquota` DECIMAL(4,2) NOT NULL, | |
PRIMARY KEY (`id`), | |
UNIQUE INDEX `id_UNIQUE` (`id` ASC)) | |
ENGINE = InnoDB | |
DEFAULT CHARACTER SET = utf8; | |
-- ----------------------------------------------------- | |
-- Table `mapa_exemplo`.`tributo_item` | |
-- ----------------------------------------------------- | |
DROP TABLE IF EXISTS `mapa_exemplo`.`tributo_item` ; | |
CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`tributo_item` ( | |
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, | |
`id_nota_item` INT(10) UNSIGNED NOT NULL, | |
`id_tributo` INT(10) UNSIGNED NOT NULL, | |
`base_calculo` DECIMAL(12,2) NOT NULL, | |
`aliquota` DECIMAL(12,2) NOT NULL, | |
`valor_imposto` DECIMAL(12,2) NOT NULL, | |
PRIMARY KEY (`id`), | |
UNIQUE INDEX `id_UNIQUE` (`id` ASC), | |
INDEX `id_tributo_idx` (`id_tributo` ASC), | |
INDEX `id_nota_item` (`id_nota_item` ASC), | |
CONSTRAINT `id_nota_item` | |
FOREIGN KEY (`id_nota_item`) | |
REFERENCES `mapa_exemplo`.`nota_item` (`id`) | |
ON DELETE CASCADE | |
ON UPDATE CASCADE, | |
CONSTRAINT `id_tributo` | |
FOREIGN KEY (`id_tributo`) | |
REFERENCES `mapa_exemplo`.`tributos` (`id`)) | |
ENGINE = InnoDB | |
DEFAULT CHARACTER SET = utf8; | |
USE `mapa_exemplo`; | |
DELIMITER $$ | |
USE `mapa_exemplo`$$ | |
DROP TRIGGER IF EXISTS `mapa_exemplo`.`nota_item_BEFORE_INSERT` $$ | |
USE `mapa_exemplo`$$ | |
CREATE | |
DEFINER=`root`@`localhost` | |
TRIGGER `mapa_exemplo`.`nota_item_BEFORE_INSERT` | |
BEFORE INSERT ON `mapa_exemplo`.`nota_item` | |
FOR EACH ROW | |
BEGIN | |
SET NEW.valor_unitario = (SELECT `valor_venda` FROM `mapa_exemplo`.`produtos` WHERE `id` = NEW.id_produto); | |
SET NEW.valor_total = NEW.quantidade * (SELECT `valor_venda` FROM `mapa_exemplo`.`produtos` WHERE `id` = NEW.id_produto); | |
END$$ | |
USE `mapa_exemplo`$$ | |
DROP TRIGGER IF EXISTS `mapa_exemplo`.`nota_item_AFTER_INSERT` $$ | |
USE `mapa_exemplo`$$ | |
CREATE | |
DEFINER=`root`@`localhost` | |
TRIGGER `mapa_exemplo`.`nota_item_AFTER_INSERT` | |
AFTER INSERT ON `mapa_exemplo`.`nota_item` | |
FOR EACH ROW | |
BEGIN | |
DECLARE icms DECIMAL(4,2); | |
DECLARE pis DECIMAL(4,2); | |
DECLARE cofins DECIMAL(4,2); | |
SET icms = 12; | |
SET pis = 1.65; | |
SET cofins = 7.6; | |
INSERT INTO `mapa_exemplo`.`tributo_item` (`id_nota_item`, `id_tributo`, `base_calculo`, `aliquota`, `valor_imposto`) | |
VALUES (NEW.id, 1, NEW.valor_total, icms, ((NEW.valor_total * icms) / 100)); | |
INSERT INTO `mapa_exemplo`.`tributo_item` (`id_nota_item`, `id_tributo`, `base_calculo`, `aliquota`, `valor_imposto`) | |
VALUES (NEW.id, 2, NEW.valor_total, pis, ((NEW.valor_total * pis) / 100)); | |
INSERT INTO `mapa_exemplo`.`tributo_item` (`id_nota_item`, `id_tributo`, `base_calculo`, `aliquota`, `valor_imposto`) | |
VALUES (NEW.id, 3, NEW.valor_total, cofins, ((NEW.valor_total * cofins) / 100)); | |
END$$ | |
DELIMITER ; | |
SET SQL_MODE=@OLD_SQL_MODE; | |
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; | |
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment