;** 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
     
;*******************************************************************************
;* 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(44) ;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"

moveto ntabela

EndProc ;(Cabecalho)

;*******************************************************************************
;* Checa linha na area de impressao dos itens                                  *
;*******************************************************************************
Proc Checa_Linha(Nl)
private nl
TEMP=False
If (CONTADOR+nl)>(PARAM_NITENS)
   Then If FINALIZA
           Then For ITEM From CONTADOR  To PARAM_NITENS
                  If CONTADOR =  PARAM_NITENS Or PARAM_NITENS=58 
                     Then QuitLoop
                  EndIf
                  Print File ARQIMP "\n"
                EndFor
        EndIf
        RodaPe(True)
        If Mod(VIA,2)=0
           Then Print File ARQIMP "\f"
           Else Print File ARQIMP "\n\n\n\n"
        EndIf   
        VIA = VIA + 1        
        Cabecalho()
        CONTADOR=nl
        Moveto "FaturaI"
        TEMP = True
   Else CONTADOR=CONTADOR+nl
EndIf

Return TEMP

EndProc

;*******************************************************************************
;* ImpressÆo dos Itens                                                         *
;*******************************************************************************
Proc Itens()
private ITEM

VIA          = 1   
CONTADOR     = 0

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
   
  COD_ITEM = [Codigo do Item]
  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

EndProc ;Itens()

;*******************************************************************************
;* ImpressÆo do Rodap‚                                                         *
;*******************************************************************************
Proc Rodape(QUEBRAFORM)
Private OBS_NOTA1,OBS_NOTA2,OBS_NOTA3,OBS_NOTA4,kv,s1,s2,s3 

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

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

If QUEBRAFORM
   Then LINHA1 = "Total.............."+"***********"+"\n" 
        LINHA2 = "Desconto"+Format("W06.2,EIC","  **  ") + "%...."+"***********"+"\n" 
        LINHA3 = "Frete.............."+"***********"+"\n"
        LINHA4 = "Total Liquido......"+"***********"+"\n"
   Else 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" 
EndIf

OBS_NOTA1 = spaces(2)+Completa(Ltrim(Rtrim(SubStr(OBS,001,90))),100," ")
OBS_NOTA2 = spaces(2)+Completa(Ltrim(Rtrim(SubStr(OBS,091,90))),100," ")
OBS_NOTA3 = spaces(2)+Completa(Ltrim(Rtrim(SubStr(OBS,181,90))),100," ")
OBS_NOTA4 = spaces(2)+Completa(Ltrim(Rtrim(SubStr(OBS,271,90))),100," ")

Print File ARQIMP OBS_NOTA1+LINHA1
Print File ARQIMP OBS_NOTA2+LINHA2
Print File ARQIMP OBS_NOTA3+LINHA3
Print File ARQIMP OBS_NOTA4+LINHA4

If QUEBRAFORM
   Then Print File ARQIMP "\n"
        Print File ARQIMP Spaces(17)+Format("W48,AR","   * * * *  CONTINUA NO PROXIMO FORMULARIO * * * *    ")
        Print File ARQIMP "\n" 
   Else 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 36
        
         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
EndIf

If Not QUEBRAFORM
   Then Print File ARQIMP "\n"        
        Print File ARQIMP Format("W132,AC","Recebi     /   /     -                                      "+NOTAFISC) + "\n"
        Print File ARQIMP Format("W132,AC","        -------------------------------------------------   ")
        Print File ARQIMP "\f"
   Else Print File ARQIMP "\n\n"    
EndIf

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[36]
Array VALOR[36]
Array FPGT[36]

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

NUM_VENCTO  = K
;Switch
;  Case K > 30 : NLINHA = 8
;  Case K > 20 : NLINHA = 5
;  Case K > 10 : NLINHA = 2
;  OtherWise   : NLINHA = 0
;EndSwitch 

PARAM_NITENS = 18         ;-NLINHA
NPAG         = 0
VENC         = (Int(NUM_VENCTO/10)*3)

If VENC = 0 Then VENC=3 EndIf 

For Wc From 1 To NUMCOPIA
  IMPRIMINDO_PARCELAS=FALSE
  Cabecalho()
  Itens()      
  AUX_CONTADOR = CONTADOR
  FINALIZA = True
  If Checa_Linha(VENC)
     Then AUX_CONTADOR = 0
  EndIf   
  For ITEM From AUX_CONTADOR  To PARAM_NITENS-VENC-1
    If AUX_CONTADOR =  PARAM_NITENS-VENC Or PARAM_NITENS-VENC=58 
       Then QuitLoop
    EndIf
    Print File ARQIMP "\n"
  EndFor 
  Release Vars AUX_CONTADOR,FINALIZA
  Rodape(False)
  If PARAM_NITENS = 58 And Wc = 1
     Then Print File ARQIMP "\f"
  EndIf
EndFor
NUMCOPIA=1
ImpriArq(ARQIMP)

Release Vars VALOR,DATA,FPGT,K,PARAM_NITENS
Release Procs IMPFAT, cabecalho,Checa_Linha,itens,Rodape
LIMPAGUARDE()
