;** RO_0404 ********************************************************************
;** Romaneio - Modelo Jato de Tinta                                           **
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 28/12/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 05/03/2018 por Bruno Carvalho               
;Motivo Alteracao: Ajustes p/ permitir impressÆo de at‚ 36 parcelas no vencimento, antes da altera‡Æo era 24 parcelas                                                        
;Ultima Alteracao: 07/06/2018 por Anivel Augusto Rodrigues               
;Motivo Alteracao: Ajustes impressao matricial meia folha picotada 44 linhas                                                        
;Ultima Alteracao: 11/06/2018 por Anivel Augusto Rodrigues               
;Motivo Alteracao: Ajustes configura‡Æo impressao matricial
;Ultima Alteracao: 23/07/2018 por Bruno Carvalho               
;Motivo Alteracao: Ajustes na impressÆo do romaneio 
;Ultima Alteracao: 25/07/2018 por Bruno Carvalho               
;Motivo Alteracao: Ajustes na impressÆo
;Ultima Alteracao: 27/07/2018 por Kamila Gomes             
;Motivo Alteracao: Ajustes na impressÆo dos vencimentos somente na £ltima p gina
;Ultima Alteracao: 07/08/2018 por Bruno Carvalho             
;Motivo Alteracao: Ajustes na impressÆo
;Ultima Alteracao: 07/01/2019 por Bruno Carvalho             
;Motivo Alteracao: Adicionado Imprime_Observacao() p/ controle das linhas de impressÆo da observa‡Æo conforme digita‡Æo do usu rio
;Ultima Alteracao: 14/02/2019 por Anivel Augusto Rodrigues               
;Motivo Alteracao: Ajustes p/ permitir impressÆo de at‚ 48 parcelas no vencimento, antes da altera‡Æo era 36 parcelas                                                        
;Ultima Alteracao: 14/02/2019 por Anivel Augusto Rodrigues               
;Motivo Alteracao: Ajustes impressÆo e logica menos folhas                                                        
     
;*******************************************************************************
;* ImpressÆo do Cabe‡alho                                                      *
;*******************************************************************************
Proc Cabecalho()
private ntabale

ntabela=table()

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_15CPP
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 Format("W132,AR","Impressao: "+Format("D10",Today())+"-"+Time())+"\n"

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

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

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"

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

CONTADOR=0 

moveto ntabela

EndProc ;(Cabecalho)


;*******************************************************************************
;* ImpressÆo dos Itens                                                         *
;*******************************************************************************
Proc Itens()
private REG_ITEM,DESC_COMP

Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  Checa_Linha(1)
  
  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
   
  Print File ARQIMP Spaces(02)+Format("W03,AR",StrVal([Item da OF]))
  Print File ARQIMP Spaces(01)+Format("W11,AL",[Codigo do 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 PARAM_NITENS
;  Print File ARQIMP "\n"
;EndFor

EndProc ;Itens()

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

If (CONTADOR+nl)>(PARAM_NITENS+10)
   Then
        Print File ARQIMP "\n"
        Print File ARQIMP Spaces(17)+Format("W48,AR","   * * * *  CONTINUA NO PROXIMO FORMULARIO * * * *    ")
        Print File ARQIMP "\f" 
    
        Cabecalho()

        Moveto "FaturaI"
EndIf
CONTADOR=CONTADOR+nl

EndProc

;*******************************************************************************
;* ImpressÆo do Rodap‚                                                         *
;*******************************************************************************
Proc Rodape()
Private kv,s1,s2,s3 

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

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

LINHA1 = "Total.............."+Format("W11.2,EIC",[Valor Mercadoria])+"\n" 
LINHA2 = "Desconto"+Format("W06.2,EIC",[Taxa de Desconto]) + "%...."+Format("W11.2,EIC",[Valor Desconto])+"\n" 
LINHA3 = "Frete.............."+Format("W11.2,EIC",[Valor do Frete])+"\n"
LINHA4 = "Total Liquido......"+Format("W11.2,EIC",[Valor Nota Fiscal])+"\n" 

imprimeobs(OBS)
                  
Print File ARQIMP Spaces(2)+"    Volumes: "+Format("W13,AL",[Numero de Volumes])+" Peso: "+Format("W13.3,EIC,AL",[Peso Liquido])+"\n"
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 ****************************
s1="  Vencimentos: "
s2="               "
s3="               "
KV=0
for K from 1 to 48

 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 "\n"        
Print File ARQIMP Format("W132,AC","Recebi     /   /     -                                      "+NOTAFISC) + "\n"
Print File ARQIMP Format("W132,AC","        -------------------------------------------------   ")
Print File ARQIMP "\f"

EndProc

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

TamObs=95

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

If nlobs<4                
   Then nlobs=4
EndIf

posobs=1
For i from 1 to nlobs
  Print File ARQIMP CI_INEG+"  "+Completa(SubStr(s,posobs,tamobs),100," ")+CI_FNEG
  
  switch
    case i=1 : Print File ARQIMP LINHA1
    case i=2 : Print File ARQIMP LINHA2
    case i=3 : Print File ARQIMP LINHA3
    case i=4 : Print File ARQIMP LINHA4
    otherwise: Print File ARQIMP "\n"
  endswitch
  

  posobs=posobs+tamobs
EndFor

endproc


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

FINALIZA = False

;Matricial 
CI_15CPP = Chr(27)+Chr(120)+Chr(48)+Chr(15)
CI_8LPP=Chr(27)+Chr(48)

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

Array DATA[48]
Array VALOR[48]
Array FPGT[48]

for K from 1 to 48
   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

PARAM_NITENS = 14         ;-NLINHA

For Wc From 1 To NUMCOPIA
  Cabecalho()
  Itens()      
  Rodape()
EndFor
NUMCOPIA=1
ImpriArq(ARQIMP)

LIMPAGUARDE()

Release Vars VALOR,DATA,FPGT,K,PARAM_NITENS
Release Procs cabecalho,Checa_Linha,itens,Rodape,imprimeobs
