;** RO_0419 ********************************************************************
;** Imprime a Digitacao do Romaneio                          ** STUDIO TEXTIL **
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 04/08/2018 por Bruno Carvalho
;Ultima Alteracao: 08/08/2018 por Bruno Carvalho                           
;Motivo Alteracao: Adicionado vari vel de controle para numero de vias -> NVIA = 2
;Ultima Alteracao: 10/08/2018 por Anivel Augusto Rodrigues  
;Motivo Alteracao: Ajustes quebra por referencia e totais        
;Ultima Alteracao: 21/10/2019 por Anivel Augusto Rodrigues  
;Motivo Alteracao: Ajustes quebra folha nova logica e fun‡äes    

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

ntable=table()

If (CONTADOR+nl)>(85)
   Then 
        print file arqimp Format("W96,AR",CI_INEG+"** CONTINUA NA PROXIMA FOLHA ==>"+CI_FNEG)+"\f"
        Cabecalho()
        
        moveto ntable
EndIf
CONTADOR=CONTADOR+nl

EndProc ;(Checa_Linha)

;*******************************************************************************
;* 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 "\n"
Print File ARQIMP CI_12CPP+CI_8LPP+CI_INEG+CI_IEXP 
Print File ARQIMP "N§ "+Format("W06.3,AL",NOTAFISC)+" - 0419"+CI_FNEG+CI_FEXP+Spaces(23)+
           "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                      DESENHO      QUANTIDADE UN   VR.UNITARIO         TOTAL"+"\n"
                  ;NNNNNNNNNN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1234567890 999999999,99 XX 9999999999,99 9999999999,99
                   
Print File ARQIMP Fill("=",96)+"\n"

CONTADOR = 13

EndProc ;(Cabecalho)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc SomarReferencia()

if NUMREF>0
   then
        Checa_Linha(2)
        Print File ARQIMP spaces(22)+Ci_INEG+Format("W30,AL","Total "+refant+".. ")
        Print File ARQIMP Format("W13.3,EIC",TOTREF)+CI_FNEG+"\n\n"
endif

TOTGER=TOTGER+TOTREF

refant=[Referencia]
TOTREF=0
NUMREF=0
endproc

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

Moveto TABELA_TEMP
Home
refant=[Referencia]
NUMREF=0
TOTREF=0
TOTGER=0
Cont=1
Scan

   if [Referencia]<>refant
      then SomarReferencia()
   endif   

  Descricao_Cor = [Descricao da Cor_Tecido]
  desccompl     = [Descricao do Item      ]
  
  getrecord "\\sistemas\\estoque\\itens" [Codigo do Item] to regitens 
  If RetVal
     Then 
          if not isblank(regitens["Descricao Complementar"])
             then desccompl=regitens["Descricao do Item"] + " " + regitens["Descricao Complementar"]
                  ;Descricao_Cor=regitens["Descricao da Cor_Tecido"]            
          endif    
  EndIf
  ;If Descricao_Cor<>""
  ;   Then If desccompl<>""  
  ;           Then desccompl = desccompl + " " + Descricao_Cor
  ;           Else desccompl = Descricao_Cor
  ;        EnDIf
  ;EndIf
  
  nl=len(desccompl)/30
  if (len(desccompl)/30) > int(nl) or nl=0
     then nl=int(nl)+1
  endif    

  Checa_Linha(nl)
  posi=1
  s=Format("W10,AL",[Referencia])+Spaces(1)
  for ii from 1 to nl
    s=s+Format("W31,AL",Substr(desccompl,posi,30))
    posi=posi+30
    if Substr(desccompl,posi,30)<>""
     then Print File ARQIMP s+"\n"
          s=Spaces(11)
    endif      
  endfor
  Print File ARQIMP s
  Print File ARQIMP Format("W10",Descricao_Cor)+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"
  
  TOTREF=TOTREF+[Quantidade]
  NUMREF=NUMREF+1
EndScan
SomarReferencia()

Checa_Linha(1)
Print File ARQIMP "\n"

TOTREF=TOTGER
NUMREF=1
refant=""
SomarReferencia()

EndProc ;(Itens)

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

Moveto "FaturaC"

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

If [Faturac->Frete Incluso na Nota]="S" or
  [Faturac->Frete Incluso na Nota]="+"
  Then  vrfrete=[Faturac->Valor do Frete]
       lvrfrete="(+)              Frete : "+Format("W13.2,EIC",vrfrete)
  Else  vrfrete=BlankNum()
       lvrfrete="(:)              Frete : "+Format("W13.2,EIC",vrfrete)
EndIf
 
linha1="(=) Total dos Produtos : "+Format("W13.2,EIC",[Faturac->Valor Mercadoria])
linha2="(-) Descontos "+Format("W6.2,EIC",[Faturac->Taxa de Desconto])+"%  : "+Format("W13.2,EIC",[Faturac->Valor Desconto])
linha3=lvrfrete  
linha4="(=)              Total : "+Format("W13.2,EIC",[Faturac->Valor Nota Fiscal])
imprimeobs()

Checa_Linha(4)         

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

Print File ARQIMP "Transportadora: "+Format("W05,AL",[Faturac->Codigo da Transportadora])+Format("W25,AL",Upper([Faturac->Nome Fantasia Transport]))+"\n"

Print File ARQIMP "Cond.Pagamento: "+[Faturac->Descricao CondPagto]+" - Forma Pgto: "+[Faturac->Forma de Pagamento]+"\n\n"

Vencimentos()

Print File ARQIMP CI_6LPP+CI_10CPP+"\f"

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Proc Seleciona()
Do_It!

TABELA_TEMP=Cria_Tabela("","Numero da OF(A6*),Referencia(A20*),Descricao do Item(A30*),Descricao da Cor_Tecido(A20*),Item da OF(S*),Codigo do Item(A10),"+
                           "Preco Unitario($),Quantidade(N),Unidade Fiscal(A4),Preco Total($)")

CoEditKey

{TableAdd} TypeIn TABELA_TEMP Enter

Moveto "FaturaI"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]

  Moveto TABELA_TEMP
  End
  Down
  [Numero da OF           ]=[FaturaI->Numero da OF           ]
  [Referencia             ]=[FaturaI->Referencia             ]
  [Descricao do Item      ]=[FaturaI->Descricao do Item      ]
  [Descricao da Cor_Tecido]=[FaturaI->Descricao da Cor_Tecido]
  [Item da OF             ]=[FaturaI->Item da OF             ]
  [Codigo do Item         ]=[FaturaI->Codigo do Item         ]
  [Preco Unitario         ]=[FaturaI->Preco Unitario         ]
  [Quantidade             ]=[FaturaI->Quantidade             ]
  [Unidade Fiscal         ]=[FaturaI->Unidade Fiscal         ]
  [Preco Total            ]=[FaturaI->Preco Total            ]
  UnLockRecord

  Moveto "FaturaI"
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

EndProc ;Seleciona()

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

TamObs=55

s=""+Tira_QuebraLinha([Observacao na Nota Fiscal])

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

if nlobs<5 then nlobs=4 endif
nlobs=nlobs+1

Checa_Linha(nlobs)

posobs=1
For i from 1 to nlobs

  switch
    case i=1 : s2=linha1 
    case i=2 : s2=linha2 
    case i=3 : s2=linha3 
    case i=4 : s2=linha4
    otherwise: s2=""
  endswitch

  Print File ARQIMP CI_INEG+format("W58,AL",SubStr(s,posobs,tamobs))+CI_FNEG+s2+"\n"
  posobs=posobs+tamobs
EndFor

endproc

;*******************************************************************************
;* Rotina de Impressao dos Vencimentos                                         *
;*******************************************************************************
Proc Vencimentos()
private s1,s2,s3, kv

s1="Vencimentos...: "
s2="                "
s3="                "
kv=0

Moveto "FaturaV"
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
 if kv=6 
    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

 kv=kv+1
 s1=s1+spaces(08)+[Forma de Pagamento]+Spaces(02)
 s2=s2+Format("D13",[Data])+Spaces(02)
 s3=s3+Format("W10.2,EIC",[Valor])+Spaces(02)

  Skip
  If EOT() Then QuitLoop EndIf
EndWhile
if kv>0
  then 
       Checa_Linha(3)         
       Print File ARQIMP s1+"\n"
       Print File ARQIMP s2+"\n"
       Print File ARQIMP s3+"\n"
endif
endproc


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

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

Do_it!

Seleciona()

For ii From 1 To 2    
  NPAG = 0
  Cabecalho()
  Itens()
  Rodape()   
EndFor

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

Do_It!
Moveto TABELA_TEMP ClearImage Delete TABELA_TEMP

Moveto "FaturaC"
CoEditKey

Release Vars NPAG,CONTADOR,TOTREF,NUMREF,TOTGER,NUMOF,TABELA_TEMP,
             linha1, linha2, linha3, linha4
Release Procs Cabecalho,Itens,Rodape,Checa_Linha,Seleciona,SomarReferencia,
              Vencimentos,imprimeobs 
LIMPAGUARDE()
