Guest User

Untitled

a guest
Jun 19th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.39 KB | None | 0 0
  1. -- MySQL Workbench Forward Engineering
  2.  
  3. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  4. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  5. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
  6.  
  7. -- -----------------------------------------------------
  8. -- Schema mapa_exemplo
  9. -- -----------------------------------------------------
  10. DROP SCHEMA IF EXISTS `mapa_exemplo` ;
  11.  
  12. -- -----------------------------------------------------
  13. -- Schema mapa_exemplo
  14. -- -----------------------------------------------------
  15. CREATE SCHEMA IF NOT EXISTS `mapa_exemplo` DEFAULT CHARACTER SET utf8 ;
  16. USE `mapa_exemplo` ;
  17.  
  18. -- -----------------------------------------------------
  19. -- Table `mapa_exemplo`.`clientes`
  20. -- -----------------------------------------------------
  21. DROP TABLE IF EXISTS `mapa_exemplo`.`clientes` ;
  22.  
  23. CREATE 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))
  34. ENGINE = InnoDB
  35. DEFAULT CHARACTER SET = utf8;
  36.  
  37.  
  38. -- -----------------------------------------------------
  39. -- Table `mapa_exemplo`.`nota`
  40. -- -----------------------------------------------------
  41. DROP TABLE IF EXISTS `mapa_exemplo`.`nota` ;
  42.  
  43. CREATE 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)
  61. ENGINE = InnoDB
  62. DEFAULT CHARACTER SET = utf8;
  63.  
  64.  
  65. -- -----------------------------------------------------
  66. -- Table `mapa_exemplo`.`nota_item`
  67. -- -----------------------------------------------------
  68. DROP TABLE IF EXISTS `mapa_exemplo`.`nota_item` ;
  69.  
  70. CREATE 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))
  78. ENGINE = InnoDB
  79. DEFAULT CHARACTER SET = utf8;
  80.  
  81.  
  82. -- -----------------------------------------------------
  83. -- Table `mapa_exemplo`.`produtos`
  84. -- -----------------------------------------------------
  85. DROP TABLE IF EXISTS `mapa_exemplo`.`produtos` ;
  86.  
  87. CREATE 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))
  95. ENGINE = InnoDB
  96. DEFAULT CHARACTER SET = utf8;
  97.  
  98.  
  99. -- -----------------------------------------------------
  100. -- Table `mapa_exemplo`.`tributos`
  101. -- -----------------------------------------------------
  102. DROP TABLE IF EXISTS `mapa_exemplo`.`tributos` ;
  103.  
  104. CREATE 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))
  111. ENGINE = InnoDB
  112. DEFAULT CHARACTER SET = utf8;
  113.  
  114.  
  115. -- -----------------------------------------------------
  116. -- Table `mapa_exemplo`.`tributo_item`
  117. -- -----------------------------------------------------
  118. DROP TABLE IF EXISTS `mapa_exemplo`.`tributo_item` ;
  119.  
  120. CREATE 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`))
  139. ENGINE = InnoDB
  140. DEFAULT CHARACTER SET = utf8;
  141.  
  142. USE `mapa_exemplo`;
  143.  
  144. DELIMITER $$
  145.  
  146. USE `mapa_exemplo`$$
  147. DROP TRIGGER IF EXISTS `mapa_exemplo`.`nota_item_BEFORE_INSERT` $$
  148. USE `mapa_exemplo`$$
  149. CREATE
  150. DEFINER=`root`@`localhost`
  151. TRIGGER `mapa_exemplo`.`nota_item_BEFORE_INSERT`
  152. BEFORE INSERT ON `mapa_exemplo`.`nota_item`
  153. FOR EACH ROW
  154. BEGIN
  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);
  157. END$$
  158.  
  159.  
  160. USE `mapa_exemplo`$$
  161. DROP TRIGGER IF EXISTS `mapa_exemplo`.`nota_item_AFTER_INSERT` $$
  162. USE `mapa_exemplo`$$
  163. CREATE
  164. DEFINER=`root`@`localhost`
  165. TRIGGER `mapa_exemplo`.`nota_item_AFTER_INSERT`
  166. AFTER INSERT ON `mapa_exemplo`.`nota_item`
  167. FOR EACH ROW
  168. BEGIN
  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));
  185. END$$
  186.  
  187.  
  188. DELIMITER ;
  189.  
  190. SET SQL_MODE=@OLD_SQL_MODE;
  191. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  192. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Add Comment
Please, Sign In to add comment