Files
DECOMARMOL/PROYECTO/otrodir/cotizacionesFacturadas.4gl
2026-09-22 20:38:51 -04:00

70 lines
3.0 KiB
Plaintext

FUNCTION busca_facturas()
DEFINE xcotizacion INT,
facturadas DYNAMIC ARRAY OF RECORD
fecha DATE,
factura INT,
productos VARCHAR(100),
cant_fact DEC(12,5),
cant_cot DEC(12,5),
cant_dev DEC(12,5),
residuo DEC(12,5)
END RECORD,
xnombre VARCHAR(60),
idx SMALLINT
OPEN WINDOW w1 WITH FORM "vefmwd008"
DIALOG ATTRIBUTES(UNBUFFERED)
INPUT BY NAME xcotizacion
AFTER FIELD xcotizacion
SELECT b.nombre INTO xnombre FROM prtb00012 a,vetb00004 b WHERE a.num_oc = xcotizacion AND
a.tipo_cliente = b.tipo_cliente AND a.sec_cliente =b.sec_cliente AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("INFO","REGISTRO NO EXISTE","INFO")
NEXT FIELD xcotizacion
END IF
DISPLAY BY NAME xnombre
DECLARE busca_cotizacion CURSOR FOR
SELECT CONVERT(CHAR(10),a.fecha_factura,103),a.factura,CAST(b.cod_n AS char(5))||'-'||
CAST(b.cod_grupo AS char(5))||'-'||
CAST(b.cod_tipo AS char(5))||'-'||
CAST(b.cod_sec AS char(5))||'-'||' '||
c.descrip_esp,SUM(b.cantidad),
ISNULL((SELECT SUM(d.cantidad) FROM prtb00013 d WHERE b.cod_n = d.cod_n AND b.cod_grupo = d.cod_grupo AND
b.cod_tipo = d.cod_tipo AND b.cod_sec = d.cod_Sec AND
d.num_oc = a.orden AND
d.status_t IS null ),0) ,
ISNULL((SELECT SUM(f.cantidad_2) FROM iptb00006 f WHERE f.cod_n = b.cod_n AND
f.cod_grupo = b.cod_grupo AND
f.cod_tipo = b.cod_tipo AND
f.cod_Sec = b.cod_sec AND f.cod_mov in(12,13) AND
f.num_oc = a.orden AND f.status_t IS NULL ),0)
FROM vetb00002 a,vetb00003 b,iptb00002 c
WHERE a.factura = b.factura AND
a.orden = xcotizacion AND
b.cod_n = c.cod_n AND
b.cod_grupo = c.cod_grupo AND
b.cod_tipo = c.cod_tipo AND
b.cod_sec = c.cod_sec AND
a.status_t IS NULL
GROUP BY a.fecha_factura,a.factura,b.cod_n,b.cod_grupo,
b.cod_tipo,b.cod_sec, c.descrip_esp,a.orden
ORDER BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_Sec
LET idx = 1
FOREACH busca_cotizacion INTO facturadas[idx].*
LET facturadas[idx].residuo = facturadas[idx].cant_cot-facturadas[idx].cant_fact+
facturadas[idx].cant_dev
LET idx = idx +1
END FOREACH
END INPUT
DISPLAY ARRAY facturadas TO sfacturadas.*
END DISPLAY
ON ACTION CANCEL
LET INT_FLAG = FALSE
EXIT DIALOG
END DIALOG
CLOSE WINDOW w1
END FUNCTION