Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- 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;
Add Comment
Please, Sign In to add comment