DEFINE VARIABLE cNombreCompleto AS CHARACTER . DEFINE VARIABLE cArchivoImp AS CHARACTER . DEFINE VARIABLE lSeimprimio AS LOGICAL . DEFINE VARIABLE iLineasImp AS INTEGER . DEFINE VARIABLE iCuenta AS INTEGER . DEFINE VARIABLE acPIDOK AS CHARACTER EXTENT 10. DEFINE VARIABLE aiPidafecta AS INTEGER EXTENT 10. DEFINE VARIABLE acPMovim AS CHARACTER EXTENT 10 . DEFINE VARIABLE adPImporte AS DECIMAL EXTENT 10. DEFINE VARIABLE acDIDOK AS CHARACTER EXTENT 10. DEFINE VARIABLE aiDidafecta AS INTEGER EXTENT 10. DEFINE VARIABLE acDMovim AS CHARACTER EXTENT 10 . DEFINE VARIABLE adDimporte AS DECIMAL EXTENT 10 . DEFINE VARIABLE iActual AS INTEGER . DEFINE VARIABLE cPMovimiento AS CHARACTER FORMAT "X(30)" . DEFINE VARIABLE dPImporte AS DECIMAL FORMAT "->,>>>,>>9.99" . DEFINE VARIABLE cDMovimiento AS CHARACTER FORMAT "X(30)" . DEFINE VARIABLE dDImporte AS DECIMAL FORMAT "->,>>>,>>9.99" . DEFINE VARIABLE iLocaliza AS INTEGER . DEFINE VARIABLE lYaExiste AS LOGICAL INITIAL NO. DEFINE VARIABLE iTotPercep AS INTEGER. DEFINE VARIABLE iTotDeduc AS INTEGER . DEFINE VARIABLE iTotNeto AS INTEGER . DEFINE VARIABLE dResTabISPT AS DECIMAL . DEFINE VARIABLE dResTabCAS AS DECIMAL . DEFINE VARIABLE iIDTrabajador AS INTEGER INITIAL 0 . DEFINE VARIABLE cPImporte AS CHARACTER FORMAT "->,>>>,>>9.99" . DEFINE VARIABLE cDImporte AS CHARACTER FORMAT "->,>>>,>>9.99" . DEFINE VARIABLE iFaltanPEsp AS INTEGER . DEFINE VARIABLE iFaltanDEsp AS INTEGER . DEFINE STREAM SReciboNom . DEFINE FRAME CAPTURA WITH SIZE 120 BY 10 . PROCEDURE IMP-ENCAB-STANDARD : cNombreCompleto = TRIM(trabajador.paterno) + ' ' + TRIM(trabajador.materno) + ' ' + TRIM(trabajador.nombre) . DO icuenta = 1 TO 2 : PUT STREAM SReciboNom " " AT 1 . END. PUT STREAM SReciboNom trabajador.idtrab FORMAT "99999" AT 1 trabajador.rfc FORMAT "X(18)" AT 10 trabajador.regimss FORMAT "X(18)" AT 30 . DO icuenta = 1 TO 2 : PUT STREAM SReciboNom " " AT 1 . END. PUT STREAM SReciboNom cNombreCompleto FORMAT "X(30)" AT 1 trabajador.iddepto FORMAT "99" AT 53 deptos.nombre FORMAT "X(15)" AT 56 Opcproceso.Feinipdo FORMAT "99/99/9999" AT 72 "-" AT 82 Opcproceso.Fefinpdo FORMAT "99/99/9999" AT 84 trabajador.saldiario FORMAT ">,>>>,>>9.99" AT 95 . DO icuenta = 1 TO 4 : PUT STREAM SReciboNom " " AT 1 . END. END. PROCEDURE IMP-PIE-STANDARD : iTotNeto = iTotPercep - iTotDeduc . PUT STREAM SReciboNom iTotPercep FORMAT "->,>>>,>>9.99" AT 35 iTotDeduc FORMAT "->,>>>,>>9.99" AT 87 . DO icuenta = 1 TO 2 : PUT STREAM SReciboNom " " AT 1 . END. PUT STREAM SReciboNom dResTabISPT FORMAT "->,>>>,>>9.99" AT 1 dResTabCAS FORMAT "->,>>>,>>9.99" AT 18 iTotNeto FORMAT "->,>>>,>>9.99" AT 87 . DO icuenta = 1 TO 3 : PUT STREAM SReciboNom " " AT 1 . END. PUT STREAM SReciboNom Compania.Nombre FORMAT "X(40)" AT 74 . PAGE STREAM SReciboNom . END. PROCEDURE IMPRECIBO-STANDARD : RUN IMP-ENCAB-STANDARD . iLineasImp = 6 . DO iActual = 1 TO 10 : IF acPIDOK [iActual] = "C" THEN DO: cPMovimiento = TRIM ( acPMovim [iActual] ) . dPImporte = adPImporte [iActual] . END. ELSE DO: cPMovimiento = "ÿ" . dPImporte = 0 . END. IF acDIDOK [iActual] = "C" THEN DO: cDMovimiento = TRIM( acDMovim [iActual] ) . dDImporte = adDimporte [iActual] . END. ELSE DO: cDMovimiento = "ÿ" . dDImporte = 0 . END. IF cPMovimiento <> "ÿ" AND dPImporte <> 0 AND cDMovimiento <> "ÿ" AND dDImporte <> 0 THEN DO: cPImporte = TRIM ( STRING ( dPImporte , "->,>>>,>>9.99" ) ) . cDImporte = TRIM ( STRING ( dDImporte , "->,>>>,>>9.99" ) ) . iFaltanPEsp = 13 - LENGTH ( cPImporte ) . iFaltanDEsp = 13 - LENGTH ( cDImporte ) . IF iFaltanPEsp > 0 THEN cPImporte = FILL ( " ", iFaltanPEsp ) + TRIM ( cPImporte ) . IF iFaltanDEsp > 0 THEN cDImporte = FILL ( " ", iFaltanDEsp ) + cDImporte . PUT STREAM SReciboNom cPMovimiento FORMAT "X(30)" AT 3 cPImporte FORMAT "X(13)" AT 35 cDMovimiento FORMAT "X(30)" AT 55 CDImporte FORMAT "X(13)" AT 87 . iLineasImp = iLineasImp + 1 . END. ELSE DO: IF cPMovimiento <> "ÿ" AND dPImporte <> 0 THEN DO: cPImporte = TRIM ( STRING ( dPImporte , "->,>>>,>>9.99" ) ) . iFaltanPEsp = 13 - LENGTH ( cPImporte ) . IF iFaltanPEsp > 0 THEN cPImporte = FILL ( " ", iFaltanPEsp ) + TRIM ( cPImporte ) . PUT STREAM SReciboNom cPMovimiento FORMAT "X(30)" AT 3 cPImporte FORMAT "X(13)" AT 35 . iLineasImp = iLineasImp + 1. END. ELSE DO: IF cDMovimiento <> "ÿ" AND dDImporte <> 0 THEN DO: cDImporte = TRIM ( STRING ( dDImporte , "->,>>>,>>9.99" ) ) . iFaltanDEsp = 13 - LENGTH ( cDImporte ) . IF iFaltanDEsp > 0 THEN cDImporte = FILL ( " ", iFaltanDEsp ) + cDImporte . PUT STREAM SReciboNom cDMovimiento FORMAT "X(30)" AT 55 cDImporte FORMAT "X(13)" AT 87 . iLineasImp = iLineasImp + 1. END. END. END. END. IF iLineasImp < 21 THEN DO: DO icuenta = 1 TO ( 21 - ( iLineasImp ) - 1 ): PUT STREAM SReciboNom " " AT 1 . END. END. RUN IMP-PIE-STANDARD . FOR EACH t-nomina. DELETE t-nomina. END. END. PROCEDURE RECIBO_INDIVIDUALES : RUN ADECOMM/_SETCURS.P("WAIT"). FOR EACH t-hojas. DELETE t-hojas. END. iTotPercep = 0 . iTotDeduc = 0 . iTotNeto = 0 . ASSIGN l-folio = 0 l-reglon = 1. cArchivoImp = "C:\REPNOIND.TXT" . OUTPUT STREAM SReciboNom TO VALUE ( cArchivoImp ) PAGED PAGE-SIZE VALUE ( 32 ) . FOR EACH nomina USE-INDEX i00-nomina WHERE Nomina.Idtrab >= s-idtrabini AND Nomina.Idtrab <= s-idtrabfin NO-LOCK, FIRST opcproceso WHERE opcproceso.Idcompania = nomina.idcompania AND opcproceso.Idtipo_nomina = nomina.idtipo_nomina AND opcproceso.Idforma_pago = nomina.idforma_pago NO-LOCK, FIRST ConcAfec OF nomina WHERE concafec.imptarjt NO-LOCK, FIRST trabajador WHERE trabajador.idtrab = nomina.idtrab NO-LOCK, FIRST compania WHERE compania.idcompania = trabajador.idcompania NO-LOCK, FIRST planta WHERE planta.idcompania = trabajador.idcompania AND planta.idplanta = trabajador.idplanta NO-LOCK, FIRST tipo_nomina WHERE tipo_nomina.idcompania = trabajador.idcompania AND tipo_nomina.idtipo_nomina = trabajador.idtipo_nomina NO-LOCK, FIRST forma_pago OF trabajador NO-LOCK, FIRST deptos OF trabajador NO-LOCK, FIRST puestos OF trabajador NO-LOCK BREAK BY nomina.idtrab BY nomina.idafecta BY nomina.secafecta BY nomina.secuencia: IF iIDTrabajador <> nomina.idtrab THEN DO: dResTabISPT = 0 . dResTabCAS = 0 . iIDTrabajador = nomina.idtrab . END. IF FIRST-OF (nomina.idtrab) THEN DO: FOR EACH t-nomina : DELETE t-nomina. END. CREATE t-hojas. ASSIGN t-hojas.idhoja = 1 t-hojas.idfolio = 1 t-hojas.idtrab = nomina.idtrab l-num-recibo = 0. DO iActual = 1 TO 10 : acPIDOK [iActual] = "ô" . acDIDOK [iActual] = "ô" . END. iActual = 0 . END. RUN acumula_recibo. iActual = iActual + 1 . IF t-nomina.pidafecta <> 0 THEN DO: /* Verifica que no existe previamente este movimiento en el arreglo */ lYaExiste = NO . DO iLocaliza = 1 TO 10 : IF aiPidafecta [iLocaliza] = t-nomina.pidafecta AND acPIDOK [iLocaliza] <> "ô" THEN DO: lYaExiste = YES . LEAVE . END. END. IF lYaExiste = NO THEN DO: DO iLocaliza = 1 TO 10 : IF acPIDOK [iLocaliza] = "ô" THEN DO: aiPidafecta [iLocaliza] = t-nomina.pidafecta . acPMovim [iLocaliza] = t-nomina.pnomafecta . adPImporte [iLocaliza] = t-nomina.pimporte . acPIDOK [iLocaliza] = "C" . IF t-nomina.pidafecta <> 290 THEN iTotPercep = iTotPercep + t-nomina.pimporte . LEAVE . END. END. END. END. IF t-nomina.didafecta <> 0 THEN DO: IF t-nomina.didafecta = 501 THEN dResTabISPT = t-nomina.dimporte . IF t-nomina.didafecta = 505 THEN dResTabCAS = t-nomina.dimporte . IF t-nomina.didafecta <> 501 AND t-nomina.didafecta <> 505 THEN DO: /* No es Resultado del Calculo I.S.R. ( BRUTO) Ni es Resultado del Calculo Credito al Salario */ /* Verifica que no existe previamente este movimiento en el arreglo */ lYaExiste = NO . DO iLocaliza = 1 TO 10 : IF aiDidafecta [iLocaliza] = t-nomina.didafecta AND acDIDOK [iLocaliza] <> "ô" THEN DO: lYaExiste = YES . LEAVE . END. END. IF lYaExiste = NO THEN DO: DO iLocaliza = 1 TO 10 : IF acDIDOK [iLocaliza] = "ô" THEN DO: aiDidafecta [iLocaliza] = t-nomina.didafecta . acDMovim [iLocaliza] = t-nomina.dnomafecta . adDimporte [iLocaliza] = t-nomina.dimporte . acDIDOK [iLocaliza] = "C" . iTotDeduc = iTotDeduc + t-nomina.dimporte . LEAVE . END. END. END. END. END. IF LAST-OF (nomina.IdTrab) THEN DO: ASSIGN l-num-veces = 1 l-folio = l-folio + 1 l-reglon = 1. IF l-num-veces = 1 THEN l-nom-hoja = STRING(trabajador.idtrab). ELSE l-nom-hoja = STRING(trabajador.idtrab) + '-R-' + STRING(l-num-veces, '9'). RUN IMPRECIBO-STANDARD . END. END. OUTPUT STREAM SReciboNom CLOSE. /* print program distributed by Progress, uses defaults */ run adecomm/_osprint.p (INPUT ?, /* Especifica la ventana actual */ INPUT cArchivoImp , /* Nombre o variable que contiene el archivo */ INPUT 3 , /* Numero de fuente */ INPUT 1, /* Especifica si usamos el dialogo de impresion */ INPUT 0, /* Especifica el tamaño de la página */ INPUT 0, /* Especifica el numero de página */ OUTPUT lSeimprimio ). /* Bandera de Impresion */ IF NOT lSeimprimio THEN MESSAGE "No se realizo la impresion" SKIP VIEW-AS ALERT-BOX . RUN ADECOMM/_SETCURS.P(""). END.