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`.`operaciones_suministros_tipos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_suministros_tipos`
(
  `id`                 INT(2) UNSIGNED   NOT NULL AUTO_INCREMENT,
  `nombre`             VARCHAR(200)      NOT NULL,
  `mostrar_en_reporte` ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `categoria_id`       INT(4) UNSIGNED   NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_suministros_tipos_cargas_categorias` (`categoria_id`),
  CONSTRAINT `fk_suministros_tipos_cargas_categorias`
  FOREIGN KEY (`categoria_id`)
  REFERENCES `logpro`.`cargas_categorias` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_suministros`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_suministros`
(
  `id`         INT(3) UNSIGNED                NOT NULL AUTO_INCREMENT,
  `creacion`   TIMESTAMP                      NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id` INT(2) UNSIGNED                NOT NULL,
  `unidad_id`  VARCHAR(40)                    NOT NULL,
  `tipo_id`    INT(2) UNSIGNED                NOT NULL,
  `nombre`     VARCHAR(50)                    NOT NULL,
  `principal`  ENUM ('SI', 'NO')              NOT NULL DEFAULT 'NO',
  `estado`     ENUM ('ACTIVO', 'DESACTIVADO') NOT NULL DEFAULT 'ACTIVO',
  PRIMARY KEY (`id`),
  INDEX `fk_suministros_creadores` (`creador_id` ASC),
  INDEX `fk_suministros_unidades` (`unidad_id` ASC),
  INDEX `fk_suministros_tipos` (`tipo_id` ASC),
  CONSTRAINT `fk_suministros_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_tipos`
  FOREIGN KEY (`tipo_id`)
  REFERENCES `logpro`.`operaciones_suministros_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_suministros_cargas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_suministros_cargas`
(
  `id`               INT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  `creacion`         TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `creador_id`       INT(3) UNSIGNED NOT NULL,
  `suministro_id`    INT(2) UNSIGNED NOT NULL,
  `unidad_id`        VARCHAR(40)     NOT NULL,
  `carga_unidad_id`  VARCHAR(40)     NULL,
  `carga_cantidad`   INT UNSIGNED    NOT NULL,
  `carga_fecha`      TIMESTAMP       NOT NULL,
  `documento_rut`    VARCHAR(9)      NOT NULL,
  `documento_numero` INT UNSIGNED    NOT NULL,
  `ref_entrega`      VARCHAR(100)    NULL,
  `estado`           INT(1) UNSIGNED NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  INDEX `fk_suministros_cargas_creadores` (`creador_id` ASC),
  INDEX `fk_suministros_cargas_suministros` (`suministro_id` ASC),
  INDEX `fk_suministros_cargas_unidades` (`unidad_id` ASC),
  INDEX `fk_suministros_cargas_unidades_cargas` (`carga_unidad_id` ASC),
  UNIQUE `unique_documento_carga_suministro` (`documento_rut`, `documento_numero`),
  CONSTRAINT `fk_suministros_cargas_suministros`
  FOREIGN KEY (`suministro_id`)
  REFERENCES `logpro`.`operaciones_suministros` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_cargas_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_cargas_usuarios`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_cargas_unidades_cargas`
  FOREIGN KEY (`carga_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`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`.`operaciones_suministros_entregas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_suministros_entregas`
(
  `id`                INT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  `creacion`          TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `creador_id`        INT(3) UNSIGNED NOT NULL,
  `suministro_id`     INT(2) UNSIGNED NOT NULL,
  `unidad_id`         VARCHAR(40)     NOT NULL,
  `entrega_unidad_id` VARCHAR(40)     NULL,
  `entrega_cantidad`  INT UNSIGNED    NOT NULL,
  `entrega_fecha`     TIMESTAMP       NOT NULL,
  `receptor_id`       INT(3) UNSIGNED NULL,
  `ref_entrega`       VARCHAR(100)    NULL,
  `estado`            INT(1) UNSIGNED NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  INDEX `fk_suministros_entregas_creadores` (`creador_id` ASC),
  INDEX `fk_suministros_entregas_suministros` (`suministro_id` ASC),
  INDEX `fk_suministros_entregas_unidades` (`unidad_id` ASC),
  INDEX `fk_suministros_entregas_unidades_entregas` (`entrega_unidad_id` ASC),
  INDEX `fk_suministros_entregas_receptores` (`receptor_id` ASC),
  CONSTRAINT `fk_suministros_entregas_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_entregas_suministros`
  FOREIGN KEY (`suministro_id`)
  REFERENCES `logpro`.`operaciones_suministros` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_entregas_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_entregas_unidades_entregas`
  FOREIGN KEY (`entrega_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_entregas_receptores`
  FOREIGN KEY (`receptor_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`.`operaciones_suministros_stocks`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_suministros_stocks`
(
  `id`            INT(6) UNSIGNED           NOT NULL AUTO_INCREMENT,
  `creacion`      TIMESTAMP                 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`    INT(3) UNSIGNED           NOT NULL,
  `operacion_id`  INT(6) UNSIGNED           NULL,
  `suministro_id` INT(3) UNSIGNED           NOT NULL,
  `fecha`         DATE                      NOT NULL,
  `cantidad`      DECIMAL(8, 2) UNSIGNED    NOT NULL,
  `tipo`          ENUM ('LOG', 'OPERACION') NOT NULL DEFAULT 'LOG',
  `estado`        INT(1) UNSIGNED           NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`),
  INDEX `fk_suministros_stocks_creadores` (`creador_id` ASC),
  INDEX `fk_suministros_stocks_operaciones` (`operacion_id` ASC),
  INDEX `fk_suministros_stocks_suministros` (`suministro_id` ASC),
  CONSTRAINT `fk_suministros_stocks_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_stocks_operaciones`
  FOREIGN KEY (`operacion_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_suministros_stocks_suministros`
  FOREIGN KEY (`suministro_id`)
  REFERENCES `logpro`.`operaciones_suministros` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_horometros_tipos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_horometros_tipos`
(
  `id`                 INT(2) UNSIGNED NOT NULL AUTO_INCREMENT,
  `nombre`             VARCHAR(200)    NOT NULL,
  `mostrar_en_reporte` ENUM ('SI', 'NO'),
  PRIMARY KEY (`id`)
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_horometros`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_horometros`
(
  `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,
  `unidad_id`          VARCHAR(40)                    NOT NULL,
  `activo_id`          VARCHAR(40)                    NOT NULL,
  `tipo_id`            INT(2) UNSIGNED                NOT NULL,
  `nombre`             VARCHAR(50)                    NOT NULL,
  `consumo_min`        DECIMAL(5, 2) UNSIGNED         NOT NULL,
  `consumo_max`        DECIMAL(5, 2) UNSIGNED         NOT NULL,
  `consumo_prom`       DECIMAL(5, 2) UNSIGNED         NOT NULL,
  `promedio_calculado` INT UNSIGNED                   NULL     DEFAULT NULL,
  `promedio_asignado`  INT UNSIGNED                   NULL     DEFAULT NULL,
  `promedio_usado`     ENUM ('C', 'A')                         DEFAULT 'C',
  `calcular`           ENUM ('SI', 'NO')              NOT NULL DEFAULT 'SI',
  `anclado`            ENUM ('SI', 'NO')              NOT NULL DEFAULT 'NO',
  `lugar`              INT(3) UNSIGNED                NOT NULL DEFAULT 0,
  `estado`             ENUM ('ACTIVO', 'DESACTIVADO') NOT NULL DEFAULT 'ACTIVO',
  PRIMARY KEY (`id`),
  INDEX `fk_horometros_creadores` (`creador_id` ASC),
  INDEX `fk_horometros_unidades` (`unidad_id` ASC),
  INDEX `fk_horometros_activos` (`activo_id` ASC),
  INDEX `fk_horometros_tipos` (`tipo_id` ASC),
  CONSTRAINT `fk_horometros_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_horometros_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_horometros_activos`
  FOREIGN KEY (`activo_id`)
  REFERENCES `logpro`.`control_activos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_horometros_tipos`
  FOREIGN KEY (`tipo_id`)
  REFERENCES `logpro`.`operaciones_horometros_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_horometros_lecturas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_horometros_lecturas`
(
  `id`           INT(6) UNSIGNED           NOT NULL AUTO_INCREMENT,
  `creacion`     TIMESTAMP                 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`   INT(3) UNSIGNED           NOT NULL,
  `operacion_id` INT(6) UNSIGNED           NULL,
  `horometro_id` INT(3) UNSIGNED           NOT NULL,
  `fecha`        DATE                      NOT NULL,
  `lectura`      DECIMAL(8, 2) UNSIGNED    NOT NULL,
  `tipo`         ENUM ('LOG', 'OPERACION') NOT NULL DEFAULT 'LOG',
  `estado`       INT(1) UNSIGNED           NOT NULL DEFAULT 1,
  PRIMARY KEY (`id`),
  INDEX `fk_horometros_lecturas_creadores` (`creador_id` ASC),
  INDEX `fk_horometros_lecturas_operaciones` (`operacion_id` ASC),
  INDEX `fk_horometros_lecturas_horometros` (`horometro_id` ASC),
  CONSTRAINT `fk_horometros_lecturas_usuarios`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_horometros_lecturas_operaciones`
  FOREIGN KEY (`operacion_id`)
  REFERENCES `logpro`.`operaciones` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_horometros_lecturas_horometros`
  FOREIGN KEY (`horometro_id`)
  REFERENCES `logpro`.`operaciones_horometros` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_parametros_tipos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_parametros_tipos`
(
  `id`         INT(2) 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,
  `signo`      VARCHAR(10)     NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_parametros_tipos_usuarios` (`creador_id` ASC),
  CONSTRAINT `fk_parametros_tipos_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`.`operaciones_parametros`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_parametros`
(
  `id`         INT(2) UNSIGNED                NOT NULL AUTO_INCREMENT,
  `creacion`   TIMESTAMP                      NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP,
  `creador_id` INT(3) UNSIGNED                NOT NULL,
  `tipo_id`    INT(2) UNSIGNED                NOT NULL,
  `unidad_id`  VARCHAR(40)                    NOT NULL,
  `activo_id`  VARCHAR(40)                    NULL,
  `ref_nombre` VARCHAR(50)                    NULL,
  `min`        DECIMAL(6, 2)                  NULL,
  `max`        DECIMAL(6, 2)                  NULL,
  `horarios`   TEXT                           NULL,
  `lugar`      INT(3) UNSIGNED                NOT NULL DEFAULT 0,
  `estado`     ENUM ('ACTIVO', 'DESACTIVADO') NOT NULL DEFAULT 'ACTIVO',
  PRIMARY KEY (`id`),
  INDEX `fk_parametros_usuarios` (`creador_id` ASC),
  INDEX `fk_parametros_tipos` (`tipo_id` ASC),
  INDEX `fk_parametros_unidades` (`unidad_id` ASC),
  INDEX `fk_parametros_activos` (`activo_id` ASC),
  CONSTRAINT `fk_parametros_usuarios`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_parametros_tipos`
  FOREIGN KEY (`tipo_id`)
  REFERENCES `logpro`.`operaciones_parametros_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_parametros_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_parametros_activos`
  FOREIGN KEY (`activo_id`)
  REFERENCES `logpro`.`control_activos` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8
  PACK_KEYS = 0
  ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_parametros_lecturas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_parametros_lecturas`
(
  `id`           INT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
  `creacion`     TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`   INT(3) UNSIGNED NOT NULL,
  `parametro_id` INT(2) UNSIGNED NOT NULL,
  `lectura`      INT UNSIGNED    NOT NULL,
  `timestamp`    TIMESTAMP       NOT NULL,
  `estado`       INT(1) UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  INDEX `fk_parametros_lecturas_creadores` (`creador_id` ASC),
  INDEX `fk_parametros_lecturas_parametros` (`parametro_id` ASC),
  CONSTRAINT `fk_parametros_lecturas_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_parametros_lecturas_parametros`
  FOREIGN KEY (`parametro_id`)
  REFERENCES `logpro`.`operaciones_parametros` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_periodos_tipos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_periodos_tipos`
(
  `id`              INT(2) UNSIGNED   NOT NULL AUTO_INCREMENT,
  `creacion`        TIMESTAMP         NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`      INT(3) UNSIGNED   NOT NULL,
  `padre_id`        INT(2) UNSIGNED   NULL,
  `unidad_tipo_id`  INT(2) UNSIGNED   NULL,
  `nombre`          VARCHAR(50)       NOT NULL,
  `produccion`      ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `entrega_carga`   ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `tiempo_estimado` INT(3) UNSIGNED   NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  INDEX `fk_periodos_tipos_creadores` (`creador_id` ASC),
  INDEX `fk_periodos_tipos_padres` (`padre_id` ASC),
  INDEX `fk_periodos_tipos_unidades_tipos` (`unidad_tipo_id` ASC),
  CONSTRAINT `fk_periodos_tipos_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_tipos_padres`
  FOREIGN KEY (`padre_id`)
  REFERENCES `logpro`.`operaciones_periodos_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_tipos_unidad_tipos`
  FOREIGN KEY (`unidad_tipo_id`)
  REFERENCES `logpro`.`control_unidades_tipos` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_periodos`
-- TODO : Una vez implementado cambiar a NOT NULL
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_periodos`
(
  `id`                       INT(6) UNSIGNED                                           NOT NULL AUTO_INCREMENT,
  `creacion`                 TIMESTAMP                                                 NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`               INT(3) UNSIGNED                                           NOT NULL,
  `unidad_id`                VARCHAR(40)                                               NOT NULL,
  `unidad_log`               TEXT                                                      NULL,
  `operador_id`              VARCHAR(40)                                               NULL,
  `mandante_id`              INT UNSIGNED                                              NULL,
  `solicitud_transporte_id`  INT(6) UNSIGNED                                           NULL,
  `tipo_mandante_id`         INT(3) UNSIGNED                                           NOT NULL,
  `tipo_transportista_id`    INT(3) UNSIGNED                                           NOT NULL,
  `inicio_fecha`             DATE                                                      NULL,
  `inicio_hora`              TIME                                                      NULL,
  `inicio_unidad_id`         VARCHAR(40)                                               NULL,
  `responsable_rut`          VARCHAR(12)                                               NULL,
  `responsable_nombre`       VARCHAR(100)                                              NOT NULL,
  `responsable_telefono`     VARCHAR(12)                                               NULL,
  `responsable_log`          TEXT                                                      NULL,
  `termino_fecha`            DATE                                                      NULL,
  `termino_hora`             TIME                                                      NULL,
  `termino_unidad_id`        VARCHAR(40)                                               NULL,
  `manifiesto`               ENUM ('SI', 'NO')                                         NOT NULL DEFAULT 'NO',
  `apertura`                 TIMESTAMP                                                 NULL,
  `cierre`                   TIMESTAMP                                                 NULL,
  `cierre_automatico`        ENUM ('SI', 'NO')                                         NOT NULL DEFAULT 'NO',
  `itinerario`               ENUM ('SI', 'NO')                                         NOT NULL DEFAULT 'SI',
  `operaciones`              ENUM ('SIMPLE', 'FULL')                                   NOT NULL DEFAULT 'SIMPLE',
  `operaciones_simples_data` TEXT,
  `estado`                   ENUM ('PROGRAMADO', 'EN CURSO', 'TERMINADO', 'CANCELADO') NOT NULL DEFAULT 'PROGRAMADO',
  PRIMARY KEY (`id`),
  INDEX `fk_periodos_creadores` (`creador_id` ASC),
  INDEX `fk_periodos_tipos_mandantes` (`tipo_mandante_id` ASC),
  INDEX `fk_periodos_tipos_transportistas` (`tipo_transportista_id` ASC),
  INDEX `fk_periodos_unidades` (`unidad_id` ASC),
  INDEX `fk_periodos_operadores` (`operador_id` ASC),
  INDEX `fk_periodos_mandantes` (`mandante_id` ASC),
  INDEX `fk_periodos_solicitudes_transportes` (`solicitud_transporte_id` ASC),
  INDEX `fk_periodos_unidades_inicio` (`inicio_unidad_id` ASC),
  INDEX `fk_periodos_unidades_termino` (`termino_unidad_id` ASC),
  CONSTRAINT `fk_periodos_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_tipos_mandantes`
  FOREIGN KEY (`tipo_mandante_id`)
  REFERENCES `logpro`.`operaciones_periodos_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_tipos_transportistas`
  FOREIGN KEY (`tipo_transportista_id`)
  REFERENCES `logpro`.`operaciones_periodos_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_operadores`
  FOREIGN KEY (`operador_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_mandantes`
  FOREIGN KEY (`mandante_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_solicitudes_transportes`
  FOREIGN KEY (`solicitud_transporte_id`)
  REFERENCES `logpro`.`carga_solicitudes_transportes` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_unidades_inicio`
  FOREIGN KEY (`inicio_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_periodos_unidades_termino`
  FOREIGN KEY (`termino_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_itinerarios`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_itinerarios`
(
  `id`          INT(6) UNSIGNED                           NOT NULL AUTO_INCREMENT,
  `creacion`    TIMESTAMP                                 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`  INT(3) UNSIGNED                           NOT NULL,
  `periodo_id`  INT UNSIGNED                              NOT NULL,
  `comentarios` TEXT                                      NULL,
  `estado`      ENUM ('BORRADOR', 'ACTIVO', 'MODIFICADO') NOT NULL DEFAULT 'BORRADOR',
  PRIMARY KEY (`id`),
  INDEX `fk_itinerarios_creadores` (`creador_id` ASC),
  INDEX `fk_itinerarios_periodos` (`periodo_id` ASC),
  INDEX `fk_itinerarios_firmadores` (`firmado_por` ASC),
  CONSTRAINT `fk_itinerarios_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_itinerarios_periodos`
  FOREIGN KEY (`periodo_id`)
  REFERENCES `logpro`.`operaciones_periodos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_itinerarios_firmadores`
  FOREIGN KEY (`firmado_por`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_itinerarios_escalas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_itinerarios_escalas`
(
  `id`                 INT(6) UNSIGNED                             NOT NULL AUTO_INCREMENT,
  `creacion`           TIMESTAMP                                   NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`         INT(3) UNSIGNED                             NOT NULL,
  `itinerario_id`      INT(6) UNSIGNED                             NOT NULL,
  `unidad_escala_id`   VARCHAR(40)                                 NOT NULL,
  `llegada_fecha`      DATE                                        NULL,
  `llegada_hora`       TIME                                        NULL,
  `salida_fecha`       DATE                                        NULL,
  `salida_hora`        TIME                                        NULL,
  `modificaciones_eta` TEXT                                        NULL,
  `lugar`              INT(2) UNSIGNED                             NOT NULL DEFAULT 0,
  `estado`             ENUM ('PENDIENTE', 'CUMPLIDO', 'CANCELADO') NOT NULL DEFAULT 'PENDIENTE',
  PRIMARY KEY (`id`),
  INDEX `fk_escalas_itinerarios` (`itinerario_id` ASC),
  INDEX `fk_escalas_unidades` (`unidad_escala_id` ASC),
  CONSTRAINT `fk_escalas_itinerarios`
  FOREIGN KEY (`itinerario_id`)
  REFERENCES `logpro`.`operaciones_itinerarios` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_escalas_unidades`
  FOREIGN KEY (`unidad_escala_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_periodos_archivos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_periodos_archivos`
(
  `archivo_id` VARCHAR(40)     NOT NULL,
  `periodo_id` INT(6) UNSIGNED NOT NULL,
  PRIMARY KEY (`archivo_id`),
  INDEX `fk_operaciones_periodos_archivos_archivos` (`archivo_id` ASC),
  INDEX `fk_operaciones_periodos_archivos_periodos` (`periodo_id` ASC),
  CONSTRAINT `fk_operaciones_periodos_archivos_archivos`
  FOREIGN KEY (`archivo_id`)
  REFERENCES `logpro`.`archivos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_operaciones_periodos_archivos_periodos`
  FOREIGN KEY (`periodo_id`)
  REFERENCES `logpro`.`operaciones_periodos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8
  COLLATE = utf8_general_ci
  PACK_KEYS = 0
  ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_grupos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_grupos`
(
  `id`         INT(2) UNSIGNED                NOT NULL AUTO_INCREMENT,
  `creacion`   TIMESTAMP                      NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP,
  `creador_id` INT(3) UNSIGNED                NULL,
  `nombre`     VARCHAR(200)                   NOT NULL,
  `tipo`       ENUM ('TERRESTRE', 'MARITIMO') NOT NULL,
  `base`       ENUM ('SI', 'NO')              NOT NULL DEFAULT 'NO',
  PRIMARY KEY (`id`),
  INDEX `fk_operaciones_grupos_creadores` (`creador_id` ASC),
  CONSTRAINT `fk_operaciones_grupos_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE

)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8
  PACK_KEYS = 0
  ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones_tipos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_tipos`
(
  `id`                          INT(2) 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(200)                NOT NULL,
  `requiere_horometros`         ENUM ('SI', 'NO')           NOT NULL DEFAULT 'NO',
  `requiere_stock_suministros`  ENUM ('SI', 'NO')           NOT NULL DEFAULT 'NO',
  `requiere_locacion`           ENUM ('SI', 'NO')           NOT NULL DEFAULT 'SI',
  `registrar_distancia`         ENUM ('SI', 'NO')           NOT NULL DEFAULT 'SI',
  `contabilizar_ocurrencias`    ENUM ('SI', 'NO')           NOT NULL DEFAULT 'SI',
  `aporta_porcentaje_operacion` ENUM ('SI', 'NO')           NOT NULL DEFAULT 'SI',
  `inicia_periodo`              ENUM ('SI', 'NO')           NOT NULL DEFAULT 'NO',
  `termina_periodo`             ENUM ('SI', 'NO')           NOT NULL DEFAULT 'NO',
  `duracion`                    INT UNSIGNED                NOT NULL,
  `notificar`                   INT(1) UNSIGNED             NOT NULL DEFAULT '0',
  `color`                       VARCHAR(7)                  NOT NULL,
  `mostrar`                     INT(1) UNSIGNED             NOT NULL DEFAULT '1',
  `estado`                      ENUM ('ACTIVA', 'INACTIVA') NOT NULL DEFAULT 'ACTIVA',
  `bloqueada`                   INT(1) UNSIGNED             NOT NULL DEFAULT 0,
  `tt_ingreso`                  INT(1) UNSIGNED             NOT NULL DEFAULT 0,
  `tt_salida`                   INT(1) UNSIGNED             NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  INDEX `fk_operaciones_tipos_creadores` (`creador_id` ASC),
  CONSTRAINT `fk_operaciones_tipos_creadores`
  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`.`operaciones_tipos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones_grupos_tipos`
(
  `grupo_id` INT(2) UNSIGNED NOT NULL,
  `tipo_id`  INT(2) UNSIGNED NOT NULL,
  PRIMARY KEY (`grupo_id`, `tipo_id`),
  INDEX `fk_operaciones_grupos_tipos_grupos` (`grupo_id` ASC),
  INDEX `fk_operaciones_grupos_tipos_tipos` (`tipo_id` ASC),
  CONSTRAINT `fk_operaciones_grupos_tipos_grupos`
  FOREIGN KEY (`grupo_id`)
  REFERENCES `logpro`.`operaciones_grupos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_operaciones_grupos_tipos_tipos`
  FOREIGN KEY (`tipo_id`)
  REFERENCES `logpro`.`operaciones_tipos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8
  PACK_KEYS = 0
  ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`operaciones`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`operaciones`
(
  `id`                  INT(6) UNSIGNED        NOT NULL AUTO_INCREMENT,
  `creacion`            TIMESTAMP              NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `informado_por`       INT(3) UNSIGNED        NOT NULL,
  `unidad_id`           VARCHAR(40)            NULL,
  `periodo_id`          INT(6) UNSIGNED        NULL,
  `unidad_operacion_id` VARCHAR(40)            NULL,
  `tipo_id`             INT(2) UNSIGNED        NOT NULL,
  `operacion_id`        INT(6) UNSIGNED        NULL,
  `inicio_fecha`        DATE                   NULL,
  `inicio_hora`         TIME                   NULL,
  `termino_fecha`       DATE                   NULL,
  `termino_hora`        TIME                   NULL,
  `kilometraje`         INT(10) UNSIGNED       NULL,
  `peso`                INT(10) UNSIGNED       NULL,
  `distancia_recorrida` DECIMAL(6, 2) UNSIGNED NOT NULL DEFAULT 0,
  `comentarios`         TEXT                   NULL,
  `orden`               INT UNSIGNED           NOT NULL DEFAULT 0,
  `estado`              INT(1) UNSIGNED        NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  INDEX `fk_operaciones_informadores` (`informado_por` ASC),
  INDEX `fk_operaciones_unidades` (`unidad_id` ASC),
  INDEX `fk_operaciones_periodos` (`periodo_id` ASC),
  INDEX `fk_operaciones_unidades_operaciones` (`unidad_operacion_id` ASC),
  INDEX `fk_operaciones_tipos` (`tipo_id` ASC),
  INDEX `fk_operaciones_operaciones` (`operacion_id` ASC),
  CONSTRAINT `fk_operaciones_informadores`
  FOREIGN KEY (`informado_por`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_operaciones_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_operaciones_periodos`
  FOREIGN KEY (`periodo_id`)
  REFERENCES `logpro`.`operaciones_periodos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_operaciones_unidades_operaciones`
  FOREIGN KEY (`unidad_operacion_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_operaciones_tipos`
  FOREIGN KEY (`tipo_id`)
  REFERENCES `logpro`.`operaciones_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_operaciones_operaciones`
  FOREIGN KEY (`operacion_id`)
  REFERENCES `logpro`.`operaciones` (`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;