{ ------------------------------------------------------------------------------- PROGRAMA : IPpRRP010 OBJETIVO : Detallado por Tipo de Movimiento PROGRAMADOR : Ing. Juan Fco. Soto FECHA REALIZACION : Abril 28, 1993 ------------------------------------------------------------------------------- } GLOBALS "ipprgb000.4gl" 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 ipprrp010() END MAIN FUNCTION ipprrp010() DEFINE ventas CHAR(1) DEFINE select_ac CHAR(1000) DEFINE idx_ac,idx_a,idx_c SMALLINT DEFINE acumulado_ac RECORD cod_mov LIKE iptb00005.cod_mov, fecha DATE, num_doc INTEGER, cod_n SMALLINT, cod_grupo SMALLINT, cod_Tipo SMALLINT, cod_Sec SMALLINT, cantidad DECIMAL(12,5), descrip_esp CHAR(50), unidad_med CHAR(3), orden INT, proveedor VARCHAR(100) END RECORD DEFINE costos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_Tipo SMALLINT, cod_Sec SMALLINT, mes CHAR(2), material LIKE iptb00004.material, labor LIKE iptb00004.labor, gasto_ind LIKE iptb00004.gastos END RECORD DEFINE acumulado RECORD 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(50), unidad_med LIKE iptb00002.unidad_med, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, consumo DECIMAL(12,5), costo DECIMAL(12,5), num_doc LIKE iptb00006.num_doc, fecha DATE, orden int, proveedor VARCHAR(100) END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ipfmrp010 FROM "ipfmrp010" DISPLAY FORM ipfmrp010 CALL ui.Window.getCurrent().setText("Operaciones Por Movimientos Al Standard") DISPLAY "ipprrp010" AT 4,3 DISPLAY "Operaciones Por Movimientos Al Standard" AT 6,22 INPUT BY NAME datos_cons.fech_in,datos_cons.fech_fi,ventas ON KEY (F2) RUN "copy pantalla.bat impresion.bat" DISPLAY "ACTIVACION REPORTE POR WORDPAD" AT 20,15 ATTRIBUTE(RED) 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 END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT criterio ON c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec FROM cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec ON KEY (F2) RUN "copy pantalla.bat impresion.bat" DISPLAY "ACTIVACION REPORTE POR WORDPAD" AT 20,15 ATTRIBUTE(RED) AFTER CONSTRUCT EXIT CONSTRUCT END CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET select_ac = "SELECT c.cod_mov,c.fecha,c.num_doc,c.cod_n,c.cod_grupo,c.cod_tipo, ", " c.cod_sec, c.cantidad_2,a.descrip_esp,a.unidad_med,c.orden_compra,ISNULL(d.nom_sp,'') ", "FROM iptb00006 c left outer join cotb00001 d ON d.cod_sp = c.cod_sp and d.cod_sp_sec = c.cod_sp_sec,iptb00002 a ", "WHERE ",criterio clipped," and c.fecha between ? and ? and ", " c.cod_n = a.cod_n and c.cod_grupo = a.cod_grupo and ", " c.cod_tipo = a.cod_tipo and c.cod_sec = a.cod_sec and ", " c.status_t is NULL AND c.cod_mov != 99 ", "ORDER BY 3,4,5,6 " DISPLAY "<< Estoy Buscando Documentos... Espere Por favor >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia LET r_filename = "ipprrp010.4rp" IF fgl_report_loadCurrentSettings(r_filename) THEN LET r_output = "SVG" LET preview = 1 CALL fgl_report_selectDevice(r_output) CALL fgl_report_selectPreview(preview) LET handler = fgl_report_commitCurrentSettings() ELSE EXIT PROGRAM END IF START REPORT detalle TO XML HANDLER handler PREPARE busca_ant FROM select_ac DECLARE actual SCROLL CURSOR FOR busca_ant OPEN actual USING datos_cons.fech_in,datos_cons.fech_fi LET idx_c = 1 LET idx_a = 1 LET idx_ac = 1 WHILE status != notfound FETCH actual INTO acumulado_ac.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET acumulado.cod_mov = acumulado_ac.cod_mov LET acumulado.cod_n = acumulado_ac.cod_n LET acumulado.cod_grupo = acumulado_ac.cod_grupo LET acumulado.cod_tipo = acumulado_ac.cod_tipo LET acumulado.cod_sec = acumulado_ac.cod_sec LET acumulado.num_doc = acumulado_ac.num_doc LET acumulado.fecha = acumulado_ac.fecha LET acumulado.consumo = acumulado_ac.cantidad LET acumulado.descrip_esp = acumulado_ac.descrip_esp LET acumulado.unidad_med = acumulado_ac.unidad_med LET acumulado.orden = acumulado_ac.orden LET acumulado.proveedor = acumulado_ac.proveedor # Buscando Los Costos de Los Materiales SELECT MAX(d.material),MAX(d.labor),MAX(d.gastos) INTO costos.material,costos.labor,costos.gasto_ind FROM iptb00004 d WHERE d.mes_fin = 12 AND d.ventas= "1" AND d.status_t is null AND d.ano = year(datos_cons.fech_fi) and d.cod_n = acumulado.cod_n AND d.cod_grupo= acumulado.cod_grupo AND d.cod_tipo = acumulado.cod_tipo AND d.cod_sec = acumulado.cod_sec LET acumulado.costo = costos.material+costos.labor+costos.gasto_ind IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF OUTPUT TO REPORT detalle(acumulado.*) END WHILE FINISH REPORT detalle # RUN imprime END FUNCTION REPORT detalle(x) DEFINE x RECORD 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(50), unidad_med LIKE iptb00002.unidad_med, cod_mov LIKE iptb00006.cod_mov, descrip_mov LIKE iptb00005.descrip_mov, consumo DECIMAL(12,5), costo DECIMAL(12,5), num_doc LIKE iptb00006.num_doc, fecha DATE, orden INT, proveedor VARCHAR(100) END RECORD DEFINE total_p,total_m,total_consumo_m DECIMAL(12,2) DEFINE pcodigo CHAR(30) DEFINE fecha_fmt CHAR(10) ORDER BY x.cod_mov,x.num_doc FORMAT BEFORE GROUP OF x.cod_mov LET total_m = 0 LET total_consumo_m = 0 SELECT descrip_mov INTO x.descrip_mov FROM iptb00005 WHERE cod_mov = x.cod_mov PRINTX x.cod_mov, x.descrip_mov ON EVERY ROW LET total_p = x.costo * x.consumo IF total_p IS NULL THEN LET total_p = 0 END IF LET total_m = total_m + total_p LET total_consumo_m = total_consumo_m + x.consumo LET pcodigo = x.cod_n USING "&&&&","-",x.cod_grupo USING "&&&&","-", x.cod_tipo USING "&&&&&&&&","-",x.cod_sec USING "&&&&&&&&" LET fecha_fmt = x.fecha USING "dd/mm/yyyy" PRINTX pcodigo, x.descrip_esp, x.num_doc, x.orden, fecha_fmt, x.proveedor, x.consumo, x.costo, total_p AFTER GROUP OF x.cod_mov PRINTX total_consumo_m, total_m ON LAST ROW END REPORT