{ =============================================================== PROGRAMA : IPPRRP053 OBJETIVO : INFORME TRANSACCIONES INVENTARIOS DESARROLLADOR : Ing. Elvis Garcia =============================================================== } GLOBALS "ipprgb000.4gl" DEFINE fecha1 DATE, fecha2 DATE, inv DYNAMIC ARRAY OF RECORD fecha DATE, numero_doc STRING, almacen STRING, producto STRING, cantidad DECIMAL(18, 5), costo_standard DECIMAL(18, 5), codigo_mov INT, descripcion_mov STRING END RECORD, idx INT, query STRING MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" USER usuarios USING clave CALL ipprrp053() END MAIN FUNCTION ipprrp053() OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 CLEAR SCREEN OPEN FORM ipfmrp053 FROM "ipfmrp053" DISPLAY FORM ipfmrp053 INPUT BY NAME fecha1, fecha2 BEFORE INPUT INITIALIZE fecha1, fecha2 TO NULL AFTER FIELD fecha1 IF fecha1 IS NULL OR fecha1 > TODAY THEN CALL msg(16) NEXT FIELD fecha1 END IF LET fecha2 = TODAY DISPLAY BY NAME fecha2 AFTER FIELD fecha2 IF fecha2 IS NULL OR fecha2 < fecha1 THEN CALL msg(16) NEXT FIELD fecha1 END IF AFTER INPUT LET idx = 1 LET query = "SELECT", " DATEFROMPARTS(a.ano, a.mes_orden, 1),", " a.numero_doc,", " ISNULL(a.origen, ''),", " CAST(a.cod_n AS VARCHAR(10)) + '-' +", " CAST(a.cod_grupo AS VARCHAR(10)) + '-' +", " CAST(a.cod_tipo AS VARCHAR(10)) + '-' +", " CAST(a.cod_sec AS VARCHAR(10)) + ' ' +", " RTRIM(ISNULL(a.descripcion, '')) + ' ' +", " RTRIM(ISNULL(a.unidad_med, '')),", " ISNULL(a.cantidad2, 0),", " ISNULL(a.costo_standard, 0),", " CASE", " WHEN a.codigo_mov IN (30,31,55,56) THEN 30", " ELSE a.codigo_mov", " END AS grupo_mov,", " CASE", " WHEN a.codigo_mov IN (30,31,55,56) THEN 'MOVIMIENTOS VARIOS (30,31,55,56)'", " ELSE ISNULL(a.descripcion_mov, '')", " END AS desc_grupo_mov", " FROM vwipprodterm a", " WHERE a.codigo_mov IN (44,12,13,30,31,55,56)", " AND a.ano BETWEEN YEAR('", fecha1 USING 'yyyy-mm-dd', "') AND YEAR('", fecha2 USING 'yyyy-mm-dd', "')", " AND a.mes_orden BETWEEN MONTH('", fecha1 USING 'yyyy-mm-dd', "') AND MONTH('", fecha2 USING 'yyyy-mm-dd', "')", " ORDER BY grupo_mov, a.ano, a.mes_orden, a.numero_doc" DECLARE buscar CURSOR FROM query FOREACH buscar INTO inv[idx].* LET idx = idx + 1 END FOREACH IF idx > 1 THEN LET r_filename = "ipprrp053.4rp" IF fgl_report_loadCurrentSettings(r_filename) THEN LET preview = 1 CALL selectoutput() RETURNING r_output CALL fgl_report_selectDevice(r_output) CALL fgl_report_selectPreview(preview) LET handler = fgl_report_commitCurrentSettings() END IF START REPORT rpt_ipprrp053 TO XML HANDLER handler FOR idx = 1 TO inv.getlength() OUTPUT TO REPORT rpt_ipprrp053(inv[idx].*, fecha1, fecha2) END FOR FINISH REPORT rpt_ipprrp053 ELSE CALL fgl_winmessage("INFO", "NO EXISTEN REGISTROS", "INFO") END IF END INPUT END FUNCTION REPORT rpt_ipprrp053(x, fecha1, fecha2) DEFINE x RECORD fecha DATE, numero_doc STRING, almacen STRING, producto STRING, cantidad DECIMAL(18, 5), costo_standard DECIMAL(18, 5), codigo_mov INT, descripcion_mov STRING END RECORD DEFINE fecha1, fecha2, fecha_actual DATE, total_registros INT, total_cantidad DECIMAL(18, 5), total_costos DECIMAL(18, 5), grupo_registros INT, grupo_cantidad DECIMAL(18, 5), grupo_costos DECIMAL(18, 5), prev_fecha DATE, prev_doc STRING, prev_almacen STRING, print_fecha DATE, print_doc STRING, print_almacen STRING ORDER EXTERNAL BY x.codigo_mov FORMAT FIRST PAGE HEADER LET fecha_actual = CURRENT LET prev_fecha = NULL LET prev_doc = "" LET prev_almacen = "" PRINTX fecha1, fecha2, fecha_actual ON EVERY ROW IF x.fecha = prev_fecha THEN LET print_fecha = NULL ELSE LET print_fecha = x.fecha LET prev_fecha = x.fecha END IF IF x.numero_doc = prev_doc THEN LET print_doc = "" ELSE LET print_doc = x.numero_doc LET prev_doc = x.numero_doc END IF IF x.almacen = prev_almacen THEN LET print_almacen = "" ELSE LET print_almacen = x.almacen LET prev_almacen = x.almacen END IF PRINTX print_fecha, print_doc, print_almacen, x.producto, x.cantidad, x.costo_standard AFTER GROUP OF x.codigo_mov LET prev_fecha = NULL LET prev_doc = "" LET prev_almacen = "" LET grupo_cantidad = GROUP SUM(x.cantidad) LET grupo_costos = GROUP SUM(x.costo_standard) LET grupo_registros = GROUP COUNT(*) PRINTX grupo_cantidad, grupo_costos, grupo_registros, x.codigo_mov, x.descripcion_mov ON LAST ROW LET total_cantidad = SUM(x.cantidad) LET total_costos = SUM(x.costo_standard) LET total_registros = COUNT(*) PRINTX total_cantidad,total_costos, total_registros END REPORT