{ ------------------------------------------------------------------------------- PROGRAMA : IPPRRP009 OBJETIVO : REPORTE EXISTENCIAS PROGRAMADOR : Juan Fco. Soto. FECHA REALIZACION : Febrero 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" DEFINE noimprime CHAR(1),total_p dec(13,4), existencia_v DEC(12,3), existencia_negativa CHAR(5), costeo CHAR(10), grafico CHAR(2), fecha_ult_venta DATE, ano_ant,ano_act,p_mes INT, tipo_reporte VARCHAR(50), cierre CHAR(2), ejecuta_cierre CHAR(3), procedimiento STRING MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL ipprrp09() END MAIN FUNCTION ipprrp09() DEFINE p_ano CHAR(4) DEFINE existe RECORD cod_cia LIKE iptb00002.cod_cia, descripcion CHAR(50), cod_n LIKE iptb00002.cod_n, cod_grupo LIKE iptb00002.cod_grupo, cod_tipo LIKE iptb00002.cod_tipo, cod_sec LIKE iptb00002.cod_sec, descrip_esp CHAR(45), descrip_ing CHAR(15), unidad_med CHAR(3), existe_ant DEC(12,3), costo_ant DEC(22,5), total_a DEC(22,2), existe_act DECIMAL(12,3), costo DECIMAL(22,5), total_c DECIMAL(22,2), matiral,labor,gastos DECIMAL(12,3), es_produccion BOOLEAN #fecha DATE END RECORD, codigo CHAR(25), pmaterial,plabor,pgasto DEC(12,4), pprecio DEC(12,2) DEFINE select_act STRING # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ipfmrp009 FROM "ipfmrp009" DISPLAY FORM ipfmrp009 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi,noimprime,historico,servicios, existencia_negativa,grafico,costeo,cierre AFTER FIELD fech_in IF datos_cons.fech_in IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_in END IF AFTER FIELD fech_fi IF datos_cons.fech_fi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_fi END IF AFTER INPUT LET ejecuta_cierre ="NO" IF cierre = 'SI' THEN LET ejecuta_cierre = fgl_winquestion("CIERRE","ESTAS SEGURO DE REALIZAR ESTA OPERACION?", "NO","YES|NO","QUESTION",0) END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET p_ano = year(datos_cons.fech_fi) LET p_mes = MONTH(datos_cons.fech_in) CONSTRUCT criterio ON a.cod_cia,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,d.bodega FROM cod_cia,cod_n,cod_grupo,cod_tipo,cod_sec,bodega BEFORE CONSTRUCT LET k1 = '1' CALL bodegas(k1) AFTER CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF EXIT CONSTRUCT END CONSTRUCT LET ano_ant = YEAR(datos_cons.fech_in) LET ano_act = YEAR(datos_cons.fech_fi) LET tipo_reporte = NULL IF historico = "N" THEN IF existencia_negativa = 'TODAS' THEN LET tipo_reporte = 'TODAS LAS EXISTENCIAS' LET select_act = "WITH Productos AS ( SELECT a.cod_cia, e.descripcion, a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.descrip_esp, a.descrip_ing, a.unidad_med, ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_in USING "mm/dd/yyyy", " ' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha1, ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy", "' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha2, ISNULL(a.es_produccion,0) as es_produccion FROM iptb00002 a LEFT JOIN iptb00006 d ON 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 d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy","' ", " AND d.status_t IS NULL JOIN iptb00022 e ON a.cod_cia = e.cod_cia WHERE a.status_t IS NULL AND a.control_existencia = 'SI' and ",criterio CLIPPED, " GROUP BY a.cod_cia, e.descripcion, a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.descrip_esp, a.descrip_ing, a.unidad_med,a.es_produccion ), Costos AS ( SELECT c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, SUM(c.material + c.labor + c.gastos) AS costo_total_fecha1 FROM iptb00004 c WHERE c.ano = ",p_ano, " AND c.mes_ini = '01' AND c.mes_fin = '12' AND c.status_t IS NULL ", " GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec ), Costos2 AS ( SELECT c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, SUM(c.material + c.labor + c.gastos) AS costo_total_fecha2, c.material, c.labor, c.gastos FROM iptb00004 c WHERE c.ano = ",p_ano, " AND c.mes_ini = '01' AND c.mes_fin = '12' AND c.status_t IS NULL ", " GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,c.material, c.labor, c.gastos ) SELECT p.cod_cia, p.descripcion, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec, p.descrip_esp, p.descrip_ing, p.unidad_med, p.existencia_fecha1, ISNULL(ct.costo_total_fecha1, 0) AS costo_total_fecha1, (p.existencia_fecha1 * ISNULL(ct.costo_total_fecha1, 0)) AS total_costo_fecha1, p.existencia_fecha2, ISNULL(ct2.costo_total_fecha2, 0) AS costo_total_fecha2, (p.existencia_fecha2 * ISNULL(ct2.costo_total_fecha2, 0)) AS total_costo_fecha2, ct2.material, ct2.labor, ct2.gastos,p.es_produccion FROM Productos p LEFT JOIN Costos ct ON p.cod_n = ct.cod_n AND p.cod_grupo = ct.cod_grupo AND p.cod_tipo = ct.cod_tipo AND p.cod_sec = ct.cod_sec LEFT JOIN Costos2 ct2 ON p.cod_n = ct2.cod_n AND p.cod_grupo = ct2.cod_grupo AND p.cod_tipo = ct2.cod_tipo AND p.cod_sec = ct2.cod_sec ", "ORDER BY p.cod_cia, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec " END IF IF existencia_negativa = 'NO' THEN LET tipo_reporte = 'EXISTENCIAS POSITIVAS' LET select_act = "WITH Productos AS ( SELECT a.cod_cia, e.descripcion, a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.descrip_esp, a.descrip_ing, a.unidad_med, ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_in USING "mm/dd/yyyy", " ' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha1, ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy", "' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha2, ISNULL(a.es_produccion,0) as es_produccion FROM iptb00002 a LEFT JOIN iptb00006 d ON 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 d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy","' ", " AND d.status_t IS NULL JOIN iptb00022 e ON a.cod_cia = e.cod_cia WHERE a.status_t IS NULL AND a.control_existencia = 'SI' and ",criterio CLIPPED, " GROUP BY a.cod_cia, e.descripcion, a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.descrip_esp, a.descrip_ing, a.unidad_med,a.es_produccion HAVING SUM(d.cantidad_2) >0 ), Costos AS ( SELECT c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, SUM(c.material + c.labor + c.gastos) AS costo_total_fecha1 FROM iptb00004 c WHERE c.ano = ",p_ano, " AND c.mes_ini = '01' AND c.mes_fin = '12' AND c.status_t IS NULL GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec ), Costos2 AS ( SELECT c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, SUM(c.material + c.labor + c.gastos) AS costo_total_fecha2, c.material, c.labor, c.gastos FROM iptb00004 c WHERE c.ano = ",p_ano, " AND c.mes_ini = '01' AND c.mes_fin = '12' AND c.status_t IS NULL GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec,c.material, c.labor, c.gastos ) SELECT p.cod_cia, p.descripcion, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec, p.descrip_esp, p.descrip_ing, p.unidad_med, p.existencia_fecha1, ISNULL(ct.costo_total_fecha1, 0) AS costo_total_fecha1, (p.existencia_fecha1 * ISNULL(ct.costo_total_fecha1, 0)) AS total_costo_fecha1, p.existencia_fecha2, ISNULL(ct2.costo_total_fecha2, 0) AS costo_total_fecha2, (p.existencia_fecha2 * ISNULL(ct2.costo_total_fecha2, 0)) AS total_costo_fecha2, ct2.material, ct2.labor, ct2.gastos,p.es_produccion FROM Productos p LEFT JOIN Costos ct ON p.cod_n = ct.cod_n AND p.cod_grupo = ct.cod_grupo AND p.cod_tipo = ct.cod_tipo AND p.cod_sec = ct.cod_sec LEFT JOIN Costos2 ct2 ON p.cod_n = ct2.cod_n AND p.cod_grupo = ct2.cod_grupo AND p.cod_tipo = ct2.cod_tipo AND p.cod_sec = ct2.cod_sec ", "ORDER BY p.cod_cia, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec " END IF IF existencia_negativa ="SI" THEN LET tipo_reporte = 'EXISTENCIAS NEGATIVAS' LET select_act = "WITH Productos AS ( SELECT a.cod_cia, e.descripcion, a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.descrip_esp, a.descrip_ing, a.unidad_med, ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_in USING "mm/dd/yyyy", " ' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha1, ISNULL(SUM(CASE WHEN d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy", "' THEN d.cantidad_2 ELSE 0 END), 0) AS existencia_fecha2, ISNULL(a.es_produccion,0) as es_produccion FROM iptb00002 a LEFT JOIN iptb00006 d ON 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 d.fecha <= '",datos_cons.fech_fi USING "mm/dd/yyyy","' ", " AND d.status_t IS NULL JOIN iptb00022 e ON a.cod_cia = e.cod_cia WHERE a.status_t IS NULL AND a.control_existencia = 'SI' and ",criterio CLIPPED, " GROUP BY a.cod_cia, e.descripcion, a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.descrip_esp, a.descrip_ing, a.unidad_med,a.es_produccion HAVING SUM(d.cantidad_2) <0 ), Costos AS ( SELECT c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, SUM(c.material + c.labor + c.gastos) AS costo_total_fecha1 FROM iptb00004 c WHERE c.ano = ",p_ano, " AND c.mes_ini = '01' AND c.mes_fin = '12' AND c.status_t IS NULL GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec ), Costos2 AS ( SELECT c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, SUM(c.material + c.labor + c.gastos) AS costo_total_fecha2, c.material, c.labor, c.gastos FROM iptb00004 c WHERE c.ano = ",p_ano, " AND c.mes_ini = '01' AND c.mes_fin = '12' AND c.status_t IS NULL GROUP BY c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec, c.material, c.labor, c.gastos ) SELECT p.cod_cia, p.descripcion, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec, p.descrip_esp, p.descrip_ing, p.unidad_med, p.existencia_fecha1, ISNULL(ct.costo_total_fecha1, 0) AS costo_total_fecha1, (p.existencia_fecha1 * ISNULL(ct.costo_total_fecha1, 0)) AS total_costo_fecha1, p.existencia_fecha2, ISNULL(ct2.costo_total_fecha2, 0) AS costo_total_fecha2, (p.existencia_fecha2 * ISNULL(ct2.costo_total_fecha2, 0)) AS total_costo_fecha2, ct2.material, ct2.labor, ct2.gastos,p.es_produccion FROM Productos p LEFT JOIN Costos ct ON p.cod_n = ct.cod_n AND p.cod_grupo = ct.cod_grupo AND p.cod_tipo = ct.cod_tipo AND p.cod_sec = ct.cod_sec LEFT JOIN Costos2 ct2 ON p.cod_n = ct2.cod_n AND p.cod_grupo = ct2.cod_grupo AND p.cod_tipo = ct2.cod_tipo AND p.cod_sec = ct2.cod_sec ", "ORDER BY p.cod_cia, p.cod_n, p.cod_grupo, p.cod_tipo, p.cod_sec " END IF END IF DISPLAY "<< Estoy Buscando Los Balances Actuales >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) IF ejecuta_cierre = "YES" THEN DELETE FROM inventario_cierre_mensual WHERE ano = p_ano AND mes = p_mes END IF IF grafico = "SI" THEN LET r_filename ='ipprrp009.4rp' LET preview = 1 CALL selectOutput() RETURNING r_output IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_configurexlsxdevice(null,null,1,null,null,null,1) CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes END IF # IF r_output = 'XLSX' THEN # LET r_output="SVG" # END IF # CALL configureOutput(r_output) RETURNING HANDLER START REPORT existencia_grafica TO XML HANDLER HANDLER ELSE CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia START REPORT existencia TO archivo END IF DISPLAY select_act PREPARE busca_act FROM select_act DECLARE busca_balan_act CURSOR FOR busca_act OPEN busca_balan_act #USING datos_cons.fech_in,datos_cons.fech_fi,datos_cons.fech_fi,ano_ant, # ano_act DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) WHILE status != notfound FETCH busca_balan_act INTO existe.* IF status = notfound THEN EXIT WHILE END IF IF int_flag THEN LET int_flag = FALSE LET numero_msg = 2 CALL msg(numero_msg) RETURN END IF IF costeo <> "TODOS" THEN IF costeo = "SIN COSTO" AND existe.costo <> 0 THEN CONTINUE WHILE END IF END IF IF noimprime = 'S' THEN IF existe.existe_act = 0 THEN CONTINUE WHILE END IF END IF LET codigo = existe.cod_n using "&&&&",existe.cod_grupo using "&&&&", existe.cod_tipo using "&&&&",existe.cod_sec using "&&&&&&&" # QUERY TEMPORAL #LET fecha_ult_venta = NULL { SELECT MAX(b.fecha_factura) INTO fecha_ult_venta FROM vetb00002 b,vetb00003 a WHERE (a.cod_n = existe.cod_n AND a.cod_grupo = existe.cod_grupo AND a.cod_tipo = existe.cod_tipo AND a.cod_sec = existe.cod_sec) AND b.status_t IS NULL } # IF fecha_ult_venta IS NULL OR TODAY - fecha_ult_venta > 730 THEN # INSERT INTO ipprrp009 VALUES (existe.cod_n,existe.cod_grupo,existe.cod_tipo,existe.cod_sec, # existe.descrip_esp,existe.existe_act, # existe.matiral,existe.labor,existe.gastos,pprecio, # getdate()) IF ejecuta_cierre = "YES" THEN -- Insertar el cierre INSERT INTO inventario_cierre_mensual ( ano, mes, cod_n, cod_grupo, cod_tipo, cod_sec, cantidad_existente, costo_unitario, es_produccion, fecha_cierre, us_cierre,fech_crea ) VALUES (p_ano,p_mes,existe.cod_n,existe.cod_grupo,existe.cod_tipo,existe.cod_sec,existe.existe_act, existE.costo,existe.es_produccion,datos_cons.fech_fi,usuarios,getdate() ) END IF IF grafico = 'SI' THEN OUTPUT TO REPORT existencia_grafica(existe.*) ELSE OUTPUT TO REPORT existencia(existe.*, codigo) END IF # END if END WHILE IF ejecuta_cierre = "YES" THEN LET procedimiento = "{ call sp_GenerarCierreInventarioMensual_Bodega(?,?,?)}" CALL ejecuta(procedimiento,p_ano,p_mes) END IF IF grafico = 'SI' THEN FINISH REPORT existencia_grafica ELSE FINISH REPORT existencia END IF IF grafico <> "SI" THEN LET cmd = NULL LET cmd ='copy ',archivo CLIPPED,' ', FGL_GETENV("FGLSPOOL")||"\\IPRP09.txt" RUN cmd CALL ui.Interface.frontCall("standard","getenv", ["FILEREPORTE"], [dcmd] ) LET cmd= FGL_GETENV("FGLSPOOL")||"\\IPRP09.txt" CALL fgl_putfile(cmd,dcmd) LET opt = fgl_winquestion("Atencion","Desea Imprimir Reporte?", "yes","yes|no","question",0) LET opt = UPSHIFT(opt) IF opt = "YES" THEN RUN imprime END IF END IF LET total_p = 0 END FUNCTION REPORT existencia(x, codigo) DEFINE x RECORD cod_cia LIKE iptb00002.cod_cia, descripcion CHAR(50), cod_n LIKE iptb00002.cod_n, cod_grupo LIKE iptb00002.cod_grupo, cod_tipo LIKE iptb00002.cod_tipo, cod_sec LIKE iptb00002.cod_sec, descrip_esp CHAR(45), descrip_ing CHAR(15), unidad_med CHAR(3), existe_ant DEC(12,3), costo_ant DEC(22,5), total_a DEC(22,2), existe_act DECIMAL(12,3), costo DECIMAL(22,5), total_c DECIMAL(22,2), matiral,labor,gastos DECIMAL(12,3), es_produccion BOOLEAN #fecha DATE END RECORD, codigo CHAR(25), total_cia,total_gral,total_cia_ant,total_gral_ant,total_exit_act DEC(12,2) DEFINE tt INTEGER DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(2) DEFINE negrillas_off CHAR(2) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(3) DEFINE hora CHAR(5) DEFINE l INTEGER OUTPUT LEFT MARGIN 0 RIGHT MARGIN 0 BOTTOM MARGIN 0 PAGE LENGTH 130 # ORDER BY x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec FORMAT FIRST PAGE HEADER IF grafico <> "SI" THEN LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 030 END IF LET hora = TIME LET l = (130 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on PRINT COLUMN 1, "ipprrp009", COLUMN l, p_companias.nombre CLIPPED, COLUMN 123, "Pag. ",pageno using "###" PRINT COLUMN 49, "Sistema de Inventario Productos ", COLUMN 123, today using "dd/mm/yyyy" PRINT COLUMN 49, " Existencia a Diferente Fechas", COLUMN 126, hora IF historico = 'N' THEN PRINT COLUMN 60, 'NO HISTORICO' ELSE PRINT COLUMN 64, 'HISTORICO' END IF PRINT COLUMN 60, tipo_reporte SKIP 1 LINES PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "---------------" PRINT COLUMN {69,} 79, "Existencia", 5 spaces, "Existencia", 5 spaces, "Costo Std", 5 spaces, "Costo Std", 10 spaces, "Total", 10 spaces, "Total" PRINT COLUMN 10, "Codigo", --1, "Codigo", COLUMN 35,"Descripcion", --21, "Descripcion", COLUMN {69,} 77, "Al ",datos_cons.fech_in using "dd/mm/yyyy", 2 spaces, "Al ", datos_cons.fech_fi using "dd/mm/yyyy", 5 spaces ,"Al ",datos_cons.fech_in USING "yyyy", 7 spaces ,"Al ",datos_cons.fech_fi USING "yyyy", 11 spaces, "Al ",datos_cons.fech_in using "yyyy", 13 spaces, "Al ",datos_cons.fech_fi USING "yyyy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "---------------" LET total_exit_act =0 BEFORE GROUP OF x.cod_cia LET total_cia = 0 LET total_cia_ant =0 IF total_gral IS NULL THEN LET total_gral =0 LET total_gral_ant =0 END IF SKIP 1 LINE PRINT COLUMN 2," ORIGEN: ",x.descripcion SKIP 1 LINE ON EVERY ROW IF tt IS NULL THEN LET tt = 0 END IF IF total_p is null THEN LET total_p = 0 END IF LET total_p = x.total_c + total_p LET total_cia = x.total_c+ total_cia LET total_cia_ant = x.total_a + total_cia_ant LET descripcion = x.descrip_esp CLIPPED IF x.total_c <> 0 THEN LET tt = tt + 1 PRINT COLUMN 1, x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&","-", x.cod_tipo USING "&&&&","-",x.cod_sec USING "&&&&&&", COLUMN 24, X.descrip_esp, 2 spaces,x.unidad_med , 2 spaces , x.existe_ant USING "---,-&&.###", 2 spaces, x.existe_act USING "---,-&&.###", 2 spaces, x.costo_ant USING "#,###,###.####", 2 SPACES, x.costo USING "#,###,###.####", 2 spaces, x.total_a USING "-,---,---,-##.##", 2 spaces, x.total_c USING "-,---,---,-##.##" LET total_exit_act = total_exit_act + x.existe_act END IF AFTER GROUP OF x.cod_cia PRINT COLUMN 124, "-------------", 2 spaces, "--------------" PRINT COLUMN 77, total_exit_act USING "#,###,###.####", COLUMN 123,total_cia_ant USING "--,---,---,-##.##", 2 spaces, total_cia USING "--,---,---,-##.##" LET total_gral = total_gral + total_cia LET total_gral_ant = total_cia_ant + total_gral_ant ON LAST ROW PRINT COLUMN 124, "-------------", 2 spaces, "--------------" PRINT COLUMN 124,total_gral_ant USING "##,###,###,###.##", 2 spaces, total_gral USING "--,---,---,--#.##" SKIP 1 LINES PRINT COLUMN 1, "==================================================", "==================================================", "===============================================" PRINT COLUMN 4, "Total Registros Impresos =", tt USING "<<<<" PRINT comp_off END REPORT REPORT existencia_grafica(x) DEFINE x RECORD cod_cia LIKE iptb00002.cod_cia, descripcion CHAR(50), cod_n LIKE iptb00002.cod_n, cod_grupo LIKE iptb00002.cod_grupo, cod_tipo LIKE iptb00002.cod_tipo, cod_sec LIKE iptb00002.cod_sec, descrip_esp CHAR(45), descrip_ing CHAR(15), unidad_med CHAR(3), existe_ant DEC(12,3), costo_ant DEC(22,5), total_a DEC(22,2), existe_act DECIMAL(12,3), costo DECIMAL(22,5), total_c DECIMAL(22,2), material, labor, gasto DECIMAL (22,2), es_produccion BOOLEAN #fecha DATE END RECORD, codigo VARCHAR(100), costo DECIMAL(22,2), total_cia,total_gral,total_cia_ant,total_gral_ant,total_exit_act DEC(12,2), fecha CHAR(15) DEFINE tt INTEGER DEFINE producto VARCHAR(150), tipo VARCHAR(50) DEFINE hora CHAR(5) DEFINE l INTEGER FORMAT FIRST PAGE HEADER IF historico = 'N' THEN LET tipo = 'NO HISTORICO' ELSE LET tipo = 'HISTORICO' END IF LET fecha = TODAY USING "dd/mm/yyyy" LET hora = TIME PRINTX p_companias.nombre,fecha, hora, tipo, datos_cons.fech_in, datos_cons.fech_fi LET total_exit_act =0 BEFORE GROUP OF x.cod_cia LET total_cia = 0 LET total_cia_ant =0 IF total_gral IS NULL THEN LET total_gral =0 LET total_gral_ant =0 END IF PRINTX x.descripcion ON EVERY ROW IF tt IS NULL THEN LET tt = 0 END IF IF total_p is null THEN LET total_p = 0 END IF LET total_p = x.total_c + total_p LET total_cia = x.total_c+ total_cia LET total_cia_ant = x.total_a + total_cia_ant LET descripcion = x.descrip_esp CLIPPED # IF x.total_c <> 0 THEN DISPLAY "imprime" LET tt = tt + 1 LET producto = x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&","-", x.cod_tipo USING "&&&&","-",x.cod_sec USING "&&&&&&" IF x.material IS NULL THEN LET x.material = 0 END IF IF x.labor IS NULL THEN LET x.labor = 0 END IF IF x.gasto IS NULL THEN LET x.gasto = 0 END IF LET costo = x.material + x.labor + x.gasto LET total_exit_act = total_exit_act + x.existe_act PRINTX producto, x.existe_act, x.costo, x.total_a, x.total_c, x.material, x.labor, x.gasto, costo, x.descrip_esp # END IF AFTER GROUP OF x.cod_cia PRINTX total_exit_act,total_cia_ant, total_cia LET total_gral = total_gral + total_cia LET total_gral_ant = total_cia_ant + total_gral_ant ON LAST ROW PRINTX total_gral_ant, total_gral, tt END REPORT FUNCTION ejecuta(Procedimiento,ano,mes) DEFINE Procedimiento VARCHAR(500), ano,mes SMALLINT PREPARE smt FROM procedimiento EXECUTE smt USING ano IN,mes IN,usuarios IN END FUNCTION