Page 1 of 1

ENDPAGE( 0 )

Posted: Wed Apr 09, 2025 4:11 pm
by karinha
Buenas tardes, alguna idea de qué podría causar este error en PRINTER.PRG al imprimir?

Code: Select all | Expand

   Called from:  => ENDPAGE( 0 )
   Called from: PRINTER.prg => PAGEEND( 0 )
   Called from: LIMPJARD.prg => IMPRIMIR_ESCOPOS_LIMP( 4391 )
   Called from: LIMPJARD.prg => PEGA_DADOS_LIMP_IMPRESSAO( 2851 )
   Called from: LIMPJARD.prg => (b)IMP_TIPO_IMPRESSAO_LIMPEZA( 1227 )
   Called from: WINORCAM.prg => MAIN( 1281 )
Gracias, tks.

Re: ENDPAGE( 0 )

Posted: Wed Apr 09, 2025 10:20 pm
by cmsoft
Que hace la linea IMPRIMIR_ESCOPOS_LIMP( 4391 ) y PEGA_DADOS_LIMP_IMPRESSAO( 2851 )?

Re: ENDPAGE( 0 )

Posted: Thu Apr 10, 2025 12:14 am
by cnavarro
Estimado Joao
Comprueba que los PAGE ... ENDPAGE están sincronizados, puede ser que tengas algún ENDPAGE que sobre

Re: ENDPAGE( 0 )

Posted: Thu Apr 10, 2025 1:43 pm
by karinha
Maestros, no encuentro ningún error en este informe, aparentemente es perfecto.

Code: Select all | Expand

// IMPRESSAO DOS PRODUTOS DA LIMPEZA DE JARDIM
FUNCTION IMPRIMIR_ESCOPOS_LIMP( DeOndePartiu, oDlgBtn )

   LOCAL oPrn, nMargin, nWidth, nColWidth, nRow, nCol, oImage
   LOCAL XDATALISTA, cAlias, cMemoria
   LOCAL oFont, oFontLogo, oFontDivi, oFontList, oFontCurs, oPen1, oPen2, ;
      oPen3, oFontSubl, ResLinha, ResColuna, cProposta, nLinha, nColuna, ;
      oFontBold, nTotalParc := 0.00, nTotalGeral := 0.00, nTotalProdu
   LOCAL nPulaLinha, oFontMin, oFontSub2, nPagina, oFontRua, nItem
   LOCAL cSublin, cImpSub, cFile // := "C:\ORCAMPDF\CHAMADO.PDF"

   PRIVATE WE1, WE2, WE3, LARGEXTEN2
   PUBLIC nValorVenda

   STOR SPAC( 70 ) TO WE1, WE2, WE3

   cFile := "C:\ORCAMPDF\" + "ORCAM" + ALLTRIM( nProposta ) + ".PDF"

   XDATALISTA := "São Paulo" + ", " + LTRIM( STR( DAY( DATE() ) ) )  + ;
                 " de "             + OemToAnsi( CMONTH( DATE() ) )  + ;
                 " de "             + LTRIM( STR( YEAR( DATE() ) ) ) + "."

   HB_GCALL( .F. ) // PARA LIMPAR A MEMORIA

   LCHDIR( cDirPleno )
   SET DEFAULT TO

   aPrn := GetPrinters()  // 02/08/2017 Teste para ver se avisa erro.

   IF Empty( aPrn ) // Empty( oPrn:hDC )
      MsgStop( "Nenhuma Impressora Encontrada", "Nenhuma Impressora Encontrada" )
      RETURN NIL
   ENDIF

   PRINTER oPrn PREVIEW MODAL // PARA TESTAR A IMPRESSORA ANTES DE IMPRIMIR

   IF EMPTY( oPrn:hDC ) // MODIFICADO EM: 05/05/2015 - Quebrou na Gilmaria.
      MsgInfo( "ALGUMA COISA OCORREU DE ERRADO COM A IMPRESSORA.", "LIGUE A IMPRESSORA." )
      oPrn:End()
      RETURN( .F. )
   ENDIF

   oPrn:End()

   IF .NOT. NETERR()

      SELECT( DBRECOMPOS )

   ELSE

      MsgInfo( "ERRO DE REDE. Verifique!", "Confirma " )

      LIBERA_TUDO()

      RETURN NIL

   ENDIF

   cProposta := nProposta  // PARA O INDICE TEMPORARIO TEM QUE SER ASSIM.

   INDEX ON PROPOCOD TAG 04 TO ORCATEMP FOR ( .NOT. EOF() ) .AND. ;
      ( DBRECOMPOS )->PROPOCOD >= cProposta                 .AND. ;
      ( DBRECOMPOS )->PROPOCOD <= cProposta MEMORY // TEMPORARY

   GO TOP

   IF EOF()

      MsgStop( OemToAnsi( "Nenhuma Proposta Localizada Para ImpressÆo" ), ;
               OemToAnsi( "Nenhuma Proposta Localizada Para ImpressÆo" ) )

      RETURN NIL

   ENDIF

   cAlias := ALIAS()

   oImage := ".\LOGO.jpg"  // tem que estar na pasta do plenoind

   IF DeOndePartiu = "DIRETONAIMP"         // DIRETO NA IMPRESSORA

      PRINT oPrn NAME "LIMPEZA_JARDIM"     // DIRETO NA IMP.

   ELSEIF DeOndePartiu = "COMPREVIEWFIVE"  // COM PREVIEW(Visualizacao)

      PRINT oPrn NAME "LIMPEZA_JARDIM" PREVIEW MODAL

   ELSEIF DeOndePartiu = "COMPREVIEWPDF"   // GERAR O ARQUIVO PDF.

      PRINT oPrn PREVIEW

   ENDIF

   DEFINE FONT oFontRua  NAME "Courier New" SIZE 0, - 10                OF oPrn
   DEFINE FONT oFontMin  NAME "Courier New" SIZE 0, - 10 BOLD           OF oPrn
   DEFINE FONT oFont     NAME "Courier New" SIZE 0, - 12                OF oPrn
   DEFINE FONT oFontBold NAME "Courier New" SIZE 0, - 12 BOLD           OF oPrn
   DEFINE FONT oFontSubl NAME "Courier New" SIZE 0, - 12 BOLD UnderLine OF oPrn
   DEFINE FONT oFontSub2 NAME "Courier New" SIZE 0, - 12 BOLD UnderLine OF oPrn

   //-> Caneta do Preview
   DEFINE PEN oPen1 WIDTH 4 COLOR CLR_BROWN OF oPrn
   DEFINE PEN oPen2 WIDTH 2 COLOR CLR_BROWN OF oPrn
   DEFINE PEN oPen3 WIDTH 5 COLOR CLR_BLACK OF oPrn
 
   oPrn:SetPage( 9 )   //-> A4 //9
   oPrn:SetPortrait()  //-> Vertical(Retrato)

   //- Como Imprimir em Centimetros sem errar e em qualquer Impressora
   ResLinha  := oPrn:nLogPixely()/2.54
   ResColuna := oPrn:nLogPixelx()/2.54

   nMargin   := Int( 0.1 * oPrn:nHorzRes() )
   nWidth    := 8 * nMargin
   nColWidth := Int( ( nWidth - nMargin ) / 2 )
   nPagina   := 1

   PAGE

   nRow      :=   1.50  // Linha
   nCol      := 650.00  // Coluna do Logo.jpg

   @  nLinLogo, nColLogo PRINT TO oPrn IMAGE "LOGO.JPG" SIZE nLargLogo, nAltLogo LASTROW nRow

   nLinha  := 1.00
   nColuna := 18.00

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                        ;
      OemToAnsi( "P g.: " + ALLTRIM( STRZERO( nPagina, 2 ) ) ), oFont, ,    ;
      CLR_BLACK, , PAD_CENTER )

   nLinha  := 3.00  // era 2.50

   IF LEN( ALLTRIM( nProposta ) ) = 1
      nColuna := 4.35
   ELSEIF LEN( ALLTRIM( nProposta ) ) = 2
      nColuna := 4.45
   ELSEIF LEN( ALLTRIM( nProposta ) ) = 3
      nColuna := 4.55
   ELSEIF LEN( ALLTRIM( nProposta ) ) = 4 // OK
      nColuna := 4.65
   ELSEIF LEN( ALLTRIM( nProposta ) ) = 5 // OK
      nColuna := 4.75
   ELSEIF LEN( ALLTRIM( nProposta ) ) = 6 // OK
      nColuna := 4.85   // 5.00 -.15
   ELSEIF LEN( ALLTRIM( nProposta ) ) = 7 // OK
      nColuna := 4.95
   ELSEIF LEN( ALLTRIM( nProposta ) ) = 8 // OK
      nColuna := 5.05
   ELSEIF LEN( ALLTRIM( nProposta ) ) = 9 // OK
      nColuna := 5.15
   ELSEIF LEN( ALLTRIM( nProposta ) ) = 10 // OK
      nColuna := 5.25
   ELSE
      nColuna := 5.35
   ENDIF

   oPrn:Say( nLinha * ResLinha,  nColuna * ResColuna,                    ;
      "Orçamento Nº.: " + ALLTRIM( nProposta ), oFont, ,                 ;
      CLR_BLACK, , PAD_CENTER )

   oPrn:cmSay( nLinha, 19.00, "" + XDATALISTA, oFontRua, , CLR_BLACK, , PAD_RIGHT )

   nLinha  := nLinha += 0.80

   IF LEN( ALLTRIM( STR( nClienCod ) ) ) = 1
      nColuna := 7.48    // 7.50
   ELSEIF LEN( ALLTRIM( STR( nClienCod ) ) ) = 2
      nColuna := 7.58   // 7.60
   ELSEIF LEN( ALLTRIM( STR( nClienCod ) ) ) = 3
      nColuna := 7.68  // 7.70
   ELSEIF LEN( ALLTRIM( STR( nClienCod ) ) ) = 4 // OK
      nColuna := 7.78   // 7.80
   ELSEIF LEN( ALLTRIM( STR( nClienCod ) ) ) = 5
      nColuna := 7.83   // 7.85
   ELSEIF LEN( ALLTRIM( STR( nClienCod ) ) ) = 6
      nColuna := 7.93  // 7.95
   ELSEIF LEN( ALLTRIM( STR( nClienCod ) ) ) = 7
      nColuna := 8.03  // 8.05
   ELSEIF LEN( ALLTRIM( STR( nClienCod ) ) ) = 8
      nColuna := 8.13  // 8.15
   ELSEIF LEN( ALLTRIM( STR( nClienCod ) ) ) = 9
      nColuna := 8.23  // 8.25
   ELSEIF LEN( ALLTRIM( STR( nClienCod ) ) ) = 10
      nColuna := 8.33  // 8.35
   ENDIF

   oPrn:Say( nLinha * ResLinha,  nColuna * ResColuna,                    ;
      + "CÓD.: " + ALLTRIM( STR( nClienCod ) ) + " - " + ClienPropo,     ;
      oFontRua, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.50
   nColuna :=  6.40 // 6.55

   oPrn:Say( nLinha * ResLinha,  nColuna * ResColuna,                    ;
      + EnderPropo, oFontRua, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.50
   nColuna :=  5.15  // 5.30

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                     ;
      "BAIRRO: " + BairrPropo, oFontRua, , CLR_BLACK, , PAD_CENTER )

   nColuna := nColuna += 6.50  // 5.05

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                     ;
      "CIDADE: " + CidadPropo, oFontRua, , CLR_BLACK, , PAD_CENTER )

   nColuna := nColuna +=   4.50

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                     ;
      "UF: " + UFdaPropo, oFontRua, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.60
   nColuna :=  2.85   // 2.95

   oPrn:Say(  nLinha * ResLinha, nColuna * ResColuna,                    ;
      "Att.: ", oFontRua, , CLR_BLACK, , PAD_CENTER )

   nColuna := 7.10

   oPrn:Say(  nLinha * ResLinha, nColuna * ResColuna,                    ;
      + cContatoCli, oFontRua, , CLR_BLACK, , PAD_CENTER )

   cOrcamento  := "REF.: " // + cTPSerNome  // NOME DO SERVICO

   nLinha := nLinha += 1.00
   nColuna :=  2.95 // "REF.:"   // 3.10

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                     ;
      + cOrcamento, oFontBold, , CLR_BLACK, , PAD_CENTER )

   nColuna :=  7.70  // 7.70

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                     ;
      + cTPSerNome, oFontBold, , CLR_BLACK, , PAD_CENTER )

   cSublin := "REF.: " + ALLTRIM( cTPSerNome ) // TIRAR BRANCOS P/ENCAIXAR
   cImpSub := LEN( cSublin ) + 1.2              // PARA SUBLINHADO.

   nLinha  := nLinha += 0.05 // Tiro os Brancos e Encaixo embaixo o SUBLINHADO
   nColuna := 2.20  // - 2.35 -.15

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
      REPLICATE( "_", cImpSub ), oFontBold , , CLR_BLACK, , PAD_LEFT )

   cConforme1 := "Conforme solicitação segue proposta abaixo:                                            "

   nLinha  := nLinha += 0.80
   nColuna := 13.20  // -.15

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
      + cConforme1, oFont, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.80
   nColuna :=  5.35

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
      + "01. ESCOPO DOS TRABALHOS:", oFontSub2, , CLR_BLACK, , PAD_CENTER )

   // PODAS AQUI
   nLinha  := nLinha += 0.60
   nColuna := 10.05  // 10.15 -.10

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
      + cPodas1, oFont, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.50
   nColuna := 10.05

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
      + cPodas2, oFont, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.50
   nColuna := 10.05

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
      + cPodas3, oFont, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.50
   nColuna := 10.05

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
      + cPodas4, oFont, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.50
   nColuna := 10.05

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
      + cPodas5, oFont, , CLR_BLACK, , PAD_CENTER )

   IF .NOT. EMPTY( cPodas6 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas6, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas7 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas7, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas8 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas8, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas9 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas9, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas10 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas10, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas11 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas11, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas12 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas12, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas13 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas13, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas14 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas14, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas15 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas15, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas16 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas16, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas17 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas17, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas18 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas18, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas19 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas19, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas20 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas20, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas21 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas21, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas22 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas22, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas23 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas23, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas24 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas24, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas25 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas25, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas26 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas26, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas27 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas27, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas28 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas28, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas29 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas29, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas30 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas30, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cPodas31 )

      nLinha  := nLinha += 0.50
      nColuna := 10.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
         + cPodas31, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF nLinha >= 23.00 // PARA AS OBSERVACOES

      nLinha  := 27.00
      nColuna := 10.50

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
         + OemToAnsi( "Rua Fl¢rio, 271 Ch cara Mafalda-SÆo Paulo-SP CEP: 03372-050 Tel: 2674-3173 www.ambienty.com.br" ), ;
         oFontMin, , CLR_GREEN, , PAD_CENTER )

      ENDPAGE

      PAGE  // NOVA PAGINA

      // oPrn:SayImage( nLinLogo, nColLogo, "LOGO.JPG", nLargLogo, nAltLogo )
      @  nLinLogo, nColLogo PRINT TO oPrn IMAGE "LOGO.JPG" SIZE nLargLogo, nAltLogo LASTROW nRow

      ++nPagina

      nLinha  := 1.00
      nColuna := 18.00 // 17.50

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                        ;
         OemToAnsi( "P g.: " + ALLTRIM( STRZERO( nPagina, 2 ) ) ), oFont, ,    ;
         CLR_BLACK, , PAD_CENTER )

      nLinha  := 3.00  // 23 Linhas

   ELSE

      nLinha := nLinha += 0.70 // MUDEI EM: 23/09/2021 - Joao.

   ENDIF

   nTotalProdu := 0.00

   GO TOP

   WHILE( .NOT. EOF() )

      SYSREFRESH()

      nTotalProdu := nTotalProdu + ( cAlias )->VRVENDA *  ;
                                   ( cAlias )->PRODUQTDE

      SKIP

   ENDDO

   IF( nTotalProdu ) > 0.00
      lLigaProduto := .T.
   ENDIF

   GO TOP

   IF lLigaProduto // := .F.   // STATIC NO INICIO DO MODULO

      IF lImpFonte12 // := .T. // COURIER NEW 12 - 07/10/2021 Implementei.

         nColuna :=  2.10  // 3.20

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "C¢digo:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna :=  5.05 // 5.84

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Produto:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna := 11.90

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Un:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna := 13.20  // 13.10

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Qtd:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna := 15.30

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Valor Un:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna := 18.70  // 18.30

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Total:" ), oFont,, CLR_BLACK,, PAD_CENTER )

      ELSE // COURIR NEW 10 - 07/10/2021 - Joao

         nColuna :=  3.25

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "C¢digo:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna :=  5.84 // 5.84

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Produto:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna := 11.75

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Un:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna := 13.20

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Qtd:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna := 15.30

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Valor Un:" ), oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna := 18.70

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + OemToAnsi( "Total:" ), oFont,, CLR_BLACK,, PAD_CENTER )

      ENDIF

      nLinha  := nLinha += 0.60  // LINHA DOS PRODUTOS

   ENDIF

   GO TOP

   WHILE( .NOT. EOF() )

      SYSREFRESH()

      IF ( cAlias )->PRODUNOME = SPACE( 30 )  // NAO MOSTRA O PRODUTO

         SKIP

         LOOP

      ENDIF

      IF lImpFonte12 // := .T. // COURIER NEW 12

         nColuna :=   2.50 // 3.35

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
                   + ( cAlias )->PRODUCOD, oFont,, CLR_BLACK,, PAD_CENTER )

         nColuna :=  7.80 // 8.00 - Estava oFontRua

         // ESCOPO DOS TRABALHOS AQUI. PRODUTOS DA LIMPEZA
         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + ( cAlias )->PRODUNOME, oFont, , CLR_BLACK, , PAD_CENTER )

         nColuna :=  13.00  // 12.50

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
             + ( cAlias )->PRODUUNID, oFont, , CLR_BLACK, , PAD_CENTER )

         nColuna :=  13.70

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + ALLTRIM( TRANS( ( cAlias )->PRODUQTDE, "@ 99999" ) ),             ;
            oFont,, CLR_BLACK,, PAD_RIGHT  )

         nColuna := 16.40  // 16.00

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + ALLTRIM( TRANS( ( cAlias )->VRVENDA, "@E 99,999.99" ) ),          ;
            oFont,, CLR_BLACK,, PAD_RIGHT  )

         nColuna := 19.50   // 19.05

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + ALLTRIM( TRANS( ( cAlias )->VRTOTAL, "@E 9,999,999.99" ) ),       ;
            oFont,, CLR_BLACK,, PAD_RIGHT  )

      ELSE // COURIER NEW 10

         nColuna :=   3.40 // 3.35

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
                   + ( cAlias )->PRODUCOD, oFontRua,, CLR_BLACK,, PAD_CENTER )

         nColuna :=  8.00

         // ESCOPO DOS TRABALHOS AQUI. PRODUTOS DA LIMPEZA
         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + ( cAlias )->PRODUNOME, oFontRua, , CLR_BLACK, , PAD_CENTER )

         nColuna :=  12.50  // 12.50

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
             + ( cAlias )->PRODUUNID, oFontRua, , CLR_BLACK, , PAD_CENTER )

         nColuna :=  13.70

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + ALLTRIM( TRANS( ( cAlias )->PRODUQTDE, "@ 99999" ) ),             ;
            oFontRua,, CLR_BLACK,, PAD_RIGHT  )

         nColuna := 16.30

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + ALLTRIM( TRANS( ( cAlias )->VRVENDA, "@E 99,999.99" ) ),          ;
            oFontRua,, CLR_BLACK,, PAD_RIGHT  )

         nColuna := 19.50

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
            + ALLTRIM( TRANS( ( cAlias )->VRTOTAL, "@E 9,999,999.99" ) ),       ;
            oFontRua,, CLR_BLACK,, PAD_RIGHT  )

      ENDIF // FIM DA COURIER NEW 10

      SKIP

      IF nLinha >= 23.00 // PARA AS OBSERVACOES/ ACHO QUE ENTRARA NO WHILE DOS PRODUTOS

         nLinha  := 27.00
         nColuna := 10.50

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
            + OemToAnsi( "Rua Fl¢rio, 271 Ch cara Mafalda-SÆo Paulo-SP CEP: 03372-050 Tel: 2674-3173 www.ambienty.com.br" ), ;
            oFontMin, , CLR_GREEN, , PAD_CENTER )

         ENDPAGE

         PAGE  // NOVA PAGINA

         // CONFIGURACAO ESTA EM: AMBLOGO.DBF
         // oPrn:SayImage( nLinLogo, nColLogo, "LOGO.JPG", nLargLogo, nAltLogo )
         @  nLinLogo, nColLogo PRINT TO oPrn IMAGE "LOGO.JPG" SIZE nLargLogo, nAltLogo LASTROW nRow

         ++nPagina

         nLinha  := 1.00
         nColuna := 18.00   // 18.00

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                     ;
            OemToAnsi( "P g.: " + ALLTRIM( STRZERO( nPagina, 2 ) ) ), oFont, , ;
            CLR_BLACK, , PAD_CENTER )

         nLinha  := 3.00

      ENDIF

      nLinha  := nLinha += 0.50

   ENDDO

   cProdutos := "Produtos:    "

   IF lLigaProduto // := .F.   // SE TIVER PRODUTOS

      IF nLinha # 3.00

         nLinha  := nLinha += 0.40

      ENDIF

      nColuna := 4.00

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
         + cProdutos, oFont, , CLR_BLACK, , PAD_CENTER )

      nColuna := 4.70   // 4.60

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
         REPLICATE( ".", 046 ), oFont, , CLR_BLACK, , PAD_LEFT )

      nColuna := 15.56

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
         + " ", oFont, , CLR_BLACK, , PAD_CENTER )

      nColuna := 19.50

      IF lImpFonte12 // := .T. // COURIER NEW 12 - 07/10/2021 Implementei.

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
            + ALLTRIM( TRANS( nTotalProdu, "@E 9,999,999.99" ) ),            ;
            oFont, , CLR_BLACK, , PAD_RIGHT  )

      ELSE

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
            + ALLTRIM( TRANS( nTotalProdu, "@E 9,999,999.99" ) ),            ;
            oFontRua, , CLR_BLACK, , PAD_RIGHT  )

      ENDIF

   ENDIF

   cMaoObra := "Mão de Obra: "

   IF( nVrUnSer ) > 0.00

      nLinha  := nLinha += 0.50
      nColuna := 4.00

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cMaoObra, oFont, , CLR_BLACK, , PAD_CENTER )

      nColuna := 5.45

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         REPLICATE( ".", 043 ), oFont, , CLR_BLACK, , PAD_LEFT )

      nColuna := 15.56

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + " ", oFont, , CLR_BLACK, , PAD_CENTER )

      nColuna := 19.50

      IF lImpFonte12 // := .T. // COURIER NEW 12 - 07/10/2021 Implementei.

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
            + ALLTRIM( TRANS( nVrUnSer, "@E 9,999,999.99" ) ),               ;
            oFont, , CLR_BLACK, , PAD_RIGHT  )

      ELSE

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
            + ALLTRIM( TRANS( nVrUnSer, "@E 9,999,999.99" ) ),               ;
            oFontRua, , CLR_BLACK, , PAD_RIGHT  )

      ENDIF

   ENDIF

   IF nDesconto > 0.00

      nLinha  := nLinha += 0.50
      nColuna := 3.60

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + OemToAnsi( "Desconto: " ), oFont, , CLR_BLACK, , PAD_CENTER )

      nColuna := 4.65

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         REPLICATE( ".", 046 ), oFont, , CLR_BLACK, , PAD_LEFT )

      nColuna := 19.50

      IF lImpFonte12 // := .T. // COURIER NEW 12 - 07/10/2021 Implementei.

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
            + ALLTRIM( TRANS( nDesconto, "@E 999,999.99" ) ),                ;
            oFont, , CLR_BLACK, , PAD_RIGHT  )

      ELSE

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
            + ALLTRIM( TRANS( nDesconto, "@E 999,999.99" ) ),                ;
            oFontRua, , CLR_BLACK, , PAD_RIGHT  )

      ENDIF

      nValorTotal := 0.00
      nDesconto   := 0.00  // INCLUIDO EM: 04/09/2019
      nTotalNfe   := 0.00

      GO TOP

      WHILE( .NOT. EOF() )

         SYSREFRESH()

         nDesconto := nDesconto + VRDESCONTO

         SKIP

      ENDDO

      GO TOP

      WHILE( .NOT. EOF() )

         SYSREFRESH()

         nTotalNfe := nTotalNfe + ( cAlias )->VRVENDA   * ;
                                  ( cAlias )->PRODUQTDE + ;
                                  ( cAlias )->VRUNSER

         SKIP

      ENDDO

      nValorTotal := nTotalNfe - nDesconto   // - nDesconto // somente se a Fernanda disser que sim

   ENDIF

   nLinha  := nLinha += 1.00
   nColuna := 3.45

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                         ;
      + OemToAnsi( "02. TOTAL:" ), oFontSub2, , CLR_BLACK, , PAD_CENTER )

   nVal   := nValorTotal   // lDin

   EXTENSO( nVal, 50, WE1, WE2, WE3 )

   nLinha  := nLinha += 0.70
   nColuna := 3.60  // 3.75

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                         ;
      + OemToAnsi( "R$ " ), oFont, , CLR_BLACK, , PAD_CENTER )

   nColuna := nColuna += 0.60

   IF WE2 # SPACE( 50 )

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + ALLTRIM( TRANS( nValorTotal, "@E 999,999,999.99" ) ) + " (" +     ;
         ALLTRIM( WE1 ), oFont, , CLR_BLACK, , PAD_LEFT )

      IF WE2 # SPACE( 50 )

         nLinha  := nLinha  += 0.50
         nColuna := nColuna += 2.60

         IF WE3 = SPACE( 50 )

            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
               + ALLTRIM( WE2 ) + ").", oFont, , CLR_BLACK, , PAD_LEFT )

         ELSE

            oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                ;
               + ALLTRIM( WE2 ), oFont, , CLR_BLACK, , PAD_LEFT )

         ENDIF

      ENDIF

      IF WE3 # SPACE( 50 )

         nLinha  := nLinha  += 0.50
         nColuna := nColuna += 2.60

         oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                   ;
            + ALLTRIM( WE3 ) + ").", oFont, , CLR_BLACK, , PAD_LEFT )

      ENDIF

   ELSE // - < QUE 50 CARACTERES.

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + ALLTRIM( TRANS( nValorTotal, "@E 999,999,999.99" ) ) + " (" +     ;
         ALLTRIM( WE1 ) + ").", oFont, , CLR_BLACK, , PAD_LEFT )

   ENDIF

   IF nLinha >= 23.00 // PARA AS OBSERVACOES/ ACHO QUE ENTRARA NO WHILE DOS PRODUTOS

      nLinha  := 27.00
      nColuna := 10.50

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
         + OemToAnsi( "Rua Fl¢rio, 271 Ch cara Mafalda-SÆo Paulo-SP CEP: 03372-050 Tel: 2674-3173 www.ambienty.com.br" ), ;
         oFontMin, , CLR_GREEN, , PAD_CENTER )

      ENDPAGE

      PAGE  // NOVA PAGINA

      // CONFIGURACAO ESTA EM: AMBLOGO.DBF
      // oPrn:SayImage( nLinLogo, nColLogo, "LOGO.JPG", nLargLogo, nAltLogo )
      @  nLinLogo, nColLogo PRINT TO oPrn IMAGE "LOGO.JPG" SIZE nLargLogo, nAltLogo LASTROW nRow

      ++nPagina

      nLinha  := 1.00
      nColuna := 18.00   // 18.00

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         OemToAnsi( "P g.: " + ALLTRIM( STRZERO( nPagina, 2 ) ) ), oFont, ,  ;
         CLR_BLACK, , PAD_CENTER )

      nLinha  := 3.00

   ENDIF

   IF nLinha # 3.00

      nLinha  := nLinha += 0.80

   ENDIF

   nColuna := 5.61

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                         ;
      + OemToAnsi( "03. CONDIیES DE PAGAMENTO:" ),                          ;
      oFontSub2, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.60
   nColuna :=  3.20

   // cCondPagto pode alterar no dialogo, Lucia pediu edicao - OK
   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                         ;
      + cCondPagto, oFont, , CLR_BLACK, , PAD_LEFT )

   // OBSERVACOES AQUI - DEPENDENDO DO TAMANHO DO TEXTO FICA NA MESMA PAG. Joao
   IF .NOT. EMPTY( cObserva1 )

      nLinha  := nLinha += 0.80
      nColuna :=  4.075 // 4.15

      // ter opcao de alterar
      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + OemToAnsi( "04. OBSERVAۂO:" ),                                   ;
         oFontSub2, , CLR_BLACK, , PAD_CENTER )

      nLinha  := nLinha += 0.60
      nColuna := 10.95 // 11.05  -.10

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva1, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva2 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95 //10.55

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva2, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva3 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva3, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva4 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva4, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva5 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva5, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva6 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva6, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva7 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva7, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva8 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva8, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva9 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva9, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva10 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva10, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva11 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva11, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva12 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva12, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva13 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva13, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF nLinha >= 23.00 // PARA AS OBSERVACOES

      nLinha  := 27.00
      nColuna := 10.50

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
         + OemToAnsi( "Rua Fl¢rio, 271 Ch cara Mafalda-SÆo Paulo-SP CEP: 03372-050 Tel: 2674-3173 www.ambienty.com.br" ), ;
         oFontMin, , CLR_GREEN, , PAD_CENTER )

      ENDPAGE

      PAGE  // NOVA PAGINA

      @  nLinLogo, nColLogo PRINT TO oPrn IMAGE "LOGO.JPG" SIZE nLargLogo, nAltLogo LASTROW nRow

      ++nPagina

      nLinha  := 1.00
      nColuna := 18.00   // 18.00

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         OemToAnsi( "P g.: " + ALLTRIM( STRZERO( nPagina, 2 ) ) ), oFont, ,  ;
         CLR_BLACK, , PAD_CENTER )

      nLinha  := 3.00

   ENDIF

   IF nLinha # 3.00

      nLinha  := nLinha += 0.50

   ENDIF

   IF .NOT. EMPTY( cObserva14 )

      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva14, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva15 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva15, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF .NOT. EMPTY( cObserva16 )

      nLinha  := nLinha += 0.50
      nColuna := 10.95   // 11.05

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cObserva16, oFont, , CLR_BLACK, , PAD_CENTER )

   ENDIF

   IF nLinha >= 23.00 // PARA AS OBSERVACOES/ ACHO QUE ENTRARA NO WHILE DOS PRODUTOS

      nLinha  := 27.00
      nColuna := 10.50

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
         + OemToAnsi( "Rua Fl¢rio, 271 Ch cara Mafalda-SÆo Paulo-SP CEP: 03372-050 Tel: 2674-3173 www.ambienty.com.br" ), ;
         oFontMin, , CLR_GREEN, , PAD_CENTER )

      ENDPAGE

      PAGE  // NOVA PAGINA

      @  nLinLogo, nColLogo PRINT TO oPrn IMAGE "LOGO.JPG" SIZE nLargLogo, nAltLogo LASTROW nRow

      ++nPagina

      nLinha  := 1.00
      nColuna := 18.00

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         OemToAnsi( "P g.: " + ALLTRIM( STRZERO( nPagina, 2 ) ) ), oFont, ,  ;
         CLR_BLACK, , PAD_CENTER )

      nLinha  := 3.00

   ENDIF

   IF nLinha # 3.00

      nLinha  := nLinha += 1.00

   ENDIF
   // INCLUIDO EM: 24/09/2021 VALIDADE DA PROPOSTA. Leda pediu.
   IF .NOT. EMPTY( cValidade ) // Lucia ajudou a melhorar.

      nColuna := 4.88

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + OemToAnsi( "05. PRAZO DE VALIDADE" ),                             ;
         oFontSub2, , CLR_BLACK, , PAD_CENTER )

      nLinha  := nLinha += 0.60
      nColuna :=  9.60  // 9.70

      oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                      ;
         + cValidade, oFont, , CLR_BLACK, , PAD_CENTER )

      nLinha  := nLinha += 1.00

   ENDIF

   nColuna := 12.90

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                         ;
      + OemToAnsi( "Sem mais,                                                                           " ), ;
      oFont, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.80
   nColuna :=  4.80 // 2.90

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, + cAssinaProp,          ;
      oFontBold, , CLR_BLACK, , PAD_CENTER )

   nLinha  := nLinha += 0.80
   nColuna :=   7.20 // 5.20

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                         ;
      + SUBST( WNOMEEMPRESA, 1, 20 ) + SPACE( 19 ),                          ;
      oFont, , CLR_BLACK, , PAD_CENTER )

   nLinha  := 27.00
   nColuna := 10.50

   oPrn:Say( nLinha * ResLinha, nColuna * ResColuna,                  ;
      + OemToAnsi( "Rua Fl¢rio, 271 Ch cara Mafalda-SÆo Paulo-SP CEP: 03372-050 Tel: 2674-3173 www.ambienty.com.br" ), ;
      oFontMin, , CLR_GREEN, , PAD_CENTER )

   // Called from: PRINTER.prg => PAGEEND( 0 )  // 64 bits MEMORIA
   ENDPAGE

   ENDPRINT

   IF DeOndePartiu = "COMPREVIEWPDF"

      oDlgBtn:End()

      FWSavePreviewToPDF( oPrn, "LIMPEZA.PDF", .F. )

      PDF_SALVO_EM_ORCAMPDF()  // ESTA EM FUNCOES.PRG 23/11/2020 Joao

      HTMLVIEW( "C:\ORCAMPDF\LIMPEZA.PDF" )

   ENDIF

   oFont:End()
   oFontBold:End()
   oFontSubl:End()
   oFontMin:End()
   oFontSub2:End()
   oFontRua:End()

   oPen1:End()
   oPen2:End()
   oPen3:End()

   lFechaJan    := .F.
   lFechaWin    := .F.
   lLigaProduto := .F.

   OrdDestroy( "ORCATEMP" )

   lLigaProduto := .F.

RETURN NIL
Gracias, tks.

Regards, saludos.

Re: ENDPAGE( 0 )

Posted: Fri Apr 11, 2025 3:52 pm
by karinha
¿Alguna idea? Sospecho que podría ser la MEMORIA de la máquina con Windows 10 (horrible Windows). ¿Podría ser el controlador de impresora? ¿Error de red?

gracias, tks.

Regards, saludos.

Re: ENDPAGE( 0 )

Posted: Fri Apr 11, 2025 3:59 pm
by cmsoft
A mi mas me da idea de que es, como bien dice Cristobal, un ENDPRINT que no tiene el PRINT
IMP_TIPO_IMPRESSAO_LIMPEZA( 1227 ) esa linea que hace?
Y esta otra? PEGA_DADOS_LIMP_IMPRESSAO( 2851 )
Porque esas funciones son las que te estan dando el error y en el prg que pasaste no se llaman en ningun lado

Re: ENDPAGE( 0 )

Posted: Fri Apr 11, 2025 5:08 pm
by karinha
cmsoft wrote: Fri Apr 11, 2025 3:59 pm A mi mas me da idea de que es, como bien dice Cristobal, un ENDPRINT que no tiene el PRINT
IMP_TIPO_IMPRESSAO_LIMPEZA( 1227 ) esa linea que hace?
Y esta otra? PEGA_DADOS_LIMP_IMPRESSAO( 2851 )
Porque esas funciones son las que te estan dando el error y en el prg que pasaste no se llaman en ningun lado
IMP_TIPO_IMPRESSAO_LIMPEZA (1227) ¿qué es esta línea? -> Donde eliges el TIPO DE IMPRESIÓN.
¿Y este otro? PEGA_DADOS_LIMP_IMPRESSAO( 2851 ) -> OBTENER DATOS DEL CLIENTE.

Mira que publiqué el INFORME COMPLETO arriba, por favor échale un vistazo, puede que me haya perdido algo que no puedo ver, ¿de acuerdo?

Gracias, tks.

Regards, saludos.