"
LET cuerpo = cuerpo CLIPPED,
""
FOR i = 1 TO movi2.getLength()
# PROCEDIMIENTO ENVIO CORREO PARA LA EXISTENCIA MINIMA
LET existenciaact[i] = (existenciaact[i]-(movi2[i].cantidad_2*-1))
IF existminima[i] > 0 THEN
LET porcientocontrol[i] = ( existminima[i]/existenciaact[i])*100
DISPLAY "PORCIENTO ",existminima[i]," ",existenciaact[i]," ",
porcientocontrol[i]," ",status_m
END IF
LET enviaCorreo = "NO"
IF porcientocontrol[i] >= 75 AND status_m =2 AND existminIma[i] > 0 THEN
# INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES
LET enviaCorreo="SI"
LET cuerpo = cuerpo CLIPPED, "| ",movi2[i].descrip_esp CLIPPED," | ",
"",movi2[i].cantidad_2 USING "##,###.##"," | ",
"",existminima[i] USING "##,###.##"," | ",
"",existenciaact[i] USING "##,###.##"," | ",
"
"
LET enviaEmailProd[i]="SI"
END IF
IF porcientocontrol[i] <= 0 AND status_m =2 AND existminIma[i] > 0 THEN
# INFORMACION PARA ENVIAR EL CORREO A LOS VENDEDORES
LET enviaCorreo="SI"
LET cuerpo_correo = cuerpo_correo CLIPPED, "",
movi2[i].descrip_esp CLIPPED," | ",
"",movi2[i].cantidad_2 USING "##,###.##"," | ",
"",existminima[i] USING "##,###.##"," | ",
"",existenciaact[i] USING "##,###.##"," | ",
""
LET enviaEmailProd[i]="SI"
END IF
END FOR
IF enviaCorreo = "SI" THEN
LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
CALL envia_correo(aquienEmail,ccAquien,cuerpo,
encabezado, procedimiento )
END IF
END FUNCTION
FUNCTION busca_despiece(pcodn,pcodgrupo,pcodtipo,pcodsec)
DEFINE i,pcodn,pcodgrupo,pcodtipo,pcodsec INT,
tieneDespiece BOOLEAN
LET tieneDespiece = FALSE
FOR i = 1 TO despiece.getLength()
IF despiece[i].cod_sec IS NOT NULL THEN
IF despiece[i].medida IS NOT NULL THEN
IF despiece[i].cod_n = pcodn AND despiece[i].cod_grupo = pcodgrupo AND
despiece[i].cod_tipo = pcodtipo AND despiece[i].cod_sec = pcodsec THEN
LET tieneDespiece = TRUE
END IF
END IF
END IF
END FOR
RETURN tieneDespiece
END FUNCTION
FUNCTION verificadespiece(pcodn,pcodgrupo,pcodtipo,pcodsec)
DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,k1,k2,k3,K4 INT,
tiene STRING
LET tiene = 'N'
DISPLAY "CODIGO DIGITADO ",pcodn,pcodgrupo,pcodtipo,pcodsec
LET k2 = 1
FOR k1 = 1 TO despiece_act.getLength()
IF despiece_act[k1].cod_n = pcodn AND
despiece_act[k1].cod_grupo = pcodgrupo AND
despiece_act[k1].cod_tipo = pcodtipo AND
despiece_act[k1].cod_sec = pcodsec THEN
LET tiene = 'S'
LET despiece[k1].id_etiqueta = despiece_act[k2].id_etiqueta
LET despiece[k1].cantidad = despiece_act[k2].cantidad
LET despiece[k1].cod_grupo = despiece_act[k2].cod_grupo
LET despiece[k1].cod_tipo = despiece_act[k2].cod_tipo
LET despiece[k1].cod_sec = despiece_act[k2].cod_sec
LET despiece[k1].cod_n = despiece_act[k2].cod_n
LET despiece[k1].lado_1 = despiece_act[k2].lado_1
LET despiece[k1].lado_2 = despiece_act[k2].lado_2
LET despiece[k1].lado_3 = despiece_act[k2].lado_3
LET despiece[k1].medida = despiece_act[k2].medida
LET tiene='S'
LET k2 = k2 + 1
DISPLAY "verificacion modificacion ",pcodsec," ",pcodgrupo
END IF
END FOR
IF tiene = "N" THEN
LET k3 = despiece_act.getLength()
IF k3 IS NULL OR k3 = 0 THEN
LET K3 = 1
ELSE
LET k3 =k3 + 1
END IF
FOR k2 = k3 TO despiece.getLength()
CALL despiece_act.appendElement()
LET despiece_act[k2].id_etiqueta = despiece[k2].id_etiqueta
LET despiece_act[k2].cantidad = despiece[k2].cantidad
LET despiece_act[k2].cod_grupo = pcodgrupo
LET despiece_act[k2].cod_tipo = pcodtipo
LET despiece_act[k2].cod_sec = pcodsec
LET despiece_act[k2].cod_n = pcodn
LET despiece_act[k2].lado_1 = despiece[k2].lado_1
LET despiece_act[k2].lado_2 = despiece[k2].lado_2
LET despiece_act[k2].lado_3 = despiece[k2].lado_3
LET despiece_act[k2].medida = despiece[k2].medida
DISPLAY "verificacion adicion ",pcodn," ",pcodgrupo," ",pcodtipo," ",pcodsec
END FOR
CALL despiece.clear()
END IF
FOR k1 = 1 TO despiece_act.getLength()
DISPLAY "DATOS despiece ACT ",despiece_Act[k1].*," ",tiene
END FOR
RETURN tiene
END FUNCTION
FUNCTION toPDF()
-- configure report engine; the functions prefixed fgl that are called here are part of the GRW API
CALL configureOutput("PDF") RETURNING HANDLER
START REPORT formu4 TO XML HANDLER handler
DECLARE buscapdf CURSOR FOR
SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
a.cantidad_1,a.cantidad_2,'0',b.unidad_med,b.descrip_esp
FROM iptb00006 a,iptb00002 b
WHERE a.num_doc = otros_mov.num_doc AND
a.cod_mov = otros_mov.cod_mov AND
a.cod_n = b.cod_n AND
a.cod_grupo = b.cod_grupo AND
a.cod_tipo = b.cod_tipo AND
a.cod_sec = b.cod_Sec AND
a.bodega = otros_mov.bodega AND
a.fech_crea > '01/01/2009 08:00'
ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
LET idx = 1
FOREACH buscapdf INTO movi2[idx].*
IF movi2[idx].cantidad_2 < 0 THEN
LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1
END IF
SELECT SUM(a.cantidad) INTO cantidad_conduce FROM prtb00013 a
WHERE a.cod_n = movi2[idx].cod_n AND
a.cod_grupo = movi2[idx].cod_grupo AND
a.cod_tipo = movi2[idx].cod_tipo AND
a.cod_sec = movi2[idx].cod_sec AND
a.num_oc = ordenx AND
a.status_t IS NULL
LET cantidad_orden =0
IF otros_mov.cod_mov = 30 AND otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN
SELECT SUM(a.cantidad_2*-1) INTO cantidad_orden
FROM iptb00006 a
WHERE a.cod_n=movi2[idx].cod_n and a.cod_grupo=movi2[idx].cod_grupo
and a.cod_tipo=movi2[idx].cod_tipo and a.cod_sec=movi2[idx].cod_sec
and a.conduce_no = otros_mov.conduce_no and cod_mov in (30,31,55)
and a.status_t IS NULL
END IF
IF cantidad_orden IS NULL THEN
LET cantidad_orden = 0
END IF
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
LET movi2[idx].cantidad_p = cantidad_conduce - cantidad_orden
OUTPUT TO REPORT formu4(otros_mov.*,movi2[idx].*)
LET idx = idx + 1
END FOREACH
FINISH REPORT formu4
END FUNCTION