· 8 years ago · Jun 19, 2018, 08:16 AM
1-- MySQL Workbench Forward Engineering
2
3SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
4SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
5SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
6
7-- -----------------------------------------------------
8-- Schema mapa_exemplo
9-- -----------------------------------------------------
10DROP SCHEMA IF EXISTS `mapa_exemplo` ;
11
12-- -----------------------------------------------------
13-- Schema mapa_exemplo
14-- -----------------------------------------------------
15CREATE SCHEMA IF NOT EXISTS `mapa_exemplo` DEFAULT CHARACTER SET utf8 ;
16USE `mapa_exemplo` ;
17
18-- -----------------------------------------------------
19-- Table `mapa_exemplo`.`clientes`
20-- -----------------------------------------------------
21DROP TABLE IF EXISTS `mapa_exemplo`.`clientes` ;
22
23CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`clientes` (
24 `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
25 `razao` VARCHAR(100) NOT NULL,
26 `fantasia` VARCHAR(100) NOT NULL,
27 `telefone` VARCHAR(20) NOT NULL,
28 `email` VARCHAR(100) NOT NULL,
29 `cidade` VARCHAR(100) NOT NULL,
30 `estado` CHAR(2) NOT NULL,
31 `ativo` TINYINT(4) NOT NULL,
32 PRIMARY KEY (`id`),
33 UNIQUE INDEX `id_UNIQUE` (`id` ASC))
34ENGINE = InnoDB
35DEFAULT CHARACTER SET = utf8;
36
37
38-- -----------------------------------------------------
39-- Table `mapa_exemplo`.`nota`
40-- -----------------------------------------------------
41DROP TABLE IF EXISTS `mapa_exemplo`.`nota` ;
42
43CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`nota` (
44 `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
45 `numero` INT(11) NOT NULL,
46 `data_emissao` DATE NOT NULL,
47 `id_cliente` INT(10) UNSIGNED NOT NULL,
48 `valor_nota` DECIMAL(12,2) NOT NULL,
49 `perc_comissao` DECIMAL(4,2) NOT NULL,
50 `valor_comissao` DECIMAL(12,2) NOT NULL,
51 `encerrado` TINYINT(4) NOT NULL,
52 PRIMARY KEY (`id`),
53 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
54 UNIQUE INDEX `numero_UNIQUE` (`numero` ASC),
55 INDEX `id_cliente` (`id_cliente` ASC),
56 CONSTRAINT `id_cliente`
57 FOREIGN KEY (`id_cliente`)
58 REFERENCES `mapa_exemplo`.`clientes` (`id`)
59 ON DELETE NO ACTION
60 ON UPDATE NO ACTION)
61ENGINE = InnoDB
62DEFAULT CHARACTER SET = utf8;
63
64
65-- -----------------------------------------------------
66-- Table `mapa_exemplo`.`nota_item`
67-- -----------------------------------------------------
68DROP TABLE IF EXISTS `mapa_exemplo`.`nota_item` ;
69
70CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`nota_item` (
71 `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
72 `id_produto` INT(10) UNSIGNED NOT NULL,
73 `quantidade` DECIMAL(12,2) NOT NULL,
74 `valor_unitario` DECIMAL(12,2) NOT NULL,
75 `valor_total` DECIMAL(12,2) NULL DEFAULT NULL,
76 PRIMARY KEY (`id`),
77 UNIQUE INDEX `id_UNIQUE` (`id` ASC))
78ENGINE = InnoDB
79DEFAULT CHARACTER SET = utf8;
80
81
82-- -----------------------------------------------------
83-- Table `mapa_exemplo`.`produtos`
84-- -----------------------------------------------------
85DROP TABLE IF EXISTS `mapa_exemplo`.`produtos` ;
86
87CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`produtos` (
88 `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
89 `nome` VARCHAR(100) NOT NULL,
90 `descricao` TEXT NULL DEFAULT NULL,
91 `valor_venda` DECIMAL(12,2) NOT NULL,
92 `ativo` TINYINT(4) NOT NULL,
93 PRIMARY KEY (`id`),
94 UNIQUE INDEX `id_UNIQUE` (`id` ASC))
95ENGINE = InnoDB
96DEFAULT CHARACTER SET = utf8;
97
98
99-- -----------------------------------------------------
100-- Table `mapa_exemplo`.`tributos`
101-- -----------------------------------------------------
102DROP TABLE IF EXISTS `mapa_exemplo`.`tributos` ;
103
104CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`tributos` (
105 `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
106 `codigo` VARCHAR(20) NOT NULL,
107 `nome` VARCHAR(45) NULL DEFAULT NULL,
108 `aliquota` DECIMAL(4,2) NOT NULL,
109 PRIMARY KEY (`id`),
110 UNIQUE INDEX `id_UNIQUE` (`id` ASC))
111ENGINE = InnoDB
112DEFAULT CHARACTER SET = utf8;
113
114
115-- -----------------------------------------------------
116-- Table `mapa_exemplo`.`tributo_item`
117-- -----------------------------------------------------
118DROP TABLE IF EXISTS `mapa_exemplo`.`tributo_item` ;
119
120CREATE TABLE IF NOT EXISTS `mapa_exemplo`.`tributo_item` (
121 `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
122 `id_nota_item` INT(10) UNSIGNED NOT NULL,
123 `id_tributo` INT(10) UNSIGNED NOT NULL,
124 `base_calculo` DECIMAL(12,2) NOT NULL,
125 `aliquota` DECIMAL(12,2) NOT NULL,
126 `valor_imposto` DECIMAL(12,2) NOT NULL,
127 PRIMARY KEY (`id`),
128 UNIQUE INDEX `id_UNIQUE` (`id` ASC),
129 INDEX `id_tributo_idx` (`id_tributo` ASC),
130 INDEX `id_nota_item` (`id_nota_item` ASC),
131 CONSTRAINT `id_nota_item`
132 FOREIGN KEY (`id_nota_item`)
133 REFERENCES `mapa_exemplo`.`nota_item` (`id`)
134 ON DELETE CASCADE
135 ON UPDATE CASCADE,
136 CONSTRAINT `id_tributo`
137 FOREIGN KEY (`id_tributo`)
138 REFERENCES `mapa_exemplo`.`tributos` (`id`))
139ENGINE = InnoDB
140DEFAULT CHARACTER SET = utf8;
141
142USE `mapa_exemplo`;
143
144DELIMITER $$
145
146USE `mapa_exemplo`$$
147DROP TRIGGER IF EXISTS `mapa_exemplo`.`nota_item_BEFORE_INSERT` $$
148USE `mapa_exemplo`$$
149CREATE
150DEFINER=`root`@`localhost`
151TRIGGER `mapa_exemplo`.`nota_item_BEFORE_INSERT`
152BEFORE INSERT ON `mapa_exemplo`.`nota_item`
153FOR EACH ROW
154BEGIN
155 SET NEW.valor_unitario = (SELECT `valor_venda` FROM `mapa_exemplo`.`produtos` WHERE `id` = NEW.id_produto);
156 SET NEW.valor_total = NEW.quantidade * (SELECT `valor_venda` FROM `mapa_exemplo`.`produtos` WHERE `id` = NEW.id_produto);
157END$$
158
159
160USE `mapa_exemplo`$$
161DROP TRIGGER IF EXISTS `mapa_exemplo`.`nota_item_AFTER_INSERT` $$
162USE `mapa_exemplo`$$
163CREATE
164DEFINER=`root`@`localhost`
165TRIGGER `mapa_exemplo`.`nota_item_AFTER_INSERT`
166AFTER INSERT ON `mapa_exemplo`.`nota_item`
167FOR EACH ROW
168BEGIN
169 DECLARE icms DECIMAL(4,2);
170 DECLARE pis DECIMAL(4,2);
171 DECLARE cofins DECIMAL(4,2);
172
173 SET icms = 12;
174 SET pis = 1.65;
175 SET cofins = 7.6;
176
177 INSERT INTO `mapa_exemplo`.`tributo_item` (`id_nota_item`, `id_tributo`, `base_calculo`, `aliquota`, `valor_imposto`)
178 VALUES (NEW.id, 1, NEW.valor_total, icms, ((NEW.valor_total * icms) / 100));
179
180 INSERT INTO `mapa_exemplo`.`tributo_item` (`id_nota_item`, `id_tributo`, `base_calculo`, `aliquota`, `valor_imposto`)
181 VALUES (NEW.id, 2, NEW.valor_total, pis, ((NEW.valor_total * pis) / 100));
182
183 INSERT INTO `mapa_exemplo`.`tributo_item` (`id_nota_item`, `id_tributo`, `base_calculo`, `aliquota`, `valor_imposto`)
184 VALUES (NEW.id, 3, NEW.valor_total, cofins, ((NEW.valor_total * cofins) / 100));
185END$$
186
187
188DELIMITER ;
189
190SET SQL_MODE=@OLD_SQL_MODE;
191SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
192SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;