ALIAS SF_FATNF
variavel znil = DbGoto(z_recno)
variavel nRow = 0
variavel m_pfnum = pfnum
variavel m_fnumped = fnumped
variavel m_fobs = ''
variavel zPcod := 0
variavel zQuant := 0
variavel zPrTotal := 0
variavel zPdesc := ''
variavel zPrUnit := 0
variavel pag := 1
variavel zQtdProdutos := 0
variavel zQtdUnidades := 0
variavel sPrtLineLen := 90
variavel zDesenhoDoForm := ""
variavel zFgTemServicos := .f.
variavel zFuncEncarregado := ''
// variavel znil = DebugAlert("Pedido: "+Str(fnumped)+"  NF: "+str(fnum) )
VARIAVEL #TEXTO_FONTE
   debugalert('0 entrou no cupom_nfe_separacao.lst ')
     // Fontes Padroes:
     // Courier               
     // Courier-Bold          negrito
     // Courier-Oblique       italico
     // Courier-BoldOblique   negrito italico
     // Helvetica             
     // Helvetica-Bold        negrito
     // Helvetica-Oblique     italico
     // Helvetica-BoldOblique negrito italico
      
      oLst:nLinesPorPagina := 66
      oLst:lOutPutXML := .f.

      oLst:cAlias_DataCols := 'itens'
      oLst:cAliasMaster := 'itens'
      oLst:lPrtRodape := .f.
      
      oLst:AddCol('Prod;zPcod;P;999999;6;;')
      oLst:AddCol('Descricao;zPdesc;P;@S35;35;;')
      oLst:AddCol('Quant;zQuant;P;9999.99;7;;')
      
      if Sf_FatNf->FgDev='E'.and.sys_segmento='locacao'
         oLst:Cab1( "CONFERENTE DE DEVOLUCAO" )
         nRow := Sf_FatNf->(Recno())
         if Sf_FatNf->(DbSeek(m_pfnum))
            Sf_FatNf->(oLst:Cab4( "Referente ao CONTRATO DE LOCACAO "+StrZero(fCli,8)+" , ADITIVO "+lTrim(Str(fObraNoCli,3))+'.'+lTrim(Str(fAditivo,3))+'.0-'+lTrim(Str(fnumped,9))+' , Controle:'+lTrim(Str(m_fnumped,10)) ))
         endif
         Sf_FatNf->(DbGoto(nRow))
         nRow:=0
      else
         oLst:Cab1( {"AplicaFormatacaoDefaultNoCabecalho"=>"nao", "style"=>"font:Helvetica-Bold#size:14", "COLS"=>"0,C"}, "CONFERENTE DE "+if(SF_FATNF->fgdev="E","DEVOLUCAO","SAIDA")+" DO PEDIDO "+StrZero(Sf_FatNf->fnumped,10) )
      endif
      oLst:AddCab( '_LINHA_GROSSA_' )
      oLst:AddCab( {"COLS"=>"0,C"} ,{"style"=>"font:Helvetica-BoldOblique"}, if(sys_segmento='locacao','LOCADOR: ','Emitente: ')+AllTrim(hDadosEmp["EMP_NOME"])+', CNPJ: '+AllTrim(emp_cgc) )
      Abra('0NOIDX',r_siga,'sf_vend','sf_vend')
      sf_vend->(DbGoto( Sf_FatNf->fVendedor))
      oLst:AddCab( 'Atendente: ('+lTrim(Str(Sf_FatNf->fVendedor,6))+') '+AllTrim(sf_vend->nome), 'Emissao: '+Dtoc(Sf_FatNf->fDataEmi)+' as '+Sf_FatNf->fHora)
      sf_vend->(DbCloseArea())
      oLst:AddCab( '_LINHA_FINA_' )
      if Sf_FatNf->fcli>0
         Sccrcli->(DbGoto( Sf_FatNf->fcli ))
         zFuncEncarregado := AllTrim (Sccrcli->Cr_Nome)
         oLst:AddCab( {"COLS"=>"0,C"} ,{"style"=>"font:Helvetica-BoldOblique"}, if(sys_segmento='locacao','LOCATARIO: ','Cliente: ')+strzero(Sf_FatNf->fcli,6)+'- '+zFuncEncarregado+', '+sccrcli->(if(cpf_ok(cr_cgc), 'CPF: ','CNPJ: ')+AllTrim(Cr_Cgc)) )
         oLst:AddCab( 'Endereco: '+sccrcli->(AllTrim(cr_rua)+' '+AllTrim(cr_numrua)+' '+AllTrim(cr_bairro)+' '+AllTrim(cr_cep)) )
         oLst:AddCab( 'Contato: '+AllTrim(sccrcli->cr_contato), 'Fone:'+AllTrim(sccrcli->cr_fone))
         oLst:AddCab( 'Email: '+AllTrim(sccrcli->cr_email))
         if sys_segmento<>'locacao'.and.Sf_FatNf->FgDev<>'E'.and.!empty(sccrcli->cr_pontore)
            oLst:AddCab( 'Ponto Ref: '+AllTrim(sccrcli->cr_pontore) )
         endif
         oLst:AddCab( '' )
         if sys_segmento='locacao'.and. Sf_FatNf->fObra>0
            Abra('0NOIDX',r_siga,'vb_pref','vb_pref')
            vb_pref->(DbGoto( Sf_FatNf->fObra ))
            oLst:AddCab( {"COLS"=>"0,C"} ,{"style"=>"font:Helvetica-BoldOblique"}, 'Obra/Origem do Retorno: ' +AllTrim(vb_pref->Cr_Fantasi)  )
            oLst:AddCab( 'Endereco: '+vb_pref->(AllTrim(cr_rua)+' '+AllTrim(cr_bairro)+' '+AllTrim(cr_cidade)+' '+AllTrim(cr_cep)) )
            oLst:AddCab( 'Contato: '+AllTrim(vb_pref->cr_contato), 'Fone:'+AllTrim(vb_pref->cr_fone))
            //if !empty(vb_pref->cr_pontore)
            //   m_fobs:='Ponto Ref: '+AllTrim(vb_pref->cr_pontore)
            //   nRow := 0
            //   do while ++nRow <= mlCount(m_fobs, 100)
            //      oLst:AddCab( {"style"=>"font:Courier-Oblique#size:8#col:0#row:(oPdf:pRow+1)"}, Rtrim(memoline(m_fobs,100,nRow)) )
            //   enddo
            //endif
            vb_pref->(DbCloseArea())
         endif

      else
         oLst:AddCab( 'Nome: Cliente Avulso', '')
      endif

      oLst:AddCab( {"style"=>"font:Helvetica-BoldOblique#size:12#ncolor:99#width:80#bgfill:SombraEscuraComBorda", "COLS"=>"0,C"}, 'ITENS '+if(Sf_FatNf->FgDev='E','DEVOLVIDOS','QUE SAIRAO') )
      oLst:AddCab( {"style"=>"font:Courier-Oblique"}, '_CABCOLS_')

      oLst:AddRodape( '_LINHA_FINA_', "", {|| "Pagina "+Str(++pag,4)+" / ####"} )

      DbSelectArea("se_movnf")
      DbSeek(Sf_FatNf->fNum)

      do while Sf_FatNf->fNum = mfnum .and. .not. eof()
         if Sf_FatNf->fcli=mcodforc .and. mQuant > 0 .and. mtipoven<>"C"
            if (Sf_FatNf->FgDev="E".and.mfges="E") .or. (Sf_FatNf->FgDev<>"E".and.mfges<>"E")
               zPcod := se_movnf->pCod
               zQuant := se_movnf->mQuant - se_movnf->mQdevol
               if zQuant > 0 .and. se_prod->(DbSeek(zPcod))
                  if se_prod->pServico="S"
                     zFgTemServicos := .t.               
                  else
                     zQtdProdutos := zQtdProdutos + 1
                     zQtdUnidades := zQtdUnidades + zQuant 
                     zPdesc := se_prod->pDesc
                     oLst:PrtD( '_DATACOLS_')
                  endif
               endif
            endif
         endif
         DbSkip()
      enddo

debugalert('2 imprimira servicos vendidos na cupom_nfe_separacao.lst')
      if zFgTemServicos
         oLst:PrtD( '')
         oLst:PrtD( {"style"=>"font:Helvetica-BoldOblique#size:12#ncolor:99#width:80#bgfill:SombraEscuraComBorda", "COLS"=>"0,C"}, 'SERVICOS EXECUTADOS')
         oLst:PrtD( {"style"=>"font:Courier-Oblique"}, '_CABCOLS_')
         DbSeek(Sf_FatNf->fNum)
         do while Sf_FatNf->fNum = mfnum .and. .not. eof()
            if Sf_FatNf->fcli=mcodforc .and. mQuant > 0 .and. mtipoven<>"C"
               if (Sf_FatNf->FgDev="E".and.mfges="E") .or. (Sf_FatNf->FgDev<>"E".and.mfges<>"E")
                  zPcod := se_movnf->pCod
                  zQuant := se_movnf->mQuant - se_movnf->mQdevol
                  if zQuant > 0 .and. se_prod->(DbSeek(zPcod)) .and. se_prod->pServico="S"
                     zPdesc := se_prod->pDesc
                     oLst:PrtD( '_DATACOLS_')
                  endif
               endif
            endif
            DbSkip()
         enddo
      endif

debugalert('1 imprimira DEVOLUCOES na cupom_nfe_separacao.lst ')
      if Sf_FatNf->fValDev > 0
         oLst:PrtD( '')
         oLst:PrtD( {"style"=>"font:Helvetica-BoldOblique#size:12#ncolor:99#width:80#bgfill:SombraEscuraComBorda", "COLS"=>"0,C"}, 'PRODUTOS DEVOLVIDOS')
         oLst:PrtD( {"style"=>"font:Courier-Oblique"}, '_CABCOLS_')
         DbSeek(Sf_FatNf->fNum)
         do while Sf_FatNf->fNum = mfnum .and. .not. eof()
            if Sf_FatNf->fcli=mcodforc .and. mQuant > 0 .and. mtipoven<>"C"
               if (Sf_FatNf->FgDev<>"E".and.mfges="D")
                  zPcod := se_movnf->pCod
                  zQuant := se_movnf->mQuant 
                  if zQuant > 0 .and. se_prod->(DbSeek(zPcod)) 
                     zPdesc := se_prod->pDesc
                     oLst:PrtD( '_DATACOLS_')
                  endif
               endif
            endif
            DbSkip()
         enddo
      endif

      oLst:PrtD( '')
      // oLst:EvalLineBlocks('DETALHE', {"style"=>"font:Helvetica-Oblique#col:40#row:(oPdf:nLinesPorPagina-6-1)"}, "")
      m_fobs:=AllTrim(Sf_FatNf->fobs)
      nRow := 0
      do while ++nRow <= mlCount(m_fobs, 60)
         oLst:PrtD( {"style"=>"font:Courier-Oblique#size:8#col:0#row:(oPdf:pRow+1)"}, Rtrim(memoline(m_fobs,60,nRow)) )
      enddo

      if Sf_FatNf->FgDev='E'
         oLst:PrtD( '' )
         oLst:PrtD( '' )
         oLst:PrtD( '','_________________________________________' )
         oLst:PrtD( {"style"=>"font:Courier-BoldOblique"},'',Pad('Assinatura do '+if(sys_segmento='locacao','Locador','Emissor'),41) )
         oLst:PrtD( {"style"=>"font:Courier-Oblique"},'',Pad(hDadosEmp["EMP_NOME"],41) )

         oLst:PrtD( '' )
         oLst:PrtD( '','_________________________________________' )
         oLst:PrtD( {"style"=>"font:Courier-BoldOblique"},'',Pad('Assinatura do '+if(sys_segmento='locacao','Locatario','Cliente'),41) )
         
         oLst:PrtD( {"style"=>"font:Courier-Oblique"},'','Nome:....................................' )
         oLst:PrtD( {"style"=>"font:Courier-Oblique"},'','CPF:.....................................' )
         oLst:PrtD( {"style"=>"font:Courier-Oblique"},'','RG:......................................' )
         // oLst:PrtD( '',zFuncEncarregado)

      else
         oLst:PrtD( zQtdProdutos>0, {"style"=>"font:Helvetica-Oblique#col:40"}, " ","PRODUTOS DISTINTOS: "+   Transform(zQtdProdutos,"@E 99,999,999,999.99") )
         oLst:PrtD( zQtdUnidades>0, {"style"=>"font:Helvetica-Oblique#col:30"},            " ","TOTAL DE UNIDADES: "+   Transform(zQtdUnidades,"@E 99,999,999,999.99") )
      endif

debugalert('11 saindo da cupom_nfe_separacao.lst ')
      
      oLst:Run()
      oLst:End()
#FIM_TEXTO_FONTE

comando antes DbGoBottom()
