Ayuda Imprimir Liquidacion de Sueldo

Ayuda Imprimir Liquidacion de Sueldo

Postby remtec » Sat Apr 03, 2021 12:13 am

Hola Amigos

Necesito crear el código para imprimir liquidaciones de sueldo, usando impresora inyección de tinta.

Me han recomendado que use "CmSay( nRow, nCol, cText, oFont, nWidth, nClrText, nBkMode, nPad, lO2A )", no se si será la mejor forma?.

1. Lo primero que necesito es centrar el Titulo considerando el total del ancho de una pagina Letter 8 1/2 x 11 in.
Como hacerlo u obtener el valor de la columna donde debo imprimir.

Si algún amigo, tuviera un código ejemplo, estaré muy agradecido.

Muchos Saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby FranciscoA » Sun Apr 04, 2021 4:50 pm

remtec wrote:Hola Amigos

Necesito crear el código para imprimir liquidaciones de sueldo, usando impresora inyección de tinta.

Me han recomendado que use "CmSay( nRow, nCol, cText, oFont, nWidth, nClrText, nBkMode, nPad, lO2A )", no se si será la mejor forma?.

1. Lo primero que necesito es centrar el Titulo considerando el total del ancho de una pagina Letter 8 1/2 x 11 in.
Como hacerlo u obtener el valor de la columna donde debo imprimir.

Si algún amigo, tuviera un código ejemplo, estaré muy agradecido.

Muchos Saludos

Antonio


Antonio.
En \Samples está TESTPRN3.PRG que creo te ayudará a resolver, para el caso de centrar titulos usando CmSay().
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby remtec » Sun Apr 04, 2021 5:08 pm

Hola Francisco.

Deseo que estés muy bien.

Muchas gracias por tu ayuda.

Revisare lo que me recomiendas.

Igual me queda la duda si usar CmSay() para imprimir en impresoras inyeccion de tinta, sea lo correcto o hay otra forma mas conveniente?

Muchos Saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby nageswaragunupudi » Mon Apr 05, 2021 12:39 pm

What is your FWH version?

If you are using any recent version, there many improved methods, and now cmSay() is an obsolete method.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby postinelli » Mon Apr 05, 2021 8:24 pm

Buenas

te paso como imprimo yo los recibos de sueldo en laser/tinta
aqui configurado para A4, original y duplicado en la misma hoja
si no alcanza se puede imprimir en Legal


Code: Select all  Expand view  RUN
TPreview():lListViewHide := .T.
PRINT oPrn NAME "Recibo de Sueldo en PDF" PREVIEW

oPrn:SetPage(9) // A4
PrnPortrait()     ///vertical

IF Empty( oPrn:hDC )
   MsgStop( OemToAnsi( "¡ No hay IMPRESORA para imprimir !" ))
   Return NIL
EndIF

nPixVert := oPrn:nVertRes()
nPixHorz := oPrn:nHorzRes()

IF nPixHorz < 3000
   nAnch    := 8913290
   nAlto    := 12255652
   nAncho_1 := 4
   nAncho_2 := 7
ELSE
   nAnch := 8913494
   nAlto := 12256000
   nAncho_1 := 6
   nAncho_2 := 11
EndIf

DEFINE FONT oFont1 NAME "Courier New"  SIZE 0, -9      OF oPrn    //Negrita
DEFINE FONT oFont2 NAME "Courier New"  SIZE 0, -9 BOLD OF oPrn    //Negrita
DEFINE FONT oFont3 NAME "Arial" SIZE 0, -9  OF oPrn

DEFINE PEN  oPen1 WIDTH nAncho_1
DEFINE PEN  oPen2 WIDTH nAncho_2

person->(dbSeek(Desde))
Do While (!person->(EOF()) .AND. person->pm_legajo <= Hasta)
      Antig2()
      If (person->pm_fegre = CToD(Space(8)))
         Fila=5.10
         Fila2=19.10
         CantCon=0
         PAGE
            nFil :=  1.00     //arriba
            nCol :=  1.00     //izquierda
            nTop :=  2.00       //ALTO
            nBot :=  20.00    //ANCHO
            aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
            aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
            oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
            //oPrn:CmSay ( 1.10, 1.10, 'Empleador: '+empresa->em_nombre + ' Razon Social: Ostinelli Hnos. S.H.', oFont2 )
            oPrn:CmSay ( 1.10, 1.10, 'Empleador: '+ OemToAnsi(empresa->em_nombre) , oFont2 )
            oPrn:CmSay ( 1.10, 14.10,'C.U.I.T. Nº ' +  empresa->em_cuit, oFont2 )
            oPrn:CmSay ( 1.60, 1.10, 'Domicilio: '+ OemToAnsi(alltrim(empresa->em_dire)) + '  / LOCALIDAD: '+empresa->em_loca, oFont2 )
            oPrn:CmSay ( 1.60, 14.10,'DiEGeP Nº ' + empresa->em_ninsc, oFont2 )

            ///recuadro superior que dice los datos del empleador  //DEL DUPLICADO
            nFil := 15.80     //arriba
            nCol :=  1.00     //izquierda
            nTop := 16.80       //ALTO
            nBot :=  20.00    //ANCHO
            aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
            aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
            oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
            //oPrn:CmSay ( 1.10, 1.10, 'Empleador: '+empresa->em_nombre + ' Razon Social: Ostinelli Hnos. S.H.', oFont2 )
            oPrn:CmSay ( 15.90, 1.10, 'Empleador: '+ OemToAnsi(empresa->em_nombre) , oFont2 )
            oPrn:CmSay ( 15.90, 14.10,'C.U.I.T. Nº ' +  empresa->em_cuit, oFont2 )
            oPrn:CmSay ( 16.40, 1.10, 'Domicilio: '+ OemToAnsi(alltrim(empresa->em_dire)) + '  / LOCALIDAD: '+empresa->em_loca, oFont2 )
            oPrn:CmSay ( 16.40, 14.10,'DiEGeP Nº ' + empresa->em_ninsc, oFont2 )

            ///reacuadro titulo donde van datos de Empleado
            nFil :=  2.10     //arriba
            nCol :=  1.00     //izquierda
            nTop :=  2.60       //ALTO
            nBot := 20.00     //FIN ANCHO
            aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
            aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
            oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
            oPrn:CmSay ( 2.20, 1.10,  'Legajo', oFont2 )
            oPrn:CmSay ( 2.20, 3.50,  'Apellido y Nombres', oFont2 )
            oPrn:CmSay ( 2.20, 10.00, 'C.U.I.L.', oFont2 )
            oPrn:CmSay ( 2.20, 12.10, 'Rem. Asignada', oFont2 )
            oPrn:CmSay ( 2.20, 16.00, 'Fecha de Ingreso', oFont2 )

             ///reacuadro titulo donde van datos de Empleado  DUPLICADO
             nFil := 16.90     //arriba
             nCol :=  1.00     //izquierda
             nTop := 17.40      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay (17.00, 1.10,  'Legajo', oFont2 )
             oPrn:CmSay (17.00, 3.50,  'Apellido y Nombres', oFont2 )
             oPrn:CmSay (17.00, 10.00, 'C.U.I.L.', oFont2 )
             oPrn:CmSay (17.00, 12.10, 'Rem. Asignada', oFont2 )
             oPrn:CmSay (17.00, 16.00, 'Fecha de Ingreso', oFont2 )

             ///reacuadro donde van datos de Empleado
             nFil :=  2.70     //arriba
             nCol :=  1.00     //izquierda
             nTop :=  4.20      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos de Empleado    DUPLICADO
             nFil := 17.50     //arriba
             nCol :=  1.00     //izquierda
             nTop := 19.00      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos de la Fecha y Periodo de Pago
             nFil :=  3.20     //arriba
             nCol := 13.50     //izquierda
             nTop :=  4.20      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos de la Fecha y Periodo de Pago DUPLICADO
             nFil := 18.00     //arriba
             nCol := 13.50     //izquierda
             nTop := 19.00      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro titulo donde van datos de Empleado
             nFil :=  4.30     //arriba
             nCol :=  1.00     //izquierda
             nTop :=  4.90      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 4.40, 1.10,  'Cod.', oFont2 )
             oPrn:CmSay ( 4.40, 2.10,  'Concepto', oFont2 )
             oPrn:CmSay ( 4.40, 8.10,  'Hs/Dias/%', oFont2 )
             oPrn:CmSay ( 4.40,11.10,  'Haberes', oFont2 )
             oPrn:CmSay ( 4.40,16.10,  'Deducciones', oFont2 )

             ///reacuadro titulo donde van datos de Empleado DUPLICADO
             nFil := 19.10     //arriba
             nCol :=  1.00     //izquierda
             nTop := 19.60      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay (19.20, 1.10,  'Cod.', oFont2 )
             oPrn:CmSay (19.20, 2.10,  'Concepto', oFont2 )
             oPrn:CmSay (19.20, 8.10,  'Hs/Dias/%', oFont2 )
             oPrn:CmSay (19.20,11.10,  'Haberes', oFont2 )
             oPrn:CmSay (19.20,16.10,  'Deducciones', oFont2 )

             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol :=  1.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot :=  2.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo  DUPLICADO
             nFil := 19.00     //arriba
             nCol :=  1.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot :=  2.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol :=  2.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot :=  8.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo DUPLICADO
             nFil := 19.00     //arriba
             nCol :=  2.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot :=  8.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )


             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol :=  8.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot := 10.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo DUPLICADO
             nFil := 19.00     //arriba
             nCol :=  8.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot := 10.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol := 10.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot := 15.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo DUPLICADO
             nFil := 19.00     //arriba
             nCol := 10.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot := 15.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol := 15.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo DUPLICADO
             nFil := 19.00     //arriba
             nCol := 15.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///subtotales
             nFil := 10.60     //arriba
             nCol := 10.00     //izquierda
             nTop := 11.10      //FIN ALTO
             nBot := 15.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 10.70, 8.10,  'Totales', oFont1 )

             ///subtotales DUPLICADO
             nFil := 24.60     //arriba
             nCol := 10.00     //izquierda
             nTop := 25.10      //FIN ALTO
             nBot := 15.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 24.70, 8.10,  'Totales', oFont1 )

             ///subtotales
             nFil := 10.60     //arriba
             nCol := 15.00     //izquierda
             nTop := 11.10      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///subtotales DUPLICADO
             nFil := 24.60     //arriba
             nCol := 15.00     //izquierda
             nTop := 25.10      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///total neto
             nFil := 11.20     //arriba
             nCol := 15.00     //izquierda
             nTop := 11.70      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 11.30, 12.00,  'Total NETO', oFont2 )

             ///total neto DUPLICADO
             nFil := 25.20     //arriba
             nCol := 15.00     //izquierda
             nTop := 25.70      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 25.30, 12.00,  'Total NETO', oFont2 )

             ///datos ley u ultimo deposito
             nFil := 10.60     //arriba
             nCol :=  1.00     //izquierda
             nTop := 12.10      //FIN ALTO
             nBot :=  8.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///datos ley u ultimo deposito DUPLICADO
             nFil := 24.60     //arriba
             nCol :=  1.00     //izquierda
             nTop := 26.10      //FIN ALTO
             nBot :=  8.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             */
             ///son pesos en letras
             nFil := 12.20     //arriba
             nCol :=  1.00     //izquierda
             nTop := 12.70      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///son pesos en letras DUPLICADO
             nFil := 26.20     //arriba
             nCol :=  1.00     //izquierda
             nTop := 26.70      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///Recibi Conforme y Firma Empleado y Empleador
             nFil := 12.80     //arriba
             nCol :=  1.00     //izquierda
             nTop := 14.30      //FIN ALTO
             nBot := 12.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 12.90, 1.10, 'Recibi conforme el importe de esta liquidacion en pago', oFont1 )
             oPrn:CmSay ( 13.40, 1.10, 'a mi remuneracion correspondiente al periodo indicado y', oFont1 )
             oPrn:CmSay ( 13.90, 1.10, 'duplicado de la misma conforme a la ley vigente', oFont1 )

             ///Recibi Conforme y Firma Empleado y Empleador DUPLICADO
             nFil := 26.80     //arriba
             nCol :=  1.00     //izquierda
             nTop := 28.30      //FIN ALTO
             nBot := 12.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 26.90, 1.10, 'Recibi conforme el importe de esta liquidacion en pago', oFont1 )
             oPrn:CmSay ( 27.40, 1.10, 'a mi remuneracion correspondiente al periodo indicado y', oFont1 )
             oPrn:CmSay ( 27.90, 1.10, 'duplicado de la misma conforme a la ley vigente', oFont1 )
             */

             ///Firma del Empleado
             nFil := 12.80     //arriba
             nCol := 12.10     //izquierda
             nTop := 14.30      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 13.30, 14.35, '__________________', oFont1 )
             oPrn:CmSay ( 13.80, 14.35, 'FIRMA DEL EMPLEADO', oFont2 )

             ///Firma del Empleado  DUPLICADO
             nFil := 26.80     //arriba
             nCol := 12.10     //izquierda
             nTop := 28.30      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 27.30, 14.35, '___________________', oFont1 )
             oPrn:CmSay ( 27.80, 14.35, 'FIRMA del EMPLEADOR', oFont2 )


                  //oPrn:CmSay ( 2.80, 1.10, strzero(Arg1, 4) , oFont1 )
                  oPrn:CmSay ( 2.80, 1.10, strzero(person->pm_legajo, 4) , oFont1 )
                  oPrn:CmSay ( 2.80, 3.50, OemToAnsi(person->pm_nombre), oFont1 )
                  oPrn:CmSay ( 2.80, 9.50, person->pm_cuil  , oFont1 )
                  oPrn:CmSay ( 2.80,12.00, Str(wsjo, 12, 2) , oFont1 )
                  oPrn:CmSay ( 2.80,16.50, dtoc(person->pm_fingre) , oFont1 )

                  //DUPLICADO
                  //oPrn:CmSay (19.80, 1.10, strzero(Arg1, 4) , oFont1 )
                  oPrn:CmSay (17.60, 1.10, strzero(person->pm_legajo, 4) , oFont1 )
                  oPrn:CmSay (17.60, 3.50, OemToAnsi(person->pm_nombre), oFont1 )
                  oPrn:CmSay (17.60, 9.50, person->pm_cuil  , oFont1 )
                  oPrn:CmSay (17.60,12.00, Str(wsjo, 12, 2) , oFont1 )
                  oPrn:CmSay (17.60,16.50, dtoc(person->pm_fingre) , oFont1 )

                  oPrn:CmSay ( 3.30, 1.10, 'Categoria: ' + Local20 , oFont1 )
                  oPrn:CmSay ( 3.30,13.60, 'Periodo de Pago: ' + param->pr_leye , oFont1 )
                  //DUPLICADO
                  oPrn:CmSay (18.10, 1.10, 'Categoria: ' + Local20 , oFont1 )
                  oPrn:CmSay (18.10,13.60, 'Periodo de Pago: ' + param->pr_leye , oFont1 )

                  If Arg3=='S'
                     oPrn:CmSay ( 3.80,6.10, 'Antiguedad Docente: ' + + waa +' Años /' + wmm + ' Meses' , oFont1 )
                     //DUPLICADO
                     oPrn:CmSay ( 18.60,6.10, 'Antiguedad Docente: ' + + waa +' Años /' + wmm + ' Meses' , oFont1 )
                  Endif
                  oPrn:CmSay ( 3.80,13.60, 'Fecha de Pago..: ' + dtoc(param->pr_fepago) , oFont1 )
                  //DUPLICADO
                  oPrn:CmSay (18.60,13.60, 'Fecha de Pago..: ' + dtoc(param->pr_fepago) , oFont1 )

                  if !empty(person->pm_contrat)
                     //oPrn:CmSay ( 3.80, 1.10, 'Cuenta Sueldos: ' + SubStr(person->pm_contrat, 1, 6) + "-" +SubStr(person->pm_contrat, 7, 1) , oFont1 )
                     oPrn:CmSay ( 3.80, 1.10, 'Cuenta Sueldos:' + SubStr(person->pm_contrat, 1, 3) + "-" +SubStr(person->pm_contrat, 4, 5)+ "-" +SubStr(person->pm_contrat, 9, 1) , oFont1 )
                     //DUPLICADO
                     //oPrn:CmSay (18.60, 1.10, 'Cuenta Sueldos: ' + SubStr(person->pm_contrat, 1, 6) + "-" +SubStr(person->pm_contrat, 7, 1) , oFont1 )
                     oPrn:CmSay ( 18.60, 1.10, 'Cuenta Sueldos:' + SubStr(person->pm_contrat, 1, 3) + "-" +SubStr(person->pm_contrat, 4, 5)+ "-" +SubStr(person->pm_contrat, 9, 1) , oFont1 )
                  else
                     oPrn:CmSay ( 3.80, 1.10, 'Efectivo' , oFont1 )
                     //DUPLICADO
                     oPrn:CmSay (18.60, 1.10, 'Efectivo' , oFont1 )
                  endif

                  wd1:= strzero(Day(person->pm_fingre), 2)
                  wm1:= strzero(Month(person->pm_fingre), 2)
                  wa1:= Str(Year(person->pm_fingre), 4)

                  oPrn:CmSay ( 10.70, 1.10,  'Art. 12 Ley 17250', oFont2 )
                  oPrn:CmSay ( 10.70, 5.00,  'Periodo: ' + param->pr_lapso, oFont1 )
                  //oPrn:CmSay ( 13.70, 1.10,  'Periodo: ' + param->pr_lapso, oFont1 )
                  oPrn:CmSay ( 11.20, 1.10,  'Banco: ' + alltrim(param->pr_banco), oFont1 )
                  oPrn:CmSay ( 11.70, 1.10,  'Fecha Deposito Ap.y Ctr.: ' + dtoc(param->pr_feudep)  , oFont1 )
                  //oPrn:CmSay ( 14.20, 1.10,  'Banco/F.Dep.: ' + alltrim(param->pr_banco) + ' / ' + dtoc(param->pr_feudep)  , oFont1 )
                  //DUPLICADO
                  oPrn:CmSay ( 24.70, 1.10,  'Art. 12 Ley 17250', oFont2 )
                  oPrn:CmSay ( 24.70, 5.00,  'Periodo: ' + param->pr_lapso, oFont1 )
                  //oPrn:CmSay ( 13.70, 1.10,  'Periodo: ' + param->pr_lapso, oFont1 )
                  oPrn:CmSay ( 25.20, 1.10,  'Banco: ' + alltrim(param->pr_banco), oFont1 )
                  oPrn:CmSay ( 25.70, 1.10,  'Fecha Deposito Ap.y Ctr.: ' + dtoc(param->pr_feudep)  , oFont1 )
                  //oPrn:CmSay ( 14.20, 1.10,  'Banco/F.Dep.: ' + alltrim(param->pr_banco) + ' / ' + dtoc(param->pr_feudep)  , oFont1 )
                  //oPrn:CmSay ( 30.70, 1.10,  'Periodo: ' + param->pr_lapso, oFont1 )
                  //oPrn:CmSay ( 31.20, 1.10,  'Banco/F.Dep.: ' + alltrim(param->pr_banco) + ' / ' + dtoc(param->pr_feudep)  , oFont1 )

                  Local9:= 0
                  Local10:= 0
                  tot_sal:= 0
                  Local7:= .T.
                  Local8:= 0
                  netopatac:=0

                  //Do While (re_legajo = Arg1 .AND. !EOF())
                  Do While (re_legajo = person->pm_legajo .AND. !EOF())

                     If (right(Str(re_concep, 4), 3) != "999" .AND. (re_valor != 0 .OR. re_vunit != 0) .AND. Left(Str(re_concep, 4), 1) != "8")
                        Local2:= Val(right(Str(re_concep, 4), 3))
                        Local21:= ""
                        Local22:= 1
                        If (concepto->(dbSeek(Local2)))
                           If (concepto->cp_tipo = "N")
                              //Local21:= Local21 + strzero(Local2, 3) + Space(3) + concepto->cp_descrip
                              Local21:= Local21 + strzero(Local2, 3) + Space(3) + OemToAnsi(concepto->cp_descrip)
                              If (concepto->cp_valid != Space(8))
                                 If (re_vunit == 0)
                                    Local21:= Local21 + Space(21)
                                 Else
                                    stunit:= Transform(Abs(re_vunit), "@E 99.99") + " " + concepto->cp_valdes
                                    If (re_vunit - Int(re_vunit) == 0)
                                       stunit:= Left(Str(Abs(re_vunit), 10, 4), 5) + " " + concepto->cp_valdes
                                    EndIf
                                    Local21:= Local21 + Space(10) + stunit
                                 EndIf
                              Else
                                 Local21:= Local21 + Space(21)
                              EndIf
                              Local22:= re_valor
                              If (concepto->cp_agrup != 4 .AND. concepto->cp_agrup != 5)   ///son Haberes
                                 Local21:= Local21 + Space(10) + Transform(Round(Local22, 2), "@E 999,999.99")
                                 If (concepto->cp_agrup = 6 .OR. concepto->cp_agrup = 7)
                                    tot_sal:= tot_sal + Local22
                                 Else
                                    Local9:= Local9 + Local22
                                 EndIf                                                     ///son Deducciones
                              Else
                                 Local21:= Local21 + Space(35) + Transform(Round(Local22, 2), "@E 999,999.99")
                                 Local10:= Local10 + Local22
                              EndIf
                           Else
                              Local22:= 0
                           EndIf
                        Else
                           Local22:= 0
                        EndIf
                        If (Local22 != 0)
                           If (Local7)
                              oPrn:CmSay ( Fila, 1.10, Local21 , oFont1 )
                              //DUPLICADO
                              oPrn:CmSay ( Fila2, 1.10, Local21 , oFont1 )
                              Local8:= Local8 + 1
                              Local7:= .F.
                           Else
                              //? Local21
                              oPrn:CmSay ( Fila, 1.10,Local21, oFont1 )
                              //DUPLICADO
                              oPrn:CmSay ( Fila2, 1.10, Local21 , oFont1 )
                              Local8:= Local8 + 1
                           EndIf
                           Fila=Fila +0.5
                           Fila2=Fila2 +0.5
                           CantCon++
                           If CantCon>11
                              MsgAlert('Este Recibo Se Debe Imprimir en Hoja Oficio'+CRLF+'Empleado: ' + strzero(person->pm_legajo, 4) + ' '+OemToAnsi(person->pm_nombre) ,'Error')
                           EndIf
                        EndIf
                     EndIf
                     Select 1
                     dbSkip()
                  EndDo
         //         oPrn:CmSay ( 15.20, 11, Transform(Round(Local9 + tot_sal, 2), "@E 999,999.99") + Space(10) + Transform(Round(Local10, 2), "@E 999,999.99")), oFont1 )
                  oPrn:CmSay ( 10.70, 11.50, Transform(Round(Local9 + tot_sal, 2), "@E 999,999.99") , oFont1 )
                  oPrn:CmSay ( 10.70, 16.50, Transform(Round(Local10,2), "@E 999,999.99"), oFont1 )
                  oPrn:CmSay ( 11.30, 16.50, Transform(Round(Local9 + tot_sal - Local10, 2), "@E 999,999.99"), oFont2 )
                  //DUPLICADO
                  oPrn:CmSay ( 24.70, 11.50, Transform(Round(Local9 + tot_sal, 2), "@E 999,999.99") , oFont1 )
                  oPrn:CmSay ( 24.70, 16.50, Transform(Round(Local10,2), "@E 999,999.99"), oFont1 )
                  oPrn:CmSay ( 25.30, 16.50, Transform(Round(Local9 + tot_sal - Local10, 2), "@E 999,999.99"), oFont2 )

                  letras:= conv_num(Abs(Local9 + tot_sal - Local10))
                  wtt:= Local9 + tot_sal - Local10
                  wcent:= (wtt - Val(Left(strzero(wtt, 13, 2), 10))) * 100
                  centavos:= ""
                  If (wcent != 0)
                     centavos:= " Con " + Str(wcent, 2) + " Ctvos."
                  EndIf
                  letras:= letras + centavos

                  If (Len(letras) > 80)
                     MsgAlert('Este Recibo Se Debe Imprimir en Hoja Oficio'+CRLF+'Empleado: ' + strzero(person->pm_legajo, 4) + ' '+OemToAnsi(person->pm_nombre) ,'Error')
                     l1:= Left(letras, 80)
                     il:= 80
                     Do While (SubStr(l1, il, 1) != " ")
                        il:= il - 1
                     EndDo
                     let1:= Left(letras, il) + Space(80 - il)
                     let2:= SubStr(letras, il + 1, Len(letras) - il)
                     oPrn:CmSay ( 12.30, 1.10, 'Son Pesos: ' + let1 , oFont1 )
                     oPrn:CmSay ( 12.80, 1.10, 'Son Pesos: ' + let2 , oFont1 )
                     //DUPLICADO
                     oPrn:CmSay ( 26.30, 1.10, 'Son Pesos: ' + let1 , oFont1 )
                     oPrn:CmSay ( 26.80, 1.10, 'Son Pesos: ' + let2 , oFont1 )
                  Else
                     oPrn:CmSay ( 12.30, 1.10, 'Son Pesos: ' + letras , oFont1 )
                     //DUPLICADO
                     oPrn:CmSay ( 26.30, 1.10, 'Son Pesos: ' + letras , oFont1 )
                  EndIf

         ENDPAGE
//         RECIBOFW(person->pm_legajo, Arg2, Arg4)
         Next
         EndIf
      EndIf
      person->(dbSkip())
   EndDo

ENDPRINT
oFont1:End()
oFont2:End()
oFont3:End()
oPen1:End()
oPen2:End()


 
postinelli
 
Posts: 149
Joined: Tue Jul 15, 2008 7:12 pm
Location: Argentina

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby remtec » Mon Apr 05, 2021 9:16 pm

nageswaragunupudi wrote:What is your FWH version?

If you are using any recent version, there many improved methods, and now cmSay() is an obsolete method.


Mr. Roa

Muy buenas tardes.

Uso ver FWH 17.09 - Harbour

Saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby remtec » Mon Apr 05, 2021 9:20 pm

postinelli wrote:Buenas

te paso como imprimo yo los recibos de sueldo en laser/tinta
aqui configurado para A4, original y duplicado en la misma hoja
si no alcanza se puede imprimir en Legal


Code: Select all  Expand view  RUN
TPreview():lListViewHide := .T.
PRINT oPrn NAME "Recibo de Sueldo en PDF" PREVIEW

oPrn:SetPage(9) // A4
PrnPortrait()     ///vertical

IF Empty( oPrn:hDC )
   MsgStop( OemToAnsi( "¡ No hay IMPRESORA para imprimir !" ))
   Return NIL
EndIF

nPixVert := oPrn:nVertRes()
nPixHorz := oPrn:nHorzRes()

IF nPixHorz < 3000
   nAnch    := 8913290
   nAlto    := 12255652
   nAncho_1 := 4
   nAncho_2 := 7
ELSE
   nAnch := 8913494
   nAlto := 12256000
   nAncho_1 := 6
   nAncho_2 := 11
EndIf

DEFINE FONT oFont1 NAME "Courier New"  SIZE 0, -9      OF oPrn    //Negrita
DEFINE FONT oFont2 NAME "Courier New"  SIZE 0, -9 BOLD OF oPrn    //Negrita
DEFINE FONT oFont3 NAME "Arial" SIZE 0, -9  OF oPrn

DEFINE PEN  oPen1 WIDTH nAncho_1
DEFINE PEN  oPen2 WIDTH nAncho_2

person->(dbSeek(Desde))
Do While (!person->(EOF()) .AND. person->pm_legajo <= Hasta)
      Antig2()
      If (person->pm_fegre = CToD(Space(8)))
         Fila=5.10
         Fila2=19.10
         CantCon=0
         PAGE
            nFil :=  1.00     //arriba
            nCol :=  1.00     //izquierda
            nTop :=  2.00       //ALTO
            nBot :=  20.00    //ANCHO
            aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
            aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
            oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
            //oPrn:CmSay ( 1.10, 1.10, 'Empleador: '+empresa->em_nombre + ' Razon Social: Ostinelli Hnos. S.H.', oFont2 )
            oPrn:CmSay ( 1.10, 1.10, 'Empleador: '+ OemToAnsi(empresa->em_nombre) , oFont2 )
            oPrn:CmSay ( 1.10, 14.10,'C.U.I.T. Nº ' +  empresa->em_cuit, oFont2 )
            oPrn:CmSay ( 1.60, 1.10, 'Domicilio: '+ OemToAnsi(alltrim(empresa->em_dire)) + '  / LOCALIDAD: '+empresa->em_loca, oFont2 )
            oPrn:CmSay ( 1.60, 14.10,'DiEGeP Nº ' + empresa->em_ninsc, oFont2 )

            ///recuadro superior que dice los datos del empleador  //DEL DUPLICADO
            nFil := 15.80     //arriba
            nCol :=  1.00     //izquierda
            nTop := 16.80       //ALTO
            nBot :=  20.00    //ANCHO
            aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
            aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
            oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
            //oPrn:CmSay ( 1.10, 1.10, 'Empleador: '+empresa->em_nombre + ' Razon Social: Ostinelli Hnos. S.H.', oFont2 )
            oPrn:CmSay ( 15.90, 1.10, 'Empleador: '+ OemToAnsi(empresa->em_nombre) , oFont2 )
            oPrn:CmSay ( 15.90, 14.10,'C.U.I.T. Nº ' +  empresa->em_cuit, oFont2 )
            oPrn:CmSay ( 16.40, 1.10, 'Domicilio: '+ OemToAnsi(alltrim(empresa->em_dire)) + '  / LOCALIDAD: '+empresa->em_loca, oFont2 )
            oPrn:CmSay ( 16.40, 14.10,'DiEGeP Nº ' + empresa->em_ninsc, oFont2 )

            ///reacuadro titulo donde van datos de Empleado
            nFil :=  2.10     //arriba
            nCol :=  1.00     //izquierda
            nTop :=  2.60       //ALTO
            nBot := 20.00     //FIN ANCHO
            aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
            aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
            oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
            oPrn:CmSay ( 2.20, 1.10,  'Legajo', oFont2 )
            oPrn:CmSay ( 2.20, 3.50,  'Apellido y Nombres', oFont2 )
            oPrn:CmSay ( 2.20, 10.00, 'C.U.I.L.', oFont2 )
            oPrn:CmSay ( 2.20, 12.10, 'Rem. Asignada', oFont2 )
            oPrn:CmSay ( 2.20, 16.00, 'Fecha de Ingreso', oFont2 )

             ///reacuadro titulo donde van datos de Empleado  DUPLICADO
             nFil := 16.90     //arriba
             nCol :=  1.00     //izquierda
             nTop := 17.40      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay (17.00, 1.10,  'Legajo', oFont2 )
             oPrn:CmSay (17.00, 3.50,  'Apellido y Nombres', oFont2 )
             oPrn:CmSay (17.00, 10.00, 'C.U.I.L.', oFont2 )
             oPrn:CmSay (17.00, 12.10, 'Rem. Asignada', oFont2 )
             oPrn:CmSay (17.00, 16.00, 'Fecha de Ingreso', oFont2 )

             ///reacuadro donde van datos de Empleado
             nFil :=  2.70     //arriba
             nCol :=  1.00     //izquierda
             nTop :=  4.20      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos de Empleado    DUPLICADO
             nFil := 17.50     //arriba
             nCol :=  1.00     //izquierda
             nTop := 19.00      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos de la Fecha y Periodo de Pago
             nFil :=  3.20     //arriba
             nCol := 13.50     //izquierda
             nTop :=  4.20      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos de la Fecha y Periodo de Pago DUPLICADO
             nFil := 18.00     //arriba
             nCol := 13.50     //izquierda
             nTop := 19.00      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro titulo donde van datos de Empleado
             nFil :=  4.30     //arriba
             nCol :=  1.00     //izquierda
             nTop :=  4.90      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 4.40, 1.10,  'Cod.', oFont2 )
             oPrn:CmSay ( 4.40, 2.10,  'Concepto', oFont2 )
             oPrn:CmSay ( 4.40, 8.10,  'Hs/Dias/%', oFont2 )
             oPrn:CmSay ( 4.40,11.10,  'Haberes', oFont2 )
             oPrn:CmSay ( 4.40,16.10,  'Deducciones', oFont2 )

             ///reacuadro titulo donde van datos de Empleado DUPLICADO
             nFil := 19.10     //arriba
             nCol :=  1.00     //izquierda
             nTop := 19.60      //ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay (19.20, 1.10,  'Cod.', oFont2 )
             oPrn:CmSay (19.20, 2.10,  'Concepto', oFont2 )
             oPrn:CmSay (19.20, 8.10,  'Hs/Dias/%', oFont2 )
             oPrn:CmSay (19.20,11.10,  'Haberes', oFont2 )
             oPrn:CmSay (19.20,16.10,  'Deducciones', oFont2 )

             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol :=  1.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot :=  2.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo  DUPLICADO
             nFil := 19.00     //arriba
             nCol :=  1.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot :=  2.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol :=  2.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot :=  8.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo DUPLICADO
             nFil := 19.00     //arriba
             nCol :=  2.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot :=  8.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )


             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol :=  8.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot := 10.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo DUPLICADO
             nFil := 19.00     //arriba
             nCol :=  8.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot := 10.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol := 10.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot := 15.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo DUPLICADO
             nFil := 19.00     //arriba
             nCol := 10.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot := 15.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo
             nFil :=  5.00     //arriba
             nCol := 15.00     //izquierda
             nTop := 10.50      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///reacuadro donde van datos del Sueldo DUPLICADO
             nFil := 19.00     //arriba
             nCol := 15.00     //izquierda
             nTop := 24.50      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///subtotales
             nFil := 10.60     //arriba
             nCol := 10.00     //izquierda
             nTop := 11.10      //FIN ALTO
             nBot := 15.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 10.70, 8.10,  'Totales', oFont1 )

             ///subtotales DUPLICADO
             nFil := 24.60     //arriba
             nCol := 10.00     //izquierda
             nTop := 25.10      //FIN ALTO
             nBot := 15.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 24.70, 8.10,  'Totales', oFont1 )

             ///subtotales
             nFil := 10.60     //arriba
             nCol := 15.00     //izquierda
             nTop := 11.10      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///subtotales DUPLICADO
             nFil := 24.60     //arriba
             nCol := 15.00     //izquierda
             nTop := 25.10      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///total neto
             nFil := 11.20     //arriba
             nCol := 15.00     //izquierda
             nTop := 11.70      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 11.30, 12.00,  'Total NETO', oFont2 )

             ///total neto DUPLICADO
             nFil := 25.20     //arriba
             nCol := 15.00     //izquierda
             nTop := 25.70      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 25.30, 12.00,  'Total NETO', oFont2 )

             ///datos ley u ultimo deposito
             nFil := 10.60     //arriba
             nCol :=  1.00     //izquierda
             nTop := 12.10      //FIN ALTO
             nBot :=  8.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///datos ley u ultimo deposito DUPLICADO
             nFil := 24.60     //arriba
             nCol :=  1.00     //izquierda
             nTop := 26.10      //FIN ALTO
             nBot :=  8.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             */
             ///son pesos en letras
             nFil := 12.20     //arriba
             nCol :=  1.00     //izquierda
             nTop := 12.70      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///son pesos en letras DUPLICADO
             nFil := 26.20     //arriba
             nCol :=  1.00     //izquierda
             nTop := 26.70      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )

             ///Recibi Conforme y Firma Empleado y Empleador
             nFil := 12.80     //arriba
             nCol :=  1.00     //izquierda
             nTop := 14.30      //FIN ALTO
             nBot := 12.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 12.90, 1.10, 'Recibi conforme el importe de esta liquidacion en pago', oFont1 )
             oPrn:CmSay ( 13.40, 1.10, 'a mi remuneracion correspondiente al periodo indicado y', oFont1 )
             oPrn:CmSay ( 13.90, 1.10, 'duplicado de la misma conforme a la ley vigente', oFont1 )

             ///Recibi Conforme y Firma Empleado y Empleador DUPLICADO
             nFil := 26.80     //arriba
             nCol :=  1.00     //izquierda
             nTop := 28.30      //FIN ALTO
             nBot := 12.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 26.90, 1.10, 'Recibi conforme el importe de esta liquidacion en pago', oFont1 )
             oPrn:CmSay ( 27.40, 1.10, 'a mi remuneracion correspondiente al periodo indicado y', oFont1 )
             oPrn:CmSay ( 27.90, 1.10, 'duplicado de la misma conforme a la ley vigente', oFont1 )
             */

             ///Firma del Empleado
             nFil := 12.80     //arriba
             nCol := 12.10     //izquierda
             nTop := 14.30      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 13.30, 14.35, '__________________', oFont1 )
             oPrn:CmSay ( 13.80, 14.35, 'FIRMA DEL EMPLEADO', oFont2 )

             ///Firma del Empleado  DUPLICADO
             nFil := 26.80     //arriba
             nCol := 12.10     //izquierda
             nTop := 28.30      //FIN ALTO
             nBot := 20.00     //FIN ANCHO
             aCoord1 := oPrn:Cmtr2Pix( @nFil, @nCol )
             aCoord2 := oPrn:Cmtr2Pix( @nTop, @nBot )
             oPrn:Box ( nFil, nCol, nTop, nBot, oPen1 )
             oPrn:CmSay ( 27.30, 14.35, '___________________', oFont1 )
             oPrn:CmSay ( 27.80, 14.35, 'FIRMA del EMPLEADOR', oFont2 )


                  //oPrn:CmSay ( 2.80, 1.10, strzero(Arg1, 4) , oFont1 )
                  oPrn:CmSay ( 2.80, 1.10, strzero(person->pm_legajo, 4) , oFont1 )
                  oPrn:CmSay ( 2.80, 3.50, OemToAnsi(person->pm_nombre), oFont1 )
                  oPrn:CmSay ( 2.80, 9.50, person->pm_cuil  , oFont1 )
                  oPrn:CmSay ( 2.80,12.00, Str(wsjo, 12, 2) , oFont1 )
                  oPrn:CmSay ( 2.80,16.50, dtoc(person->pm_fingre) , oFont1 )

                  //DUPLICADO
                  //oPrn:CmSay (19.80, 1.10, strzero(Arg1, 4) , oFont1 )
                  oPrn:CmSay (17.60, 1.10, strzero(person->pm_legajo, 4) , oFont1 )
                  oPrn:CmSay (17.60, 3.50, OemToAnsi(person->pm_nombre), oFont1 )
                  oPrn:CmSay (17.60, 9.50, person->pm_cuil  , oFont1 )
                  oPrn:CmSay (17.60,12.00, Str(wsjo, 12, 2) , oFont1 )
                  oPrn:CmSay (17.60,16.50, dtoc(person->pm_fingre) , oFont1 )

                  oPrn:CmSay ( 3.30, 1.10, 'Categoria: ' + Local20 , oFont1 )
                  oPrn:CmSay ( 3.30,13.60, 'Periodo de Pago: ' + param->pr_leye , oFont1 )
                  //DUPLICADO
                  oPrn:CmSay (18.10, 1.10, 'Categoria: ' + Local20 , oFont1 )
                  oPrn:CmSay (18.10,13.60, 'Periodo de Pago: ' + param->pr_leye , oFont1 )

                  If Arg3=='S'
                     oPrn:CmSay ( 3.80,6.10, 'Antiguedad Docente: ' + + waa +' Años /' + wmm + ' Meses' , oFont1 )
                     //DUPLICADO
                     oPrn:CmSay ( 18.60,6.10, 'Antiguedad Docente: ' + + waa +' Años /' + wmm + ' Meses' , oFont1 )
                  Endif
                  oPrn:CmSay ( 3.80,13.60, 'Fecha de Pago..: ' + dtoc(param->pr_fepago) , oFont1 )
                  //DUPLICADO
                  oPrn:CmSay (18.60,13.60, 'Fecha de Pago..: ' + dtoc(param->pr_fepago) , oFont1 )

                  if !empty(person->pm_contrat)
                     //oPrn:CmSay ( 3.80, 1.10, 'Cuenta Sueldos: ' + SubStr(person->pm_contrat, 1, 6) + "-" +SubStr(person->pm_contrat, 7, 1) , oFont1 )
                     oPrn:CmSay ( 3.80, 1.10, 'Cuenta Sueldos:' + SubStr(person->pm_contrat, 1, 3) + "-" +SubStr(person->pm_contrat, 4, 5)+ "-" +SubStr(person->pm_contrat, 9, 1) , oFont1 )
                     //DUPLICADO
                     //oPrn:CmSay (18.60, 1.10, 'Cuenta Sueldos: ' + SubStr(person->pm_contrat, 1, 6) + "-" +SubStr(person->pm_contrat, 7, 1) , oFont1 )
                     oPrn:CmSay ( 18.60, 1.10, 'Cuenta Sueldos:' + SubStr(person->pm_contrat, 1, 3) + "-" +SubStr(person->pm_contrat, 4, 5)+ "-" +SubStr(person->pm_contrat, 9, 1) , oFont1 )
                  else
                     oPrn:CmSay ( 3.80, 1.10, 'Efectivo' , oFont1 )
                     //DUPLICADO
                     oPrn:CmSay (18.60, 1.10, 'Efectivo' , oFont1 )
                  endif

                  wd1:= strzero(Day(person->pm_fingre), 2)
                  wm1:= strzero(Month(person->pm_fingre), 2)
                  wa1:= Str(Year(person->pm_fingre), 4)

                  oPrn:CmSay ( 10.70, 1.10,  'Art. 12 Ley 17250', oFont2 )
                  oPrn:CmSay ( 10.70, 5.00,  'Periodo: ' + param->pr_lapso, oFont1 )
                  //oPrn:CmSay ( 13.70, 1.10,  'Periodo: ' + param->pr_lapso, oFont1 )
                  oPrn:CmSay ( 11.20, 1.10,  'Banco: ' + alltrim(param->pr_banco), oFont1 )
                  oPrn:CmSay ( 11.70, 1.10,  'Fecha Deposito Ap.y Ctr.: ' + dtoc(param->pr_feudep)  , oFont1 )
                  //oPrn:CmSay ( 14.20, 1.10,  'Banco/F.Dep.: ' + alltrim(param->pr_banco) + ' / ' + dtoc(param->pr_feudep)  , oFont1 )
                  //DUPLICADO
                  oPrn:CmSay ( 24.70, 1.10,  'Art. 12 Ley 17250', oFont2 )
                  oPrn:CmSay ( 24.70, 5.00,  'Periodo: ' + param->pr_lapso, oFont1 )
                  //oPrn:CmSay ( 13.70, 1.10,  'Periodo: ' + param->pr_lapso, oFont1 )
                  oPrn:CmSay ( 25.20, 1.10,  'Banco: ' + alltrim(param->pr_banco), oFont1 )
                  oPrn:CmSay ( 25.70, 1.10,  'Fecha Deposito Ap.y Ctr.: ' + dtoc(param->pr_feudep)  , oFont1 )
                  //oPrn:CmSay ( 14.20, 1.10,  'Banco/F.Dep.: ' + alltrim(param->pr_banco) + ' / ' + dtoc(param->pr_feudep)  , oFont1 )
                  //oPrn:CmSay ( 30.70, 1.10,  'Periodo: ' + param->pr_lapso, oFont1 )
                  //oPrn:CmSay ( 31.20, 1.10,  'Banco/F.Dep.: ' + alltrim(param->pr_banco) + ' / ' + dtoc(param->pr_feudep)  , oFont1 )

                  Local9:= 0
                  Local10:= 0
                  tot_sal:= 0
                  Local7:= .T.
                  Local8:= 0
                  netopatac:=0

                  //Do While (re_legajo = Arg1 .AND. !EOF())
                  Do While (re_legajo = person->pm_legajo .AND. !EOF())

                     If (right(Str(re_concep, 4), 3) != "999" .AND. (re_valor != 0 .OR. re_vunit != 0) .AND. Left(Str(re_concep, 4), 1) != "8")
                        Local2:= Val(right(Str(re_concep, 4), 3))
                        Local21:= ""
                        Local22:= 1
                        If (concepto->(dbSeek(Local2)))
                           If (concepto->cp_tipo = "N")
                              //Local21:= Local21 + strzero(Local2, 3) + Space(3) + concepto->cp_descrip
                              Local21:= Local21 + strzero(Local2, 3) + Space(3) + OemToAnsi(concepto->cp_descrip)
                              If (concepto->cp_valid != Space(8))
                                 If (re_vunit == 0)
                                    Local21:= Local21 + Space(21)
                                 Else
                                    stunit:= Transform(Abs(re_vunit), "@E 99.99") + " " + concepto->cp_valdes
                                    If (re_vunit - Int(re_vunit) == 0)
                                       stunit:= Left(Str(Abs(re_vunit), 10, 4), 5) + " " + concepto->cp_valdes
                                    EndIf
                                    Local21:= Local21 + Space(10) + stunit
                                 EndIf
                              Else
                                 Local21:= Local21 + Space(21)
                              EndIf
                              Local22:= re_valor
                              If (concepto->cp_agrup != 4 .AND. concepto->cp_agrup != 5)   ///son Haberes
                                 Local21:= Local21 + Space(10) + Transform(Round(Local22, 2), "@E 999,999.99")
                                 If (concepto->cp_agrup = 6 .OR. concepto->cp_agrup = 7)
                                    tot_sal:= tot_sal + Local22
                                 Else
                                    Local9:= Local9 + Local22
                                 EndIf                                                     ///son Deducciones
                              Else
                                 Local21:= Local21 + Space(35) + Transform(Round(Local22, 2), "@E 999,999.99")
                                 Local10:= Local10 + Local22
                              EndIf
                           Else
                              Local22:= 0
                           EndIf
                        Else
                           Local22:= 0
                        EndIf
                        If (Local22 != 0)
                           If (Local7)
                              oPrn:CmSay ( Fila, 1.10, Local21 , oFont1 )
                              //DUPLICADO
                              oPrn:CmSay ( Fila2, 1.10, Local21 , oFont1 )
                              Local8:= Local8 + 1
                              Local7:= .F.
                           Else
                              //? Local21
                              oPrn:CmSay ( Fila, 1.10,Local21, oFont1 )
                              //DUPLICADO
                              oPrn:CmSay ( Fila2, 1.10, Local21 , oFont1 )
                              Local8:= Local8 + 1
                           EndIf
                           Fila=Fila +0.5
                           Fila2=Fila2 +0.5
                           CantCon++
                           If CantCon>11
                              MsgAlert('Este Recibo Se Debe Imprimir en Hoja Oficio'+CRLF+'Empleado: ' + strzero(person->pm_legajo, 4) + ' '+OemToAnsi(person->pm_nombre) ,'Error')
                           EndIf
                        EndIf
                     EndIf
                     Select 1
                     dbSkip()
                  EndDo
         //         oPrn:CmSay ( 15.20, 11, Transform(Round(Local9 + tot_sal, 2), "@E 999,999.99") + Space(10) + Transform(Round(Local10, 2), "@E 999,999.99")), oFont1 )
                  oPrn:CmSay ( 10.70, 11.50, Transform(Round(Local9 + tot_sal, 2), "@E 999,999.99") , oFont1 )
                  oPrn:CmSay ( 10.70, 16.50, Transform(Round(Local10,2), "@E 999,999.99"), oFont1 )
                  oPrn:CmSay ( 11.30, 16.50, Transform(Round(Local9 + tot_sal - Local10, 2), "@E 999,999.99"), oFont2 )
                  //DUPLICADO
                  oPrn:CmSay ( 24.70, 11.50, Transform(Round(Local9 + tot_sal, 2), "@E 999,999.99") , oFont1 )
                  oPrn:CmSay ( 24.70, 16.50, Transform(Round(Local10,2), "@E 999,999.99"), oFont1 )
                  oPrn:CmSay ( 25.30, 16.50, Transform(Round(Local9 + tot_sal - Local10, 2), "@E 999,999.99"), oFont2 )

                  letras:= conv_num(Abs(Local9 + tot_sal - Local10))
                  wtt:= Local9 + tot_sal - Local10
                  wcent:= (wtt - Val(Left(strzero(wtt, 13, 2), 10))) * 100
                  centavos:= ""
                  If (wcent != 0)
                     centavos:= " Con " + Str(wcent, 2) + " Ctvos."
                  EndIf
                  letras:= letras + centavos

                  If (Len(letras) > 80)
                     MsgAlert('Este Recibo Se Debe Imprimir en Hoja Oficio'+CRLF+'Empleado: ' + strzero(person->pm_legajo, 4) + ' '+OemToAnsi(person->pm_nombre) ,'Error')
                     l1:= Left(letras, 80)
                     il:= 80
                     Do While (SubStr(l1, il, 1) != " ")
                        il:= il - 1
                     EndDo
                     let1:= Left(letras, il) + Space(80 - il)
                     let2:= SubStr(letras, il + 1, Len(letras) - il)
                     oPrn:CmSay ( 12.30, 1.10, 'Son Pesos: ' + let1 , oFont1 )
                     oPrn:CmSay ( 12.80, 1.10, 'Son Pesos: ' + let2 , oFont1 )
                     //DUPLICADO
                     oPrn:CmSay ( 26.30, 1.10, 'Son Pesos: ' + let1 , oFont1 )
                     oPrn:CmSay ( 26.80, 1.10, 'Son Pesos: ' + let2 , oFont1 )
                  Else
                     oPrn:CmSay ( 12.30, 1.10, 'Son Pesos: ' + letras , oFont1 )
                     //DUPLICADO
                     oPrn:CmSay ( 26.30, 1.10, 'Son Pesos: ' + letras , oFont1 )
                  EndIf

         ENDPAGE
//         RECIBOFW(person->pm_legajo, Arg2, Arg4)
         Next
         EndIf
      EndIf
      person->(dbSkip())
   EndDo

ENDPRINT
oFont1:End()
oFont2:End()
oFont3:End()
oPen1:End()
oPen2:End()


 


Hola Postinelli.

Muchas gracias por tu gesto y ayuda.

Vere tu codigo, Mr. Roa me deja preocupado con la información que cmSay(), es una obsoleto.!!!

Muchas gracias y muchos saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby remtec » Mon Apr 05, 2021 11:10 pm

Hola Postinelli.

Revise tu código, esta super, muy claro y muy bien diseñado el formato.

Mil gracias por tu ayuda.

Saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby cmsoft » Tue Apr 06, 2021 1:37 am

Hola Antonio:
Creo que lo que dice Mr. Rao es que en lugar de usar oPrn:CmSay podrías usar los comandos @ PRINT
Son bastantes mas claros (al menos para mi)
Te dejo un ejemplo
Code: Select all  Expand view  RUN

#include "Report.ch"
**************************************************************
** Impresion del recibo de pagos
FUNCTION Recibo()
LOCAL oFont, oFont1, oPrn, nRow
   
   
DEFINE FONT oFont   NAME "ARIAL"       SIZE config:fon,config:fon*2.5
DEFINE FONT oFont1  NAME "CALIBRI"     SIZE config:fon*1.5,config:fon*4 BOLD
PRINT oPrn NAME "Recibo" PREVIEW MODAL
   oPrn:SetPortrait()
   oPrn:SetPage(9)
   PAGE           
       ** Con nRow puedes ir imprimiendo debajo de lo ultimo que imprimiste
       @ 2, 1 PRINT TO oPrn TEXT "Nombre de la Empresa" SIZE 9,1 CM FONT oFont1 ALIGN "C" LASTROW nRow
       ** 2, 1 es en 2 cm de margen superior y 1 cm del margen izquierdo
       ** SIZE 9,1 Quiere decir que el texto lo tiene que mostrar en 9 cms de ancho por 1 de alto
       ** ALING "C" te alinea el texto CENTRALIZADO (L: Left, R: Right) en los 9 cms que vos le indicaste
       ** Siempre con el tamaño del font que estes utilizando, eso es lo bueno...
       @ nRow, 01 PRINT TO oPrn TEXT "Domicilio Comercial:" SIZE 9,1 CM FONT oFont LASTROW nRow ALIGN "C"     
       @ nRow, 01 PRINT TO oPrn TEXT "Condicion de IVA"  SIZE 9,1 CM FONT oFont LASTROW nRow ALIGN "C"
       
    @ 5.5, 1   PRINT TO oPrn TEXT "C.U.I.T.:"   SIZE 3,.5 CM FONT oFont1 ALIGN "R"
    @ 5.5, 4.1 PRINT TO oPrn TEXT oQryPag:cuit SIZE 6,.5 CM FONT oFont ALIGN "L"
    @ 5.5, 9.5  PRINT TO oPrn TEXT "Razon Social:" SIZE 2.5,1 CM FONT oFont1 ALIGN "R"
    @ 5.5, 12.5 PRINT TO oPrn TEXT ALLTRIM(oQryPag:nombre) SIZE 8,1 CM FONT oFont LASTROW nRow ALIGN "L"  
        ** Etc. Etc.
        ** Tambien puedes poner imagenes
        @ 0.5,.5 PRINT TO oPrn IMAGE "logo.jpg" SIZE 6, 1 CM
   ENDPAGE
ENDPRINT
RETURN nil
 
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby nageswaragunupudi » Tue Apr 06, 2021 2:36 am

cmsoft wrote:Hola Antonio:
Creo que lo que dice Mr. Rao es que en lugar de usar oPrn:CmSay podrías usar los comandos @ PRINT
Son bastantes mas claros (al menos para mi)
Te dejo un ejemplo
Code: Select all  Expand view  RUN

#include "Report.ch"
**************************************************************
** Impresion del recibo de pagos
FUNCTION Recibo()
LOCAL oFont, oFont1, oPrn, nRow
   
   
DEFINE FONT oFont   NAME "ARIAL"       SIZE config:fon,config:fon*2.5
DEFINE FONT oFont1  NAME "CALIBRI"     SIZE config:fon*1.5,config:fon*4 BOLD
PRINT oPrn NAME "Recibo" PREVIEW MODAL
   oPrn:SetPortrait()
   oPrn:SetPage(9)
   PAGE           
       ** Con nRow puedes ir imprimiendo debajo de lo ultimo que imprimiste
       @ 2, 1 PRINT TO oPrn TEXT "Nombre de la Empresa" SIZE 9,1 CM FONT oFont1 ALIGN "C" LASTROW nRow
       ** 2, 1 es en 2 cm de margen superior y 1 cm del margen izquierdo
       ** SIZE 9,1 Quiere decir que el texto lo tiene que mostrar en 9 cms de ancho por 1 de alto
       ** ALING "C" te alinea el texto CENTRALIZADO (L: Left, R: Right) en los 9 cms que vos le indicaste
       ** Siempre con el tamaño del font que estes utilizando, eso es lo bueno...
       @ nRow, 01 PRINT TO oPrn TEXT "Domicilio Comercial:" SIZE 9,1 CM FONT oFont LASTROW nRow ALIGN "C"     
       @ nRow, 01 PRINT TO oPrn TEXT "Condicion de IVA"  SIZE 9,1 CM FONT oFont LASTROW nRow ALIGN "C"
       
    @ 5.5, 1   PRINT TO oPrn TEXT "C.U.I.T.:"   SIZE 3,.5 CM FONT oFont1 ALIGN "R"
    @ 5.5, 4.1 PRINT TO oPrn TEXT oQryPag:cuit SIZE 6,.5 CM FONT oFont ALIGN "L"
    @ 5.5, 9.5  PRINT TO oPrn TEXT "Razon Social:" SIZE 2.5,1 CM FONT oFont1 ALIGN "R"
    @ 5.5, 12.5 PRINT TO oPrn TEXT ALLTRIM(oQryPag:nombre) SIZE 8,1 CM FONT oFont LASTROW nRow ALIGN "L"  
        ** Etc. Etc.
        ** Tambien puedes poner imagenes
        @ 0.5,.5 PRINT TO oPrn IMAGE "logo.jpg" SIZE 6, 1 CM
   ENDPAGE
ENDPRINT
RETURN nil
 


Yes.
This is our recommendation.
These commands work for FWH1709.
cmSay() is obsolete.

We can use the commands to print multi-line text also in a given rectangle, aligned left, center, right, top, bottom, vertical center. ( default top-left)
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby remtec » Thu Apr 08, 2021 1:00 am

Mr. Roa.

Muchas gracias por su siempre ayuda y tiempo dedicado.

Me queda muy clara su información, se paso, probare lo que me sugiere.

Muchas gracias.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby remtec » Thu Apr 08, 2021 9:19 pm

cmsoft wrote:Hola Antonio:
Creo que lo que dice Mr. Rao es que en lugar de usar oPrn:CmSay podrías usar los comandos @ PRINT
Son bastantes mas claros (al menos para mi)
Te dejo un ejemplo
Code: Select all  Expand view  RUN

#include "Report.ch"
**************************************************************
** Impresion del recibo de pagos
FUNCTION Recibo()
LOCAL oFont, oFont1, oPrn, nRow
   
   
DEFINE FONT oFont   NAME "ARIAL"       SIZE config:fon,config:fon*2.5
DEFINE FONT oFont1  NAME "CALIBRI"     SIZE config:fon*1.5,config:fon*4 BOLD
PRINT oPrn NAME "Recibo" PREVIEW MODAL
   oPrn:SetPortrait()
   oPrn:SetPage(9)
   PAGE           
       ** Con nRow puedes ir imprimiendo debajo de lo ultimo que imprimiste
       @ 2, 1 PRINT TO oPrn TEXT "Nombre de la Empresa" SIZE 9,1 CM FONT oFont1 ALIGN "C" LASTROW nRow
       ** 2, 1 es en 2 cm de margen superior y 1 cm del margen izquierdo
       ** SIZE 9,1 Quiere decir que el texto lo tiene que mostrar en 9 cms de ancho por 1 de alto
       ** ALING "C" te alinea el texto CENTRALIZADO (L: Left, R: Right) en los 9 cms que vos le indicaste
       ** Siempre con el tamaño del font que estes utilizando, eso es lo bueno...
       @ nRow, 01 PRINT TO oPrn TEXT "Domicilio Comercial:" SIZE 9,1 CM FONT oFont LASTROW nRow ALIGN "C"     
       @ nRow, 01 PRINT TO oPrn TEXT "Condicion de IVA"  SIZE 9,1 CM FONT oFont LASTROW nRow ALIGN "C"
       
    @ 5.5, 1   PRINT TO oPrn TEXT "C.U.I.T.:"   SIZE 3,.5 CM FONT oFont1 ALIGN "R"
    @ 5.5, 4.1 PRINT TO oPrn TEXT oQryPag:cuit SIZE 6,.5 CM FONT oFont ALIGN "L"
    @ 5.5, 9.5  PRINT TO oPrn TEXT "Razon Social:" SIZE 2.5,1 CM FONT oFont1 ALIGN "R"
    @ 5.5, 12.5 PRINT TO oPrn TEXT ALLTRIM(oQryPag:nombre) SIZE 8,1 CM FONT oFont LASTROW nRow ALIGN "L"  
        ** Etc. Etc.
        ** Tambien puedes poner imagenes
        @ 0.5,.5 PRINT TO oPrn IMAGE "logo.jpg" SIZE 6, 1 CM
   ENDPAGE
ENDPRINT
RETURN nil
 


Hola Cesar.

Muchas gracias por tu ayuda.

Muchos saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby remtec » Thu Apr 08, 2021 9:20 pm

remtec wrote:
cmsoft wrote:Hola Antonio:
Creo que lo que dice Mr. Rao es que en lugar de usar oPrn:CmSay podrías usar los comandos @ PRINT
Son bastantes mas claros (al menos para mi)
Te dejo un ejemplo
Code: Select all  Expand view  RUN

#include "Report.ch"
**************************************************************
** Impresion del recibo de pagos
FUNCTION Recibo()
LOCAL oFont, oFont1, oPrn, nRow
   
   
DEFINE FONT oFont   NAME "ARIAL"       SIZE config:fon,config:fon*2.5
DEFINE FONT oFont1  NAME "CALIBRI"     SIZE config:fon*1.5,config:fon*4 BOLD
PRINT oPrn NAME "Recibo" PREVIEW MODAL
   oPrn:SetPortrait()
   oPrn:SetPage(9)
   PAGE           
       ** Con nRow puedes ir imprimiendo debajo de lo ultimo que imprimiste
       @ 2, 1 PRINT TO oPrn TEXT "Nombre de la Empresa" SIZE 9,1 CM FONT oFont1 ALIGN "C" LASTROW nRow
       ** 2, 1 es en 2 cm de margen superior y 1 cm del margen izquierdo
       ** SIZE 9,1 Quiere decir que el texto lo tiene que mostrar en 9 cms de ancho por 1 de alto
       ** ALING "C" te alinea el texto CENTRALIZADO (L: Left, R: Right) en los 9 cms que vos le indicaste
       ** Siempre con el tamaño del font que estes utilizando, eso es lo bueno...
       @ nRow, 01 PRINT TO oPrn TEXT "Domicilio Comercial:" SIZE 9,1 CM FONT oFont LASTROW nRow ALIGN "C"     
       @ nRow, 01 PRINT TO oPrn TEXT "Condicion de IVA"  SIZE 9,1 CM FONT oFont LASTROW nRow ALIGN "C"
       
    @ 5.5, 1   PRINT TO oPrn TEXT "C.U.I.T.:"   SIZE 3,.5 CM FONT oFont1 ALIGN "R"
    @ 5.5, 4.1 PRINT TO oPrn TEXT oQryPag:cuit SIZE 6,.5 CM FONT oFont ALIGN "L"
    @ 5.5, 9.5  PRINT TO oPrn TEXT "Razon Social:" SIZE 2.5,1 CM FONT oFont1 ALIGN "R"
    @ 5.5, 12.5 PRINT TO oPrn TEXT ALLTRIM(oQryPag:nombre) SIZE 8,1 CM FONT oFont LASTROW nRow ALIGN "L"  
        ** Etc. Etc.
        ** Tambien puedes poner imagenes
        @ 0.5,.5 PRINT TO oPrn IMAGE "logo.jpg" SIZE 6, 1 CM
   ENDPAGE
ENDPRINT
RETURN nil
 


Hola Cesar.

Deseo que estes muy bien.

Muchas gracias por tu ayuda.

Muchos saludos

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby cmsoft » Thu Apr 08, 2021 9:51 pm

Cualquier duda a tu disposicion!!
Saludos Antonio!
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Ayuda Imprimir Liquidacion de Sueldo

Postby remtec » Thu Apr 08, 2021 10:45 pm

Hola Cesar

Tengo una duda, en el código que me proporciono Mr. Roa, como puedo habilitar el Icono de Excel?

Muchas gracias por toda la ayuda

Muchos saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 76 guests