ALIAS Sf_FatNf
variavel znil = DbGoto(z_recno)
variavel nRow = 0
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 zTotMercadoria := 0
variavel zTotServicos   := 0
variavel zTotDevolucoes := 0
variavel sPrtLineLen := 90
variavel zDesenhoDoForm := ""
variavel zFgTemServicos := .f.

variavel zPrCusto := 0
variavel zfVal3 := 0
variavel zPercMargem:=''
variavel zPercMarkup:=''
variavel wCrNumPed := ""
variavel zFgImprimiuParcelas:=.f.
VARIAVEL #TEXTO_FONTE
   debugalert('0 entrou no cupom_nfs_prt.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.
      BLOCO_TXT zDesenhoDoForm
         .function DesenhaForm
            oPdf:Box( oPdf:pRow+1, 0, oPdf:sPrtLineLen+3, oPdf:nLinesPorPagina-1-(oPdf:pRow+1 + 6) )
            oPdf:Box( oPdf:pRow+1+ oPdf:nLinesPorPagina-1-(oPdf:pRow+1+6), 0, oPdf:sPrtLineLen+3, 6)
            oPdf:Box( oPdf:pRow+1+ oPdf:nLinesPorPagina-1-(oPdf:pRow+1+6), 47, oPdf:sPrtLineLen-47+3, 6, 1, {0.95, 0.95, 0.95}, 3)
            oPdf:Box( oPdf:pRow+1+ oPdf:nLinesPorPagina-1-(oPdf:pRow+1+6), 47, oPdf:sPrtLineLen-47+3, 6)
         .end_function
         .setmemo NomeTxt
kj hj kj kj hkj hkjh kjh kj hkjh kjh kjkjkjkj kj kj  kj kj kj khkh kjkj kj hkj.
         .end_setmemo
      FIM_BLOCO_TXT
      oLst:PrtLine( 'CONFIG', zDesenhoDoForm)

      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;;')
      oLst:AddCol('Vl.Unit;zPrUnit;P;@E 99,999.99;9;;')
      oLst:AddCol('Vl.Total;zPrTotal;P;@E 99,999.99;9;;')
      // oLst:AddCol('Pr.Cst;zPrCusto;P;@E 99,999.99;9;;')
      // oLst:AddCol('Vl.Marg;zPrTotal-zPrCusto;P;@E 99,999.99;9;;')
      // oLst:AddCol('%Marg;100*(zPrTotal-zPrCusto)/zPrTotal;P;@E 999.99%;7;')
      // oLst:AddCol('%MkUp;100*(if(zPrCusto>0,(zPrTotal-zPrCusto)/zPrCusto,0));P;@E 999.99%;7;;')
      
      oLst:AddCab( {"AplicaFormatacaoDefaultNoCabecalho"=>"nao", "style"=>"font:Helvetica-Bold#size:14", "COLS"=>"0,C"}, "PEDIDO "+StrZero(Sf_FatNf->fnumped,10) )
      oLst:AddCab( '_LINHA_GROSSA_' )
      oLst:AddCab( {"style"=>"font:Helvetica-Bold", "COLS"=>"0,C"}, "NAO E' NOTA FISCAL - NAO E' VALIDO COMO RECIBO E COMO GARANTIA DE" )
      oLst:AddCab( {"style"=>"font:Helvetica-Bold", "COLS"=>"0,C"}, "MERCADORIA - NAO COMPROVA PAGAMENTO" )
      oLst:AddCab( '_LINHA_GROSSA_' )
      oLst:AddCab( {"COLS"=>"0,C"} ,{"style"=>"font:Helvetica-BoldOblique"}, 'Identificacao do Estabelecimento Emitente' )
      oLst:AddCab( 'Emitente:'+AllTrim(hDadosEmp["EMP_NOME"]), '',  'CNPJ: '+AllTrim(emp_cgc) )
      oLst:AddCab( 'Vendedor: ('+lTrim(Str(Sf_FatNf->fVendedor,6))+') ', 'Emissao: '+Dtoc(Sf_FatNf->fDataEmi)+' as '+Sf_FatNf->fHora)
      // oLst:AddCab( '_LINHA_FINA_' )
      oLst:AddCab( {"COLS"=>"0,C"} ,{"style"=>"font:Helvetica-BoldOblique#bgfill:BordaEscura"}, 'Identificacao do Destinatario' )
      if Sf_FatNf->fcli>0
         Sccrcli->(DbGoto( Sf_FatNf->fcli ))
         oLst:AddCab( 'Nome: '+strzero(Sf_FatNf->fcli,6)+'- '+AllTrim (Sccrcli->Cr_Nome), 'CNPJ/CPF: '+AllTrim(sccrcli->Cr_Cgc))
         oLst:AddCab( 'Fantasia: '+AllTrim(sccrcli->cr_fantasi), 'IE:'+AllTrim(sccrcli->Cr_Insc_Es) )
         
         oLst:AddCab( 'Contato: '+AllTrim(sccrcli->cr_contato), 'Fone:'+AllTrim(sccrcli->cr_fone) )
         oLst:AddCab( 'Email: '+AllTrim(sccrcli->cr_email),'Fax/Celular:'+AllTrim(sccrcli->Cr_fax) )
         oLst:AddCab( 'Endereco: '+sccrcli->(AllTrim(cr_rua)+' '+AllTrim(cr_numrua)+' '+AllTrim(cr_bairro)+' '+AllTrim(cr_cep)) )
         if !empty(sccrcli->cr_pontore)
            oLst:AddCab( 'Ponto Ref: '+AllTrim(sccrcli->cr_pontore) )
         endif
      else
         oLst:AddCab( 'Nome: Cliente Avulso', '')
      endif

      if sys_segmento='osauto'
         //oLst:AddCab( {"COLS"=>"0,C"} ,{"style"=>"font:Helvetica-BoldOblique#bgfill:{1,{0.65,0.65,0.65},1}"}, 'Dados do Veiculo' )
         // (sombraclara ou sombraclaracomborda)   e sombraclarasemborda
         // (sombraescura ou sombraescuracomborda) e sombraescurasemborda
         // (borda ou comborda ou bordapreta)      bordaclara bordaescura
         oLst:AddCab( {"COLS"=>"0,C"} ,{"style"=>"font:Helvetica-BoldOblique#bgfill:BordaEscura"}, 'Dados do Veiculo' )
         oLst:AddCab( 'Marca: '+Sf_FatNf->VeicMarca , 'Modelo: '+Sf_FatNf->VeicModel, 'Ano Fabricacao: '+Sf_FatNf->VeicAnoFab)
         oLst:AddCab( 'Placa: '+Sf_FatNf->VeicPlaca, 'Renavam/Chassi: '+Sf_FatNf->VeicRenav)
      endif

      wCrNumPed := strzero(Sf_FatNf->fnumped,6)
      ABRA ("0NOIDX", r_siga, "SCCRDUP", "SCCRDUP", "SCRID_ND", "CR_NUM_PED")
      if DbSeek(wCrNumPed)
         do while .not. eof() .and. left(cr_num_ped,6) = wCrNumPed
            if .not.zFgImprimiuParcelas .and. (cr_cod_Cli=Sf_FatNf->fCli .or. cr_tip_dup="FP" )
               oLst:AddCab( {"style"=>"font:Helvetica-BoldOblique#bgfill:BordaEscura"}, '','','Parcela       Vencto' ,'Valor  Td' )
               zFgImprimiuParcelas:=.t.
            endif
            if (cr_cod_Cli=Sf_FatNf->fCli .or. cr_tip_dup="FP" ) 
               oLst:AddCab( '','',cr_num_ped+' '+Dtoc(if(cr_tip_dup$"CT/CH",cr_dt_doc,cr_dt_venc)) , Transform(cr_valor,"@E 99999,999.99")+' '+cr_tip_dup )
            endif
            skip
         enddo
      endif
      DbCloseArea()
      if .not.zFgImprimiuParcelas
         Abra("0NOIDX",r_siga,"vb_fpag","vb_fpag","vb_fpag","fplanopag")
         if dbseek(m_fplanopag)
            oLst:AddCab( {"COLS"=>"0,C"} ,{"style"=>"font:Helvetica-BoldOblique"}, 'Forma de Pagamento: '+AllTrim(vb_fpag->pdesc) )
         endif
         DbCloseArea()
      endif
      
      oLst:AddCab( {"call_pdf_function"=>"DesenhaForm", "style"=>"font:Helvetica-BoldOblique#size:12#ncolor:99#width:80#bgfill:SombraEscuraComBorda", "COLS"=>"0,C"}, 'ITENS '+if(Sf_FatNf->FgDev='E','A ENTRAR','DO PEDIDO'))
      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 mFgEs='S'.and.mCodForc=Sf_FatNf->fCli.and.mQuant>0 .and. se_prod->(DbSeek(Se_MovNf->pCod))
            if se_prod->pServico="S"
               zFgTemServicos := .t.               
            else
               zPcod          := Se_MovNf->pCod
               zQuant         := Se_MovNf->mQuant 
               zPrTotal       := Se_MovNf->mValor
               zPrCusto       := zQuant * se_prod->pvluven3
               zfVal3         := zfVal3 + zPrCusto
               zQtdProdutos   := zQtdProdutos + 1
               zQtdUnidades   := zQtdUnidades + zQuant 
               zTotMercadoria := zTotMercadoria + zPrTotal
               zPdesc := se_prod->pDesc
               zPrUnit := zPrTotal/zQuant
               oLst:EvalLineBlocks('DETALHE', '_DATACOLS_')
            endif
         endif
         DbSkip()
      enddo

debugalert('2 imprimira servicos vendidos na cupom_nfs_prt.lst')
      if zFgTemServicos
         oLst:EvalLineBlocks('DETALHE', '')
         // oLst:EvalLineBlocks('DETALHE', {"style"=>"font:Helvetica-BoldOblique#size:12#ncolor:99#width:80#bgfill:{1,{0.75,0.75,0.75},3}", "COLS"=>"0,C"}, 'SERVICOS EXECUTADOS')
         oLst:EvalLineBlocks('DETALHE', {"style"=>"font:Helvetica-BoldOblique#size:12#ncolor:99#width:80#bgfill:SombraEscuraComBorda", "COLS"=>"0,C"}, 'SERVICOS EXECUTADOS')
         oLst:EvalLineBlocks('DETALHE', {"style"=>"font:Courier-Oblique"}, '_CABCOLS_')
         DbSeek(Sf_FatNf->fNum)
         do while Sf_FatNf->fNum = mfNum .and. .not. eof()
            if mFgEs='S'.and.mCodForc=Sf_FatNf->fCli.and.Se_MovNf->mQuant>0 .and. se_prod->(DbSeek(Se_MovNf->pCod)) .and. se_prod->pServico="S"
               zPcod    := Se_MovNf->pCod
               zQuant   := Se_MovNf->mQuant 
               zPrTotal := Se_MovNf->mValor
               zPrUnit  := zPrTotal/zQuant
               zPdesc   := se_prod->pDesc
               zTotServicos := zTotServicos + zPrTotal
               oLst:EvalLineBlocks('DETALHE', '_DATACOLS_')
            endif
            DbSkip()
         enddo
      endif

      debugalert('1 imprimira DEVOLUCOES na cupom_nfs_prt.lst ')
      if Sf_FatNf->fValDev > 0
         oLst:EvalLineBlocks('DETALHE', '')
         oLst:EvalLineBlocks('DETALHE', {"style"=>"font:Helvetica-BoldOblique#size:12#ncolor:99#width:80#bgfill:SombraEscuraComBorda", "COLS"=>"0,C"}, 'PRODUTOS DEVOLVIDOS')
         oLst:EvalLineBlocks('DETALHE', {"style"=>"font:Courier-Oblique"}, '_CABCOLS_')
         DbSeek(Sf_FatNf->fNum)
         do while Sf_FatNf->fNumPed = fNumPed .and. .not. eof()
            if mCodForc=Sf_FatNf->fCli.and.mfges='D'.and.mQuant>0.and. se_prod->(DbSeek(Se_MovNf->pCod)) 
               zPcod    := Se_MovNf->pCod
               zQuant   := Se_MovNf->mQuant
               zPrTotal := Se_MovNf->mValor
               zPrUnit  := zPrTotal/zQuant
               zPdesc   := se_prod->pDesc
               zTotDevolucoes := zTotDevolucoes + zPrTotal
               oLst:EvalLineBlocks('DETALHE', '_DATACOLS_')
            endif
            DbSkip()
         enddo
      endif


      oLst:EvalLineBlocks('DETALHE', '')
      // 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:EvalLineBlocks('DETALHE', {"style"=>"font:Courier-Oblique#size:8#col:0#row:(oPdf:pRow+1)"}, Rtrim(memoline(m_fobs,60,nRow)) )
      enddo

      // oLst:EvalLineBlocks('DETALHE', zQtdProdutos>0, {"style"=>"font:Helvetica-Oblique#col:40#row:(oPdf:nLinesPorPagina-6)"}, " ","PRODUTOS DISTINTOS: "+   Transform(zQtdProdutos,"@E 99,999,999,999.99") )
      //oLst:EvalLineBlocks('DETALHE', zQtdProdutos>0, {"style"=>"font:Helvetica-Oblique#col:40"}, " ","PRODUTOS DISTINTOS: "+   Transform(zQtdProdutos,"@E 99,999,999,999.99") )
      //oLst:EvalLineBlocks('DETALHE', zQtdUnidades>0,  {"style"=>"font:Helvetica-Oblique#col:30"}," ","TOTAL DE UNIDADES: "+   Transform(zQtdUnidades,"@E 99,999,999,999.99") )


      oLst:EvalLineBlocks('DETALHE', zTotMercadoria>0, {"style"=>"font:Helvetica-Oblique#col:40#row:(oPdf:nLinesPorPagina-6)"}, " ","VALOR DOS PRODUTOS: "+   Transform(zTotMercadoria ,"@E 99,999,999,999.99") )
      oLst:EvalLineBlocks('DETALHE', zTotServicos >0,  {"style"=>"font:Helvetica-Oblique#col:30#row:(oPdf:pRow+1)"},            " ","VALOR DOS SERVICOS: "+   Transform(zTotServicos   ,"@E 99,999,999,999.99") )
      // oLst:EvalLineBlocks('DETALHE', zTotDevolucoes>0, {"style"=>"font:Helvetica-Oblique#col:40#row:(oPdf:pRow+1)"},            " ","VALOR DAS DEVOLUCOES: "+ Transform(zTotDevolucoes ,"@E 99,999,999,999.99") )
      //      zPercMarkup:=Transform(100*if(zfVal3>0,(Sf_FatNf->fVal-zfVal3)/zfVal3,0),"@E 999.99%")
      //      zPercMargem:=Transform(100*(Sf_FatNf->fVal-zfVal3)/Sf_FatNf->fVal,"@E 999.99%")
      //      oLst:EvalLineBlocks('DETALHE', {"style"=>"font:Helvetica-Oblique#col:40#row:(oPdf:pRow+1)"}, " ","VALOR DA MARGEM FINAL : "+ Transform(Sf_FatNf->fVal-zfVal3,"@E 99,999,999,999.99") )
      //      oLst:EvalLineBlocks('DETALHE', {"style"=>"font:Helvetica-Oblique#col:40#row:(oPdf:pRow+1)"}, " ","MARGEM FINAL:"+ zPercMargem + "     MARKUP: "+ zPercMarkup )

      oLst:EvalLineBlocks('DETALHE', Sf_FatNf->fDesconto>0, {"style"=>"font:Helvetica-Oblique#col:40#row:(oPdf:pRow+1)"}, " ","DESCONTOS CONCEDIDOS: "+ Transform(Sf_FatNf->fDesconto,"@E 99,999,999,999.99") )
      oLst:EvalLineBlocks('DETALHE', Sf_FatNf->fValDev>0,   {"style"=>"font:Helvetica-Oblique#col:40#row:(oPdf:pRow+1)"}, " ","CREDITOS DE DEVOLUCOES: "+ Transform(Sf_FatNf->fValDev,"@E 99,999,999,999.99") )
      oLst:EvalLineBlocks('DETALHE', {"style"=>"font:Helvetica-Oblique#col:40#row:(oPdf:nLinesPorPagina-2)"}, " ","VALOR FINAL DO PEDIDO: "+ Transform(Sf_FatNf->fVal,"@E 99,999,999,999.99") )

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

comando antes DbGoBottom()
