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';
-- -----------------------------------------------------
USE `logpro`;
-- -----------------------------------------------------
-- Table `logpro`.`doc_documentos_emisores`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`doc_documentos_emisores` (
  `id`          INT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  `nombre`      VARCHAR(100)    NOT NULL,
  `abreviatura` VARCHAR(10)     NOT NULL,
  PRIMARY KEY (`id`)
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`doc_observaciones_codigos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`doc_observaciones_codigos` (
    `codigo` INT(2) UNSIGNED NOT NULL,
    `plazo` INT(3) UNSIGNED NOT NULL,
    `comentarios` VARCHAR(100) NULL,
    PRIMARY KEY (`codigo`)
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`doc_observaciones_areas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`doc_observaciones_areas` (
  `id`          INT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  `nombre`      VARCHAR(100)    NOT NULL,
  `abreviatura` VARCHAR(10)     NOT NULL,
  PRIMARY KEY (`id`)
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`doc_observaciones`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`doc_observaciones` (
  `id`            INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  `creacion`      TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`    INT(3) UNSIGNED NOT NULL,
  `emisor_id`     INT(2) UNSIGNED NOT NULL,
  `unidad_id`     VARCHAR(40)     NOT NULL,
  `boleta`        VARCHAR(50)     NOT NULL,
  `fecha_emision` DATE            NOT NULL,
    PRIMARY KEY (`id`),
    INDEX `fk_doc_observaciones_usuarios` (`creador_id` ASC) ,
  INDEX `fk_doc_observaciones_emisores` (`emisor_id` ASC),
    INDEX `fk_doc_observaciones_unidades` (`unidad_id` ASC) ,
    UNIQUE `unique_boleta` (`boleta`) ,
    CONSTRAINT `fk_doc_observaciones_usuarios`
        FOREIGN KEY (`creador_id` )
        REFERENCES `logpro`.`sistema_usuarios` (`id` )
      ON DELETE RESTRICT
      ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_observaciones_emisores`
  FOREIGN KEY (`emisor_id`)
  REFERENCES `logpro`.`doc_documentos_emisores` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
    CONSTRAINT `fk_doc_observaciones_unidades`
        FOREIGN KEY (`unidad_id` )
        REFERENCES `logpro`.`control_unidades` (`id` )
        ON DELETE CASCADE
        ON UPDATE CASCADE
)
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`doc_observaciones_items`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`doc_observaciones_items` (
  `id`                 INT(5) UNSIGNED                                         NOT NULL AUTO_INCREMENT,
  `creacion`           TIMESTAMP                                               NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`         INT(3) UNSIGNED                                         NOT NULL,
  `doc_observacion_id` INT(5) UNSIGNED                                         NOT NULL,
  `area_id`            INT(2) UNSIGNED                                         NOT NULL,
  `responsable_id`     INT(3) UNSIGNED                                         NULL,
  `item`               INT(2) UNSIGNED                                         NOT NULL,
  `codigo`             INT(3) UNSIGNED                                         NOT NULL,
  `inspector`          VARCHAR(100)                                            NOT NULL,
  `detalle`            TEXT                                                    NOT NULL,
  `estado`             ENUM ('PENDIENTE', 'INFORMADA', 'RECHAZADA', 'CERRADA') NOT NULL DEFAULT 'PENDIENTE',
  `boleta_aprob`       VARCHAR(50)                                             NULL,
  `argumentacion`      TEXT                                                    NULL,
    PRIMARY KEY (`id`),
    INDEX `fk_doc_observaciones_items_usuarios` (`creador_id` ASC) ,
    INDEX `fk_doc_observaciones_items_observaciones` (`doc_observacion_id` ASC) ,
  INDEX `fk_doc_observaciones_items_areas` (`area_id` ASC),
    INDEX `fk_doc_observaciones_items_responsables` (`responsable_id` ASC) ,
    UNIQUE `unique_item_doc_observacion` (`doc_observacion_id`, `item`),
    CONSTRAINT `fk_doc_observaciones_items_usuarios`
        FOREIGN KEY (`creador_id` )
        REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_observaciones_items_observaciones`
        FOREIGN KEY (`doc_observacion_id` )
        REFERENCES `logpro`.`doc_observaciones` (`id` )
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_observaciones_items_areas`
  FOREIGN KEY (`area_id`)
  REFERENCES `logpro`.`doc_observaciones_areas` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
    CONSTRAINT `fk_doc_observaciones_items_responsables`
        FOREIGN KEY (`responsable_id` )
        REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE SET NULL
        ON UPDATE CASCADE
)
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`doc_observaciones_archivos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`doc_observaciones_archivos` (
  `id`         INT(5) UNSIGNED   NOT NULL AUTO_INCREMENT,
  `creacion`   TIMESTAMP         NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id` INT(3) UNSIGNED   NOT NULL,
  `item_id`    INT(5) UNSIGNED   NULL,
  `archivo`    VARCHAR(100)      NOT NULL,
  `nombre`     VARCHAR(100)      NOT NULL,
  `peso`       VARCHAR(20)       NOT NULL,
  `mime`       VARCHAR(20)       NOT NULL,
  `compartir`  ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `orden`      INT(3) UNSIGNED   NOT NULL,
    PRIMARY KEY (`id`),
    INDEX `fk_doc_observaciones_archivos_usuarios` (`creador_id` ASC) ,
  INDEX `fk_doc_observaciones_archivos_items` (`item_id` ASC),
    CONSTRAINT `fk_doc_observaciones_archivos_usuarios`
    FOREIGN KEY (`creador_id` )
    REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_observaciones_archivos_items`
  FOREIGN KEY (`item_id`)
  REFERENCES `logpro`.`doc_observaciones_items` (`id`)
    ON DELETE SET NULL
        ON UPDATE CASCADE
)
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`doc_documentos_grupos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`doc_documentos_grupos` (
  `id`     INT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  `nombre` VARCHAR(30)     NOT NULL,
  PRIMARY KEY (`id`)
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`doc_documentos_categorias`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`doc_documentos_categorias` (
  `id`                  INT(3) UNSIGNED   NOT NULL AUTO_INCREMENT,
  `creacion`            TIMESTAMP         NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`          INT(3) UNSIGNED   NOT NULL,
  `nombre`              VARCHAR(50)       NOT NULL,
  `indefinido`          ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `renovable`           ENUM ('SI', 'NO') NOT NULL DEFAULT 'SI',
  `critico`             ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `identificar_usuario` ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `lugar`               INT(3) UNSIGNED   NOT NULL,
    PRIMARY KEY (`id`),
  INDEX `fk_doc_documentos_categorias_usuarios` (`creador_id` ASC),
  CONSTRAINT `fk_doc_documentos_categorias_usuarios`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8
  PACK_KEYS = 0
  ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`doc_documentos_categorias_grupos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`doc_documentos_categorias_grupos` (
  `id`           INT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  `creacion`     TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`   INT(2) UNSIGNED NOT NULL,
  `categoria_id` INT(3) UNSIGNED NOT NULL,
  `grupo_id`     INT(2) UNSIGNED NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_doc_documentos_categorias_grupos_usuarios` (`creador_id` ASC),
  INDEX `fk_doc_documentos_categorias_grupos_categorias` (`categoria_id` ASC),
  INDEX `fk_doc_documentos_categorias_grupos_grupos` (`grupo_id` ASC),
  UNIQUE `unique_documento_categoria_grupo` (`categoria_id`, `grupo_id`),
  CONSTRAINT `fk_doc_documentos_categorias_grupos_usuarios`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_categorias_grupos_categorias`
  FOREIGN KEY (`categoria_id`)
  REFERENCES `logpro`.`doc_documentos_categorias` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_categorias_grupos_grupos`
  FOREIGN KEY (`grupo_id`)
  REFERENCES `logpro`.`doc_documentos_grupos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8
  PACK_KEYS = 0
  ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`doc_documentos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`doc_documentos` (
  `id`                  INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  `creacion`            TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`          INT(2) UNSIGNED NOT NULL,
  `grupo_id`            INT(2) UNSIGNED NOT NULL,
  `categoria_id`        INT(2) UNSIGNED NOT NULL,
  `unidad_id`           VARCHAR(40)     NULL,
  `activo_id`           VARCHAR(40)     NULL,
  `trabajador_id`       VARCHAR(20)     NULL,
  `responsable_id`      INT(3) UNSIGNED NULL,
  `emision_codigo`      VARCHAR(50)     NULL,
  `emision_a_nombre`    VARCHAR(100)    NULL,
  `emision_a_rut`       VARCHAR(9)      NULL,
  `emision_descripcion` VARCHAR(100)    NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_doc_documentos_creadores` (`creador_id` ASC),
  INDEX `fk_doc_documentos_grupos` (`grupo_id` ASC),
  INDEX `fk_doc_documentos_categorias` (`categoria_id` ASC),
  INDEX `fk_doc_documentos_unidades` (`unidad_id` ASC),
  INDEX `fk_doc_documentos_activos` (`activo_id` ASC),
  INDEX `fk_doc_documentos_trabajadores` (`trabajador_id` ASC),
  INDEX `fk_doc_documentos_responsables` (`responsable_id` ASC),
  CONSTRAINT `fk_doc_documentos_usuarios`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_categorias`
  FOREIGN KEY (`categoria_id`)
  REFERENCES `logpro`.`doc_documentos_categorias` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_grupos`
  FOREIGN KEY (`grupo_id`)
  REFERENCES `logpro`.`doc_documentos_grupos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_activos`
  FOREIGN KEY (`activo_id`)
  REFERENCES `logpro`.`control_activos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_trabajadores`
  FOREIGN KEY (`trabajador_id`)
  REFERENCES `logpro`.`trabajadores` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_responsables`
  FOREIGN KEY (`responsable_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`doc_documentos_emisiones`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`doc_documentos_emisiones` (
  `id`                INT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  `creacion`          TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`        INT(3) UNSIGNED NOT NULL,
  `documento_id`      INT(5) UNSIGNED NOT NULL,
  `emisor_id`         INT(5) UNSIGNED NOT NULL,
  `fecha_emision`     DATE            NOT NULL,
  `fecha_vencimiento` DATE            NULL,
    PRIMARY KEY (`id`),
    INDEX `fk_doc_documentos_emisiones_usuarios` (`creador_id` ASC) ,
    INDEX `fk_doc_documentos_emisiones_doc_documentos` (`documento_id` ASC) ,
  INDEX `fk_doc_documentos_emisiones_emisores` (`emisor_id` ASC),
    CONSTRAINT `fk_doc_certificados_emisiones_usuarios`
        FOREIGN KEY (`creador_id` )
        REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_doc_documentos_doc_emisiones_documentos`
        FOREIGN KEY (`documento_id` )
        REFERENCES `logpro`.`doc_documentos` (`id` )
      ON DELETE CASCADE
      ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_emisores`
  FOREIGN KEY (`documento_id`)
  REFERENCES `logpro`.`doc_documentos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`doc_documentos_archivos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`doc_documentos_archivos` (
  `archivo_id`   VARCHAR(40)     NOT NULL,
  `emision_id`   INT(5) UNSIGNED NOT NULL,
  `documento_id` INT(5) UNSIGNED NULL,
  PRIMARY KEY (`archivo_id`),
  INDEX `fk_doc_documentos_archivos_archivos` (`archivo_id` ASC),
  INDEX `fk_doc_documentos_archivos_emisiones` (`emision_id` ASC),
  INDEX `fk_doc_documentos_archivos_documentos` (`documento_id` ASC),
  CONSTRAINT `fk_doc_documentos_archivos_archivos`
  FOREIGN KEY (`archivo_id`)
  REFERENCES `logpro`.`archivos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_archivos_emisiones`
  FOREIGN KEY (`emision_id`)
  REFERENCES `logpro`.`doc_documentos_emisiones` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_doc_documentos_archivos_documentos`
  FOREIGN KEY (`documento_id`)
  REFERENCES `logpro`.`doc_documentos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

