Compare commits

...
3 Commits
Author SHA1 Message Date
Abel López 9ba79096c4 Merge branch 'main' of https://git.fulldetord.com/jsoto/mbs 2026-10-01 17:03:15 -04:00
Abel LópezandClaude Sonnet 5 80bd203be6 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 <noreply@anthropic.com>
2026-10-01 17:02:41 -04:00
Abel LópezandClaude Sonnet 5 8ac18135e5 Registra noprrp009 (Movimientos de Empleados) y corrige varios bugs
Se agrega noprrp009 al proyecto usando nofmrp009.per.

Se corrige conversion CONVERT(CHAR,fecha,103) hacia variables DATE en
3 consultas (mismo patron de error -1205 "Invalid month in date" visto
en otros programas).

Se corrige salida del reporte: REPORT list_cooper usa el estilo
clasico PRINT COLUMN (no PRINTX/.4rp), incompatible con el motor de
reportes moderno (fgl_report_*); configureOutput() en msgrp000.4gl es
un stub que siempre retorna NULL para este caso (documentado en su
propio comentario). Se cambia a escribir un archivo de texto plano en
FGLSPOOL, igual que noprrp038.

Se corrige comparacion de fechas como texto (CONVERT a CHAR en formato
dd/mm/yyyy comparado alfabeticamente) en el modo "Vacaciones Pagadas",
que fallaba al usar un rango de fechas que cruza meses/anos distintos;
se cambia a comparacion real de fechas (>= y < dia_siguiente).

Se corrige formato de fecha faltante en los campos de rango de fecha
del formulario (.per), causando "Invalid month in date" al capturar
un dia mayor a 12 como mes.

Se corrige perdida del valor de fecha final en el encabezado del modo
"Vacaciones Pagadas" (el campo se reutilizaba en el record de fetch y
se sobreescribia con un valor en blanco); se guarda en una variable
separada antes del ciclo.

Se corrige formato de impresion de montos y totales sin signo
(mascaras "#,###,###.##" sin caracter de signo), que ocultaba
silenciosamente los valores negativos mostrandolos como positivos.

Probado en ambos modos (por nomina/movimiento, y por vacaciones
pagadas con rango de fechas cruzando meses), verificado contra BD.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-01 12:53:49 -04:00
5 changed files with 156 additions and 124 deletions
+76
View File
@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
<report:Settings RWPageWidth="letterwidth" RWPageLength="letterlength" RWLeftMargin="0.5inch" RWTopMargin="0.5inch" RWRightMargin="0.5inch" RWBottomMargin="0.5inch">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../nodir/noprrp015.rdd" RWFglReportName="prestamo"/>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="Page Root" width="max" length="max" alignment="near">
<LAYOUTNODE name="Page Header" width="max" length="min" port="anyPageHeader">
<MINIPAGE name="StripeLayouter3" width="min" length="min" layoutDirection="leftToRight">
<rtl:input-variable name="nombre_cia" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="Report Title" width="max-3cm" alignment="baseline" fontSize="20" floatingBehavior="enclosed" text="{{nombre_cia}}"/>
<PAGENOBOX name="PageNoBox" width="3cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="Pagina no."/>
</MINIPAGE>
<MINIPAGE name="MiniPage" width="min" length="min" alignment="near" layoutDirection="leftToRight">
<WORDBOX name="WordBox2" width="12cm" fontBold="true" floatingBehavior="enclosed" text="Descuentos Cooperativa"/>
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBoxHora" floatingBehavior="enclosed" text="{{hora}}"/>
</MINIPAGE>
<MINIPAGE name="MiniPage1" width="min" length="min" alignment="near" layoutDirection="leftToRight">
<rtl:input-variable name="x.num_nomi" type="FGLNumeric" expectedLocation="expectedAhead"/>
<rtl:input-variable name="fecha_al_ch" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBoxNomina" width="10cm" fontBold="true" floatingBehavior="enclosed" text="{{&quot;Nomina No.: &quot;+x.num_nomi.format(&quot;&lt;&lt;&lt;&lt;&quot;)+&quot; Al: &quot;+fecha_al_ch}}"/>
<rtl:input-variable name="descr" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBoxTipo" floatingBehavior="enclosed" text="{{descr}}"/>
</MINIPAGE>
<MINIPAGE name="MiniPage2" width="min" length="min" fontSize="10" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="WordBoxCod" width="3.5cm" alignment="baseline" floatingBehavior="enclosed" text="Codigo No." roundedCorners="true" borderWidth="1" borderStyle="solid"/>
<WORDBOX name="WordBoxNom" width="6cm" alignment="baseline" floatingBehavior="enclosed" text="Nombre" roundedCorners="true" borderWidth="1" borderStyle="solid"/>
<WORDBOX name="WordBoxVal" width="3cm" alignment="far" floatingBehavior="enclosed" textAlignment="right" text="Valor" roundedCorners="true" borderWidth="1" borderStyle="solid"/>
<WORDBOX name="WordBoxInt" width="2cm" alignment="far" floatingBehavior="enclosed" textAlignment="right" text="Interes" roundedCorners="true" borderWidth="1" borderStyle="solid"/>
<WORDBOX name="WordBoxBal" width="3cm" alignment="far" floatingBehavior="enclosed" textAlignment="right" text="Balance" roundedCorners="true" borderWidth="1" borderStyle="solid"/>
</MINIPAGE>
<MINIPAGE name="Separator" width="1" length="max" bgColor="#000000" layoutDirection="leftToRight"/>
</LAYOUTNODE>
<rtl:match name="FirstPageHeader" nameConstraint="FirstPageHeader" minOccurs="0" maxOccurs="1"/>
<rtl:match name="Group cod_mov" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="movimiento" width="min" length="max" layoutDirection="leftToRight">
<rtl:input-variable name="x.descrip_mov" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="x.descrip_mov Value" fontSize="11" fontBold="true" floatingBehavior="enclosed" text="{{x.descrip_mov}}"/>
</MINIPAGE>
<rtl:match name="Group num_emp" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="Table Row" class="grwTableRow" width="min" length="max" fontSize="9" layoutDirection="leftToRight">
<rtl:input-variable name="codigo_emp" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="codigo_emp Value" width="3.5cm" floatingBehavior="enclosed" text="{{codigo_emp}}"/>
<rtl:input-variable name="nombre_completo" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="nombre_completo Value" width="6cm" floatingBehavior="enclosed" text="{{nombre_completo}}"/>
<rtl:input-variable name="x.valor" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="x.valor Value" width="3cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="-,---,---,--&amp;.&amp;&amp;" value="{{x.valor}}"/>
<rtl:input-variable name="interes" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="interes Value" width="2cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="-,---,---,--&amp;.&amp;&amp;" value="{{interes}}"/>
<rtl:input-variable name="x.balance" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="x.balance Value" width="3cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="-,---,---,--&amp;.&amp;&amp;" value="{{x.balance}}"/>
</MINIPAGE>
</rtl:match>
<MINIPAGE name="totalgrupo" width="min" length="max" layoutDirection="leftToRight" roundedCorners="true" borderWidth="1" borderStyle="outset">
<WORDBOX name="WordBoxTotal" width="9.5cm" fontBold="true" floatingBehavior="enclosed" text="TOTAL GENERAL"/>
<rtl:input-variable name="total1" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="total1 Value" width="3cm" anchorX="1" fontBold="true" floatingBehavior="enclosed" textAlignment="right" format="-,---,---,--&amp;.&amp;&amp;" value="{{total1}}"/>
<rtl:input-variable name="t_interes" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="t_interes Value" width="2cm" anchorX="1" fontBold="true" floatingBehavior="enclosed" textAlignment="right" format="-,---,---,--&amp;.&amp;&amp;" value="{{t_interes}}"/>
<rtl:input-variable name="total" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="total Value" width="3cm" anchorX="1" fontBold="true" floatingBehavior="enclosed" textAlignment="right" format="-,---,---,--&amp;.&amp;&amp;" value="{{total}}"/>
</MINIPAGE>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+11
View File
@@ -495,6 +495,8 @@
<File filePath="nodir/nofmrp044.4fd"/>
<File filePath="nodir/nofmrp008.4fd"/>
<File filePath="nodir/nofmrp043.4fd"/>
<File filePath="nodir/nofmrp009.per"/>
<File filePath="nodir/nofmrp015.per"/>
</Library>
<Library binaryName="FUNCIONES_NO" id="-306412216" label="FUNCIONES_NO">
<File filePath="nodir/noprgb000.4gl"/>
@@ -592,6 +594,15 @@
<File filePath="nodir/noprrp043.4gl"/>
<File filePath="bin/noprrp043.4rp"/>
</Application>
<Application binaryName="noprrp009" dependencies="-1026233879,-764824792,-306412216,-335228674,-1423229125" environment="dir:FGLSPOOL=$(ProjectDir)/spool" externalDependencies="libgre.42x" id="-700000089" label="noprrp009">
<Configuration commandLineArguments="alopez Lopez2023" id="-700000090" label="Configuration"/>
<File filePath="nodir/noprrp009.4gl"/>
</Application>
<Application binaryName="noprrp015" dependencies="-1026233879,-764824792,-306412216,-335228674,-1423229125" environment="dir:FGLSPOOL=$(ProjectDir)/spool" externalDependencies="libgre.42x" id="-700000091" label="noprrp015">
<Configuration commandLineArguments="alopez Lopez2023" id="-700000092" label="Configuration"/>
<File filePath="nodir/noprrp015.4gl"/>
<File filePath="bin/noprrp015.4rp"/>
</Application>
</Group>
<Group id="1667448785" label="PRODUCTOS TERMINADOS">
<Library binaryName="FORMULARIOS_IP" dependencies="-1026233879" id="-1826025351" label="FORMULARIOS_IP">
+2 -2
View File
@@ -22,8 +22,8 @@ end
tables
notb00008
ATTRIBUTES
f1 = formonly.fecha_inicial;
f2 = formonly.fecha_al;
DATEEDIT f1 = formonly.fecha_inicial type date,format = "dd/mm/yyyy";
DATEEDIT f2 = formonly.fecha_al type date,format = "dd/mm/yyyy";
COMBOBOX s1 = formonly.vacaciones_pagadas, ITEMS=("SI","NO"),DEFAULT="NO";
f001 = notb00008.num_nomi,autonext,
comments = "Digite el numero de la nomina";
+19 -20
View File
@@ -17,7 +17,8 @@ GLOBALS "noprgb000.4gl"
num_emp LIKE notb00008.num_emp,
valor DECIMAL(12,2)
END RECORD,
vacaciones_pagadas CHAR(2)
vacaciones_pagadas CHAR(2),
fecha_al_sel DATE
DEFINE cooper RECORD
num_emp LIKE notb00008.num_emp,
@@ -93,13 +94,13 @@ FUNCTION noprrp009()
NEXT FIELD tipo_emp
END IF
LET selec =
"SELECT CONVERT(CHAR(10),fecha_al,103) FROM notb00010 ",
"SELECT fecha_al FROM notb00010 ",
" WHERE num_nomi = ",cooper.num_nomi USING "<<<<","and tipo_emp = '",cooper.tipo_emp,"'"
PREPARE busca_fecha FROM selec
PREPARE busca_fecha FROM selec
EXECUTE busca_fecha INTO cooper.fecha_al
LET selec =
"SELECT CONVERT(CHAR(10),MIN(fecha_del),103) FROM notb00010 ",
"SELECT MIN(fecha_del) FROM notb00010 ",
" WHERE ano = ",year(cooper.fecha_al)," and tipo_emp = '",cooper.tipo_emp,"'"
PREPARE busca_fecha1 FROM selec
EXECUTE busca_fecha1 INTO fecha_inicial
@@ -124,8 +125,9 @@ FUNCTION noprrp009()
RETURN
END IF
EXIT INPUT
END INPUT
END IF
END INPUT
END IF
LET fecha_al_sel = cooper.fecha_al
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,imprime
@@ -134,7 +136,7 @@ FUNCTION noprrp009()
IF vacaciones_pagadas = "NO" THEN
LET SELEC =
"SELECT UNIQUE a.num_emp,b.departamento,b.nivel_emp,b.cod_puesto, ",
" b.nom1_emp,b.apell1_emp,ISNULL(a.valor*-1,0),a.num_nomi,CONVERT(CHAR(10),d.fecha_al,103), ",
" b.nom1_emp,b.apell1_emp,ISNULL(a.valor*-1,0),a.num_nomi,d.fecha_al, ",
" a.tipo_emp,a.cod_mov,c.descrip_mov ",
" FROM adtb00003 b,notb00008 a,notb00002 c,notb00010 d ",
" WHERE a.num_emp = b.num_emp AND a.tipo_emp = b.nomina AND ",
@@ -151,9 +153,8 @@ FUNCTION noprrp009()
" FROM adtb00003 b,notb00008 a,notb00002 c,notb00010 d,adtb00020 e,adtb00032 f ",
" WHERE a.num_emp = b.num_emp AND a.tipo_emp = b.nomina AND ",
" a.cod_mov = c.cod_mov AND a.num_nomi = d.num_nomi AND ",
" CONVERT(CHAR(10),e.fecha,103) between '",fecha_inicial USING "dd/mm/yyyy" ,"' and '",cooper.fecha_al USING "dd/mm/yyyy","' ",
" and CONVERT(CHAR(10),e.fecha,103) between '",fecha_inicial USING "dd/mm/yyyy" ,"' and '",cooper.fecha_al USING "dd/mm/yyyy",
"' and a.tipo_emp = '",cooper.tipo_emp,"' and a.tipo_emp=d.tipo_emp AND ",
" e.fecha >= '",fecha_inicial USING "yyyy-mm-dd" ,"' and e.fecha < '",(cooper.fecha_al+1) USING "yyyy-mm-dd","' ",
" and a.tipo_emp = '",cooper.tipo_emp,"' and a.tipo_emp=d.tipo_emp AND ",
# " a.cod_mov in (1) AND ",
" b.num_emp = e.num_emp and e.cod_mto=1 and e.num_trx = f.num_trx AND ",
" f.num_nomi = a.num_nomi and f.num_nomi_no IS NULL AND ",
@@ -181,11 +182,9 @@ FUNCTION noprrp009()
EXIT WHILE
END IF
IF idx = 1 THEN
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
START REPORT list_cooper TO XML HANDLER HANDLER
LET idx = 2
LET cmd = FGL_GETENV("FGLSPOOL"),"\\noprrp009.txt"
START REPORT list_cooper TO cmd
LET idx = 2
END IF
IF int_flag THEN
@@ -282,7 +281,7 @@ END FUNCTION
SKIP 1 LINE
## SE IMPRIME EL NUMERO DE NOMINA Y LA FECHA
IF vacaciones_pagadas = "SI" THEN
PRINT COLUMN 1,fecha_inicial USING "dd/mm/yyyy", " hasta ",cooper.fecha_al USING "dd/mm/yyyy"
PRINT COLUMN 1,fecha_inicial USING "dd/mm/yyyy", " hasta ",fecha_al_sel USING "dd/mm/yyyy"
ELSE
PRINT COLUMN 1, "Nomina No.:",
@@ -359,8 +358,8 @@ END FUNCTION
COLUMN 11, x.nivel_emp using "&&","-",
COLUMN 15, x.cod_puesto using "&&",
COLUMN 23, x.nom1_emp clipped," ",x.apell1_emp clipped,
COLUMN 55, GROUP SUM(x.valor) using "#,###,###.##",
COLUMN 70, balance using "##,###,###.##"
COLUMN 55, GROUP SUM(x.valor) using "-#,###,###.##",
COLUMN 70, balance using "-##,###,###.##"
LET noRegistros = noRegistros + 1
END IF
@@ -371,7 +370,7 @@ END FUNCTION
PRINT COLUMN 1, negrillas_on,
COLUMN 2, "TOTAL GENERAL",
COLUMN 18, negrillas_off,
COLUMN 52, GROUP SUM(x.valor) using "###,###,###.##",
COLUMN 70, total using "###,###,###.##"
COLUMN 52, GROUP SUM(x.valor) using "-###,###,###.##",
COLUMN 70, total using "-###,###,###.##"
END REPORT
+48 -102
View File
@@ -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