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.