GLOBALS DEFINE ptasa DEC(12,4) END GLOBALS FUNCTION prprmt011b(x) DEFINE x DYNAMIC ARRAY OF RECORD actualiza VARCHAR(1), cerrada VARCHAR(1), estado_produccion VARCHAR(100), estado_producto VARCHAR(100), departamento SMALLINT, descripcion_dpto VARCHAR(30), vendedor VARCHAR(50), apell1_emp VARCHAR(50), fecha DATE, fecha_compromiso DATE, fecha_llegada DATE, fechaDispEntrega DATE, fechaSolDespacho DATE, fechaInstalacion DATE, cotizacion_no INT, num_oc INT, orden_compra INT, observacion VARCHAR(250), tipo_venta VARCHAR(30), cliente VARCHAR(60), origen VARCHAR(30), producto VARCHAR(100), cantidad_ord DEC(12,5), cantidad_desp DEC(12,5), cantidad_dev DEC(12,5), pendiente DEC(12,5), sec_vend SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, tipo_cliente SMALLINT, sec_cliente INT, balance DEC(12,5), id_kit INT , area SMALLINT, instalador,equipo VARCHAR(100), costo NUMERIC(12,2) END RECORD, i SMALLINT DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings() r_filename STRING, -- filename of Report Design Document including .4rp extension r_output STRING, -- output format option preview INTEGER -- TRUE/FALSE, to set preview option LET r_filename = "prprmt011b.4rp" CALL seleccionarSalida() RETURNING r_output IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file # LET r_output='SVG' CLIPPED LET preview=1 CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default CALL fgl_report_configurexlsxdevice(null,null,null,false,false,null,1) LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF IF handler IS NOT NULL THEN -- report engine was configured ok START REPORT reporte_rp11b TO XML HANDLER HANDLER END IF FOR i = 1 TO x.getLength() IF x[i].num_oc IS NOT NULL THEN OUTPUT TO REPORT reporte_rp11b(x[i].*) END IF END FOR FINISH REPORT reporte_rp11b END FUNCTION REPORT reporte_rp11b(y) DEFINE y RECORD actualiza VARCHAR(1), cerrada VARCHAR(1), estado_produccion VARCHAR(100), estado_producto VARCHAR(100), departamento SMALLINT, descripcion_dpto VARCHAR(30), vendedor VARCHAR(50), apell1_emp VARCHAR(50), fecha DATE, fecha_compromiso DATE, fecha_llegada DATE, fechaDispEntrega DATE, fechaSolDespacho DATE, fechaInstalacion DATE, cotizacion_no INT, num_oc INT, orden_compra INT, observacion VARCHAR(250), tipo_venta VARCHAR(30), cliente VARCHAR(60), origen VARCHAR(30), producto VARCHAR(100), cantidad_ord DEC(12,5), cantidad_desp DEC(12,5), cantidad_dev DEC(12,5), pendiente DEC(12,5), sec_vend SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, tipo_cliente SMALLINT, sec_cliente INT, balance DEC(12,5), id_kit INT , area SMALLINT, instalador,equipo VARCHAR(100), costo NUMERIC(12,2) END RECORD, nombre_cia CHAR(50), pprecio,ttotal,vtotal,valor_orden,vvalor_orden,tvalor_orden,valor_avance DEC(12,2), psimbolo CHAR(4), numero_recibo INT, valor,ototal DEC(12,4) ORDER BY y.vendedor,y.num_oc FORMAT FIRST PAGE HEADER SELECT a.nombre INTO nombre_cia FROM companias a LET ttotal = 0 LET tvalor_orden = 0 BEFORE GROUP OF y.vendedor LET vtotal = 0 LET vvalor_orden=0 BEFORE GROUP OF y.num_oc LET ototal = 0 SELECT a.simbolo INTO psimbolo FROM vetb00061 a,vetb00050 b WHERE a.ventas = b.ventas AND b.cotizacion_no = y.cotizacion_no ON EVERY ROW SELECT AVG(a.precio-(a.precio*(a.porc_desc/100))) INTO pprecio FROM vetb00051 a WHERE a.cotizacion_no = y.cotizacion_no AND a.area = y.area AND a.cod_n = y.cod_n AND a.cod_grupo = y.cod_grupo AND a.cod_tipo = y.cod_tipo AND a.cod_Sec = y.cod_sec # BUSCA AVANCE A COTIZACION SELECT SUM(a.valor) INTO valor_avance FROM cctb00001 a WHERE a.banco = y.cotizacion_no AND a.num_doc = a.aplica_a AND a.status_t IS NULL AND a.tipo_cliente = y.tipo_cliente AND a.sec_cliente = y.sec_cliente AND a.tipo_doc = 'AV' #DISPLAY "codigo ",y.cotizacion_no," ",y.area," ",y.cod_n,"-",y.cod_grupo,"-",y.cod_tipo,"-",y.cod_sec," p ",pprecio IF pprecio IS NULL THEN SELECT AVG(a.precio-(a.precio*(a.porc_desc/100))) INTO pprecio FROM vetb00031 a WHERE a.cotizacion_no = y.cotizacion_no AND a.id_kit = y.id_kit AND a.area = y.area AND a.cod_n = y.cod_n AND a.cod_grupo = y.cod_grupo AND a.cod_tipo = y.cod_tipo AND a.cod_Sec = y.cod_sec END IF SELECT AVG(a.tasa) INTO ptasa FROM cgtb00084 a WHERE a.tipo_cliente = y.tipo_cliente AND a.ano = YEAR(TODAY) AND a.mes = MONTH(TODAY) IF ptasa IS NULL THEN LET ptasa = 1 END IF IF pprecio IS NULL THEN LET pprecio = 0 END IF LET pprecio = pprecio * ptasa LET valor_avance=valor_avance * ptasa LET valor = pprecio * y.pendiente LET ttotal = ttotal + valor LET ototal = ototal + valor LET vtotal = valor + vtotal LET valor_orden = pprecio * y.cantidad_ord LET tvalor_orden = valor_orden + tvalor_orden LET vvalor_orden = vvalor_orden + valor_orden PRINTX y.*,nombre_cia,pprecio,valor,ttotal,ototal,psimbolo,vtotal,valor_orden,tvalor_orden,vvalor_orden, numero_recibo,valor_avance END REPORT