;** RO_02666 *******************************************************************
;** Imprime a Digitacao do Romaneio                        ** Cacharrel **     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 25/08/2010 por Karina Andrade
;Alterado      em: 27/07/2011 por Bruno Carvalho
;Motivo Alteracao: Adicionado total de saidas e retirado o subtotal
;Alterado      em: 16/08/2011 por Bruno Carvalho
;Motivo Alteracao: Alterado a Descricao do Item
;Alterado      em: 10/10/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustado rotina p/ entradas, quando utiliza o Checa_linha, nÆo estava indo p/ FaturaID
;Alterado      em: 19/11/2012 por Bruno Carvalho
;Motivo Alteracao: Atribuido valor para vari vel "PARAM_NITENS"
;Ultima Alteracao: 05/08/2017 por Bruno Carvalho
;Motivo Alteracao: Substituido [Valor IR] -> [Valor DebitoCredito]

;*******************************************************************************
;* Rotina para Impressao do Relatorio                                          *
;*******************************************************************************
; Com quebra de itens, e no caso da TROCA, na configura‡Æo dos parƒmetros, in-
; formar "2" itens a mais em numero de itens nestas configura‡äes. Por exemplo,
; se na nota tenho 10 itens, entÆo nos parƒmetros, devo informar 12 itens...

; Numero de Itens = 40 para Cacharrel

;************************** IMPRESSAO DO CABECALHO *****************************
Proc Cabecalho();
If Not IsAssigned(NOMEMPRESA)
   Then NOMEMPRESA=""
EndIf
Moveto "Faturac"
Print File ARQIMP CI_15CPP
Print File ARQIMP CI_6LPP
 
Print File ARQIMP "----------------------------------------------------------------------------------------------------------------------------"+"\n"
Print File ARQIMP "Orcamento: "+Format("W06.3,AL",NOTAFISC)+"    Data: "+Format("D13",Today())+"\n"
Print File ARQIMP "============================================================================================================================"+"\n"
Print File ARQIMP "  Cliente: "+Format("W05,AL",[Codigo])+Format("W46,AL",[Razao Social])+Spaces(20)
Print File ARQIMP "Telefone: "+Format("W25,AL",[Telefone])+"\n"
Print File ARQIMP " Endereco: "+Ltrim(RTrim(Format("W30,AL",[Endereco])))+" - "+Ltrim(RTrim(Format("W20,AL",[Bairro])))
Print File ARQIMP Spaces(05)+Ltrim(RTrim(Format("W20,AL",[Cidade])))+"/"+Ltrim(RTrim(Format("W02,AL",[UF])))+"\n"
Print File ARQIMP "      CGC: "+Format("W18,AL",[CGC])+"\n"
Print File ARQIMP "============================================================================================================================"+"\n"
Print File ARQIMP " VENDEDOR: "+Format("W05,AL",[Codigo do Representante])+Format("W25,AL",[Nome Fantasia Represent])+Spaces(20)+"N§ Carregamento: "+[Numero_Carregamento]+"\n"
Print File ARQIMP "============================================================================================================================"+"\n"
Print File ARQIMP " Item|Codigo     |Referencia|   Quantidade| Und|Descricao do Produto                            |VrUnitario|     Subtotal"+"\n"
Print File ARQIMP "-----+-----------+----------+-------------+----+------------------------------------------------+----------+----------------"+"\n"
                  ; 123x 1234567890x 1234567890 123456789012x 123x 12345678901234567890123456789012345678901234567x 123456789x 123456789012x
                  ;-   4-        11-         10-           13-   4-                                              48-        10-           13
                                                                                                                  
EndProc ;(Cabecalho)                           

;************************** IMPRESSAO DOS ITENS ********************************
Proc Itens()
Print File ARQIMP CI_6LPP

QUANTDEV    = 0
TOTDEV      = 0

If IsAssigned(FATURA_TROCA)
   Then Moveto "FaturaId"
        Moveto [Numero da OF]
        Locate [FaturaC->Numero da OF]
        QUANTDEV    = 0
        TOTDEV      = 0
        CONTADOR    = 0
        AUX_REF  = ""
        CONTADOR   = CONTADOR + 1
        Checa_Linha(1)
        Print File ARQIMP "* Entradas\n"      
        While [Numero da OF]=[FaturaC->Numero da OF]
              Checa_Linha(1)
              
              ;Moveto [Codigo do Item]
              ;DESC_COMP=""
              
              ;If busca_Lookup("Codigo do Item",[Codigo do Item],"SM")
              ;   Then DESC_COMP = REG_BUSCA_LOOKUP["Descricao Complementar"]
              ;EndIf
              ;KeyPress "Esc"
              
              Moveto "FaturaId"
              LINHA_ITEM = Spaces(01)+ Format("W04,AR",StrVal([Item da OF]))+"|"
              LINHA_ITEM = LINHA_ITEM + Format("W11,AL",[Codigo do Item])+"|"
              
              Moveto [Codigo do Item]
              If Busca_Lookup("Codigo do Item",[Codigo do Item],"")
                 Then AUX_REF=REG_BUSCA_LOOKUP["Referencia"]
              EndIf
              KeyPress "Esc"
              
              If AUX_REF<>""
                 Then  LINHA_ITEM = LINHA_ITEM + Format("W10,AL",AUX_REF)+"|"
                 Else  LINHA_ITEM = LINHA_ITEM + Spaces(10)+"|"
              EndIf          
                             
              LINHA_ITEM = LINHA_ITEM + Format("W13.3,EIC",[Quantidade])+"|" 
              LINHA_ITEM = LINHA_ITEM + Format("W03,AR",[Unidade Fiscal])+Spaces(01)+"|"
              LINHA_ITEM = LINHA_ITEM + Format("W48,AL",[Descricao do Item])+"|"
              LINHA_ITEM = LINHA_ITEM + Format("W10.2,EIC",[Preco Unitario])+"|"
              LINHA_ITEM = LINHA_ITEM + Format("W13.2,EIC",[Preco Total])
              
              Print File ARQIMP LINHA_ITEM + "\n"
                                  
              TOTDEV= TOTDEV + [Preco Total]
              QUANTDEV = QUANTDEV + [Quantidade]
              Skip
              If EOT() Then QuitLoop EndIf
EndWhile
EndIf
   
Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
QUANT    = 0
TOT      = 0
CONTADOR = 0
AUX_REF  = ""

If IsAssigned(FATURA_TROCA)
   Then Checa_Linha(1)
        Print File ARQIMP "* Saidas\n"
EndIf
CONTADOR = CONTADOR + 1
               
While [Numero da OF]=[FaturaC->Numero da OF]
  Checa_Linha(1)
  ;MoveTo [Codigo do Item]
  ;DESC_COMP=""
  ;If busca_Lookup("Codigo do Item",[FaturaI->Codigo do Item],"SM")
  ;   Then DESC_COMP = REG_BUSCA_LOOKUP["Descricao Complementar"]
  ;EndIf
  ;KeyPress "Esc"
  
  LINHA_ITEM = Spaces(01)+ Format("W04,AR",StrVal([Item da OF]))+"|"
  LINHA_ITEM = LINHA_ITEM + Format("W11,AL",[Codigo do Item])+"|"
  
  Moveto [Codigo do Item]
  If Busca_Lookup("Codigo do Item",[Codigo do Item],"")
     Then AUX_REF=REG_BUSCA_LOOKUP["Referencia"]
  EndIf
  KeyPress "Esc"
  
  If AUX_REF<>""
     Then  LINHA_ITEM = LINHA_ITEM + Format("W10,AL",AUX_REF)+"|"
     Else  LINHA_ITEM = LINHA_ITEM + Spaces(10)+"|"
  EndIf
  
  LINHA_ITEM = LINHA_ITEM + Format("W13.3,EIC",[Quantidade])+"|"
  LINHA_ITEM = LINHA_ITEM + Format("W03,AR",[Unidade Fiscal])+Spaces(01)+"|"
  LINHA_ITEM = LINHA_ITEM + Format("W48,AL",[Descricao do Item])+"|"
  LINHA_ITEM = LINHA_ITEM + Format("W10.2,EIC",[Preco Unitario])+"|"
  LINHA_ITEM = LINHA_ITEM + Format("W13.2,EIC",[Preco Total])

  Print File ARQIMP LINHA_ITEM + "\n"
                                                   
  TOT   = TOT + [Preco Total]
  QUANT = QUANT + [Quantidade]
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

For ITEM From CONTADOR To PARAM_NITENS
    Print File ARQIMP "\n"
EndFor
Print File ARQIMP CI_8LPP  
EndProc ;(Itens)


;********************* IMPRESSAO DOS TOTAIS **************************
Proc Rodape(QUEBRAFORM)
Private QUEBRAFORM              

Moveto "FaturaC"

If [Valor DebitoCredito]>0
   Then DIF="Credito"
   Else If [Valor DebitoCredito]<0                                         
           Then DIF="Debito"                                     
           Else DIF="Zero"              
        EndIf                               
EndIf

Print File ARQIMP "============================================================================================================================"+"\n"
If QUEBRAFORM 
   Then Print File ARQIMP " Quantidades  -->     Vendida(s):  ********          Devolvida(s):  ********  "
        Print File ARQIMP "       Liquida(s):  ********  "+"\n" 
        
        If [Valor Desconto]>0
           Then Print File ARQIMP " Desconto:  ******** "+Spaces(3)
           Else Print File ARQIMP Spaces(23)
        EndIf
        
        Print File ARQIMP "Subtotal:  ********               Entrada:  ********  "   
        Print File ARQIMP "                 TOTAL LIQUIDO:  ********  "+"\n"         
   Else Print File ARQIMP " Quantidades  -->     Vendida(s):"+Format("W13.3,EIC",QUANT)+"       Devolvida(s):"+Format("W13.3,EIC",QUANTDEV)
        Print File ARQIMP "       Liquida(s):"+Format("W13.3,EIC",QUANT-QUANTDEV) 
   If IsAssigned(FATURA_TROCA)     
      Then AUX_DIF="   (" + DIF + ")"
           Print File ARQIMP Format("W12,AR",AUX_DIF)+"\n"
      Else Print File ARQIMP "\n"
   EndIf
   
   If [Valor Desconto]>0
      Then Print File ARQIMP " Desconto: "+Format("W10.2,EIC",[Valor Desconto])+Spaces(3)
      Else Print File ARQIMP Spaces(23)
   EndIf
   Print File ARQIMP "    Saida:"+Format("W12.2,EIC",TOT)+"             Entrada:"+Format("W12.2,EIC",TOTDEV)
                        
   If IsAssigned(FATURA_TROCA)
      Then Print File ARQIMP "                 TOTAL LIQUIDO:"+Format("W12.2,EIC",[Valor DebitoCredito])+"\n"  
      Else Print File ARQIMP "                 TOTAL LIQUIDO:"+Format("W12.2,EIC",[Valor Nota Fiscal])+"\n"  
   EndIf                
EndIf     
                              
Print File ARQIMP "============================================================================================================================"+"\n"
Moveto [Forma de Pagamento]
  If busca_Lookup("Tipo do Pagamento",[Forma de Pagamento],"")
     Then DESC_PAGAMENTO = REG_BUSCA_LOOKUP["Descricao Tipo Pagamento"]
     Else DESC_PAGAMENTO = ""
  EndIf
  KeyPress "Esc"
Print File ARQIMP " Forma de Pagamento: "+Format("W03,AL",[Forma de Pagamento])+Format("W20,AL",DESC_PAGAMENTO)
Moveto [Tipo de Pagamento]
If [Tipo de Pagamento] = "V"
   Then TIPO_PAGAMENTO = "A VISTA"
   Else TIPO_PAGAMENTO = "A PRAZO"
EndIf
Print File ARQIMP "      Vencto: "+Format("W08,AL",TIPO_PAGAMENTO)+"      N§ de Parcelas: "+Format("W03,AL",[Numero de Parcelas])+"\n"

Moveto "FaturaV"
If [Data]<>""
   Then Print File ARQIMP " Data do(s) Vencimento(s): " 
EndIf 
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
If RetVal
   Then While ([Numero da OF]=[FaturaC->Numero da OF])
          Print File ARQIMP Format("D10",[Data])
          Skip
          If [Numero da OF]=[FaturaC->Numero da OF]
            Then Print File ARQIMP ", " 
          EndIf
          If EOT() Then QuitLoop EndIf
        EndWhile
        Print File ARQIMP "\n"
EndIf
Moveto "FaturaC"
Print File ARQIMP "============================================================================================================================"+"\n"

Print File ARQIMP "\014"
Print File ARQIMP "\027E"
Print File ARQIMP Format("W07,AL",TIPO_PAGAMENTO)+" "+Format("W20,AL",[Descricao CondPagto])+"\n"
Print File ARQIMP "\020"
Print File ARQIMP "\027F"

Print File ARQIMP CI_15CPP
Print File ARQIMP CI_6LPP

LINHA_OBS1 = " Observacoes: " + Format("W080,AL",SubStr([Observacao na Nota Fiscal],001,080))+"\n"
LINHA_OBS2 = Spaces(14) + Format("W080,AL",SubStr([Observacao na Nota Fiscal],081,080))+"\n"
LINHA_OBS3 = Spaces(14) + Format("W080,AL",SubStr([Observacao na Nota Fiscal],162,080))+"\n"

If SubStr([Observacao na Nota Fiscal],162,080)<>""
   Then Print File ARQIMP LINHA_OBS1+LINHA_OBS2+LINHA_OBS3  
   Else If SubStr([Observacao na Nota Fiscal],081,080)<>""
           Then Print File ARQIMP LINHA_OBS1+LINHA_OBS2
                Print File ARQIMP "\n"
           Else If SubStr([Observacao na Nota Fiscal],001,080)<>""
                   Then Print File ARQIMP LINHA_OBS1
                        Print File ARQIMP "\n\n"
                   Else Print File ARQIMP "\n\n\n"
                EndIf   
        EndIf     
EndIf 
Print File ARQIMP "\n"

;************************* IMPRESSAO DO RODAPE *********************************
If QUEBRAFORM
   Then Print File ARQIMP Spaces(22)+"\027E"+Format("W54,AR","   * * * *  CONTINUA NO PROXIMO FORMULARIO * * * *    ")+"\027F"+"\n\n\n" 
   Else Print File ARQIMP Spaces(46)+"   /   /     -                                   " + "\n"
        Print File ARQIMP Spaces(46)+"-------------------------------------------------" + "\n"
        Print File ARQIMP Spaces(46)+"                Data e Assinatura"+"\n" 
EndIf        
Print File ARQIMP CI_6LPP
Print File ARQIMP CI_10CPP
Print File ARQIMP "\f"

EndProc ;(Rodape)

;*******************************************************************************
;* Checa linha na area de impressao dos itens                                  *
;*******************************************************************************
Proc Checa_Linha(Nl)
private nl

If (CONTADOR+nl)>(PARAM_NITENS)
   Then RodaPe(True)
        Cabecalho()
        CONTADOR=nl
        Moveto "FaturaI"
   Else CONTADOR=CONTADOR+nl
EndIf

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
ArqImp=PrivDir()+"Ro_0270b.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

PARAM_NITENS=39

AGUARDE("Imprimindo Romaneio -> "+NOTAFISC)
Cabecalho()
Itens()
Rodape(False) 

;---- Imprime Arquivo Impressao ------------------------------------------------
ImpriArq(ARQIMP)

Release Vars VALOR,DATA
Release Procs IMPFAT,VENC
LIMPAGUARDE()
