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`.`no_conformidades_tipos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`no_conformidades_tipos` (
  `id`                      INT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  `nombre`                  VARCHAR(200)    NOT NULL,
  `usuario_asignador_id`    INT(3) UNSIGNED NOT NULL,
  `dias_asignacion`         INT(1) UNSIGNED NOT NULL DEFAULT 0,
  `dias_primera_respuesta`  INT(2) UNSIGNED NOT NULL DEFAULT 2,
  `dias_cierre`             INT(2) UNSIGNED NOT NULL,
  `copiar_notificaciones_a` TEXT            NULL,
    PRIMARY KEY (`id`),
    INDEX `fk_no_conformidades_tipos_asignadores` (`usuario_asignador_id` ASC),
    CONSTRAINT `fk_no_conformidades_tipos_asignadores`
    FOREIGN KEY (`usuario_asignador_id`)
    REFERENCES `logpro`.`sistema_usuarios` (`id`)
        ON DELETE RESTRICT
        ON UPDATE CASCADE
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
PACK_KEYS = 0
ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`no_conformidades`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`no_conformidades` (
  `id`                         INT(2) UNSIGNED                                                     NOT NULL AUTO_INCREMENT,
  `creacion`                   DATE                                                                NOT NULL,
  `creador_id`                 INT(3) UNSIGNED                                                     NOT NULL,
  `informada_por`              INT(3) UNSIGNED                                                     NOT NULL,
  `tipo_id`                    INT(2) UNSIGNED                                                     NOT NULL,
  `cliente_id`                 INT(3) UNSIGNED                                                     NOT NULL,

  `evento_titulo`              VARCHAR(100)                                                        NOT NULL,
  `evento_fecha`               DATE                                                                NOT NULL,
  `evento_hora`                TIME                                                                NOT NULL,
  `evento_contenidos`          LONGTEXT                                                            NOT NULL,
  `evento_locacion_id`         VARCHAR(40)                                                         NOT NULL,
  `evento_unidad_id`           VARCHAR(40)                                                         NULL,

  `responsable_unidad_id`      INT(3) UNSIGNED                                                     NULL,
  `responsable_unidad`         VARCHAR(50)                                                         NULL,

  `asignada_por`               INT(3) UNSIGNED                                                     NULL,
  `asignada_timestamp`         TIMESTAMP                                                           NULL,

  `atencion_inicio_usuario_id` INT(3) UNSIGNED                                                     NULL,
  `atencion_inicio_fecha`      DATE                                                                NULL,
  `atencion_cierre_usuario_id` INT(3) UNSIGNED                                                     NULL,
  `atencion_cierre_fecha`      TIMESTAMP                                                           NULL,

  `estado`                     ENUM ('BORRADOR', 'PENDIENTE', 'ASIGNADA', 'RESPONDIDA', 'CERRADA') NOT NULL DEFAULT 'BORRADOR',
  `respuesta_aceptada`         ENUM ('SI', 'NO')                                                   NOT NULL DEFAULT 'NO',
    PRIMARY KEY (`id`) ,
    INDEX `fk_no_conformidades_creadores` (`creador_id` ASC) ,
    INDEX `fk_no_conformidades_informadores` (`informada_por` ASC) ,
    INDEX `fk_no_conformidades_tipos` (`tipo_id` ASC) ,
    INDEX `fk_no_conformidades_clientes` (`cliente_id` ASC) ,
  INDEX `fk_no_conformidades_locaciones` (`evento_unidad_id` ASC),
    INDEX `fk_no_conformidades_unidades` (`evento_unidad_id` ASC),
    INDEX `fk_no_conformidades_responsables` (`responsable_unidad_id` ASC) ,
    INDEX `fk_no_conformidades_asignadores` (`asignada_por` ASC) ,
    INDEX `fk_no_conformidades_inicios` (`atencion_inicio_usuario_id` ASC) ,
    INDEX `fk_no_conformidades_cierres` (`atencion_cierre_usuario_id` ASC) ,
    CONSTRAINT `fk_no_conformidades_creadores`
    FOREIGN KEY (`creador_id` )
    REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_informadores`
    FOREIGN KEY (`informada_por` )
    REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_tipos`
    FOREIGN KEY (`tipo_id` )
    REFERENCES `logpro`.`no_conformidades_tipos` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_locaciones`
    FOREIGN KEY (`evento_unidad_id`)
    REFERENCES `logpro`.`control_unidades` (`id`)
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_clientes`
    FOREIGN KEY (`cliente_id` )
    REFERENCES `logpro`.`empresas` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_unidades`
    FOREIGN KEY (`evento_unidad_id`)
    REFERENCES `logpro`.`control_unidades` (`id`)
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_responsables`
    FOREIGN KEY (`responsable_unidad_id` )
    REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_asignadores`
    FOREIGN KEY (`asignada_por` )
    REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_inicios`
    FOREIGN KEY (`atencion_inicio_usuario_id` )
    REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_cierres`
    FOREIGN KEY (`atencion_cierre_usuario_id` )
    REFERENCES `logpro`.`sistema_usuarios` (`id` )
        ON DELETE RESTRICT
        ON UPDATE CASCADE
)
    ENGINE = InnoDB
    DEFAULT CHARACTER SET = utf8
    COLLATE = utf8_general_ci
    PACK_KEYS = 0
    ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`no_conformidades_respuestas`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`no_conformidades_comentarios` (
    `id` INT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
    `no_conformidad_id` INT(3) UNSIGNED NOT NULL,
    `usuario_id` INT(3) UNSIGNED NOT NULL,
    `creacion` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `contenidos` LONGTEXT NOT NULL,
    PRIMARY KEY (`id`),
    INDEX `fk_no_conformidades_comentarios_no_conformidades` (`no_conformidad_id` ASC),
    INDEX `fk_no_conformidades_comentarios_usuarios` (`usuario_id` ASC),
    CONSTRAINT `fk_no_conformidades_comentarios_no_conformidades`
        FOREIGN KEY (`no_conformidad_id`)
        REFERENCES `logpro`.`no_conformidades` (`id`)
        ON DELETE CASCADE
        ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_comentarios_usuarios`
        FOREIGN KEY (`usuario_id`)
        REFERENCES `logpro`.`sistema_usuarios` (`id`)
        ON DELETE RESTRICT
        ON UPDATE CASCADE
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
PACK_KEYS = 0
ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`no_conformidades_documentos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `logpro`.`no_conformidades_documentos` (
  `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,
  `no_conformidad_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,
    PRIMARY KEY (`id`),
  INDEX `fk_no_conformidades_documentos_creadores` (`creador_id` ASC),
    INDEX `fk_no_conformidades_documentos_no_conformidades` (`no_conformidad_id` ASC),
  CONSTRAINT `fk_no_conformidades_documentos_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
    CONSTRAINT `fk_no_conformidades_documentos_no_conformidades`
    FOREIGN KEY (`no_conformidad_id`)
    REFERENCES `logpro`.`no_conformidades` (`id`)
        ON DELETE CASCADE
        ON UPDATE CASCADE
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci
PACK_KEYS = 0
ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;