;** RO_0388 ********************************************************************
;** Imprime a Digitacao do Romaneio                            ** MANUTEX **   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 04/01/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 27/01/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: ajustes layout
;Ultima Alteracao: 23/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes destinacao 
;Ultima Alteracao: 20/03/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ impressÆo de at‚ 36 parcelas nos vencimentos
;Ultima Alteracao: 10/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes p/ impressÆo de OF
;Ultima Alteracao: 08/10/2018 por Bruno Carvalho 
;Motivo Alteracao: Adicionado varia‡äes no final da linha da descricao complementar
;Ultima Alteracao: 25/10/2018 por Bruno Carvalho 
;Motivo Alteracao: Ajustes ao buscar a varia‡Æo, pois foi formatado no campo das informacoes_adicionais como V[****]
;Ultima Alteracao: 07/11/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes nos vencimentos para permitir 37 parcelas

;*******************************************************************************
;* ImpressÆo do Cabe‡alho                                                      *
;*******************************************************************************
Proc Cabecalho()
private regdestinat, email

If Not IsAssigned(NOMEMPRESA)
   Then NOMEMPRESA=""
EndIf

getrecord "\\sistemas\\cadastro\\Destinat" [Faturac->Codigo] to regdestinat
if retval
   then email=regdestinat["Endereco_Eletronico"]
   else email=""
endif
   
Moveto "Faturac"

NPAG = NPAG+1

Print File ARQIMP CI_10CPP+CI_12CPP+CI_8LPP+CI_INEG+CI_IEXP
 
if NOTAFISC="000000" or isBlank([Numero Nota Gerada])
   then Print File ARQIMP "      N§ OF "+Format("W06.3,AL",[Numero da OF])
   else Print File ARQIMP "N§ ROMANEIO "+Format("W06.3,AL",NOTAFISC)
endif    
Print File ARQIMP " - 0388"+CI_FNEG+CI_FEXP+Spaces(05)+
           "Impressao: "+Format("D13",Today())+"-"+Time()+"   Pag:"+format("W3,AR",NPAG)+"\n\n"
           
Print File ARQIMP "CLIENTE.: "+CI_INEG+Format("W05,AL",[Codigo])+Format("W30,AL",Upper([Razao Social]))+CI_FNEG+
           Spaces(5)+"FONE/FAX: "+Format("W15,AL",[Telefone])+"    N.PEDIDO: "+[Numero do Pedido]+"\n"
Print File ARQIMP "CNPJ/CPF: "+Format("W38,AL",[CGC])+" INSC.EST.: "+Format("W25,AL",[IE])+"\n"
Print File ARQIMP "ENDERECO: "+Format("W37,AL",Upper([Endereco]))+Spaces(5)+"BAIRRO: "+Format("W15,AL",Upper([Bairro]))+"\n"
Print File ARQIMP "CIDADE..: "+Format("W30,AL",Ltrim(Upper([Cidade]))+"/"+[UF])+Spaces(15)+"CEP: "+[CEP]+"\n"
Print File ARQIMP "EMAIL...: "+email+"\n"
Print File ARQIMP "EMISSAO.: "+Format("D13",[Data de Emissao])+Spaces(34)+"SAIDA: "+Format("D13",[Data de Saida])+"\n"
Print File ARQIMP "VENDEDOR: "+CI_INEG+Format("W05,AL",[Codigo do Representante])+Format("W34,AL",[Nome Fantasia Represent])+CI_FNEG
Print File ARQIMP "DESTINACAO: "+Format("W04,AL",[Codigo da Destinacao])+[Descricao da Destinacao]+"\n\n"

Print File ARQIMP "REFERENCIA    DESCRICAO                      VAR.     QUANTIDADE UN   VR.UNITARIO         TOTAL"+"\n"
                  ;NNNNNNNNNNNNN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 123456 999999999,99 XX 9999999999,99 9999999999,99  

CONTADOR = 10
Moveto "FaturaI"

EndProc ;(Cabecalho)

;*******************************************************************************
;* ImpressÆo dos Itens                                                         *
;*******************************************************************************
Proc Itens()
private desccompl, regitens, nl, ii, s, posi

Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
QUANT    = 0
TOT      = 0

While [Numero da OF]=[FaturaC->Numero da OF]

  Checa_Linha(1)
  Print File ARQIMP Fill("-",95)+"\n"
           
  desccompl=[Descricao do Item]
  
  getrecord "\\sistemas\\estoque\\itens" [Faturai->Codigo do Item] to regitens 
  If RetVal
     Then COD_ITEM = regitens["Referencia"]
          if not isblank(regitens["Descricao Complementar"])
             then desccompl=regitens["Descricao do Item"] + " " + regitens["Descricao Complementar"]
          endif    
     Else COD_ITEM = ""
  EndIf   
                 
  ;---- 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
          Release Vars PosI,PosF,VAR_INFADIC 
  EndIf
  
  nl=len(desccompl)/30
  if (len(desccompl)/30) > int(nl) or nl=0
     then nl=int(nl)+1
  endif    

  posi=1
  s=Format("W13,AL",COD_ITEM)+Spaces(1)
  for ii from 1 to nl
  
    Checa_Linha(1)
    s=s+Format("W31,AL",Ltrim(Substr(desccompl,posi,30)))
    
    posi=posi+30
    if Substr(desccompl,posi,30)<>""
     then Print File ARQIMP Ltrim(s)+"\n"
          
          s=Spaces(14)
    endif      
     
  endfor
  Print File ARQIMP s
  Print File ARQIMP Format("W6",VARIACAO)+Spaces(1)
  If [Quantidade]-Int([Quantidade])>0
     Then Print File ARQIMP Format("W12.3,EIC",[Quantidade])+Spaces(1)
     Else Print File ARQIMP Format("W12,EIC",[Quantidade])+Spaces(1)
  EndIf
  Print File ARQIMP Format("W02,Al",[Unidade Fiscal])+Spaces(1)     
  Print File ARQIMP Format("W13.2,EIC",[Preco Unitario])+Spaces(1)
  Print File ARQIMP Format("W13.2,EIC",[Preco Total])+"\n"
  
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

Checa_Linha(1)
Print File ARQIMP Fill("-",95)+"\n"

For ITEM From CONTADOR To PARAM_NITENS-18
    Print File ARQIMP "\n"
EndFor

EndProc ;(Itens)

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

Print File ARQIMP Fill("=",95)+"\n"

If Not QUEBRAFORM                                 
   Then  
         If ArraySize(DATA)>24
            Then Checa_Linha(24)
            Else Checa_Linha(20)
         EndIf   

         Moveto "FaturaC"

         If [Faturac->Frete Incluso na Nota]="S" or
            [Faturac->Frete Incluso na Nota]="+"
            Then  vrfrete=[Faturac->Valor do Frete]
                 lvrfrete="(+)Frete..: "+Format("W10.2,EIC",vrfrete)
            Else  vrfrete=BlankNum()
                 lvrfrete="(:)Frete..: "+Format("W10.2,EIC",vrfrete)
         EndIf   
         
         Print File ARQIMP Spaces(57)+"(=) Total dos Produtos : "+Format("W13.2,EIC",[Faturac->Valor Mercadoria])+"\n"
         Print File ARQIMP Spaces(57)+"(-) Descontos "+Format("W6.2,EIC",[Faturac->Taxa de Desconto])+"%  : "+Format("W13.2,EIC",[Faturac->Valor Desconto])+"\n"
         Print File ARQIMP Spaces(57)+"(+) Frete............. : "+Format("W13.2,EIC",vrfrete)+"\n"
         Print File ARQIMP Spaces(57)+"(=) Total............. : "+Format("W13.2,EIC",[Faturac->Valor Nota Fiscal])+"\n\n"

         Print File ARQIMP lvrfrete+"  N.Volumes.: "+Format("W06,EIC",[FaturaC->Numero de Volumes])
         Print File ARQIMP "  Peso Liquido: "+Format("W11.3,EIC",[FaturaC->Peso Liquido])
         Print File ARQIMP "  Peso Bruto: "+Format("W11.3,EIC",[FaturaC->Peso Bruto])+"\n"

         Print File ARQIMP "Transport.: "+Format("W05,AL",[Faturac->Codigo da Transportadora])+Format("W25,AL",Upper([Faturac->Nome Fantasia Transport]))+"\n"
        
         Print File ARQIMP "Cond. Pgto: "+[Faturac->Descricao CondPagto]+" - Forma Pgto: "+[Faturac->Forma de Pagamento]+"\n\n"
 
         ;************************ IMPRESSAO DOS VENCIMENTOS ****************************
         Print File ARQIMP "\027E"
         
         s1=""
         s2=""
         s3=""
         KV=0
         for K from 1 to 37

           if isblank(DATA[k])
              then quitloop
           endif    
           
           if kv=8
              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"
          
         If SubStr([Faturac->Observacao na Nota Fiscal],1,88)<>""
            Then Print File ARQIMP "Obs.: "+SubStr([Faturac->Observacao na Nota Fiscal],1,88)+"\n"
            Else Print File ARQIMP "\n"
         EndIf
        
         If SubStr([Faturac->Observacao na Nota Fiscal],89,88)<>""
            Then Print File ARQIMP Spaces(6)+SubStr([Faturac->Observacao na Nota Fiscal],89,88)+"\n"
            Else Print File ARQIMP "\n"
         EndIf
         If [Faturac->Frete Incluso na Nota]="S" or
            [Faturac->Frete Incluso na Nota]="+"
            Then Print File ARQIMP Spaces(6)+"* O VALOR DO FRETE JA ESTA INCLUIDO NA NOTINHA !"+"\n"
         EndIf  
         
EndIf

Print File ARQIMP CI_6LPP+CI_12CPP+"\027F"+"\f"

EndProc

;*******************************************************************************
;* Checa linha na area de impressÆo dos Itens                                  *
;*******************************************************************************
Proc Checa_Linha(Nl)
Private nl

If (CONTADOR+nl)>(PARAM_NITENS)
   Then 
        RodaPe(True)
        Cabecalho()
EndIf
CONTADOR=CONTADOR+nl

EndProc ;(Checa_Linha)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
ArqImp=PrivDir()+"Ro_0388.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf
                 
Array  DATA[37]
Array VALOR[37]
Array FPGT [37]

for K from 1 to 37
   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
Moveto "Faturac"
                                            
PARAM_NITENS=82
NPAG        =0

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

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

Release Vars VALOR,DATA,PARAM_NITENS,NPAG,QUANT,TOT,CONTADOR,COD_ITEM,K,KV 
Release Procs Cabecalho,Itens,Rodape,Checa_Linha
LIMPAGUARDE()
