;** RO_0382 ********************************************************************
;** Romaneio - Modelo Jato de Tinta                                           **
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 17/03/2017 por Bruno Carvalho
;Ultima Alteracao: 29/03/2017 por Bruno Carvalho              
;Motivo Alteracao: Ajustes na Observa‡Æo                                                       
;Ultima Alteracao: 10/04/2017 por Bruno Carvalho              
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 12/04/2017 por Bruno Carvalho              
;Motivo Alteracao: Ajustes [Endereco_Eletronico] 
;Ultima Alteracao: 13/04/2017 por Bruno Carvalho              
;Motivo Alteracao: Ajustes CIDADE
;Ultima Alteracao: 25/05/2017 por Bruno Carvalho              
;Motivo Alteracao: Ajustes conforme solcita‡Æo do cliente *Sol. 30139 
;Ultima Alteracao: 29/05/2017 por Bruno Carvalho              
;Motivo Alteracao: Ajsutado o numero m¡nimo de itens de 12 para 11
;Ultima Alteracao: 31/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desconto item
 
;Imprime 2 vias em folha A4, por‚m se quantidade de itens maior que 14, ir  imprimir 2 vias em folha inteira
     
;*******************************************************************************
;* ImpressÆo do Cabe‡alho                                                      *
;*******************************************************************************
;ImpressÆo em Folha A4, em duas vias!
Proc Cabecalho();
If Not IsAssigned(NOMEMPRESA)
   Then NOMEMPRESA=""
EndIf

Moveto "Faturac"
Print File ARQIMP chr(27)+chr(67)+chr(33) ;Imprime 33 Linhas por pagina
Print File ARQIMP CI_10CPP
Print File ARQIMP CI_8LPP    
              
GetRecord "\\Sistemas\\Cadastro\\Destinat" [Codigo] To REG_DESTINAT
If ReTval
   Then CELULAR = REG_DESTINAT["Celular"]
   Else CELULAR  = ""
EndIf

VSD_E_Endereco = ""
VSD_E_Bairro   = ""
VSD_E_CEP      = ""
VSD_E_Cidade   = ""
VSD_E_UF       = ""

VSD_C_Endereco = ""
VSD_C_Bairro   = ""
VSD_C_CEP      = ""
VSD_C_Cidade   = ""
VSD_C_UF       = ""
          
;---- Endere‡o de Entrega ------------------------------------------------------              
For i From 1 To 2
 ATUALIZA_ENDERECO = False
 If i=1
    Then GetRecord "\\Sistemas\\Cadastro\\End_Cob" [FaturaC->Codigo] To REG_ENDCOB
         If RetVal
            Then ATUALIZA_ENDERECO = True  
          EndIf
    Else GetRecord "\\Sistemas\\Vendas\\FaturaCC" [FaturaC->Numero da OF] To REG_ENDCOB
         If RetVal
            Then ATUALIZA_ENDERECO = True 
        EndIf
  EndIf
  If ATUALIZA_ENDERECO
     Then VSD_E_Endereco=REG_ENDCOB["Endereco de Entrega"]
          VSD_E_Bairro  =REG_ENDCOB["Bairro de Entrega"]
          VSD_E_CEP     =REG_ENDCOB["CEP de Entrega"]
          VSD_E_Cidade  =REG_ENDCOB["Cidade de Entrega"]
          VSD_E_UF      =REG_ENDCOB["UF de Entrega"]
  
          VSD_C_Endereco=REG_ENDCOB["Endereco de Cobranca"]
          VSD_C_Bairro  =REG_ENDCOB["Bairro de Cobranca"]
          VSD_C_CEP     =REG_ENDCOB["CEP de Cobranca"]
          VSD_C_Cidade  =REG_ENDCOB["Cidade de Cobranca"]
          VSD_C_UF      =REG_ENDCOB["UF de Cobranca"]
          QuitLoop
  EndIf   
EndFor                             
              
;Print File ARQIMP "\n"
Print File ARQIMP Format("W50,AL","    ")+"Impressao: "+Format("D10",Today())+"-"+Time()+ "\n\n"

Print File ARQIMP "\014"
Print File ARQIMP "\027E"
Print File ARQIMP Spaces(20)+"Orcamento N§ "+Format("W06.3,AL",NOTAFISC)+"\n\n"
Print File ARQIMP "\020"

Print File ARQIMP "\027F"+" Entrega : "+VSD_E_Endereco+"  -  "+VSD_E_Bairro+"\n"
Print File ARQIMP "\027F"+" Emissao : "+Format("D10",[Data de Emissao])+Spaces(28)+REG_DESTINAT["Endereco_Eletronico"]+"\n"
Print File ARQIMP "\027E"+" Cliente : "+Format("W05,AL",[Codigo])+Format("W46,AL",[Razao Social])+"\n"
Print File ARQIMP "\027F"

Print File ARQIMP CI_10CPP
Print File ARQIMP CI_8LPP

Print File ARQIMP Spaces(12)+Format("W35,AL",[Endereco])
Print File ARQIMP Format("W18,AL",[CGC])+"\n"

Print File ARQIMP Spaces(12)+Format("W20,AL",[Bairro])
Print File ARQIMP Format("W15,AL",[CEP])
Print File ARQIMP Format("W25,AL",[IE])+"\n"
            
Print File ARQIMP Spaces(12)+Format("W22,AL",[Cidade])
Print File ARQIMP Format("W2,AL",[UF])+Spaces(18)
Print File ARQIMP Format("W15,AL",[Telefone])

If CELULAR<>""
   Then Print File ARQIMP Spaces(01)+" / "+Format("W15,AL",CELULAR)+"\n"
   Else Print File ARQIMP "\n"
EndIf
   
Print File ARQIMP " Operacao: "
Print File ARQIMP Format("W03,AL",[Codigo da Destinacao])+" "+Format("W23,AL",[Descricao da Destinacao])

Print File ARQIMP "Vendedor: "+Format("W05,AL",[Codigo do Representante])
Print File ARQIMP Format("W15,AL",[Nome Fantasia Represent])
Print File ARQIMP "Area: "+REG_DESTINAT["Codigo da Area"]+"\n"

Print File ARQIMP "\015"         ;Imprime 17 Caracteres por polegada

;********************* IMPRESSAO DOS ITENS ********************************
Print File ARQIMP Spaces(2)+Fill("-",130)+"\n"
Print File ARQIMP "\027E"
Print File ARQIMP Spaces(02)+"Item            Quantidade Un                                                                              Unitario          Total"+"\n"
Print File ARQIMP Spaces(2)+Fill("-",130)+"\n"

EndProc ;(Cabecalho)

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

If (CONTADOR+nl)>(CONTA_ITENS)
   Then RodaPe(True)
        Print File ARQIMP "\f"
        Cabecalho()
        CONTADOR=nl
        Moveto "FaturaI"
   Else CONTADOR=CONTADOR+nl
EndIf
EndProc

;*******************************************************************************
;* ImpressÆo dos Itens                                                         *
;*******************************************************************************
Proc Itens()
       
Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]

CONTA_ITENS = 0

While [Numero da OF]=[FaturaC->Numero da OF]
  CONTA_ITENS = CONTA_ITENS+1
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

Switch
  Case CONTA_ITENS <=11 : CONTA_ITENS  = 11
  Case CONTA_ITENS > 11 : CONTA_ITENS  = 58 
EndSwitch

CONTADOR = 0

Home
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  Checa_Linha(1)
  
  DESC_COMP= ""
  GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
  If RetVal 
     Then DESC_COMP = REG_ITEM["Descricao Complementar"]
  EndIf
   
  COD_ITEM = [Codigo do Item]
  For p From 1 to 10
   If Substr(COD_ITEM,1,1)="0"
      Then COD_ITEM = SubStr(COD_ITEM,2,10)
      Else QuitLoop
   EndIf   
  EndFor
  Print File ARQIMP Spaces(02)+Format("W03,AR",StrVal([Item da OF]))
  Print File ARQIMP Spaces(01)+Format("W11,AL",COD_ITEM)
  Print File ARQIMP Format("W11.3,EIC",[Quantidade])
  Print File ARQIMP Spaces(01)+Format("W03,Al",[Unidade Fiscal])
  Print File ARQIMP Spaces(01)+Format("W74,AL",DESC_COMP)
  Print File ARQIMP Format("W10.2,EIC",[Preco Unitario])
  Print File ARQIMP Spaces(02)+Format("W13.2,EIC",[Preco Total])+"\n"

  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

For ITEM From CONTADOR To CONTA_ITENS
    If CONTADOR = CONTA_ITENS Or CONTA_ITENS  = 58 
       Then QuitLoop
    EndIf
    Print File ARQIMP "\n"
EndFor 
Print File ARQIMP "\027F"

Print File ARQIMP CI_8LPP
EndProc ;(Itens)

;*******************************************************************************
;* Rotina de Impressao de Observa‡äes                                          *
;*******************************************************************************
proc imprimeobs()
private TamObs, nlobs, posobs, i, s

TamObs=80

s="Observacoes: "+[Observacao na Nota Fiscal]

nlobs=Len(s)/tamobs
If nlobs-Int(nlobs)>0
   Then nlobs=Int(nlobs)+1
   Else nlobs=Int(nlobs)
EndIf

posobs=1
For i from 1 to nlobs
  Print File ARQIMP CI_INEG+SubStr(s,posobs,tamobs)+CI_FNEG+"\n"
  posobs=posobs+tamobs
EndFor

endproc

;*******************************************************************************
;* ImpressÆo do Rodap‚                                                         *
;*******************************************************************************
Proc Rodape(QUEBRAFORM)
Private QUEBRAFORM

Print File ARQIMP Spaces(2)+Fill("-",130)+"\n"

;********************* IMPRESSAO DOS TOTAIS **************************
Moveto "FaturaC"
OBS = [Observacao na Nota Fiscal]

If QUEBRAFORM
   Then LINHA1 = CI_INEG+"Total..............    *******  "+CI_FNEG+"\n"  
        LINHA2 = CI_INEG+"Desconto  **  %....    *******  "+CI_FNEG+"\n"
        LINHA3 = CI_INEG+"Frete..............    *******  "+CI_FNEG+"\n"
        LINHA4 = CI_INEG+"Total Liquido......    *******  "+CI_FNEG+"\n"   
   Else LINHA1 = CI_INEG+"Total.............."+Format("W11.2,EIC",[Valor Mercadoria])+CI_FNEG+"\n" 
        LINHA2 = CI_INEG+"Desconto"+Format("W06.2,EIC",[Taxa de Desconto]) + "%...."+Format("W11.2,EIC",[Valor Desconto])+CI_FNEG+"\n" 
        LINHA3 = CI_INEG+"Frete.............."+Format("W11.2,EIC",[Valor do Frete])+CI_FNEG+"\n"
        LINHA4 = CI_INEG+"Total Liquido......"+Format("W11.2,EIC",[Valor Nota Fiscal])+CI_FNEG+"\n"
                                              ;Format("W11.2,EIC",[Valor Mercadoria Liquido]+[Valor Servico])+CI_FNEG+"\n"     
EndIf
        
OBS_NOTA1 = Ltrim(Rtrim(SubStr(OBS,001,69)))
OBS_NOTA2 = Ltrim(Rtrim(SubStr(OBS,074,69)))
OBS_NOTA3 = Ltrim(Rtrim(SubStr(OBS,147,69)))

CONT_OBS = 0
DynArray OBS[] 
For i From 1 To 3
  Switch
    Case i = 1 : AUX_OBS = OBS_NOTA1
    Case i = 2 : AUX_OBS = OBS_NOTA2 
    Case i = 3 : AUX_OBS = OBS_NOTA3 
  EndSwitch
  If AUX_OBS="" Then Loop EndIf   
  While True
    posI = Search("\n",AUX_OBS)
    If posI>0
       Then CONT_OBS = CONT_OBS + 1
            OBS[CONT_OBS] = AlinhM(StrVal(CONT_OBS),3)+Format("W71",SubStr(AUX_OBS,1,posI-1))
            AUX_OBS = SubStr(AUX_OBS,posI+1,Len(AUX_OBS))
       Else CONT_OBS = CONT_OBS + 1 
            OBS[CONT_OBS] = AlinhM(StrVal(CONT_OBS),3)+Format("W71",AUX_OBS)
            QuitLoop
    EndIf
  EndWhile
EndFor   

If CONT_OBS > 0
   Then For i From 1 To 3
          Switch
            Case i = 1 : AUX_LINHA = LINHA1
            Case i = 2 : AUX_LINHA = LINHA2 
            Case i = 3 : AUX_LINHA = LINHA3 
          EndSwitch
          If IsAssigned(OBS[i])
             Then AUX_OBS = Format("W71",SubStr(OBS[i],4,Len(OBS[i])))
             Else AUX_OBS = Spaces(71)
          EndIf  
          If AUX_OBS<>""
             Then Print File ARQIMP Spaces(02)  + AUX_OBS + Spaces(29) + AUX_LINHA  
             Else Print File ARQIMP Spaces(102) + AUX_LINHA 
          EndIf
        EndFor
   Else Print File ARQIMP Spaces(102)+LINHA1
        Print File ARQIMP Spaces(102)+LINHA2
        Print File ARQIMP Spaces(102)+LINHA3
EndIf   
Print File ARQIMP Spaces(102)+LINHA4

Print File ARQIMP "\n"

If [Numero de Volumes]<>""
   Then Print File ARQIMP Spaces(2)+"    Volumes: "+Format("W13,AL",[Numero de Volumes])
        If [Peso Liquido]<>""
           Then Print File ARQIMP " Peso: "+Format("W13.3,EIC,AL",[Peso Liquido])+"\n"
        EndIf
EndIf

Print File ARQIMP "  Cond. Pagto: "+Format("W13",[Descricao CondPagto])
Print File ARQIMP "   NP: "+StrVal([Numero de Parcelas])+"         CD: "+[Composicao de Dias]+"\n\n"

;************************ IMPRESSAO DOS VENCIMENTOS ****************************
Print File ARQIMP "\027E"

s1="  Vencimentos....: "
s2="                   "
s3="                   "
KV=0
for K from 1 to 24

 if isblank(DATA[k])
    then quitloop
 endif    
 
 if kv=10
    then Print File ARQIMP s1+"\n"
         Print File ARQIMP s2+"\n"
         Print File ARQIMP s3+"\n"

         kv=0
         s1="                 "
         s2="                 "
         s3="                 "
 endif

 kv=kv+1
 s1=s1+spaces(08)+FPGT[K]          +Spaces(02)
 s2=s2+Format("D13",DATA[k])       +Spaces(02)
 s3=s3+Format("W10.2,EIC",VALOR[k])+Spaces(02)

endfor
if kv>0
  then Print File ARQIMP s1+"\n"
       Print File ARQIMP s2+"\n"
       Print File ARQIMP s3+"\n"

       kv=0
       s1=""
       s2=""
       s3=""
endif

Print File ARQIMP "\027F"+"\n"

;************************* IMPRESSAO DO RODAPE *********************************
Print File ARQIMP Format("W132,AC","Recebi     /   /     -                                      "+NOTAFISC) + "\n"
Print File ARQIMP Format("W132,AC","        -------------------------------------------------   ") + "\n\n\n\n\n\n\n\n\n"
Print File ARQIMP CI_6LPP
Print File ARQIMP CI_10CPP
If CONTA_ITENS > 11
   Then Print File ARQIMP "\f"
EndIf   
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AGUARDE("Imprimindo Romaneio -> "+NOTAFISC)

ArqImp=PrivDir()+"RO_0382.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf

Array  DATA[24]
Array VALOR[24]
Array FPGT [24]

for K from 1 to 24
   DATA[k]=blankdate()
  VALOR[k]=blanknum()
   FPGT[K]=""
endfor

K=0
Moveto "FaturaV"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  K=K+1
  
   DATA[K]=[Data ]
  VALOR[K]=[Valor]
   FPGT[K]=[Forma de Pagamento]
  
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile
   
For Wc From 1 To NUMCOPIA
  IMPRIMINDO_PARCELAS=FALSE
  ;If Wc = 1  Then NParc=[FaturaC->Numero de Parcelas] If NParc<1 Then NParc=1 EndIf EndIf
  Cabecalho()
  Itens()                                 
  Rodape(False)
  If CONTA_ITENS = 11 And Wc = 2
     Then ;Print File ARQIMP "\f"   
     Else If CONTA_ITENS = 58 And Wc = 1
             Then Print File ARQIMP "\f"
          EndIf
  EndIf
EndFor
NUMCOPIA=1
ImpriArq(ARQIMP)

Release Vars VALOR,DATA
Release Procs IMPFAT
LIMPAGUARDE()
