{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP015 OBJETIVO : Relacion de Ventas Brutas y Reales. PROGRAMADOR : Ing. Juan Soto (Johnny) FECHA REALIZACION : Agosto 28, 1997 ------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE act,mes_ini INTEGER , fecha_inicial,fecha_final DATE, subject,cuerpo_correo,procedimiento,attachment VARCHAR(100) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT TO "decomarmol" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL veprrp015() END MAIN FUNCTION veprrp015() 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 DEFINE historico CHAR(2) ### Definicion del registro a exportar al reporte DEFINE ventas RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad_med CHAR(4) , marca CHAR(1), ventas CHAR(1), cantidad_vend DECIMAL(12,2), valor DECIMAL(12,2), cantidad_dev DECIMAL(12,2), valor_dev DECIMAL(12,2), unidad_acum DECIMAL(12,2), valor_acum DECIMAL(12,2), codigo CHAR(17), grupo_venta CHAR(1), descripcion_v CHAR(30), descripcion_p CHAR(30), vendedor CHAR(60), descuento DEC(12,2), sec_vend SMALLINT END RECORD, salida CHAR(50) #### Pide los parametros para busqueda de informacion SELECT a.fecha_inicio INTO fecha_inicial FROM prdtable a WHERE a.ano =YEAR(today) AND a.mes = MONTH(today) #LET fecha_inicial = today-29 LET fecha_final = today # Buscando Pilas vendidas del ano actual LET salida = "veprrp015b.4rp" LET selec = "SELECT sum(a.cantidad),sum((a.cantidad * a.precio)*k.tasa),'0','0', ", " f.producto, ", " SUM((a.cantidad * a.precio) * (a.cantidad_2 / 100)*k.tasa) ", "FROM vetb00003 a,vetb00002 b,vetb00061 c,iptb00002 d,iptb00020 f,cgtb00084 k,prdtable l ", "WHERE b.fecha_factura between ? AND ? AND a.factura = b.factura and ", " a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND a.cod_tipo = d.cod_tipo AND ", " a.cod_Sec = d.cod_sec AND b.ventas = c.ventas AND ", " a.cod_n = f.cod_n and ", " b.ventas = k.ventas and b.tipo_cliente = k.tipo_cliente and ", " b.fecha_factura between l.fecha_inicio and l.fecha_corte and ", " l.mes = k.mes and l.ano = k.ano ", " AND b.status_t is null ", "GROUP BY f.producto ", " UNION ", "SELECT ", "'0','0',sum(q.cantidad_2),sum(((q.cantidad_2 * a.precio)*k.tasa)-((q.cantidad_2 * a.precio) * (a.cantidad_2 / 100)*k.tasa)), ", "f.producto, ", "'0' ", "from iptb00006 q,vetb00003 a,cctb00001 p, vetb00002 b,cgtb00084 k,prdtable l,iptb00020 f,iptb00002 d,vetb00061 c ", "where a.cod_n = q.cod_n and a.cod_grupo = q.cod_grupo and a.cod_tipo = q.cod_tipo and a.cod_Sec = q.cod_Sec and ", "a.cod_n = d.cod_n and a.cod_grupo = d.cod_grupo and a.cod_tipo = d.cod_tipo and a.cod_Sec = d.cod_Sec and ", "a.cod_n = f.cod_n and b.ventas = k.ventas and ", "q.cod_mov in (12,13) and q.fact_no = cast(b.factura as char(7)) and ", " q.fecha between ? AND ? and ", "p.banco = q.cod_mov and p.num_cheque = q.num_doc and p.tipo_doc = 'NC' AND ", "b.tipo_cliente = p.tipo_cliente and b.sec_cliente = p.sec_cliente and ", "p.aplica_a = b.factura and b.factura = a.factura and ", "p.fecha_orig between l.fecha_inicio and l.fecha_corte and ", "k.mes = l.mes and k.ano = l.ano and k.tipo_cliente = b.tipo_cliente and ", "f.cod_n = a.cod_n and ", "b.ventas = k.ventas and ", " b.ventas = c.ventas and ", "q.status_t is null and p.status_t is null ", "group by f.producto", " ORDER BY f.producto " PREPARE busca_act FROM selec DECLARE act2 SCROLL CURSOR FOR busca_act OPEN act2 USING fecha_inicial,fecha_final,fecha_inicial,fecha_final IF NOT fgl_report_loadCurrentSettings("veprrp015b_2.4rp") THEN EXIT PROGRAM END IF CALL fgl_report_selectDevice("PDF") CALL fgl_report_selectPreview(false) LET handler = fgl_report_commitCurrentSettings() START REPORT grupo TO XML HANDLER HANDLER FOREACH act2 INTO ventas.unidad_acum,ventas.valor_acum, ventas.cantidad_dev,ventas.valor_dev, ventas.descripcion_v, ventas.descuento IF ventas.descuento IS NULL THEN LET ventas.descuento = 0 END IF LET ventas.valor_acum = ventas.valor_acum - ventas.descuento IF ventas.cantidad_dev IS NULL THEN LET ventas.cantidad_Dev = 0 END IF IF ventas.valor_dev IS NULL THEN LET ventas.valor_Dev = 0 END IF IF ventas.unidad_acum IS NULL THEN LET ventas.unidad_acum = 0 END IF IF ventas.valor_acum IS NULL THEN LET ventas.valor_acum = 0 END IF OUTPUT TO REPORT grupo(ventas.unidad_acum,ventas.valor_acum, ventas.cantidad_dev,ventas.valor_dev, ventas.descripcion_v, ventas.descuento) END FOREACH FINISH REPORT grupo LET attachment = "F:\\MASTER\\BIN240\\report.pdf" LET procedimiento = "{ call envia_correo(?,?,?,?,?) }" CLIPPED LET subject = "VENTAS POR GRUPO DE PRODUCTOS DESDE ",fecha_inicial USING"dd/mm/yyyy"," AL ", fecha_final USING "dd/mm/yyyy" LET cuerpo_correo ="LAS INFORMACIONES EN ESTE REPORTE ESTAN POR GRUPOS DE PRODUCTOS, CON LAS DEVOLUCIONES INCLUIDAS" CALL envia_correo('jsoto@marmotech.com.do',"jsoto@marmotech.com.do",cuerpo_correo, subject, procedimiento,attachment ) END FUNCTION REPORT plan(x) DEFINE x RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad_med CHAR(4) , marca CHAR(1), ventas CHAR(1), cantidad_vend DECIMAL(12,2), valor DECIMAL(12,2), cantidad_dev DECIMAL(12,2), valor_dev DECIMAL(12,2), unidad_acum DECIMAL(12,2), valor_acum DECIMAL(12,2), codigo CHAR(17), grupo_venta CHAR(1), descripcion_v CHAR(30), descripcion_p CHAR(30), vendedor CHAR(60), descuento DEC(12,2), sec_vend SMALLINT END RECORD, cantidadReal,valorReal DEC(12,2) DEFINE hora CHAR(5) DEFINE t_cantidad_dev,t_valor_dev,t_t_cantidad_dev,t_t_valor_dev, t_t_t_cantidad_dev, t_t_t_valor_dev,g_cantidad_vend,g_valor_vend, g_unidad_acum,g_valor_acum,g_g_cantidad_vend,g_g_valor_vend, g_g_unidad_acum,g_g_valor_acum,g_g_g_cantidad_vend,g_g_g_valor_vend, g_g_g_unidad_acum,g_g_g_valor_acum, t1_cantidad_dev,t1_valor_dev,g1_cantidad_vend,g1_valor_vend DECIMAL(12,2) DEFINE gcantidad_v,gvalor,gcantidad_dev,gvalor_Dev,gcantidad_neta, gvalor_neto DEC(12,2) #### Especifica Formato de salida OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 4 ORDER BY x.vendedor,x.descripcion_v,x.descripcion_p,x.codigo FORMAT FIRST PAGE HEADER LET g_g_g_unidad_acum = 0 LET g_g_g_valor_acum = 0 LET t1_cantidad_dev = 0 LET t1_valor_dev = 0 LET t_t_t_cantidad_dev = 0 LET t_t_t_valor_dev = 0 LET g_g_g_cantidad_vend = 0 LET g_g_g_valor_vend = 0 BEFORE GROUP OF x.vendedor LET t_t_cantidad_dev = 0 LET t_t_valor_dev = 0 LET g_g_unidad_acum = 0 LET g_g_valor_acum = 0 LET g_cantidad_vend = 0 LET g_valor_vend = 0 BEFORE GROUP OF x.descripcion_v LET t_cantidad_dev = 0 LET t_valor_dev = 0 LET g_unidad_acum = 0 LET g_valor_acum = 0 LET g_g_cantidad_vend = 0 LET g_g_valor_vend = 0 BEFORE GROUP OF x.descripcion_p LET gcantidad_dev = 0 LET gvalor_dev = 0 LET gcantidad_v = 0 LET gvalor = 0 LET gcantidad_neta = 0 LET gvalor_neto = 0 ON EVERY ROW LET cantidadReal = x.unidad_acum - x.cantidad_dev LET valorReal = x.valor_acum - x.valor_dev #TOTAL VENTAS LET t_cantidad_dev = x.cantidad_dev + t_cantidad_Dev LET t_valor_dev = x.valor_dev + t_valor_Dev LET g_unidad_acum = x.unidad_acum + g_unidad_acum LET g_valor_acum = x.valor_acum + g_valor_acum LET g_g_cantidad_vend = (x.unidad_acum - x.cantidad_dev) + g_g_cantidad_vend LET g_g_valor_vend = (x.valor_acum - x.valor_dev) + g_g_valor_vend LET g1_cantidad_vend = g_g_cantidad_vend + g1_cantidad_vend LET g1_valor_vend = g_g_valor_vend + g1_valor_vend # TOTAL VENDEDOR LET t_t_cantidad_dev = x.cantidad_dev + t_t_cantidad_dev LET t_t_valor_dev = x.valor_dev + t_t_valor_dev LET g_g_unidad_acum = x.unidad_acum + g_g_unidad_acum LET g_g_valor_acum = x.valor_acum + g_g_valor_acum LET g_cantidad_vend = (x.unidad_acum - x.cantidad_dev) + g_cantidad_vend LET g_valor_vend = (x.valor_acum - x.valor_dev) + g_valor_vend # TOTAL GRUPO LET gcantidad_dev = x.cantidad_dev + gcantidad_Dev LET gvalor_dev = x.valor_dev + gvalor_Dev LET gcantidad_v = x.unidad_acum + gcantidad_v LET gvalor = x.valor_acum + gvalor LET gcantidad_neta = (x.unidad_acum - x.cantidad_dev) + gcantidad_neta LET gvalor_neto = (x.valor_acum - x.valor_dev) + gvalor_neto # TOTAL GENERAL LET g_g_g_unidad_acum = x.unidad_acum + g_g_g_unidad_acum LET g_g_g_valor_acum = x.valor_acum + g_g_g_valor_acum LET t1_cantidad_dev = x.cantidad_dev + t1_cantidad_Dev LET t1_valor_dev = x.valor_dev + t1_valor_Dev LET g_g_g_cantidad_vend = (x.unidad_acum - x.cantidad_dev) + g_g_g_cantidad_vend LET g_g_g_valor_vend = (x.valor_acum - x.valor_dev) + g_g_g_valor_vend # CALL fgl_winmessage("INFO",g_g_g_valor_vend,"stop") PRINTX x.codigo,x.descrip_esp,x.unidad_med, x.unidad_acum, x.valor_acum , x.cantidad_dev, x.valor_dev, CantidadReal, valorReal, x.descripcion_p, p_companias.nombre, hora, fecha_inicial,fecha_final, x.descripcion_v, x.vendedor, g_unidad_acum, g_valor_acum, t_cantidad_dev, t_valor_dev, g_g_cantidad_Vend, g_g_valor_vend, g_g_unidad_acum, g_g_valor_acum, t_t_cantidad_dev, t_t_valor_dev, g_cantidad_vend, g_valor_vend, g_g_g_unidad_acum,g_g_g_valor_acum, t1_cantidad_dev,t1_valor_dev,t_t_t_cantidad_dev, t_t_t_valor_dev, gcantidad_v, gvalor, gcantidad_dev, gvalor_Dev, gcantidad_neta, gvalor_neto, g_g_g_cantidad_vend, g_g_g_valor_vend, g1_cantidad_Vend,g1_valor_vend END REPORT REPORT grupo(x) DEFINE x RECORD unidad_acum DECIMAL(12,2), valor_acum DECIMAL(12,2), cantidad_dev DECIMAL(12,2), valor_dev DECIMAL(12,2), descripcion_v CHAR(30), descuento DEC(12,2) END RECORD, cantidadReal,valorReal DEC(12,2) DEFINE hora CHAR(5) DEFINE t_t_t_cantidad_dev, t_t_t_valor_dev, g_g_g_cantidad_vend,g_g_g_valor_vend, g_g_g_unidad_acum,g_g_g_valor_acum, t1_cantidad_dev,t1_valor_dev DECIMAL(12,2) #### Especifica Formato de salida OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 4 ORDER BY x.descripcion_v FORMAT FIRST PAGE HEADER LET g_g_g_unidad_acum = 0 LET g_g_g_valor_acum = 0 LET t_t_t_cantidad_dev = 0 LET t_t_t_valor_dev = 0 LET t1_cantidad_dev = 0 LET t1_valor_dev =0 LET g_g_g_cantidad_vend = 0 LET g_g_g_valor_vend = 0 AFTER GROUP OF x.descripcion_v LET x.valor_acum = GROUP SUM(x.valor_acum) LET x.cantidad_dev = GROUP SUM(x.cantidad_dev) LET x.unidad_acum = GROUP SUM(x.unidad_acum) LET cantidadReal = x.unidad_acum-x.cantidad_dev LET x.valor_dev = GROUP SUM(x.valor_dev) LET valorReal = x.valor_acum - x.valor_dev # TOTAL GENERAL LET g_g_g_unidad_acum = x.unidad_acum + g_g_g_unidad_acum LET g_g_g_valor_acum = x.valor_acum + g_g_g_valor_acum LET t1_cantidad_dev = x.cantidad_dev + t1_cantidad_Dev LET t1_valor_dev = x.valor_dev + t1_valor_Dev LET g_g_g_cantidad_vend = (x.unidad_acum - x.cantidad_dev) + g_g_g_cantidad_vend LET g_g_g_valor_vend = (x.valor_acum - x.valor_dev) + g_g_g_valor_vend # CALL fgl_winmessage("INFO",g_g_g_valor_vend,"stop") PRINTX x.unidad_acum, x.valor_acum , x.cantidad_dev, x.valor_dev, CantidadReal, valorReal, p_companias.nombre, hora, fecha_inicial,fecha_final, x.descripcion_v, g_g_g_cantidad_vend, g_g_g_unidad_acum, g_g_g_valor_acum, g_g_g_valor_vend, t1_cantidad_dev, t1_valor_dev END REPORT FUNCTION cventas1() DEFINE kventas SMALLINT, dventas CHAR(30) LET pventas = ui.combobox.forname("formonly.pventas") DECLARE bventas CURSOR FOR SELECT a.ventas,a.descripcion FROM vetb00061 a CALL pventas.clear() FOREACH bventas INTO kventas,dventas CALL pventas.additem(kventas,dventas) END FOREACH END FUNCTION FUNCTION envia_correo(emailTO,emailCC,emailBody,emailSubject,Procedimiento,archivo) DEFINE emailTO,emailCC,emailSubject,Procedimiento,archivo CHAR(150), emailBody VARCHAR(1000) PREPARE smt FROM procedimiento EXECUTE smt USING emailTo IN,emailCC IN,emailSubject IN,emailBody IN,archivo IN END FUNCTION