;** RO_0345B *******************************************************************
;** Imprime a Digitacao do Romaneio                      ** VITORIA TEXTIL**   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 03/02/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 23/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes destinacao 
;Ultima Alteracao: 14/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes rendimento
;Ultima Alteracao: 14/09/2017 por Bruno Carvalho
;Motivo Alteracao: Buscando referˆncia ao inv‚s do rendimento 

;*******************************************************************************
;* 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 
Print File ARQIMP "OF "+Format("W06.3,AL",[FaturaC->Numero da OF])+" - 0345"+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 CI_IEXP+CI_INEG+Format("W50,AC","** AGRUPAMENTO POR REFERENCIA **")+CI_FEXP+CI_FNEG+"\n"
Print File ARQIMP "REFERENCIA      DESCRICAO                      RENDIMENTO   QUANTIDADE UN V.UNITARIO      TOTAL"+"\n"
                  ;NNNNNNNNNNNNNNN 123456789012345678901234567890 12345678901239999999,99 XX 9999999,99 9999999,99 

CONTADOR = 11
Moveto TABELA_TEMP

EndProc ;(Cabecalho)

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

Moveto TABELA_TEMP
Scan
  copytoarray regfaturai

  getrecord "\\sistemas\\estoque\\iten_tec" [Codigo do Item] to regitens 
  If RetVal
     Then RENDIMENTO = regitens["Rendimento"]
     Else RENDIMENTO = ""
  EndIf

  Checa_Linha(1)
  Print File ARQIMP Fill("-",95)+"\n"
  
  desccompl=regfaturai["Descricao do Item"]
  COD_ITEM =regfaturai["Referencia"       ]
  
  nl=len(desccompl)/30
  if (len(desccompl)/30) > int(nl) or nl=0
     then nl=int(nl)+1
  endif    

  posi=1
  s=Format("W15,AL",COD_ITEM)+Spaces(1)
  
  for ii from 1 to nl
  
    Checa_Linha(1)
    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(16)
    endif      
     
  endfor
  Print File ARQIMP s
  Print File ARQIMP Format("W12,AL"   ,RENDIMENTO)     
  If [Quantidade]-Int([Quantidade])>0
     Then Print File ARQIMP Format("W11.3,EIC",[Quantidade])+Spaces(1)
     Else Print File ARQIMP Format("W11,EIC"  ,[Quantidade])+Spaces(1)
  EndIf
  Print File ARQIMP Format("W02,Al"   ,[Unidade Fiscal])     
  Print File ARQIMP Format("W11.2,EIC",[Preco Unitario])
  Print File ARQIMP Format("W11.2,EIC",[Preco Total])+"\n"
  
Endscan

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  
         Checa_Linha(20)

         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 24

           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)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc carregarvencimentos()

Array  DATA[24]
Array VALOR[24]
Array FPGT [24]

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

EndProc ;(carregarvencimentos)


;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc agruparreferencia()
Private WSREF, WSCOD, WSCOR, WSPRU, SEQG, DESCR, UNID, regitens

TABELA_TEMP=Cria_Tabela("","Numero da OF(A6*),Sequencia(S*),Referencia(A20*),Codigo do Item(A10),Codigo da Cor_Tecido(A4),"+
"Preco Unitario($),Descricao do Item(A100),Descricao da Cor_Tecido(A20),Qtd1(S),Qtd2(S),Qtd3(S),Qtd4(S),Qtd5(S),Qtd6(S),Qtd7(S),Qtd8(S),Qtd9(S),"+
"Qtd10(S),Qtd11(S),Qtd12(S),Quantidade(N),Unidade Fiscal(A4),Preco Total($),Aliquota de IPI(N),Aliquota de ICMS(N),Peso Liquido(N),Peso Embalagem(N),Volumes(N)")

Adiciona_Indice_Secundario(TABELA_TEMP,"Indftgrd","Codigo do Item,Codigo da Cor_Tecido,Preco Unitario,Numero da OF,Sequencia")

Empty(TABELA_TEMP)

CoEditKey
{TableAdd} TypeIn TABELA_TEMP Enter

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

  if [Tipo do Item]="T"
     then WSCOD =PegaCodigoRaiz([Codigo do Item])
     Else WSCOD =[Codigo do Item]
  EndIf   
  
  getrecord "\\sistemas\\estoque\\itens" WSCOD to regitens 
  If RetVal
     Then WSREF=regitens["Referencia"]
          DESCR=regitens["Descricao do Item"]
          UNID =regitens["Unidade Fiscal"]
     Else WSREF="???"
          DESCR="???"
          UNID ="??"
  EndIf
  
  WSCOR =""
  WSPRU =[Preco Unitario]

  Moveto TABELA_TEMP
  Moveto [Codigo do Item]
  Locate IndexOrder by "Indftgrd" WSCOD,WSCOR,WSPRU
  If Not RetVal
     Then End
          Down
          [Numero da OF           ]=[FaturaI->Numero da OF           ]
          [Sequencia              ]=SEQG
          [Referencia             ]=WSREF
          [Codigo do Item         ]=WSCOD
          [Descricao do Item      ]=DESCR
          [Unidade Fiscal         ]=UNID 
          [Preco Unitario         ]=WSPRU
          SEQG=SEQG+1
  EndIf

  [Quantidade ]=[Quantidade    ]+[FaturaI->Quantidade]
  [Preco Total]=[Preco Unitario]*[Quantidade]
  UnLockRecord

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

EndProc ;(agruparreferencia)

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
ArqImp=PrivDir()+"Ro_0345B.Txt"
If IsFile(ArqImp)
   Then Deleta_Arquivo(ARQIMP)
EndIf
Do_It!
Moveto "Faturac"

agruparreferencia()

carregarvencimentos()
                 
Moveto "Faturac"
                                            
PARAM_NITENS=82
NPAG        =0

AGUARDE("Imprimindo OF -> "+[FaturaC->Numero da OF])
Cabecalho()
Itens()
Rodape(False) 

Do_It!
Moveto TABELA_TEMP ClearImage
Delete TABELA_TEMP

Moveto "FaturaC"
CoEditKEy

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

Release Vars VALOR,DATA,PARAM_NITENS,NPAG,CONTADOR,K,KV 
Release Procs Cabecalho,Itens,Rodape,Checa_Linha,carregarvencimentos,agruparreferencia 
LIMPAGUARDE()
