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