;** RO_0418 ********************************************************************
;** Romaneio                                                                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 06/07/2018 por Bruno Carvalho
;Ultima Alteracao: 11/07/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes na ImpressÆo                                                        
;Ultima Alteracao: 13/07/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes no Total da Linha de Itens -> De 22 para 16
;Ultima Alteracao: 09/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes varia‡Æo e rodape so no final, TC  
;Ultima Alteracao: 16/04/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes altera‡Æo titulo tc para devolu‡Æo 

;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 "Cliente.: "+Format("W45,AL",SubStr([Razao Social],1,28)+" - CODIGO: "+ [Codigo]) + 
                  "PED.....: " + Format("W06.3,AL",NOTAFISC) + "\n"
Print File ARQIMP "Endereco: "+Format("W45,AL",[Endereco])                              +             
                   "VENDEDOR: " + Format("W14,AL",[Nome Fantasia Represent]) + "\n"
Print File ARQIMP "Cidade..: "+Format("W45,AL",[Cidade]+"/"+[UF]+" - CEP: "+[CEP])      +             
                  "EMISSAO.: " + Format("D10",[Data de Emissao])+ "\n"
Print File ARQIMP "\n"

Print File ARQIMP "ORDEM      DESCRICAO                      VARIACAO     QTDE    PRECO      TOTAL" + "\n"
Print File ARQIMP "---------- ------------------------------ -------- -------- -------- ----------" + "\n"

CONTADOR = 7

EndProc ;(Cabecalho)

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

ntab=table()

If (CONTADOR+nl)>86             
   Then
        Romaneiomaisdeumafolha=true
        Print File ARQIMP "*** CONTINUA PROXIMA FOLHA ***\f"
        Cabecalho()
EndIf
CONTADOR=CONTADOR+nl

moveto ntab
EndProc

;*******************************************************************************
;* ImpressÆo dos Itens                                                         *
;*******************************************************************************
Proc Itens()
private VARIACAO,VAR_INFADIC, posi, posf,ITEM,COD_ITEM,AUX_COD_ITEM,wc
      
Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  Checa_Linha(1)
  
  ;---- VARIACOES --------------------------------------------------------------
  VARIACAO    = ""
  VAR_INFADIC = Upper([Informacoes_Adicionais])
  If VAR_INFADIC<>""
     Then PosI=Search("V[",Upper(VAR_INFADIC))
          If PosI>0
             Then PosF = Search("]",SubStr(Upper(VAR_INFADIC),PosI+2,Len(VAR_INFADIC)))
                  VARIACAO = SubStr(VAR_INFADIC,PosI+2,PosF-1)
          EndIf
  EndIf
  
  DESC_COMP= [Descricao do Item]
  GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To REG_ITEM
  If RetVal 
     Then if not isblank(REG_ITEM["Descricao Complementar"])
             then DESC_COMP = DESC_COMP + "-"+REG_ITEM["Descricao Complementar"]
          endif   
  EndIf
  COD_ITEM     = ""
  AUX_COD_ITEM = [Codigo do Item]
  For i From 1 To 10
    If SubStr(AUX_COD_ITEM,i,1)="0"
      Then COD_ITEM = SubStr(AUX_COD_ITEM,i+1,Len(AUX_COD_ITEM))
      Else QuitLoop
    EndIf  
  EndFor
  Release Vars AUX_COD_ITEM
  
  Print File ARQIMP            Format("W10,AL",COD_ITEM)
  Print File ARQIMP Spaces(01)+Format("W30,AL",[Descricao do Item])
  Print File ARQIMP Spaces(01)+Format("W07,AL",VARIACAO)
  Print File ARQIMP            Format("W10.2,EIC",[Quantidade])
  Print File ARQIMP            Format("W09.2,EIC",[Preco Unitario])
  Print File ARQIMP Spaces(01)+Format("W10.2,EIC",[Preco Total])+"\n"

  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

wc=CONTADOR
For ITEM From wc To 24              
    Print File ARQIMP "\n"
    CONTADOR=CONTADOR+1  
EndFor 
Print File ARQIMP "\027F"
Print File ARQIMP CI_8LPP

EndProc ;(Itens)

;*******************************************************************************
;* ImpressÆo do Rodap‚                                                         *
;*******************************************************************************
Proc Rodape()
Private OBS_NOTA1,OBS_NOTA2,OBS_NOTA3,OBS_NOTA4,OBS_NOTA5,
        LINHA1,LINHA2,LINHA3,LINHA4,LINHA5,LINHA6,LINHA7,
        kv,s2,s3 

Moveto "FaturaC"

OBS = Tira_QuebraLinha([Observacao na Nota Fiscal])

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"
LINHA5 = CI_INEG+"TC Gerado... ......"+Format("W11.2,EIC",[Valor TC])      +CI_FNEG+"\n"
LINHA6 = CI_INEG+"Devolu‡Æo TC......."+Format("W11.2,EIC",vrtottc)         +CI_FNEG+"\n"
LINHA7 = CI_INEG+"A PAGAR............"+Format("W11.2,EIC",vrtotou)         +CI_FNEG+"\n"
        
OBS_NOTA1 = Completa(Ltrim(Rtrim(SubStr(OBS,001,47))),49," ")
OBS_NOTA2 = Completa(Ltrim(Rtrim(SubStr(OBS,048,47))),49," ")
OBS_NOTA3 = Completa(Ltrim(Rtrim(SubStr(OBS,095,47))),49," ")
OBS_NOTA4 = Completa(Ltrim(Rtrim(SubStr(OBS,142,47))),49," ")
OBS_NOTA5 = Completa(Ltrim(Rtrim(SubStr(OBS,189,47))),49," ")
OBS_NOTA6 = Completa(Ltrim(Rtrim(SubStr(OBS,236,47))),49," ")
OBS_NOTA7 = Completa(Ltrim(Rtrim(SubStr(OBS,283,47))),49," ")

Checa_Linha(9)
Print File ARQIMP Fill("-",79)+"\n"
Print File ARQIMP OBS_NOTA1+LINHA1
Print File ARQIMP OBS_NOTA2+LINHA2
Print File ARQIMP OBS_NOTA3+LINHA3
Print File ARQIMP OBS_NOTA4+LINHA4
Print File ARQIMP OBS_NOTA5+LINHA5
Print File ARQIMP OBS_NOTA6+LINHA6
Print File ARQIMP OBS_NOTA7+LINHA7
Print File ARQIMP "\n"

Checa_Linha(3)
If [Numero de Volumes]<>""
   Then Print File ARQIMP "      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=5
    then 
         Checa_Linha(3)

         Print File ARQIMP s1+"\n"
         Print File ARQIMP s2+"\n"
         Print File ARQIMP s3+"\n"
         Print File ARQIMP "\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 
       Checa_Linha(3)

       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"

EndProc

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

ArqImp=PrivDir()+"RO_0418.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

vrtottc=blankNum()
vrtotou=blankNum()

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]

  if [Forma de Pagamento]="TC"
     then vrtottc=vrtottc+[Valor]
     else vrtotou=vrtotou+[Valor]
  endif   
  
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

Romaneiomaisdeumafolha=False
VIA=0   
For Wc From 1 To NUMCOPIA
  VIA = VIA + 1        

  Cabecalho()
  Itens()                                 
  Rodape()

  If Mod(VIA,2)>0 and CONTADOR<44 and NUMCOPIA>1 and not Romaneiomaisdeumafolha
     then
          For ITEM From CONTADOR To 44              
            Print File ARQIMP "\n"
          EndFor 
     else
          Print File ARQIMP "\f"
  endif
EndFor
NUMCOPIA=1
ImpriArq(ARQIMP)

LIMPAGUARDE()

Release Vars VALOR,DATA,FPGT,K,VIA,ITEM,
             vrtottc, vrtotou,Romaneiomaisdeumafolha

Release Procs Cabecalho,Checa_Linha,Itens,Rodape
