From 80bd203be655bd49b4edb118f9464a86c3a18f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abel=20L=C3=B3pez?= Date: Thu, 1 Oct 2026 17:02:41 -0400 Subject: [PATCH] Registra noprrp015 (Prestamos Cooperativa) con reporte moderno Se agrega noprrp015 al proyecto usando nofmrp015.per. A diferencia de noprrp009 (donde se opto por salida de archivo de texto), aqui se reescribio REPORT prestamo de PRINT COLUMN clasico a PRINTX, y se creo nodir/../bin/noprrp015.4rp (diseno Report Writer 2.0) para soportar pantalla/PDF/Excel, igual que noprrp002/003/039/ 043/044. configureOutput() en msgrp000.4gl sigue siendo un stub NULL (ver noprrp009), asi que se usa fgl_report_loadCurrentSettings + fgl_report_selectDevice/selectPreview/commitCurrentSettings directamente. Se corrige tambien el mismo problema de signo oculto en los montos (mascaras sin caracter de signo) que se encontro en noprrp009. Probado con empleado especifico y con varios empleados del mismo movimiento, verificado contra BD (valor, interes y balance). Co-Authored-By: Claude Sonnet 5 --- PROYECTO/bin/noprrp015.4rp | 76 ++++++++++++++++++ PROYECTO/mbsERP.4pw | 6 ++ PROYECTO/nodir/noprrp015.4gl | 150 +++++++++++------------------------ 3 files changed, 130 insertions(+), 102 deletions(-) create mode 100644 PROYECTO/bin/noprrp015.4rp diff --git a/PROYECTO/bin/noprrp015.4rp b/PROYECTO/bin/noprrp015.4rp new file mode 100644 index 0000000..386d50e --- /dev/null +++ b/PROYECTO/bin/noprrp015.4rp @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index c09d8fc..8d58f2a 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -496,6 +496,7 @@ + @@ -597,6 +598,11 @@ + + + + + diff --git a/PROYECTO/nodir/noprrp015.4gl b/PROYECTO/nodir/noprrp015.4gl index eaa5820..b480cce 100644 --- a/PROYECTO/nodir/noprrp015.4gl +++ b/PROYECTO/nodir/noprrp015.4gl @@ -157,9 +157,19 @@ FUNCTION noprrp015() doce,normal,archivo,imprime - CALL seleccionarsalida() RETURNING r_output - CALL configureoutput(r_output) RETURNING handler - START REPORT prestamo TO XML HANDLER handler + LET r_filename = 'noprrp015.4rp' + IF fgl_report_loadCurrentSettings(r_filename) THEN + CALL seleccionarsalida() RETURNING r_output + LET preview = 1 + CALL fgl_report_selectDevice(r_output) + CALL fgl_report_selectPreview(preview) + LET handler = fgl_report_commitCurrentSettings() + END IF + IF handler IS NOT NULL THEN + START REPORT prestamo TO XML HANDLER handler + ELSE + EXIT PROGRAM + END IF ## SE BUSCA LA INFORMACION DE LOS CAMPOS DEL REGISTRO PARA DARLE ## SALIDA AL REPORTE @@ -221,105 +231,47 @@ END FUNCTION num_nomi LIKE notb00008.num_nomi, fecha_al LIKE notb00010.fecha_al END RECORD - -## DEFINICION DE LAS VARIABLES DE IMPRESION + DEFINE t_interes,interes DECIMAL(8,2) - 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(2) - DEFINE normal CHAR(2) DEFINE hora CHAR(5) - DEFINE valor1,total,total1,balance DECIMAL(10,2) - DEFINE l smallint - DEFINE varia CHAR(30) + DEFINE total,total1 DECIMAL(10,2) + DEFINE codigo_emp VARCHAR(20) + DEFINE nombre_completo VARCHAR(80) + DEFINE fecha_al_ch VARCHAR(10) + DEFINE nombre_cia VARCHAR(100) - OUTPUT + ORDER BY x.cod_mov,x.num_emp -## DEFINICION DE LOS MARGENES DE IMPRESION - TOP MARGIN 0 - LEFT MARGIN 0 - BOTTOM MARGIN 3 - PAGE LENGTH 100 FORMAT - PAGE HEADER - 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 27, ASCII 77 - LET normal = ASCII 27, ASCII 80 + FIRST PAGE HEADER LET hora = time - LET varia = x.descrip_mov - -## SE CALCULA LA LONGITUD DE LA VARIABLE -VARIA- - LET l = (80 - LENGTH(p_companias.nombre CLIPPED))/2 - -## AQUI SE INDICA LA IMPRESION DE LOS ENCABEZADOS - PRINT COLUMN 1, normal,negrillas_on - PRINT COLUMN 1, "noprrp015", - COLUMN l, p_companias.nombre CLIPPED, - COLUMN 73, "Pag. ",pageno using "###" - PRINT COLUMN 29, "Descuentos Cooperativa", - COLUMN 73, today using "dd/mm/yy" - LET l = (80 - LENGTH(varia CLIPPED))/2 - PRINT COLUMN l, varia CLIPPED, - COLUMN 73, hora - - SKIP 1 LINE -## SE IMPRIME EL NUMERO DE NOMINA Y LA FECHA - PRINT COLUMN 1, negrillas_on, - COLUMN 4, "Nomina No.: ",x.num_nomi using "<<<<", - " Al: ",x.fecha_al using "dd/mm/yy", - negrillas_off + LET fecha_al_ch = x.fecha_al USING "dd/mm/yy" + LET nombre_cia = p_companias.nombre CLIPPED ## SE SELECCIONA EL TIPO DE NOMINA A IMPRIMIR - IF x.tipo_emp = "Q" THEN - LET descr = "QUINCENAL" - ELSE - IF x.tipo_emp = "V" THEN - LET descr = "VENDEDOR" - ELSE - LET descr = "SEMANAL" - END IF - END IF + IF x.tipo_emp = "Q" THEN + LET descr = "QUINCENAL" + ELSE + IF x.tipo_emp = "V" THEN + LET descr = "VENDEDOR" + ELSE + LET descr = "SEMANAL" + END IF + END IF - PRINT doce - PRINT COLUMN 1, negrillas_on, - COLUMN 4, descr, - COLUMN 15, negrillas_off - - PRINT COLUMN 2, "---------------------------------------------------", - "-------------------------------------------" - - PRINT COLUMN 4, "Codigo No.", - COLUMN 23, "Nombre", - COLUMN 53, "Valor", - COLUMN 61, "Interes", - COLUMN 74, "Balance" - - PRINT COLUMN 2, "----------------------------------------------------", - "------------------------------------------" + PRINTX nombre_cia,hora,x.num_nomi,fecha_al_ch,descr ## SE INDICA EL SALTO DE PAGINA CUANDO SE IMPRIMEN TODOS LOS MOVIMIENTOS BEFORE GROUP OF x.cod_mov - SKIP TO TOP OF PAGE LET total1 = 0 LET total = 0 LET t_interes = 0 + PRINTX x.descrip_mov - BEFORE GROUP OF x.num_emp - LET balance = 0 - LET valor1 = 0 + BEFORE GROUP OF x.num_emp # Busca La cuota de la nomina aqui ya que en el SELECT principal se busca # pero no es confiable - - SELECT valor INTO x.valor FROM notb00008 + SELECT valor INTO x.valor FROM notb00008 WHERE num_emp = x.num_emp and num_nomi = x.num_nomi and tipo_emp = x.tipo_emp and cod_mov = x.cod_mov @@ -331,7 +283,7 @@ END FUNCTION END IF # BUSQUEDA DEL INTERES COBRADO EN LA NOMINA ESPECIFICADA LET interes = 0 - SELECT valor INTO interes FROM notb00008 + SELECT valor INTO interes FROM notb00008 WHERE num_emp = x.num_emp and num_nomi = x.num_nomi and tipo_emp = x.tipo_emp and cod_mov = 110 @@ -353,27 +305,21 @@ END FUNCTION END IF LET total = total + x.balance + LET codigo_emp = x.num_emp USING "&&&&","-", + x.departamento USING "&&&&","-", + x.nivel_emp USING "&&","-", + x.cod_puesto USING "&&" + LET nombre_completo = x.nom1_emp CLIPPED," ",x.apell1_emp CLIPPED + ## AQUI COMIENZA LA IMPRESION DEL DETALLE - IF x.valor != 0 OR x.balance > 0 THEN - PRINT COLUMN 4, x.num_emp using "&&&&","-", - x.departamento using "&&&&","-", - x.nivel_emp using "&&","-", x.cod_puesto using "&&", - " ",x.nom1_emp clipped," ",x.apell1_emp clipped, - COLUMN 52, x.valor using "##,###.##", - COLUMN 62, interes using "###.##", - COLUMN 69, x.balance using "#,###,###.##" - LET t_interes = t_interes + interes + IF x.valor != 0 OR x.balance > 0 THEN + LET t_interes = t_interes + interes + PRINTX codigo_emp,nombre_completo,x.valor,interes,x.balance END IF ## AQUI SE IMPRIMEN LOS TOTALES GENERALES - AFTER GROUP OF x.cod_mov - SKIP 2 LINES - PRINT COLUMN 1, negrillas_on, - COLUMN 8, "TOTAL GENERAL", - COLUMN 51, total1 using "###,###.##", - COLUMN 62, t_interes using "###.##", - COLUMN 69, total using "#,###,###.##" - PRINT COLUMN 18, negrillas_off + AFTER GROUP OF x.cod_mov + PRINTX total1,t_interes,total END REPORT