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`.`produccion_pedidos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`produccion_pedidos`
(
  `id`                      BIGINT(20) UNSIGNED        NOT NULL,
  `creacion`                TIMESTAMP                  NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`              INT(3) UNSIGNED            NOT NULL,
  `tipo_carga_id`           VARCHAR(40)                NOT NULL,
  `contenedor_tipo_id`      VARCHAR(20)                NULL,
  `doc_referencia_id`       VARCHAR(100)               NULL,
  `doc_referencia_nombre`   VARCHAR(50)                NULL,
  `cantidad`                INT UNSIGNED               NOT NULL,
  `cliente_id`              INT UNSIGNED               NOT NULL,
  `entrega_unidad_id`       VARCHAR(40)                NOT NULL,
  `resumen_total_entregado` DECIMAL(10, 2) UNSIGNED    NULL,
  `resumen_comentarios`     TEXT                       NULL,
  `resumen_cierre_fecha`    DATE                       NULL,
  `estado`                  ENUM ('ACTIVO', 'CERRADO') NOT NULL DEFAULT 'ACTIVO',
  PRIMARY KEY (`id`),
  INDEX `fk_produccion_pedidos_creadores` (`creador_id` ASC),
  INDEX `fk_produccion_pedidos_categorias` (`tipo_carga_id` ASC),
  INDEX `fk_produccion_pedidos_contenedores` (`contenedor_tipo_id` ASC),
  INDEX `fk_produccion_pedidos_clientes` (`cliente_id` ASC),
  INDEX `fk_produccion_pedidos_unidades_entrega` (`entrega_unidad_id` ASC),
  CONSTRAINT `fk_produccion_pedidos_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_produccion_pedidos_categorias`
  FOREIGN KEY (`tipo_carga_id`)
  REFERENCES `logpro`.`cargas_categorias` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_produccion_pedidos_contenedores`
  FOREIGN KEY (`contenedor_tipo_id`)
  REFERENCES `logpro`.`cargas_contenedores_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_produccion_pedidos_clientes`
  FOREIGN KEY (`cliente_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_produccion_pedidos_unidades_entrega`
  FOREIGN KEY (`entrega_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------
-- Table `logpro`.`cargas_unidades`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_unidades`
(
  `id`                INT(3) UNSIGNED        NOT NULL AUTO_INCREMENT,
  `nombre`            VARCHAR(100)           NOT NULL,
  `signo`             VARCHAR(10)            NOT NULL,
  `conversion_factor` DECIMAL(8, 4) UNSIGNED NULL,
  `conversion_nombre` VARCHAR(20)            NULL,
  `conversion_signo`  VARCHAR(10)            NULL,
  `principal`         ENUM ('SI', 'NO')      NOT NULL DEFAULT 'NO',
  PRIMARY KEY (`id`)
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_areas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_areas`
(
  `id`                   INT(2) UNSIGNED   NOT NULL AUTO_INCREMENT,
  `ucontrol_tipo_id`     INT(2) UNSIGNED   NOT NULL,
  `nombre`               VARCHAR(100)      NOT NULL,
  `observacion`          VARCHAR(100)      NULL,
  `unidad_primaria_id`   INT(3) UNSIGNED   NOT NULL,
  `unidad_secundaria_id` INT(3) UNSIGNED   NULL,
  `meta_mensual`         INT(8) UNSIGNED   NULL,
  `principal`            ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_areas_control_unidades_tipos` (`ucontrol_tipo_id` ASC),
  INDEX `fk_cargas_areas_unidades_primarias` (`unidad_primaria_id` ASC),
  INDEX `fk_cargas_areas_unidades_secundarias` (`unidad_secundaria_id` ASC),
  CONSTRAINT `fk_cargas_areas_control_unidades_tipos`
  FOREIGN KEY (`ucontrol_tipo_id`)
  REFERENCES `logpro`.`control_unidades_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_areas_unidades_primarias`
  FOREIGN KEY (`unidad_primaria_id`)
  REFERENCES `logpro`.`cargas_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_areas_unidades_secundarias`
  FOREIGN KEY (`unidad_secundaria_id`)
  REFERENCES `logpro`.`cargas_unidades` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_proyecciones`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_proyecciones`
(
  `id`                INT(4) UNSIGNED        NOT NULL AUTO_INCREMENT,
  `creacion`          TIMESTAMP              NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`        INT(3) UNSIGNED        NOT NULL,
  `categoria_id`      VARCHAR(40)            NOT NULL,
  `nombre_ref`        VARCHAR(100)           NOT NULL,
  `periodo`           YEAR                   NOT NULL,
  `data`              TEXT                   NULL,
  `conversion_factor` DECIMAL(8, 4) UNSIGNED NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_proyecciones_creadores` (`creador_id` ASC),
  INDEX `fk_proyecciones_categorias` (`categoria_id` ASC),
  CONSTRAINT `fk_proyecciones_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_proyecciones_categorias`
  FOREIGN KEY (`categoria_id`)
  REFERENCES `logpro`.`cargas_categorias` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_proyecciones_transportes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_proyecciones_transportes`
(
  `id`            INT(4) UNSIGNED                NOT NULL AUTO_INCREMENT,
  `creacion`      TIMESTAMP                      NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`    INT(3) UNSIGNED                NOT NULL,
  `proyeccion_id` INT(4) UNSIGNED                NOT NULL,
  `tipo`          ENUM ('MARITIMO', 'TERRESTRE') NOT NULL,
  `nombre`        VARCHAR(50)                    NOT NULL,
  `area`          VARCHAR(30)                    NOT NULL,
  `unidad_id`     INT(4) UNSIGNED                NOT NULL,
  `capacidad`     INT UNSIGNED                   NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_proyecciones_transportes_creadores` (`creador_id` ASC),
  INDEX `fk_proyecciones_transportes_proyecciones` (`proyeccion_id` ASC),
  CONSTRAINT `fk_proyecciones_transportes_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_proyecciones_transportes_proyecciones`
  FOREIGN KEY (`proyeccion_id`)
  REFERENCES `logpro`.`cargas_proyecciones` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_categorias`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_categorias`
(
  `id`             VARCHAR(40)       NOT NULL,
  `area_id`        INT(2) UNSIGNED   NOT NULL,
  `unidad_id`      INT(3) UNSIGNED   NOT NULL,
  `categoria_id`   VARCHAR(40)       NULL,
  `nombre`         VARCHAR(100)      NOT NULL,
  `color`          VARCHAR(7)        NULL,
  `mostrar_inicio` ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `principal`      ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `consumible`     ENUM ('SI', 'NO') NOT NULL DEFAULT 'NO',
  `usar_factor`    ENUM ('SI', 'NO') NOT NULL DEFAULt 'NO',
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_categorias_areas` (`area_id` ASC),
  INDEX `fk_cargas_categorias_unidades` (`unidad_id` ASC),
  INDEX `fk_cargas_categorias_categorias` (`categoria_id` ASC),
  CONSTRAINT `fk_cargas_categorias_area`
  FOREIGN KEY (`area_id`)
  REFERENCES `logpro`.`cargas_areas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_categorias_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`cargas_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_categorias_categorias`
  FOREIGN KEY (`categoria_id`)
  REFERENCES `logpro`.`cargas_categorias` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_contenedores_tipos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_contenedores_tipos`
(
  `id`          VARCHAR(20)  NOT NULL,
  `nombre`      VARCHAR(100) NOT NULL,
  `por_defecto` INT(1)       NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`)
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_empaques`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_empaques`
(
  `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,
  `contenedor_tipo_id` INT(3) UNSIGNED NOT NULL,
  `unidad_id`          INT(2) UNSIGNED NOT NULL,
  `cantidad`           INT UNSIGNED    NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_empaques_creadores` (`creador_id` ASC),
  INDEX `fk_cargas_empaques_contenedores_tipos` (`contenedor_tipo_id` ASC),
  INDEX `fk_cargas_empaques_unidades` (`unidad_id` ASC),
  CONSTRAINT `fk_cargas_empaques_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_empaques_contenedores_tipos`
  FOREIGN KEY (`contenedor_tipo_id`)
  REFERENCES `logpro`.`cargas_contenedores_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_empaques_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`cargas_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_proyectadas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_proyectadas`
(
  `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,
  `cliente_id`        INT UNSIGNED                            NOT NULL,
  `destinatario_id`   INT UNSIGNED                            NOT NULL,
  `unidad_origen_id`  VARCHAR(40)                             NOT NULL,
  `unidad_destino_id` VARCHAR(40)                             NOT NULL,
  `categoria_id`      VARCHAR(40)                             NOT NULL,
  `tipo`              ENUM ('MARITIMO', 'TERRESTRE', 'AEREO') NOT NULL DEFAULT 'MARITIMO',
  `m1`                INT UNSIGNED                            NOT NULL,
  `m2`                INT UNSIGNED                            NOT NULL,
  `m3`                INT UNSIGNED                            NOT NULL,
  `m4`                INT UNSIGNED                            NOT NULL,
  `m5`                INT UNSIGNED                            NOT NULL,
  `m6`                INT UNSIGNED                            NOT NULL,
  `m7`                   INT UNSIGNED                            NOT NULL,
  `m8`                   INT UNSIGNED                            NOT NULL,
  `m9`                   INT UNSIGNED                            NOT NULL,
  `m10`                  INT UNSIGNED                            NOT NULL,
  `m11`                  INT UNSIGNED                            NOT NULL,
  `m12`                  INT UNSIGNED                            NOT NULL,
  `almacenaje`           ENUM ('SI', 'NO')                       NOT NULL,
  `cross_docking`        ENUM ('SI', 'NO')                       NOT NULL,
  `servicios_portuarios` ENUM ('SI', 'NO')                       NOT NULL,
  `year`                 YEAR                                    NOT NULL,
  `version`           INT(2) UNSIGNED                         NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_proyectadas_creadores` (`creador_id` ASC),
  INDEX `fk_cargas_proyectadas_clientes` (`cliente_id` ASC),
  INDEX `fk_cargas_proyectadas_destinatarios` (`destinatario_id` ASC),
  INDEX `fk_cargas_proyectadas_unidades_origen` (`unidad_origen_id` ASC),
  INDEX `fk_cargas_proyectadas_unidades_destino` (`unidad_destino_id` ASC),
  INDEX `fk_cargas_proyectadas_categorias` (`categoria_id` ASC),
  CONSTRAINT `fk_cargas_proyectadas_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_proyectadas_clientes`
  FOREIGN KEY (`cliente_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_proyectadas_destinatarios`
  FOREIGN KEY (`destinatario_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_proyectadas_unidades_origen`
  FOREIGN KEY (`unidad_origen_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_proyectadas_unidades_destino`
  FOREIGN KEY (`unidad_destino_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_proyectadas_categorias`
  FOREIGN KEY (`categoria_id`)
  REFERENCES `logpro`.`cargas_categorias` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_solicitadas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_solicitadas`
(
  `id`                      BIGINT UNSIGNED            NOT NULL AUTO_INCREMENT,
  `creacion`                TIMESTAMP                  NOT NULL DEFAULT CURRENT_TIMESTAMP
  ON UPDATE CURRENT_TIMESTAMP,
  `creador_id`              INT(3) UNSIGNED            NOT NULL,
  `tipo_carga_id`           VARCHAR(40)                NOT NULL,
  `doc_referencia_id`       VARCHAR(100)               NULL,
  `doc_referencia_nombre`   VARCHAR(50)                NULL,
  `cantidad`                INT UNSIGNED               NOT NULL,
  `unidad_medida`           VARCHAR(20)                NULL,
  `contenedor_tipo_id`      VARCHAR(20)                NULL,
  `cliente_id`              INT UNSIGNED               NOT NULL,
  `contacto_id`             INT(3) UNSIGNED            NULL,
  `destinatario_id`         INT UNSIGNED               NOT NULL,
  `entrega_unidad_id`       VARCHAR(40)                NOT NULL,
  `entrega_fecha`           DATE                       NOT NULL,
  `retiro_unidad_id`        VARCHAR(40)                NULL,
  `retiro_fecha`            DATE                       NULL,
  `embarque_unidad_id`      VARCHAR(40)                NULL,
  `embarque_fecha`          DATE                       NULL,
  `resumen_total_entregado` DECIMAL(10, 2) UNSIGNED    NULL,
  `resumen_comentarios`     TEXT                       NULL,
  `resumen_cierre_fecha`    DATE                       NULL,
  `estado`                  ENUM ('ACTIVA', 'CERRADA') NOT NULL DEFAULT 'ACTIVA',
  `pedido_id`               BIGINT(20)                 NULL,
  `edicion`                 INT(1)                     NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_solicitadas_creadores` (`creador_id` ASC),
  INDEX `fk_cargas_solicitadas_referencias` (`doc_referencia_id` ASC),
  INDEX `fk_cargas_solicitadas_tipos_carga` (`tipo_carga_id` ASC),
  INDEX `fk_cargas_solicitadas_contenedores` (`contenedor_tipo_id` ASC),
  INDEX `fk_cargas_solicitadas_clientes` (`cliente_id` ASC),
  INDEX `fk_cargas_solicitadas_destinatarios` (`destinatario_id` ASC),
  INDEX `fk_cargas_solicitadas_contactos` (`contacto_id` ASC),
  INDEX `fk_cargas_solicitadas_unidades_retiros` (`retiro_unidad_id` ASC),
  INDEX `fk_cargas_solicitadas_unidades_entregas` (`entrega_unidad_id` ASC),
  INDEX `fk_cargas_solicitadas_unidades_embarques` (`embarque_unidad_id` ASC),
  INDEX `fk_cargas_solicitadas_pedidos` (`pedido_id` ASC),
  CONSTRAINT `fk_cargas_solicitadas_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitadas_tipos_carga`
  FOREIGN KEY (`tipo_carga_id`)
  REFERENCES `logpro`.`cargas_categorias` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitadas_contenedores`
  FOREIGN KEY (`contenedor_tipo_id`)
  REFERENCES `logpro`.`cargas_contenedores_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitadas_clientes`
  FOREIGN KEY (`cliente_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitadas_destinatarios`
  FOREIGN KEY (`destinatario_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  FOREIGN KEY (`contacto_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  FOREIGN KEY (`retiro_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  FOREIGN KEY (`entrega_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  FOREIGN KEY (`embarque_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitadas_pedidos`
  FOREIGN KEY (`pedido_id`)
  REFERENCES `logpro`.`produccion_pedidos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_programadas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_programadas`
(
  `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,
  `solicitud_id` BIGINT UNSIGNED NOT NULL,
  `cantidad`     INT UNSIGNED    NOT NULL,
  `periodo_id`   INT(6) UNSIGNED NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_programadas_creadores` (`creador_id` ASC),
  INDEX `fk_cargas_programadas_periodos` (`periodo_id` ASC),
  INDEX `fk_cargas_programadas_solictudes` (`solicitud_id` ASC),
  CONSTRAINT `fk_cargas_programadas_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_programadas_periodos`
  FOREIGN KEY (`periodo_id`)
  REFERENCES `logpro`.`operaciones_periodos` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_programadas_solicitudes`
  FOREIGN KEY (`solicitud_id`)
  REFERENCES `logpro`.`cargas_solicitadas` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_guias_despacho`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_guias_despacho`
(
  `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,
  `cliente_id`                INT UNSIGNED                                                                           NOT NULL,
  `destinatario_id`           INT UNSIGNED                                                                           NOT NULL,
  `tipo`                      ENUM ('TRANSPORTE', 'VENTA')                                                           NOT NULL,
  `creacion_unidad_id`        VARCHAR(40)                                                                            NOT NULL,
  `uso_unidad_id`             VARCHAR(40)                                                                            NULL,
  `emision_unidad_id`         VARCHAR(40)                                                                            NOT NULL,
  `emision_rut`               VARCHAR(9)                                                                             NOT NULL,
  `emision_razon_social`      VARCHAR(120)                                                                           NOT NULL,
  `emision_numero`            INT UNSIGNED                                                                           NOT NULL,
  `emision_fecha`             DATE                                                                                   NULL,
  `receptor_rut`              VARCHAR(9)                                                                             NOT NULL,
  `receptor_razon_social`     VARCHAR(120)                                                                           NOT NULL,
  `entrega_fecha`             DATE                                                                                   NOT NULL,
  `destino_unidad_id`         VARCHAR(40)                                                                            NOT NULL,
  `solicitud_id`              BIGINT UNSIGNED                                                                        NULL,
  `doc_referencia_id`         VARCHAR(100)                                                                           NULL,
  `doc_referencia_nombre`     VARCHAR(50)                                                                            NULL,
  `pedido_id`                 BIGINT(20)                                                                             NULL,
  `entrega_id`                INT(10)                                                                                NULL,
  `ubicacion_unidad_id`       VARCHAR(40)                                                                            NULL,
  `administracion_guia_id`    INT(6) UNSIGNED                                                                        NULL,
  `administracion_usuario_id` INT(3) UNSIGNED                                                                        NULL,
  `administracion_fecha`      DATE                                                                                   NULL,
  `estado`                    ENUM ('BORRADOR', 'PENDIENTE', 'ACTIVA', 'ENTREGADA', 'CONSOLIDADA', 'DESCONSOLIDADA') NOT NULL DEFAULT 'BORRADOR',
  `combustible`               INT(1) UNSIGNED                                                                        NOT NULL DEFAULT 0,
  `temporal`                  INT(1) UNSIGNED                                                                        NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  INDEX `fk_guias_despacho_creadores` (`creador_id` ASC),
  INDEX `fk_guias_despacho_clientes` (`cliente_id` ASC),
  INDEX `fk_guias_despacho_referencias` (`doc_referencia_id` ASC),
  INDEX `fk_guias_despacho_destinatarios` (`destinatario_id` ASC),
  INDEX `fk_guias_despacho_unidades_origen` (`creacion_unidad_id` ASC),
  INDEX `fk_guias_despacho_unidades_uso` (`uso_unidad_id` ASC),
  INDEX `fk_guias_despacho_procedencias` (`emision_unidad_id` ASC),
  INDEX `fk_guias_despacho_destinos` (`destino_unidad_id` ASC),
  INDEX `fk_guias_despacho_solicitudes` (`solicitud_id` ASC),
  INDEX `fk_guias_despacho_pedidos` (`pedido_id` ASC),
  INDEX `fk_guias_despacho_ubicaciones` (`ubicacion_unidad_id` ASC),
  INDEX `fk_guias_despacho_administraciones_guias` (`administracion_guia_id` ASC),
  INDEX `fk_guias_despacho_administraciones_usuarios` (`administracion_usuario_id` ASC),
  INDEX `index_guias_despacho_temporales` (`temporal` ASC),
  UNIQUE `unique_guia_despacho` (`emision_rut`, `emision_numero`, `temporal`),
  CONSTRAINT `fk_guias_despacho_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_clientes`
  FOREIGN KEY (`cliente_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_destinatarios`
  FOREIGN KEY (`destinatario_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_unidades_origen`
  FOREIGN KEY (`creacion_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_unidades_uso`
  FOREIGN KEY (`uso_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_procedencias`
  FOREIGN KEY (`emision_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_destinos`
  FOREIGN KEY (`destino_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_solicitudes`
  FOREIGN KEY (`solicitud_id`)
  REFERENCES `logpro`.`cargas_solicitadas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_pedidos`
  FOREIGN KEY (`pedido_id`)
  REFERENCES `logpro`.`produccion_pedidos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_ubicaciones`
  FOREIGN KEY (`ubicacion_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_administraciones_guias`
  FOREIGN KEY (`administracion_guia_id`)
  REFERENCES `logpro`.`cargas_guias_despacho` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_administraciones_usuarios`
  FOREIGN KEY (`administracion_usuario_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_guias_despacho_items`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_guias_despacho_items`
(
  `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,
  `guia_id`            INT(6) UNSIGNED              NOT NULL,
  `categoria_id`       VARCHAR(40)                  NOT NULL,
  `carga_ref`          VARCHAR(50)                  NULL     DEFAULT NULL,
  `guia_ref`           VARCHAR(50)                  NULL     DEFAULT NULL, -- Nº de Vale cuando el tipo de guía es combustible.
  `contenedor_tipo_id` VARCHAR(20)                  NOT NULL,
  `contenedor_ref`     VARCHAR(30)                  NULL     DEFAULT NULL, -- Nº si se requiere hacer seguimiento
  `cantidad`           INT UNSIGNED                 NOT NULL,
  `unidad_medida`      VARCHAR(20)                  NULL,
  `observaciones`      VARCHAR(100)                 NULL,
  `lote`               INT UNSIGNED                 NULL,
  `encuesta_id`        INT(3) UNSIGNED              NULL,
  `entregado`          ENUM ('NO', 'SI', 'PARCIAL') NOT NULL DEFAULT 'NO',
  PRIMARY KEY (`id`),
  INDEX `fk_guias_despacho_items_creadores` (`creador_id` ASC),
  INDEX `fk_guias_despacho_items_guias` (`guia_id` ASC),
  INDEX `fk_guias_despacho_items_categorias` (`categoria_id` ASC),
  INDEX `fk_guias_despacho_items_contenedores_tipos` (`contenedor_tipo_id` ASC),
  INDEX `fk_guias_despacho_items_encuestas` (`encuesta_id` ASC),
  CONSTRAINT `fk_guias_despacho_items_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_items_guias`
  FOREIGN KEY (`guia_id`)
  REFERENCES `logpro`.`cargas_guias_despacho` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_items_categorias`
  FOREIGN KEY (`categoria_id`)
  REFERENCES `logpro`.`cargas_categorias` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_items_contenedores_tipos`
  FOREIGN KEY (`contenedor_tipo_id`)
  REFERENCES `logpro`.`cargas_contenedores_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_items_encuestas`
  FOREIGN KEY (`encuesta_id`)
  REFERENCES `logpro`.`encuestas` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`vales_combustible`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`vales_combustible`
(
  `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,
  `tipo`                  ENUM ('SUMINISTRO', 'RECEPCION', 'ENTREGA') NOT NULL,
  `categoria_id`          VARCHAR(40)                                 NOT NULL,
  `cantidad`              INT UNSIGNED                                NOT NULL,
  `fecha`                 DATE                                        NOT NULL,
  `hora`                  TIME                                        NOT NULL,
  `numero_inicial`        INT UNSIGNED                                NOT NULL,
  `numero_final`          INT UNSIGNED                                NOT NULL,
  `origen_unidad_id`      VARCHAR(40)                                 NOT NULL,
  `emision_razon_social`  VARCHAR(100)                                NOT NULL,
  `emision_rut`           VARCHAR(9)                                  NOT NULL,
  `emision_numero`        INT UNSIGNED                                NOT NULL,
  `destino_unidad_id`     VARCHAR(40)                                 NOT NULL,
  `copec_dispositivo_id`  VARCHAR(40)                                 NULL,
  `receptor_rut`          VARCHAR(9)                                  NOT NULL,
  `receptor_razon_social` VARCHAR(100)                                NOT NULL,
  `entregado_por_nombre`  VARCHAR(100)                                NULL,
  `entregado_por_rut`     VARCHAR(9)                                  NULL,
  `recibido_por_nombre`   VARCHAR(100)                                NULL,
  `recibido_por_rut`      VARCHAR(9)                                  NULL,
  `autorizado_por_nombre` VARCHAR(100)                                NULL,
  `autorizado_por_rut`    VARCHAR(9)                                  NULL,
  `guia_id`               INT UNSIGNED                                NULL,
  `estado`                ENUM ('BORRADOR', 'RECIBIDO')               NOT NULL DEFAULT 'BORRADOR',
  PRIMARY KEY (`id`),
  INDEX `fk_vales_combustible_creadores` (`creador_id` ASC),
  INDEX `fk_vales_combustible_categorias` (`categoria_id` ASC),
  INDEX `fk_vales_combustible_unidades_origen` (`origen_unidad_id` ASC),
  INDEX `fk_vales_combustible_unidades_destino` (`destino_unidad_id` ASC),
  INDEX `fk_vales_combustible_copec_dispositivos` (`copec_dispositivo_id` ASC),
  INDEX `fk_vales_combustible_guias_despacho` (`guia_id` ASC),
  UNIQUE `unique_vale_combustible` (`emision_rut`, `emision_numero`),
  CONSTRAINT `fk_vales_combustible_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_vales_combustible_categorias`
  FOREIGN KEY (`categoria_id`)
  REFERENCES `logpro`.`cargas_categorias` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_vales_combustible_unidades_emision`
  FOREIGN KEY (`origen_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_vales_combustible_unidades_destino`
  FOREIGN KEY (`destino_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_vales_combustible_copec_dispositivos`
  FOREIGN KEY (`copec_dispositivo_id`)
  REFERENCES `logpro`.`copec_dispositivos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_vales_combustible_guias_despacho`
  FOREIGN KEY (`guia_id`)
  REFERENCES `logpro`.`cargas_guias_despacho` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`vales_combustible_archivos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`vales_combustible_archivos`
(
  `archivo_id` VARCHAR(40)     NOT NULL,
  `vale_id`    INT(6) UNSIGNED NOT NULL,
  PRIMARY KEY (`archivo_id`),
  INDEX `fk_vales_combustible_archivos` (`archivo_id` ASC),
  INDEX `fk_vales_combustible_vales` (`vale_id` ASC),
  CONSTRAINT `fk_vales_combustible_archivos`
  FOREIGN KEY (`archivo_id`)
  REFERENCES `logpro`.`archivos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_vales_combustible_vales`
  FOREIGN KEY (`vale_id`)
  REFERENCES `logpro`.`vales_combustible` (`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`.`copec_dispositivos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`copec_dispositivos`
(
  `id`     VARCHAR(40)  NOT NULL,
  `nombre` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`id`)
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8
  COLLATE = utf8_general_ci
  PACK_KEYS = 0
  ROW_FORMAT = DEFAULT;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_guias_despachos_archivos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_guias_despacho_archivos`
(
  `archivo_id` VARCHAR(40)     NOT NULL,
  `guia_id`    INT(6) UNSIGNED NOT NULL,
  PRIMARY KEY (`archivo_id`),
  INDEX `fk_guias_despacho_archivos_archivos` (`archivo_id` ASC),
  INDEX `fk_guias_despacho_archivos_guias` (`guia_id` ASC),
  CONSTRAINT `fk_guias_despacho_archivos_archivos`
  FOREIGN KEY (`archivo_id`)
  REFERENCES `logpro`.`archivos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_guias_despacho_archivos_guias`
  FOREIGN KEY (`guia_id`)
  REFERENCES `logpro`.`cargas_guias_despacho` (`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`.`cargas_despachos`
-- -----------------------------------------------------
CREATE TABLE `logpro`.`cargas_despachos`
(
  `id`                              INT(6) UNSIGNED PRIMARY KEY                          NOT NULL   AUTO_INCREMENT,
  `creacion`                        TIMESTAMP DEFAULT CURRENT_TIMESTAMP                  NOT NULL,
  `creador_id`                      INT(3) UNSIGNED                                      NOT NULL,
  `nombre_ref`                      VARCHAR(50)                                          NOT NULL,
  `origen_unidad_id`                VARCHAR(40)                                          NOT NULL,
  `tipo`                            ENUM ('TERRESTRE', 'MARITIMO', 'AEREO')              NOT NULL,
  `sentido`                         ENUM ('IDA', 'RETORNO') DEFAULT 'IDA'                NOT NULL,
  `fecha_despacho`                  DATE                                                 NOT NULL,
  `hora_despacho`                   TIME                                                 NULL,
  `transporte_unidad_id`            VARCHAR(40)                                          NOT NULL,
  `transporte_periodo_id`           INT UNSIGNED,
  `transporte_responsable_nombre`   VARCHAR(60),
  `transporte_responsable_rut`      VARCHAR(20),
  `transporte_responsable_telefono` VARCHAR(20),
  `estado`                          ENUM ('ACTIVO', 'CERRADO') DEFAULT 'ACTIVO'          NOT NULL,
  `notificado`                      ENUM ('SI', 'NO')                                    NOT NULL   DEFAULT 'NO',
  `notificacionbes_log`             TEXT                                                 NULL,
  `codigo`                          VARCHAR(6)                                           NULL,
  `bloqueado`                       INT(1) UNSIGNED                                      NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_despachos_creadores` (`creador_id` ASC),
  INDEX `fk_despachos_unidades_origen` (`guia_id` ASC),
  INDEX `fk_despachos_unidades_transporte` (`categoria_id` ASC),
  INDEX `fk_despachos_periodos` (`transporte_periodo_id` ASC),
  INDEX `index_despachos_sentidos` (`sentido` ASC),
  CONSTRAINT `fk_despachos_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_despachos_unidades_origen`
  FOREIGN KEY (`origen_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_despachos_unidades_transporte`
  FOREIGN KEY (`transporte_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_despachos_periodos`
  FOREIGN KEY (`transporte_periodo_id`)
  REFERENCES `logpro`.`operaciones_periodos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
);
-- -----------------------------------------------------
-- Table `logpro`.`cargas_despachos_archivos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_despachos_archivos`
(
  `archivo_id`  VARCHAR(40)     NOT NULL,
  `despacho_id` INT(6) UNSIGNED NOT NULL,
  PRIMARY KEY (`archivo_id`),
  INDEX `fk_cargas_despachos_archivos_archivos` (`archivo_id` ASC),
  INDEX `fk_cargas_despachos_archivos_despachos` (`despacho_id` ASC),
  CONSTRAINT `fk_cargas_despachos_archivos_archivos`
  FOREIGN KEY (`archivo_id`)
  REFERENCES `logpro`.`archivos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_despachos_archivos_despachos`
  FOREIGN KEY (`despacho_id`)
  REFERENCES `logpro`.`cargas_despachos` (`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`.`cargas_despachos_items`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_despachos_items`
(
  `id`                   INT(6) UNSIGNED                             NOT NULL AUTO_INCREMENT,
  `despacho_id`          INT(6) UNSIGNED                             NOT NULL,
  `registro_id`          INT(6) UNSIGNED                             NOT NULL,
  `destino_unidad_id`    VARCHAR(40)                                 NOT NULL,
  `orden_entrega`        INT(3) UNSIGNED                             NOT NULL DEFAULT 0,
  `cantidad`             INT(6) UNSIGNED                             NOT NULL,
  `estado`               ENUM ('PENDIENTE', 'CARGADO', 'NO CARGADO') NOT NULL DEFAULT 'PENDIENTE',
  `notificar`            INT(1) UNSIGNED                             NOT NULL DEFAULT '1',
  `final`                INT(1) UNSIGNED                             NOT NULL DEFAULT '1',
  `encuesta_id`          INT(3) UNSIGNED                             NULL,
  `notificado`           ENUM ('SI', 'NO') DEFAULT 'NO'              NOT NULL,
  `notificadociones_log` TEXT                                        NULL,
  `bloqueado`            INT(1) UNSIGNED                             NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE `unique_carga_despacho` (`despacho_id`, `registro_id`),
  INDEX `fk_cargas_despachos_items_despachos` (`despacho_id` ASC),
  INDEX `fk_cargas_despachos_items_registros` (`registro_id` ASC),
  INDEX `fk_cargas_despachos_items_unidades_destino` (`destino_unidad_id` ASC),
  INDEX `fk_cargas_despachos_items_encuestas` (`encuesta_id` ASC),
  CONSTRAINT `fk_cargas_despachos_items_despachos`
  FOREIGN KEY (`despacho_id`)
  REFERENCES `logpro`.`cargas_despachos` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_despachos_items_registros`
  FOREIGN KEY (`registro_id`)
  REFERENCES `logpro`.`cargas_registros_stock` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_despachos_items_unidades_destino`
  FOREIGN KEY (`destino_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_despachos_items_encuestas`
  FOREIGN KEY (`encuesta_id`)
  REFERENCES `logpro`.`encuestas` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_despachos_items_archivos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_despachos_items_archivos`
(
  `archivo_id` VARCHAR(40)     NOT NULL,
  `item_id`    INT(6) UNSIGNED NOT NULL,
  PRIMARY KEY (`archivo_id`),
  INDEX `fk_cargas_despachos_items_archivos_archivos` (`archivo_id` ASC),
  INDEX `fk_cargas_despachos_items_archivos_items` (`item_id` ASC),
  CONSTRAINT `fk_cargas_despachos_items_archivos_archivos`
  FOREIGN KEY (`archivo_id`)
  REFERENCES `logpro`.`archivos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_despachos_items_archivos_items`
  FOREIGN KEY (`item_id`)
  REFERENCES `logpro`.`cargas_despachos_items` (`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`.`cargas_recepciones_archivos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_recepciones_archivos`
(
  `archivo_id`    VARCHAR(40)     NOT NULL,
  `movimiento_id` INT(6) UNSIGNED NOT NULL,
  PRIMARY KEY (`archivo_id`),
  INDEX `fk_cargas_recepciones_archivos_archivos` (`archivo_id` ASC),
  INDEX `fk_cargas_recepciones_archivos_movimientos` (`movimiento_id` ASC),
  CONSTRAINT `fk_cargas_recepciones_archivos_archivos`
  FOREIGN KEY (`archivo_id`)
  REFERENCES `logpro`.`archivos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_recepciones_archivos_movimientos`
  FOREIGN KEY (`movimiento_id`)
  REFERENCES `logpro`.`cargas_movimientos` (`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`.`cargas_entregas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_entregas`
(
  `id`                 INT(6) UNSIGNED            NOT NULL AUTO_INCREMENT,
  `origen_unidad_id`   VARCHAR(40)                NOT NULL,
  `origen_usuario_id`  INT(3) UNSIGNED            NOT NULL,
  `origen_fecha`       DATE                       NOT NULL,
  `origen_hora`        TIME                       NOT NULL,
  `registro_id`        INT(6) UNSIGNED            NOT NULL,
  `cantidad`           INT(6) UNSIGNED            NOT NULL,
  `destino_unidad_id`  VARCHAR(40)                NOT NULL,
  `destino_usuario_id` INT(3) UNSIGNED            NULL,
  `destino_fecha`      DATE                       NULL,
  `destino_hora`       TIME                       NULL,
  `entrega_final`      ENUM ('SI', 'NO')          NOT NULL DEFAULT 'SI',
  -- `notificar`          INT(1) UNSIGNED            NOT NULL DEFAULT '1',
  `estado`             ENUM ('ACTIVA', 'CERRADO') NOT NULL DEFAULT 'ACTIVA',
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_entregas_unidades_origen` (`origen_unidad_id` ASC),
  INDEX `fk_cargas_entregas_usuarios_origen` (`origen_usuario_id` ASC),
  INDEX `fk_cargas_entregas_unidades_destino` (`destino_unidad_id` ASC),
  INDEX `fk_cargas_entregas_usuarios_destino` (`destino_usuario_id` ASC),
  INDEX `fk_cargas_entregas_registros_stock` (`registro_id` ASC),
  CONSTRAINT `fk_cargas_entregas_unidades_origen`
  FOREIGN KEY (`origen_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_entregas_usuarios_origen`
  FOREIGN KEY (`origen_usuario_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_entregas_unidades_destino`
  FOREIGN KEY (`destino_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_entregas_usuarios_destino`
  FOREIGN KEY (`destino_usuario_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_entregas_registros_stock`
  FOREIGN KEY (`registro_id`)
  REFERENCES `logpro`.`cargas_registros_stock` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_entregas_archivos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_entregas_archivos`
(
  `archivo_id` VARCHAR(40)     NOT NULL,
  `entrega_id` INT(6) UNSIGNED NOT NULL,
  PRIMARY KEY (`archivo_id`),
  INDEX `fk_cargas_entregas_archivos_archivos` (`archivo_id` ASC),
  INDEX `fk_cargas_entregas_archivos_items` (`entrega_id` ASC),
  CONSTRAINT `fk_cargas_entregas_archivos_archivos`
  FOREIGN KEY (`archivo_id`)
  REFERENCES `logpro`.`archivos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_entregas_archivos_items`
  FOREIGN KEY (`entrega_id`)
  REFERENCES `logpro`.`cargas_entregas` (`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`.`cargas_consumos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_consumos`
(
  `id`          INT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
  `unidad_id`   VARCHAR(40)     NOT NULL,
  `usuario_id`  INT(3) UNSIGNED NOT NULL,
  `fecha`       DATE            NOT NULL,
  `hora`        TIME            NOT NULL,
  `registro_id` INT(6) UNSIGNED NOT NULL,
  `cantidad`    INT(6) UNSIGNED NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_consumos_unidades` (`unidad_id` ASC),
  INDEX `fk_cargas_consumos_usuarios` (`usuario_id` ASC),
  INDEX `fk_cargas_consumos_registros_stock` (`registro_id` ASC),
  CONSTRAINT `fk_cargas_consumos_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_consumos_usuarios`
  FOREIGN KEY (`usuario_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_consumos_registros_stock`
  FOREIGN KEY (`registro_id`)
  REFERENCES `logpro`.`cargas_registros_stock` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_movimientos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_movimientos`
(
  `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,
  `despacho_item_id`        INT(6) UNSIGNED                                                                                            NULL,
  `entrega_id`              INT(6) UNSIGNED                                                                                            NULL,
  `guia_item_id`            INT(6) UNSIGNED                                                                                            NOT NULL,
  `solicitud_id`            BIGINT UNSIGNED                                                                                            NULL,
  `cantidad`                INT UNSIGNED                                                                                               NOT NULL,
  `origen_unidad_id`        VARCHAR(40)                                                                                                NOT NULL,
  `origen_fecha`            DATE                                                                                                       NOT NULL,
  `origen_hora`             TIME                                                                                                       NOT NULL,
  `origen_usuario_id`       INT(3) UNSIGNED                                                                                            NOT NULL,
  `destino_unidad_id`       VARCHAR(40)                                                                                                NOT NULL,
  `destino_fecha`           DATE                                                                                                       NULL,
  `destino_hora`            TIME                                                                                                       NULL,
  `destino_usuario_id`      INT(3) UNSIGNED                                                                                            NULL,
  `destino_codigo_recep`    VARCHAR(20)                                                                                                NULL,
  `destino_ref_ubicacion`   VARCHAR(20)                                                                                                NULL,
  `tipo`                    ENUM ('T', 'I', 'S')                                                                                       NOT NULL,
  `tipo_detalle`            ENUM ('ACTIVACION GUIA', 'TRANSPORTE', 'LOCACION', 'CONSOLIDACION', 'DESCONSOLIDACION', 'RECEPCION FINAL') NOT NULL,
  `estado`                  ENUM ('PENDIENTE', 'ACEPTADO', 'ACEPTADO CON REPAROS', 'NO ACEPTADO')                                      NOT NULL DEFAULT 'PENDIENTE',
  `recepcion_final`         ENUM ('SI', 'NO')                                                                                          NOT NULL DEFAULT 'NO',
  `recepcion_observaciones` TEXT                                                                                                       NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_movimientos_creadores` (`creador_id` ASC),
  INDEX `fk_cargas_movimientos_despachos_items` (`despacho_item_id` ASC),
  INDEX `fk_cargas_movimientos_entregas` (`entrega_id` ASC),
  INDEX `fk_cargas_movimientos_guias_items` (`guia_item_id` ASC),
  INDEX `fk_cargas_movimientos_solicitudes` (`solicitud_id` ASC),
  INDEX `fk_cargas_movimientos_unidades_origen` (`origen_unidad_id` ASC),
  INDEX `fk_cargas_movimientos_usuarios_origen` (`origen_usuario_id` ASC),
  INDEX `fk_cargas_movimientos_unidades_destino` (`destino_unidad_id` ASC),
  INDEX `fk_cargas_movimientos_usuarios_destino` (`destino_usuario_id` ASC),
  CONSTRAINT `fk_cargas_movimientos_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_despachos_items`
  FOREIGN KEY (`despacho_item_id`)
  REFERENCES `logpro`.`cargas_despachos_items` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_entregas`
  FOREIGN KEY (`entrega_id`)
  REFERENCES `logpro`.`cargas_entregas` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_guias_items`
  FOREIGN KEY (`guia_item_id`)
  REFERENCES `logpro`.`cargas_guias_despacho_items` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_solicitudes`
  FOREIGN KEY (`solicitud_id`)
  REFERENCES `logpro`.`cargas_solicitadas` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_unidades_origen`
  FOREIGN KEY (`origen_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_usuarios_origen`
  FOREIGN KEY (`origen_usuario_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_unidades_destino`
  FOREIGN KEY (`destino_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_usuarios_destino`
  FOREIGN KEY (`destino_usuario_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_encuestas_recepciones`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_encuestas_recepciones`
(
  `movimiento_id` INT(6) UNSIGNED NOT NULL,
  `unidad_id`     VARCHAR(40)     NOT NULL,
  `creador_id`    INT(3) UNSIGNED NOT NULL,
  `encuesta_id`   INT(3) UNSIGNED NOT NULL,
  `creacion`      TIMESTAMP       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `respuestas`    TEXT            NOT NULL,
  `observaciones` TEXT            NULL,
  PRIMARY KEY (`movimiento_id`),
  INDEX `fk_cargas_encuestas_recepciones_movimientos` (`movimiento_id` ASC),
  INDEX `fk_cargas_encuestas_recepciones_unidades` (`unidad_id` ASC),
  INDEX `fk_cargas_encuestas_recepciones_creadores` (`creador_id` ASC),
  INDEX `fk_cargas_encuestas_recepciones_encuestas` (`encuesta_id` ASC),
  CONSTRAINT `fk_cargas_encuestas_recepciones_movimientos`
    FOREIGN KEY (`movimiento_id`)
      REFERENCES `logpro`.`cargas_movimientos` (`id`)
      ON DELETE RESTRICT
      ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_encuestas_recepciones_unidades`
    FOREIGN KEY (`unidad_id`)
      REFERENCES `logpro`.`control_unidades` (`id`)
      ON DELETE RESTRICT
      ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_encuestas_recepciones_creadores`
    FOREIGN KEY (`creador_id`)
      REFERENCES `logpro`.`sistema_usuarios` (`id`)
      ON DELETE RESTRICT
      ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_encuestas_recepciones_encuestas`
    FOREIGN KEY (`encuesta_id`)
      REFERENCES `logpro`.`encuestas` (`id`)
      ON DELETE RESTRICT
      ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_registros_stock`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_registros_stock`
(
  `id`             INT(6) UNSIGNED             NOT NULL AUTO_INCREMENT,
  `unidad_id`      VARCHAR(40)                 NOT NULL,
  `guia_item_id`   INT(6) UNSIGNED             NOT NULL,
  `cantidad_total` INT UNSIGNED                NOT NULL,
  `cantidad`       INT UNSIGNED                NOT NULL,
  `fecha_ingreso`  DATE                        NOT NULL,
  `fecha_cierre`   DATE                        NULL,
  `estado`         ENUM ('ABIERTO', 'CERRADO') NOT NULL DEFAULT 'ABIERTO',
  PRIMARY KEY (`id`),
  UNIQUE `unique_registro_stock` (`unidad_id`, `guia_item_id`),
  INDEX `fk_registros_stock_unidades` (`unidad_id` ASC),
  INDEX `fk_registros_stock_items` (`guia_item_id` ASC),
  CONSTRAINT `fk_registros_stock_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_registros_stock_items`
  FOREIGN KEY (`guia_item_id`)
  REFERENCES `logpro`.`cargas_guias_despacho_items` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_registros_desconsolidados`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_registros_desconsolidados`
(
  `id`             INT(6) UNSIGNED  NOT NULL AUTO_INCREMENT,
  `propietario_id` INT(10) UNSIGNED NOT NULL,
  `unidad_id`      VARCHAR(40)      NOT NULL,
  `categoria_id`   VARCHAR(40)      NOT NULL,
  `cantidad`       INT UNSIGNED     NOT NULL,
  `lote`           VARCHAR(40)      NULL,
  PRIMARY KEY (`id`),
  UNIQUE `unique_carga_desconsolidada` (`propietario_id`, `unidad_id`, `categoria_id`, `lote`),
  INDEX `fk_cargas_desconsolidadas_propietarios` (`propietario_id` ASC),
  INDEX `fk_cargas_desconsolidadas_unidades` (`unidad_id` ASC),
  INDEX `fk_cargas_desconsolidadas_categorias` (`categoria_id` ASC),
  CONSTRAINT `fk_cargas_desconsolidadas_unidades`
  FOREIGN KEY (`unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_desconsolidadas_categorias`
  FOREIGN KEY (`categoria_id`)
  REFERENCES `logpro`.`cargas_categorias` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_movimientos_desconsolidados`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_movimientos_desconsolidados`
(
  `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,
  `registro_id`  INT UNSIGNED                                     NOT NULL,
  `cantidad`     INT                                              NOT NULL,
  `guia_item_id` INT UNSIGNED                                     NULL,
  `tipo`         ENUM ('APERTURA', 'CUADRATURA', 'CONSOLIDACION') NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_movimientos_desconsolidados_creadores` (`creador_id` ASC),
  INDEX `fk_cargas_movimientos_desconsolidados_registros` (`registro_id` ASC),
  INDEX `fk_cargas_movimientos_desconsolidados_guias_items` (`guia_item_id` ASC),
  CONSTRAINT `fk_cargas_movimientos_desconsolidados_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_desconsolidados_registros`
  FOREIGN KEY (`registro_id`)
  REFERENCES `logpro`.`cargas_registros_desconsolidados` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_movimientos_desoncolidados_guias_items`
  FOREIGN KEY (`guia_item_id`)
  REFERENCES `logpro`.`cargas_guias_despacho_items` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;
-- -----------------------------------------------------
-- Table `logpro`.`cargas_solicitudes_transportes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `logpro`.`cargas_solicitudes_transportes`
(
  `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,
  `cliente_id`           INT(10) UNSIGNED                                                                    NOT NULL,
  `despacho_id`          INT(6) UNSIGNED                                                                     NULL,
  `transportista_id`     INT(10) UNSIGNED                                                                    NOT NULL,
  `notificar_a`          INT(6) UNSIGNED                                                                     NOT NULL,
  `transporte_tipo_id`   INT(2) UNSIGNED                                                                     NOT NULL,
  `inicio_unidad_id`     VARCHAR(40)                                                                         NOT NULL,
  `inicio_fecha`         DATE                                                                                NOT NULL,
  `inicio_hora`          TIME                                                                                NOT NULL,
  `detalles`             TEXT                                                                                NOT NULL,
  `observaciones`        TEXT                                                                                NULL,
  `estado`               ENUM ('BORRADOR', 'PENDIENTE', 'ATENDIDA', 'NO ATENDIDA', 'RECHAZADA', 'CANCELADA') NOT NULL DEFAULT 'BORRADOR',
  `respuesta_usuario_id` INT(3) UNSIGNED                                                                     NULL,
  `respuesta_timestamp`  TIMESTAMP                                                                           NULL,
  `respuesta_periodo_id` INT(3) UNSIGNED                                                                     NULL,
  `cancel_usuario_id`    INT(3) UNSIGNED                                                                     NULL,
  `cancel_timestamp`     TIMESTAMP                                                                           NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_cargas_solicitudes_transportes_creadores` (`creador_id` ASC),
  INDEX `fk_cargas_solicitudes_transportes_periodos` (`respuesta_periodo_id` ASC),
  INDEX `fk_cargas_solicitudes_transportes_canceladores` (`cancel_usuario_id` ASC),
  INDEX `fk_cargas_solicitudes_transportes_clientes` (`cliente_id` ASC),
  INDEX `fk_cargas_solicitudes_transportes_despachos` (`despacho_id` ASC),
  INDEX `fk_cargas_solicitudes_transportes_transportistas` (`transportista_id` ASC),
  INDEX `fk_cargas_solicitudes_transportes_notificaciones` (`notificar_a` ASC),
  INDEX `fk_cargas_solicitudes_transportes_tipos_transportes` (`transporte_tipo_id` ASC),
  INDEX `fk_cargas_solicitudes_transportes_origenes` (`inicio_unidad_id` ASC),
  CONSTRAINT `fk_cargas_solicitudes_transportes_creadores`
  FOREIGN KEY (`creador_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitudes_transportes_periodos`
  FOREIGN KEY (`respuesta_periodo_id`)
  REFERENCES `logpro`.`operaciones_periodos` (`id`)
    ON DELETE SET NULL
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitudes_transportes_canceladores`
  FOREIGN KEY (`cancel_usuario_id`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitudes_transportes_clientes`
  FOREIGN KEY (`cliente_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitudes_transportes_despachos`
  FOREIGN KEY (`despacho_id`)
  REFERENCES `logpro`.`cargas_despachos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitudes_transportes_transportistas`
  FOREIGN KEY (`transportista_id`)
  REFERENCES `logpro`.`empresas` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitudes_transportes_notificaciones`
  FOREIGN KEY (`notificar_a`)
  REFERENCES `logpro`.`sistema_usuarios` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitudes_transportes_tipos_transportes`
  FOREIGN KEY (`transporte_tipo_id`)
  REFERENCES `logpro`.`control_unidades_tipos` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE,
  CONSTRAINT `fk_cargas_solicitudes_transportes_origenes`
  FOREIGN KEY (`inicio_unidad_id`)
  REFERENCES `logpro`.`control_unidades` (`id`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE
)
  ENGINE = InnoDB
  DEFAULT CHARACTER SET = utf8;

-- -----------------------------------------------------
-- Table `logpro`.`vista_carga_en_transito`
-- -----------------------------------------------------
CREATE VIEW `logpro`.`vista_carga_en_transito` AS
  SELECT
    rs.id                                       AS registro_id,
    rs.estado                                   AS registro_estado,
    rs.fecha_ingreso,
    rs.unidad_id                                AS unidad_bodega_id,
    cut.nombre                                  AS unidad_bodega,
    cutt.nombre                                 AS unidad_bodega_tipo,
    gdi.categoria_id,
    cc.nombre                                   AS categoria,
    gdi.carga_ref,
    gd.destino_unidad_id,
    empresas_destinos_guias.nombre_fantasia     AS empresa_destino_guia,
    unidades_destinos_guias.nombre              AS unidad_destino_guia,
    empresas_destinos_despachos.nombre_fantasia AS empresa_destino_despacho,
    unidades_destinos_despachos.nombre          AS unidad_destino_despacho,
    gdi.cantidad                                AS cantidad_guia,
    rs.cantidad_total                           AS cantidad_recibida,
    rs.cantidad                                 AS cantidad_por_entregar

  FROM cargas_registros_stock AS rs

    JOIN cargas_guias_despacho_items gdi
      ON gdi.id = rs.guia_item_id
    JOIN cargas_guias_despacho AS gd
      ON gd.id = gdi.guia_id
    JOIN cargas_categorias AS cc
      ON cc.id = gdi.categoria_id
    JOIN control_unidades AS cut
      ON cut.id = rs.unidad_id
    JOIN control_unidades_tipos AS cutt
      ON cutt.id = cut.tipo_id
    JOIN control_unidades AS unidades_destinos_guias
      ON unidades_destinos_guias.id = gd.destino_unidad_id
    JOIN empresas AS empresas_destinos_guias
      ON empresas_destinos_guias.id = unidades_destinos_guias.empresa_id

    LEFT JOIN cargas_despachos_items AS cdi
      ON cdi.registro_id = rs.id
    LEFT JOIN control_unidades AS unidades_destinos_despachos
      ON unidades_destinos_despachos.id = cdi.destino_unidad_id
    LEFT JOIN empresas AS empresas_destinos_despachos
      ON empresas_destinos_despachos.id = unidades_destinos_despachos.empresa_id
  WHERE rs.estado = 'ABIERTO';

-- -----------------------------------------------------
-- -----------------------------------------------------
SET SQL_MODE = @OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS = @OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS = @OLD_UNIQUE_CHECKS;