CREATE OR ALTER PROCEDURE MGREP_QUITA_CEROS_FOLIO (
    v_folio varchar(9))
returns (
    c1 char(1),
    c2 char(1),
    c3 char(1),
    c4 char(1),
    c5 char(1),
    c6 char(1),
    c7 char(1),
    c8 char(1),
    c9 char(1),
    folio varchar(9))
as
declare variable x integer;
BEGIN
  C1 = SUBSTRING(V_FOLIO FROM 1 FOR 1);
  C2 = SUBSTRING(V_FOLIO FROM 2 FOR 1);
  C3 = SUBSTRING(V_FOLIO FROM 3 FOR 1);
  C4 = SUBSTRING(V_FOLIO FROM 4 FOR 1);
  C5 = SUBSTRING(V_FOLIO FROM 5 FOR 1);
  C6 = SUBSTRING(V_FOLIO FROM 6 FOR 1);
  C7 = SUBSTRING(V_FOLIO FROM 7 FOR 1);
  C8 = SUBSTRING(V_FOLIO FROM 8 FOR 1);
  C9 = SUBSTRING(V_FOLIO FROM 9 FOR 1);

  FOLIO = '';
  X = 0;
  IF ((C1 = '1') OR (C1 = '2' ) OR (C1 = '3' ) OR (C1 = '4' ) OR (C1 = '5' ) OR (C1 = '6' ) OR (C1 = '7' ) OR (C1 = '8' ) OR (C1 = '9' ))  THEN
  BEGIN
     FOLIO = C1 || C2 || C3 || C4 || C5 || C6 || C7 || C8 || C9;
     X = 1;
  END
  ELSE
     IF (C1 <> '0') THEN
        FOLIO = C1;

  IF (X = 0) THEN
  BEGIN
      IF ((C2 = '1') OR (C2 = '2' ) OR (C2 = '3' ) OR (C2 = '4' ) OR (C2 = '5' ) OR (C2 = '6' ) OR (C2 = '7' ) OR (C2 = '8' ) OR (C2 = '9' ))  THEN
      BEGIN
         FOLIO = FOLIO || C2 || C3 || C4 || C5 || C6 || C7 || C8 || C9;
         X=1;
      END
      ELSE
         IF (C2 <> '0') THEN
            FOLIO = FOLIO || C2;
  END

  IF (X = 0) THEN
  BEGIN
      IF ((C3 = '1') OR (C3 = '2' ) OR (C3 = '3' ) OR (C3 = '4' ) OR (C3 = '5' ) OR (C3 = '6' ) OR (C3 = '7' ) OR (C3 = '8' ) OR (C3 = '9' ))  THEN
      BEGIN
         FOLIO = FOLIO || C3 || C4 || C5 || C6 || C7 || C8 || C9;
         X=1;
      END
      ELSE
         IF (C3 <> '0') THEN
            FOLIO = FOLIO || C3;
  END

  IF (X = 0) THEN
  BEGIN
      IF ((C4 = '1') OR (C4 = '2' ) OR (C4 = '3' ) OR (C4 = '4' ) OR (C4 = '5' ) OR (C4 = '6' ) OR (C4 = '7' ) OR (C4 = '8' ) OR (C4 = '9' ))  THEN
      BEGIN
         FOLIO = FOLIO || C4 || C5 || C6 || C7 || C8 || C9;
         X=1;
      END
  END

  IF (X = 0) THEN
  BEGIN
      IF ((C5 = '1') OR (C5 = '2' ) OR (C5 = '3' ) OR (C5 = '4' ) OR (C5 = '5' ) OR (C5 = '6' ) OR (C5 = '7' ) OR (C5 = '8' ) OR (C5 = '9' ))  THEN
      BEGIN
         FOLIO = FOLIO || C5 || C6 || C7 || C8 || C9;
         X=1;
      END
  END

  IF (X = 0) THEN
  BEGIN
      IF ((C6 = '1') OR (C6 = '2' ) OR (C6 = '3' ) OR (C6 = '4' ) OR (C6 = '5' ) OR (C6 = '6' ) OR (C6 = '7' ) OR (C6 = '8' ) OR (C6 = '9' ))  THEN
      BEGIN
         FOLIO = FOLIO || C6 || C7 || C8 || C9;
         X=1;
      END
  END

  IF (X = 0) THEN
  BEGIN
     IF ((C7 = '1') OR (C7 = '2' ) OR (C7 = '3' ) OR (C7 = '4' ) OR (C7 = '5' ) OR (C7 = '6' ) OR (C7 = '7' ) OR (C7 = '8' ) OR (C7 = '9' ))  THEN
     BEGIN
        FOLIO = FOLIO || C7 || C8 || C9;
        X=1;
     END
  END

  IF (X = 0) THEN
  BEGIN
     IF ((C8 = '1') OR (C8 = '2' ) OR (C8 = '3' ) OR (C8 = '4' ) OR (C8 = '5' ) OR (C8 = '6' ) OR (C8 = '7' ) OR (C8 = '8' ) OR (C8 = '9' ))  THEN
     BEGIN
         FOLIO = FOLIO || C8 || C9;
         X=1;
     END
  END

  IF (X = 0) THEN
  BEGIN
     IF ((C9 = '1') OR (C9 = '2' ) OR (C9 = '3' ) OR (C9 = '4' ) OR (C9 = '5' ) OR (C9 = '6' ) OR (C9 = '7' ) OR (C9 = '8' ) OR (C9 = '9' ))  THEN
     BEGIN
        FOLIO = FOLIO || C9;
        X=1;
     END
  END
  SUSPEND;
END;
----------------------------------------------------------------------------------

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
    WHERE A.FECHA_HORA_LISTA_SURTIDO >= :FECHA_ACTUAL
    --where a.mg_pedido_surtido_id > 4225893
    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

        SELECT FOLIO
        FROM MGREP_QUITA_CEROS_FOLIO(:NO_PEDIDO)
        INTO NO_PEDIDO;

        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;

GRANT EXECUTE ON PROCEDURE MG_ESTATUS_PEDIDOS TO USUARIO_MICROSIP;
GRANT EXECUTE ON PROCEDURE MGREP_QUITA_CEROS_FOLIO TO USUARIO_MICROSIP;
