SET TERM ^ ;

CREATE OR ALTER PROCEDURE MG_ESTATUS_PEDIDOS 
returns (
    ruta_reparto varchar(50),
    no_pedido char(9),
    no_lista_surtido integer,
    no_partidas integer,
    no_pzas_totales integer,
    hora_c_lista_surtido hora,
    surtidor_asignado varchar(100),
    hora_asignacion hora,
    pzas_sector_2 integer,
    cierre_p_sector_2 hora,
    pzas_sector_3 integer,
    cierre_p_sector_3 hora,
    pzas_sector_1 integer,
    hora_c_entrega_p_mesa hora,
    mesa_verificacion varchar(20),
    hora_i_verificacion hora,
    hora_c_verificacion hora,
    no_bultos integer,
    hora_asignacion_rampa hora,
    no_rampa varchar(20),
    hora_embarque hora,
    no_hoja_ruta integer,
    fecha_actual date)
as
declare variable mg_pedido_surtido_id integer;
declare variable mg_pedido_verificado_id integer;
declare variable mg_usuario_id integer;
declare variable ruta_id integer;
declare variable mesa_verificacion_id integer;
declare variable articulo_id integer;
declare variable cantidad_por_verificar numeric(18,5);
declare variable sector integer;
declare variable hora_sector hora;
declare variable sector_v integer;
declare variable bulto integer;
declare variable tiempo integer;
declare variable tiempo_embarque integer;
declare variable hora_servidor time;
declare variable mesa_verificacion_id1 integer;
declare variable surtidor_id integer;
BEGIN
    FECHA_ACTUAL = 'NOW';
    FECHA_ACTUAL = FECHA_ACTUAL -1;
    SELECT ZZ.VALOR
    FROM MG_CONFIG_CM_VE ZZ
    WHERE ZZ.NOMBRE = 'QUITAR_REGISTRO_DESPUES_HORA_EMBARQUE_MONITOR'
    INTO TIEMPO;

    /* PROCEDURE TEXT */
    FOR SELECT A.MG_PEDIDO_SURTIDO_ID, A.FOLIO, A.NO_LISTA_SURTIDO,  A.FECHA_HORA_LISTA_SURTIDO,
    A.FECHA_HORA_ASIGNACION, A.FECHA_HORA_ENTREGAP, A.FECHA_HORA_INI_VERIFICACION, A.FECHA_HORA_FIN_VERIFICACION,
    A.FECHA_HORA_INI_RAMPA, A.FECHA_HORA_INI_EMBARQUE, A.RUTA_ID, A.MESA_VERIFICACION_ID1, A.SURTIDOR_ID
    FROM MG_PEDIDOS_SURTIDOS A
    LEFT JOIN DOCTOS_VE B ON (A.FOLIO = B.FOLIO AND B.TIPO_DOCTO = 'P')
    WHERE B.FECHA >= :FECHA_ACTUAL --A.MG_PEDIDO_SURTIDO_ID > 4258335
    INTO MG_PEDIDO_SURTIDO_ID, NO_PEDIDO, NO_LISTA_SURTIDO,  HORA_C_LISTA_SURTIDO,
    HORA_ASIGNACION, HORA_C_ENTREGA_P_MESA, HORA_I_VERIFICACION, HORA_C_VERIFICACION,
    HORA_ASIGNACION_RAMPA, HORA_EMBARQUE, RUTA_ID, MESA_VERIFICACION_ID1, SURTIDOR_ID
    DO
    BEGIN
        SURTIDOR_ASIGNADO = '';
        SELECT NOMBRE
        FROM MG_SURTIDORES
        WHERE SURTIDOR_ID = :SURTIDOR_ID
        INTO SURTIDOR_ASIGNADO;

        RUTA_REPARTO = '';
        SELECT NOMBRE
        FROM VIAS_EMBARQUE
        WHERE VIA_EMBARQUE_ID = :RUTA_ID
        INTO RUTA_REPARTO;

        MESA_VERIFICACION = '';
        SELECT NOMBRE
        FROM MG_MESAS_VERIFICACION
        WHERE MESA_VERIFICACION_ID = :MESA_VERIFICACION_ID1
        INTO MESA_VERIFICACION;

        IF (HORA_EMBARQUE IS NOT NULL) THEN
        BEGIN
            SELECT A.HORA
            FROM FECHA_SERVIDOR A
            INTO HORA_SERVIDOR;
            TIEMPO_EMBARQUE = HORA_SERVIDOR - HORA_EMBARQUE;
        END

        IF ((TIEMPO >= TIEMPO_EMBARQUE ) OR (HORA_EMBARQUE IS NULL)) THEN
        BEGIN

           SELECT COUNT(BA.CANT_COMPROM), SUM(BA.CANT_COMPROM)
           FROM MG_PEDIDOS_SURTIDOS_DET BA
           WHERE BA.MG_PEDIDO_SURTIDO_ID = :MG_PEDIDO_SURTIDO_ID
           INTO NO_PARTIDAS, NO_PZAS_TOTALES;

           CIERRE_P_SECTOR_2 = NULL;
           SELECT AA.FECHA_HORA_CREACION
           FROM MG_PEDIDOS_VERIFICADOS AA
           --INNER JOIN MG_PEDIDOS_VERIFICADOS_DET AB ON (AA.MG_PEDIDO_VERIFICADO_ID = AB.MG_PEDIDO_VERIFICADO_ID)
           WHERE AA.MG_PEDIDO_SURTIDO_ID = :MG_PEDIDO_SURTIDO_ID
           AND AA.SECTOR = 2
           --GROUP BY AA.FECHA_HORA_CREACION
           INTO CIERRE_P_SECTOR_2;

           CIERRE_P_SECTOR_3 = null;
           SELECT  AA.FECHA_HORA_CREACION
           FROM MG_PEDIDOS_VERIFICADOS AA
           --LEFT JOIN MG_PEDIDOS_VERIFICADOS_DET AB ON (AA.MG_PEDIDO_VERIFICADO_ID = AB.MG_PEDIDO_VERIFICADO_ID)
           WHERE AA.MG_PEDIDO_SURTIDO_ID = :MG_PEDIDO_SURTIDO_ID
           AND AA.SECTOR = 3
           --GROUP BY AA.FECHA_HORA_CREACION
           INTO CIERRE_P_SECTOR_3;

           SELECT SUM(BA.CANT_COMPROM)
           FROM MG_PEDIDOS_SURTIDOS_DET BA
           INNER JOIN LIBRES_ARTICULOS BB ON (BA.ARTICULO_ID = BB.ARTICULO_ID)
           WHERE BA.MG_PEDIDO_SURTIDO_ID = :MG_PEDIDO_SURTIDO_ID
           AND BB.SECTOR_UBICACION = 2
           INTO PZAS_SECTOR_2;

           SELECT SUM(BA.CANT_COMPROM)
           FROM MG_PEDIDOS_SURTIDOS_DET BA
           INNER JOIN LIBRES_ARTICULOS BB ON (BA.ARTICULO_ID = BB.ARTICULO_ID)
           WHERE BA.MG_PEDIDO_SURTIDO_ID = :MG_PEDIDO_SURTIDO_ID
           AND BB.SECTOR_UBICACION = 1
           INTO PZAS_SECTOR_1;

           SELECT SUM(BA.CANT_COMPROM)
           FROM MG_PEDIDOS_SURTIDOS_DET BA
           INNER JOIN LIBRES_ARTICULOS BB ON (BA.ARTICULO_ID = BB.ARTICULO_ID)
           WHERE BA.MG_PEDIDO_SURTIDO_ID = :MG_PEDIDO_SURTIDO_ID
           AND BB.SECTOR_UBICACION = 3
           INTO PZAS_SECTOR_3;

           NO_BULTOS = 0;
           NO_RAMPA = NULL;
           FOR SELECT COUNT(J.NO_TICKET), MAX(J.RAMPA)
           FROM MG_PEDIDOS_VERIF_NO_TICKETS J
           WHERE J.PEDIDO_SURTIDO_ID = :MG_PEDIDO_SURTIDO_ID
           AND J.TIPO_MESA = 'ES'
           GROUP BY J.NO_TICKET, J.RAMPA
           ORDER BY J.NO_TICKET, J.RAMPA
           INTO BULTO, NO_RAMPA
           DO
           BEGIN
             NO_BULTOS = NO_BULTOS + 1;
           END

           NO_HOJA_RUTA = NULL;
           SELECT I.FOLIO
           FROM MG_PEDIDOS_ENRUTADOS I
           WHERE I.MG_PEDIDO_SURTIDO_ID = :MG_PEDIDO_SURTIDO_ID
           INTO NO_HOJA_RUTA;

           SUSPEND;

       END
    END
END
^

SET TERM ; ^

