Jump to content
Fivewin Brasil

Carnet de pagamento


crisvam

Recommended Posts

Colegas,

Alguem tem uma dica de como gerar carnet de pagamento e imprimir para um número qualquer de prestações.

A impressão no modelo A4 (pode caber mais de uma via na mesma página) e se não couber em uma página, continuar a impressão em outra página.

Se alguém tem uma rotina que faça isso e poder nos ajudar, agradeceria muito.

Claro que se for necessário poderemos combinar um valor.

Link to comment
Share on other sites

Colegas,

Alguem tem uma dica de como gerar carnet de pagamento e imprimir para um número qualquer de prestações.

A impressão no modelo A4 (pode caber mais de uma via na mesma página) e se não couber em uma página, continuar a impressão em outra página.

Se alguém tem uma rotina que faça isso e poder nos ajudar, agradeceria muito.

Claro que se for necessário poderemos combinar um valor.

Crisvam,

Boa noite

O seu sistema de boleto não imprime no modo carnê? Eu não uso o AcbrBoleto parece que tem essa opção e é muito fácil a geração do arquivo e por sua vez a impressão e mais é de grátis. ahuahuahua

[]s,

Link to comment
Share on other sites

Ola Crisvam.

Mesmo que faça isso sem usar o FastReport, conforme a dica do Evandro, creio que não seja muito complicado... tenho uma rotina em Clipper que imprime em matricial

se lhe ajudar posso enviar sem problema!

Att.

Everton

Muito grato Everton, em clipper puro eu também tenho uma. Eu estou apanhando é com a classe Tprinter. Meus clientes, a maioria de Eletro eletronico,possui um sistema de financiamento por carnet e eles já tem um modelo proprio que querem automatizar. O problema não é o lay out, mas sim, conseguir imprimir numa folha A4 e em mais de uma página. Por exemplo: Cabe três carnet numa folha, mas as vezes é preciso imprimir em até 12 prestações e conseguir imprimir em páginas diferentes.

Link to comment
Share on other sites

Bom, acho que isso pode te ajudar, a lógica é muito simples. É um código que uso para impressão em térmica, mas lá tambem tem o lance de página.

      
         select (_cConArq ) // aqui é um arquivo que tem as parcelas
         go top
         
         V_cImpCod := CONT_PART

         select CliFor
         set order to 01
         go top

         if dbseek(V_cImpCod )                         ///  Aqui pego os dados do cliente...
            cNomeCliCarne := alltrim(PES_RAZA )
            cEndereco1    := alltrim(left(PES_RUAA,30 ) )
				cEndereco2    := alltrim(substr(PES_RUAA,31,30 ) )
				cNumeroCasa   := PES_NUME
				cBairroCli    := PES_BAIR
				cCidadeCli    := PES_CIDA
                                MesAni        := month(PES_NASC)
                                DDataAni      := PES_NASC
         endif
         dbSelectArea((_cConArq ) )     // aqui seto o arquivo temporário que tem as parcelas da venda
         PRINT oPrinter FROM USER _xImpCarne;
         Name "impressão de carne" 
         
         oFont := TFont():New("ARIAL",0,-9,,,,,,,,,,,,,oPrinter,)
         oFont1 := TFont():New("ARIAL",0,-10,,.T.,,,,,,,,,,,oPrinter,)
         oFont2 := TFont():New("ARIAL",0,-12,,,,,,,,,,,,,oPrinter,)
         oFont3 := TFont():New("ARIAL",0,-14,,.T.,,,,,,,,,,,oPrinter,)

         CursorWait()

         nRow := 5
         nCol := 5
         nContador := 1
         cNomeRelatorio := "Carnê " + V_cImpCod

         *oPrinter:SetPage(6)
         oPrinter:StartPage()
         *
         nContador := 1
         while !eof()  // aqui faço até que tem coisa dentro do do arquivo.. mas se usar um vetor, ai.. bom acho 
                       // ai tu se vira!!! qqer coisa te ajudo na lógica.
            nRow += 50
            oPrinter:Say(nRow,nCol,"Parcela nº....:",oFont1)
            oPrinter:Say(nRow,nCol + 230,left(CONT_SEQU,8) + "/" + right(alltrim(CONT_SEQU ),2 ),oFont)
            nRow += 45

            oPrinter:Say(nRow,nCol,"Vencimento.:",oFont1)
            oPrinter:Say(nRow,nCol + 210,dtoc(CONT_VCTO),oFont)
            nRow += 45
            oPrinter:Say(nRow,nCol,"Valor R$.......:",oFont1)
            oPrinter:Say(nRow,nCol + 220,transform(CONT_ORIG,"@E 99,999.99" ),oFont)
            nRow += 45
            *
            if CONT_VCTO == date()
               oPrinter:Say(nRow,nCol,"**  Recebida em...: " + DTOS( date() ), oFont)
            else
               oPrinter:Say(nRow,nCol,"Pago em.......:  _____/_____/_____",oFont1)
            endif
            *
            nRow += 45
            nRow += 15

            oPrinter:Say(nRow,nCol,"----------------------------------------------------------",oFont2)
            nContador ++
            *
            if nContador == 8 // Aqui vc controla o numero de linhas ou numero de parcelas (Carnet) impressas.. Quando 
                              // chegar no limite da folha, "fecha" ela e "abre' outra e continua a impressão.
               oPrinter:endPage()
               oPrinter:StartPage()
               nCcontador := 1
               nRow       := 1
               nCol       := 1
            endif
				*
            dbSkip(1)
         enddo
         nRow += 300
         oPrinter:Say(nRow,nCol,"",oFont)
         CursorArrow()
         oPrinter:EndPage()
         oPrinter:end()
      	*	

Att.

Everton

Link to comment
Share on other sites

Bom, acho que isso pode te ajudar, a lógica é muito simples. É um código que uso para impressão em térmica, mas lá tambem tem o lance de página.

      
         select (_cConArq ) // aqui é um arquivo que tem as parcelas
         go top
         
         V_cImpCod := CONT_PART

         select CliFor
         set order to 01
         go top

         if dbseek(V_cImpCod )                         ///  Aqui pego os dados do cliente...
            cNomeCliCarne := alltrim(PES_RAZA )
            cEndereco1    := alltrim(left(PES_RUAA,30 ) )
				cEndereco2    := alltrim(substr(PES_RUAA,31,30 ) )
				cNumeroCasa   := PES_NUME
				cBairroCli    := PES_BAIR
				cCidadeCli    := PES_CIDA
                                MesAni        := month(PES_NASC)
                                DDataAni      := PES_NASC
         endif
         dbSelectArea((_cConArq ) )     // aqui seto o arquivo temporário que tem as parcelas da venda
         PRINT oPrinter FROM USER _xImpCarne;
         Name "impressão de carne" 
         
         oFont := TFont():New("ARIAL",0,-9,,,,,,,,,,,,,oPrinter,)
         oFont1 := TFont():New("ARIAL",0,-10,,.T.,,,,,,,,,,,oPrinter,)
         oFont2 := TFont():New("ARIAL",0,-12,,,,,,,,,,,,,oPrinter,)
         oFont3 := TFont():New("ARIAL",0,-14,,.T.,,,,,,,,,,,oPrinter,)

         CursorWait()

         nRow := 5
         nCol := 5
         nContador := 1
         cNomeRelatorio := "Carnê " + V_cImpCod

         *oPrinter:SetPage(6)
         oPrinter:StartPage()
         *
         nContador := 1
         while !eof()  // aqui faço até que tem coisa dentro do do arquivo.. mas se usar um vetor, ai.. bom acho 
                       // ai tu se vira!!! qqer coisa te ajudo na lógica.
            nRow += 50
            oPrinter:Say(nRow,nCol,"Parcela nº....:",oFont1)
            oPrinter:Say(nRow,nCol + 230,left(CONT_SEQU,8) + "/" + right(alltrim(CONT_SEQU ),2 ),oFont)
            nRow += 45

            oPrinter:Say(nRow,nCol,"Vencimento.:",oFont1)
            oPrinter:Say(nRow,nCol + 210,dtoc(CONT_VCTO),oFont)
            nRow += 45
            oPrinter:Say(nRow,nCol,"Valor R$.......:",oFont1)
            oPrinter:Say(nRow,nCol + 220,transform(CONT_ORIG,"@E 99,999.99" ),oFont)
            nRow += 45
            *
            if CONT_VCTO == date()
               oPrinter:Say(nRow,nCol,"**  Recebida em...: " + DTOS( date() ), oFont)
            else
               oPrinter:Say(nRow,nCol,"Pago em.......:  _____/_____/_____",oFont1)
            endif
            *
            nRow += 45
            nRow += 15

            oPrinter:Say(nRow,nCol,"----------------------------------------------------------",oFont2)
            nContador ++
            *
            if nContador == 8 // Aqui vc controla o numero de linhas ou numero de parcelas (Carnet) impressas.. Quando 
                              // chegar no limite da folha, "fecha" ela e "abre' outra e continua a impressão.
               oPrinter:endPage()
               oPrinter:StartPage()
               nCcontador := 1
               nRow       := 1
               nCol       := 1
            endif
				*
            dbSkip(1)
         enddo
         nRow += 300
         oPrinter:Say(nRow,nCol,"",oFont)
         CursorArrow()
         oPrinter:EndPage()
         oPrinter:end()
      	*	

Att.

Everton

Grato Everton, vou fazer um teste

Link to comment
Share on other sites

João Santos,

Anexo o lay out do carnet

O que falta é uma forma de imprimir 3/4 copia numa página e se não couber em uma página prosseguir na próxima.

Não vejo nenhuma dificuldade em fazer isso usando a PRINTER.PRG acho que cabe 3 folhas do carnê em folha formato A-4, basta controlar o numero de linhas e mandar pular a pagina quando o numero de linhas for >= nLinhas.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...