********************************************************************************
* FUNCAO        : FGER_MKLOGO
* OBJETIVO      : CRIA RTF COM LOGO EXPRESSO padrÆo TEXTMAKER VIEWER
* PARAMETROS    : pa_ifora -> .t. tem itens fora do recibo, .f. nao
********************************************************************************
STATIC FUNCTION FGER_MKLOGO(pa_ifora)
********************************************************************************
LOCAL l_cont                            ,;      // contador de for/next
      l_contX                           ,;      // contador
      l_itens_imp := 0                  ,;      // No de ¡tens impressos
      l_cod                             ,;
      l_aux                             ,;
      l_desc                            ,;      // descricao do grupo ou servico
      l_reg_item                                // recno


PRIVATE pr_faltam := 0                          // falta a receber

pr_faltam := pu_re_totosav + pu_re_juros - ( pu_re_adiants + pu_re_desc )

// logomkt.rtf criado pelo WORD com o LOGO DA EMPRESa
COPY FILE LOGOMKT.RTF to &pr_nomearq

**** Verifica se arquivo existe
IF   FILE(pr_nomearq)
     ***************************
     // Abre o arquivo
     ***************************
     l_handle := FOPEN(pr_nomearq,2)            // 2 leitura e gravacao
     IF   FERROR() != 0
          SET DEVICE TO SCREEN
          l_mensa  :=  'O arquivo ' + pa_arquivo + ' nÆo p“de ser aberto. '+;
                       'O erro foi ==> ' + ALLTRIM(STR(FERROR())) + '.'
          NewALERT(l_mensa)
          RETURN(.f.)
     ENDIF
ENDIF

// posiciona no ultimo byte de um arquivo
l_tamarq := FSEEK(l_handle,0,2)

// tira o \par}} do arq.rtf              // -6 \par}}

l_pos := FSEEK(l_handle,l_tamarq-6,0)

FOR  l_cont := 1 TO 2

     *****************
     // imprime LOGO
     *****************
     // O LOGO j  consta no arq.pois foi copiado de LOGOMKT.RTF - agora
     // acrescenta o corpo do relat¢rio

     IF   l_cont = 2
          l_string := "}{\b\f73\fs28EXPRESSO DESPACHANTE - 2a Via           " + FWINCAR("                    Envelope :   ") + ALLTRIM(STR(servicos->ssnumss,10)) + "}{\f2" + "\par" + chr(13)+chr(10) +;
                      "-----------------------------------------------------------------------------------------" + "\par" + chr(13)+chr(10)
          l_write := Fwrite(l_handle,l_string, len(l_string) )
     ENDIF

     l_string := CHR(13)+CHR(10)
     l_write := Fwrite(l_handle,l_string, len(l_string) )

     // come‡a o meu relat¢rio
     l_string := "RECIBO : " + STR(pu_re_osav) + "-"+ STRZERO(pu_re_numos,4) + "/" + subs( str(year(date()),4),3,2) + " Seq: " + STRZERO(pu_re_numseq,2) + "                          R$ " + STR(pu_re_liquido) + "\par \par" + CHR(13)+CHR(10) +;
                 "Recebemos de {\b " + SUBS(RECIBOS->re_nomrec,1,55) + "}" + fwincar("a importƒncia de")  + "\par" + CHR(13)+CHR(10) +;
                  pr_ext1 + "\par" + CHR(13)+CHR(10) +;
                  pr_ext2 + ") " + "\par" + CHR(13)+CHR(10) + ;
                  "referente " + FWINCAR("…") + " Ordem de " + FWINCAR("Servi‡os") + " abaixo discriminada."  + "\par" + CHR(13)+CHR(10) +;
                  "\par" + CHR(13)+CHR(10) +;
                  fwincar("Ve¡culo: ") + pr_placa + " " + pr_marca + " "+ pr_anomod + " " + RTRIM(pr_cor)   + "\par" + CHR(13)+CHR(10) +;
                  FWINCAR("-----------------------------------------------------------------------------------------") + "\par" + CHR(13)+CHR(10) +;
                  "Ordem de " + fwincar("Servi‡os: ") + "\par" + CHR(13)+CHR(10)
     l_write := Fwrite(l_handle,l_string, len(l_string) )

     ***** Lista os ¡tens do recibo

      l_reg_item  := RCBOITEM->( recno() )
      l_itens_imp := 0

      DO   WHILE RCBOITEM->rb_osav = pu_re_osav .AND. RCBOITEM->rb_numos = pu_re_numos

           NewCRIA_VAR('RCBOITEM')
           l_aux := SUBS(pu_rb_cod,1,1)
           l_cod := ALLTRIM(subs(pu_rb_cod,2,LEN(pu_rb_cod)))
           IF   l_aux = "G"             // grupo
                l_desc := GRUPOS->( DBSETORDER(1), DBSEEK(VAL(l_cod)) ,;
                          IF ( FOUND(), GRNOME, "NÆo Cadastrado" ) )
           ELSE
                // ¡tem de servi‡o "I"
                l_desc := TABSERV->( DBSETORDER(1), DBSEEK(l_cod) ,;
                          IF ( FOUND(), TS_DESC, "NÆo Cadastrado") )
           ENDIF
           l_string := l_desc + SPACE(15) + STR(pu_rb_vl,10,2) + "\par" + CHR(13)+CHR(10)
           l_write := Fwrite(l_handle,l_string, len(l_string) )
           l_itens_imp++
           RCBOITEM->( DBSKIP() )

      ENDDO
      RCBOITEM->( DBGOTO(l_reg_item) )

      ***** Verifica quantos ¡tens foram impressos -> Se menos de 11 que ‚ o
      ***** limite, imprime linhas em branco para que o recibo impresso tenha
      ***** sempre o mesmo n£mero de linhas ( sejam do mesmo tamanho )

      IF   l_itens_imp < 12
           FOR l_contX := l_itens_imp TO 12
               l_string :=  " " + "\par" + CHR(13)+CHR(10)
               l_write := Fwrite(l_handle,l_string, len(l_string) )
           NEXT
      ENDIF

      IF   l_cont = 1
            l_string := FWINCAR("========================================================================") + "\par" + CHR(13)+CHR(10) +;
                        "(-) Adiants : " + STR(pu_re_adiants,8,2) + SPACE(18) + "Total .... " + STR(pu_re_totosav,10,2) + "\par" + CHR(13)+CHR(10) +;
                        "(-) Desconto: " + STR(pu_re_desc,8,2) + "\par" + CHR(13)+CHR(10) +;
                        "(+) Juros   : " + STR(pu_re_juros,8,2) + "\par" + CHR(13)+CHR(10) +;
                        "(+) Faltam  : " + STR(pr_faltam,8,2)  + SPACE(12) + FWINCAR("Funcion rio:") + "\par" + CHR(13)+CHR(10) +;
                        FWINCAR("-----------------------------------------------------------------------------------------") + "\par" + CHR(13)+CHR(10)
            l_write := Fwrite(l_handle,l_string, len(l_string) )
      ENDIF

      IF   l_cont  = 1

           // se tem itens fora do recibo pula de pag para via do escritorio
           l_itens_imp := IF ( pa_ifora, 14, l_itens_imp)

           IF   l_itens_imp > 12
                // nÆo d  para imprimir duas vias na mesma p gina
                // EJECT nÆo funciona em print para arquivo
                // pula pag e' \par \par \page -
                l_string :=  "\par \page" + CHR(13)+CHR(10)     // o outro \ par ja esta na linha do ----------
                l_write := Fwrite(l_handle,l_string, len(l_string) )
           ENDIF
           LOOP
      ENDIF

      IF   l_cont = 2

           //   dtoc(pu_re_data) + SPACE(03) + FWINCAR(" Tot.Servi‡os") + "  - Desconto -   Adiants. +     Juros    =        FALTAM" + "\par"  + CHR(13)+CHR(10)  +;
           //   99/99/9999...TOT.SERVICOS..-.Desconto.-...Adiants/.+.....Juros....=........FALTAM
           //   99:99:99......9999,999.99..-.9,999.99.-999,999.99..+..9,999.99....=..9,999,999.99

           l_string := FWINCAR("-----------------------------------------------------------------------------------------") + "\par" + CHR(13)+CHR(10)  +;
                       dtoc(pu_re_data) + SPACE(03) + FWINCAR(" Tot.Servi‡os") + "  - Desconto -   Adiants. +     Juros    =        FALTAM" + "\par"  + CHR(13)+CHR(10)  +;
                       pu_re_hora + SPACE(07) +;
                       TRANSFORM(pu_re_totosav,"@E 9999,999.99") + "  - "  +;
                       TRANSFORM(pu_re_desc, "@E 9,999.99") + " -" +;
                       TRANSFORM(pu_re_adiants, "@E 999,999.99") + "  +  " +;
                       TRANSFORM(pu_re_juros, "@E 9,999.99") + "    =  " +;
                       TRANSFORM(pr_faltam, "@E 9,999,999.99")+ "\par" + CHR(13)+CHR(10) +;
                       FWINCAR("-----------------------------------------------------------------------------------------") + "\par" + CHR(13)+CHR(10) +;
                       "Recebido em :     /    /        Gerado por: " + pu_re_rusu + "\par" + CHR(13)+CHR(10) +;
                       "Em Dinheiro:                    Em Cheque:                     Recebido por:" + IF (pa_ifora,"\par","\par }}") + CHR(13)+CHR(10)

          l_write := Fwrite(l_handle,l_string, len(l_string) )

          IF   pa_ifora
               l_string := FWINCAR("-----------------------------------------------------------------------------------------") + "\par" + CHR(13)+CHR(10) +;
                           FWINCAR("Ötens da O.Servi‡o fora deste RECIBO: ") + "\par" + CHR(13)+CHR(10) +;
                           " " + "\par"  + CHR(13)+CHR(10)
                l_write := Fwrite(l_handle,l_string, len(l_string) )

               // j  est  posicionado RCBOFORA

               DO   WHILE RCBOFORA->rf_osav = pu_re_osav .AND. RCBOFORA->rf_numos = pu_re_numos .AND. ;
                          RCBOFORA->rf_tipo = "OS" .AND. RCBOFORA->rf_numseq = pu_re_numseq
                   l_desc := TABSERV->( DBSETORDER(1), DBSEEK(RCBOFORA->rf_cod) ,;
                             IF ( FOUND(), TS_DESC, "NÆo Cadastrado") )
                   l_string := STRZERO(RCBOFORA->rf_item,2) + "  " + RCBOFORA->rf_cod + " - " +;
                               l_desc + "  " + STR(RCBOFORA->rf_vl,8,2) + "\par" + CHR(13)+CHR(10)
                   l_write := Fwrite(l_handle,l_string, len(l_string) )

                   RCBOFORA->( DBSKIP() )
               ENDDO

               l_string := FWINCAR("-----------------------------------------------------------------------------------------") + "\par }}"
               // O }} fecha o arquivo
               l_write := Fwrite(l_handle,l_string, len(l_string) )
          ENDIF
      ENDIF

NEXT

FCLOSE(l_handle)

SET DEVICE TO SCREEN

return(.T.)
