;** RO_274 ********************************************************************
;** Imprime a Digitacao do Romaneio                                ** PODIUM ***
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 08/10/2010 por Bruno Carvalho
;Alterado em     : 14/10/2010 por Ronaldo Ribeiro
;Motivo AlteraĈo: Ajustes
;Alterado em     : 25/11/2010 por Nikolas
;Motivo AlteraĈo: Ajustes
;Alterado em     : 03/12/2010 por Nikolas
;Motivo AlteraĈo: Ajustes espaos nos Vencimentos
;Alterado em     : 14/12/2010 por Bruno Carvalho
;Motivo AlteraĈo: Inclusao de Email
;Alterado em     : 07/06/2011 Karina Andrade
;Motivo AlteraĈo: CondiĈo para mensagem.
;Alterado em     : 30/08/2013 Anivel Augusto Rodrigues
;Motivo AlteraĈo: Ajustes exclusao tabelas Itens/Destinat j  estavam abertas
;Ultima Alteracao: 30/08/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Revisado table buffer ocorrido pelo sw_Cons                    
;Ultima Alteracao: 01/11/2013 por Nikolas
;Motivo Alteracao: Colocado para imprimir o c˘digo do item no lugar da referencia
;Ultima Alteracao: 04/11/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes no codigo concentrador 
;Ultima Alteracao: 05/11/2013 por Bruno Carvalho
;Motivo Alteracao: Alterado romaneio para imprimir todas as grades utilizadas dos itens 
;Ultima Alteracao: 07/11/2013 por Bruno Carvalho
;Motivo Alteracao: Ajuste p/ 6 digitos do codigo do item, assim, agrupar  os semelhantes.
;Ultima Alteracao: 09/05/2016 por Nikolas
;Motivo Alteracao: Retirado mensagem quando for duplicada
;Ultima Alteracao: 11/05/2016 por Bruno Carvalho
;Motivo Alteracao: Alterado a exibiĈo no relat˘rio [Codigo do Item] -> [Referencia] #Sol.22907#
;Ultima Alteracao: 15/06/2016 por Kamila Gomes
;Motivo Alteracao: Ajuste Codigo Concentrador da tabela Iten_Com
;Ultima Alteracao: 09/02/2017 por Rafael Matos
;Motivo Alteracao: Ajustes erros Locate
;Ultima Alteracao: 16/02/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Incluso imprimeobs()
;Ultima Alteracao: 23/03/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado [Descricao Tipo Pagamento] na impressĈo da Forma de Pagamento
;Ultima Alteracao: 28/03/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao utilizar o GetRecord na tabela TpPagto
;Ultima Alteracao: 05/07/2017 por Rafael Matos
;Motivo Alteracao: Retirado "Fatura TG", alterado para tabela tempor ria
;Ultima Alteracao: 26/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes quebra linha obs                    
;Ultima Alteracao: 26/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes itens mercadoria/servico

;*******************************************************************************
;* Rotina para Impressao do Cabecalho                                          *
;*******************************************************************************
Proc Cabecalho()
Print File ARQIMP CI_10CPP+CI_6LPP+"\n"
NPAG=NPAG+1

Moveto "FaturaC"
Print File ARQIMP  "--------------------------------------------------------------------------------" + "\n"
Print File ARQIMP Spaces(28)+"Emissao: "+Format("D13",Today())+"-"+Time()+"              Pagina: "+StrVAl(NPAG)+"\n"
Print File ARQIMP  "--------------------------------------------------------------------------------" + "\n\n"

Print File ARQIMP Spaces(02)+"Operacao: "+Format("W25,AL",[Descricao da Destinacao])
Print File ARQIMP Spaces(24)+"Romaneio No "+Format("W06.3,AL",NOTAFISC)+"\n"
Print File ARQIMP Spaces(61)+"Pedido No "+Format("W06.3,AL",[Numero do Pedido])+"\n"

Print File ARQIMP Spaces(02)+"Cliente.......: "+Format("W05,AL",[Codigo])+Format("W46,AL",[Razao Social])+"\n"

EMAIL   = ""
COD_CLI = ""
COD_CLI = [Codigo]
Moveto "\\Sistemas\\Cadastro\\Destinat"    
Moveto [Codigo]
Locate COD_CLI
If Retval
   Then EMAIL = [Endereco_Eletronico]
   Else EMAIL = ""
EndIf             
Moveto "FaturaC"
 
If EMAIL <> ""
   Then Print File ARQIMP Spaces(18)+Format("W15,AL",[Telefone])+Format("40,AL",EMAIL)+"\n"
   Else Print File ARQIMP Spaces(18)+Format("W15,AL",[Telefone])+"\n"
EndIF

Print File ARQIMP Spaces(02)+"Local Fatura..: "
Print File ARQIMP Format("W33,AL",[Endereco])
Print File ARQIMP Spaces(02)+Format("W20,AL",[Bairro])+"\n"
Print File ARQIMP Spaces(18)+Format("W10,AL",[CEP])
Print File ARQIMP Spaces(02)+Format("W20,AL",[Cidade])+" -"
Print File ARQIMP Spaces(01)+Format("W04,AL",[UF])+"\n"
Print File ARQIMP Spaces(18)+Format("W18,AL",[CGC])
Print File ARQIMP Spaces(02)+Format("W25,AL",[IE])+"\n"

Print File ARQIMP Spaces(02)+"Dt Emissao Dt Saida Volumes Representante "+ "\n"
Print File ARQIMP Spaces(02)+"---------- -------- ------- ------------------------"+"\n"

Print File ARQIMP Spaces(02)+Format("D13",[Data de Emissao])
Print File ARQIMP Spaces(01)+Format("D13",[Data de Saida])
Print File ARQIMP Spaces(01)+Format("W07,AR",[Numero de Volumes])
Print File ARQIMP Spaces(01)+Format("W25,AL",[Nome Fantasia Represent])+CI_15CPP+"\n\n"

NLINHA = 14 

Cabecalho_Item()

EndProc
;*******************************************************************************
;* Rotina para Impressao do Cabecalho do Item                                  *
;*******************************************************************************
Proc Cabecalho_Item()
Private wc,linha
                  
          linha=" ---------------------------------------------------------------------------------------------------------------------------------------"
Print File ARQIMP linha+"\n"

Moveto TABELA_TEMP
For wc From 1 to DynArraySize(Array_Grade)
  If wc=DynArraySize(Array_Grade)
     Then linha=" SeqŬitem                         ŬCodConŬ"+Array_Grade[wc]+                                           " TotalŬUN Ŭ   PrUnitŬ    PrTotal"
     Else linha="    Ŭ                                    Ŭ"+Array_Grade[wc]+                                           "                                "
  EndIf
  Print File ARQIMP linha+"\n"
  NLINHA=NLINHA+1
EndFor
          linha=" ---+------------------------------------+-+----+----+----+----+----+----+----+----+----+----+----+----+------+---+---------+-----------"
          
Print File ARQIMP linha+"\n"

                 ;XXXŬ1234567890 1234567890123456789012ŬXXXXXXŬAŬAAAAŬAAAAŬAAAAŬAAAAŬAAAAŬAAAAŬAAAAŬAAAAŬAAAAŬAAAAŬAAAAŬAAAAŬ999999ŬAAAŬ999999999Ŭ999999999999

NLINHA=NLINHA+2

EndProc

;*******************************************************************************
;* Rotina para Impressao do Rodape                                             *
;*******************************************************************************
Proc Rodape()
Print File ARQIMP Spaces(120)+"** Continua =>"+"\n"
Print File ARQIMP
"---------------------------------------------------------------------------------------------------------------------------------------"+"\n\f"
EndProc

;*******************************************************************************
;* Rotina para Impressao do Relatorio                                          *
;*******************************************************************************
Proc IMPFAT()
;************************* IMPRESSAO DO CABECALHO *****************************
If Not IsAssigned(NOMEMPRESA)
   Then NOMEMPRESA=""
EndIf
NPAG=0

Verifica_Grades()  
Cabecalho()

Moveto TABELA_TEMP
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
QUANT  =0
QUANT1 =0
QUANT2 =0
QUANT3 =0
QUANT4 =0
QUANT5 =0
QUANT6 =0
QUANT7 =0
QUANT8 =0
QUANT9 =0
QUANT10=0
QUANT11=0
QUANT12=0
TOT=0
SeqItPed=0

While [Numero da OF]=[FaturaC->Numero da OF]
   
   COD_ITEM = [Codigo do Item]
   CODIT    = [Referencia]
   Moveto "\\Sistemas\\Estoque\\Itens"
   Moveto [Referencia]
   Locate CODIT
   If Retval
      Then DESC_ITEM    = [Descricao do Item]
      Else DESC_ITEM    = ""
   EndIf
   
   GetRecord "\\Sistemas\\Estoque\\Iten_Com" [Codigo do Item] To REG_ITCOM
   If RetVal
      Then CONCENTRADOR = REG_ITCOM["Codigo Concentrador"]
      Else CONCENTRADOR = ""
   EndIf
   Moveto TABELA_TEMP

   If NLINHA>53
      Then Rodape()
           Cabecalho()
           Moveto TABELA_TEMP
   EndIf

   SeqItPed=SeqItPed+1
   Print File ARQIMP Spaces(1)+Format("W03,AR",StrVal(SeqItPed))+ESPACO
   Print File ARQIMP Format("W6,AL",CODIT)
   Print File ARQIMP Spaces(1)+Format("W22,AL",DESC_ITEM)+ESPACO
   Print File ARQIMP Format("W06,AL",CONCENTRADOR)+ESPACO+Spaces(2)
   Print File ARQIMP Format("W04,EIC",[Qtd1    ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd2    ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd3    ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd4    ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd5    ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd6    ])+ESPACO       
   Print File ARQIMP Format("W04,EIC",[Qtd7    ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd8    ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd9    ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd10   ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd11   ])+ESPACO
   Print File ARQIMP Format("W04,EIC",[Qtd12   ])+ESPACO
   Print File ARQIMP Format("W06,EIC",[Qtd1   ]+[Qtd2   ]+[Qtd3   ]+[Qtd4    ]+
                                      [Qtd5   ]+[Qtd6   ]+[Qtd7   ]+[Qtd8    ]+
                                      [Qtd9   ]+[Qtd10  ]+[Qtd11  ]+[Qtd12   ])+ESPACO
   Print File ARQIMP Spaces(01)+Format("W02,AL",[Unidade Fiscal])+ESPACO
   Print File ARQIMP Format("W09.2,EIC",[Preco Unitario])+ESPACO
   Print File ARQIMP Format("W11.2,EIC",[Preco Total])+"\n"
   NLINHA=NLINHA+1

   QUANT  =QUANT  +[Qtd1    ]+[Qtd2    ]+[Qtd3    ]+[Qtd4    ]+
                   [Qtd5    ]+[Qtd6    ]+[Qtd7    ]+[Qtd8    ]+
                   [Qtd9    ]+[Qtd10   ]+[Qtd11   ]+[Qtd12   ]
   QUANT1   =QUANT1   +[Qtd1    ]
   QUANT2   =QUANT2   +[Qtd2    ]
   QUANT3   =QUANT3   +[Qtd3    ]
   QUANT4   =QUANT4   +[Qtd4    ]
   QUANT5   =QUANT5   +[Qtd5    ]
   QUANT6   =QUANT6   +[Qtd6    ]
   QUANT7   =QUANT7   +[Qtd7    ]
   QUANT8   =QUANT8   +[Qtd8    ]
   QUANT9   =QUANT9   +[Qtd9    ]
   QUANT10  =QUANT10  +[Qtd10   ]
   QUANT11  =QUANT11  +[Qtd11   ]
   QUANT12  =QUANT12  +[Qtd12   ]
   TOT=TOT+[Preco Total]
   Skip
   If EOT() Then QuitLoop EndIf
EndWhile

Moveto "FaturaC"
Print File ARQIMP "                                            ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------               -----------"+"\n"

Print File ARQIMP Spaces(43)
Print File ARQIMP Format("W05,EIC",QUANT1   )
Print File ARQIMP Format("W05,EIC",QUANT2   )
Print File ARQIMP Format("W05,EIC",QUANT3   )
Print File ARQIMP Format("W05,EIC",QUANT4   )
Print File ARQIMP Format("W05,EIC",QUANT5   )
Print File ARQIMP Format("W05,EIC",QUANT6   )
Print File ARQIMP Format("W05,EIC",QUANT7   )
Print File ARQIMP Format("W05,EIC",QUANT8   )
Print File ARQIMP Format("W05,EIC",QUANT9   )
Print File ARQIMP Format("W05,EIC",QUANT10  )
Print File ARQIMP Format("W05,EIC",QUANT11  )
Print File ARQIMP Format("W05,EIC",QUANT12  )
Print File ARQIMP Format("W07,EIC",QUANT)
Print File ARQIMP Format("W26.2,EIC",TOT)+"\n"
Print File ARQIMP CI_10CPP+CI_6LPP+"\n"

Print File ARQIMP Spaces(48)+"Desconto"+Format("W06.2,EIC",[Taxa de Desconto])+"%..."
Print File ARQIMP Format("W10.2,EIC",[Valor Desconto])+"\n"

Print File ARQIMP Spaces(48)+"Total Liquido......"+Format("W12.2,EIC",[Valor Mercadoria Liquido])+"\n\n"
                
If NLINHA>50
   Then Rodape()
        Cabecalho()
EndIf

DESC_TPPAGTO = ""
GetRecord "\\Sistemas\\Cadastro\\TpPagto" [FaturaC->Forma de Pagamento] To REG_TPPAGTO
If RetVal
   Then DESC_TPPAGTO = REG_TPPAGTO["Descricao Tipo Pagamento"]
EndIf   

;********************* IMPRESSAO DOS VENCIMENTOS **************************
Moveto "FaturaC"
Print File ARQIMP Spaces(02)+CI_10CPP+CI_6LPP+"Condicao de Pagamento: "+[Descricao CondPagto]+"\n"
If DESC_TPPAGTO<>"" 
   Then Print File ARQIMP Spaces(02)+"   Forma de Pagamento: "+DESC_TPPAGTO+"\n"
EndIf   

Print File ARQIMP Spaces(12)+"Vencimentos:  "

Array DATA[4]
Array VALOR[4]
K=0
KV=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]  = Format("D13",[Data])+" "
  VALOR[K] = Format("W11.2,EIC",[Valor])
  If K=4
     Then VENC()
          K=0
  EndIf
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile
If K>0
   Then VENC()
EndIf
Print File ARQIMP "\n"
                  
Moveto"Faturac"
imprimeobs()

If [Forma de Pagamento]<>"DP"
 Then Print File ARQIMP "\n"
      ;Print File ARQIMP ",\n"
      ;Print File ARQIMP "CONFORME A RELACAO ACIMA AO NOSSO ENDERECO, VIA SEDEX OU CARTA COM A.R.\n"
      Print File ARQIMP CI_FNEG
EndIf

;************************* IMPRESSAO DO RODAPE ********************************

Print File ARQIMP CI_10CPP+CI_6LPP+"\f"

EndProc

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

TamObs=80

s="Observacoes: "+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

posobs=1
For i from 1 to nlobs
  Print File ARQIMP CI_INEG+SubStr(s,posobs,tamobs)+CI_FNEG+"\n"
  posobs=posobs+tamobs
EndFor

endproc

;*******************************************************************************
;* Rotina Converte caracter especial e passa para maiusculo                    *
;*******************************************************************************
Proc Tira_QuebraLinha(s)
private s, sn, i, ch
     
sn=""
For i from 1 to Len(s)
  ch=SubStr(s,i,1)
  
  Switch
    Case ch     ="\n": ch=" " ;
  EndSwitch
  sn=sn+ch
EndFor
Return sn
EndProc

;*******************************************************************************
;* Rotina de Impressao dos Vencimentos                                         *
;*******************************************************************************
Proc VENC()
If KV>0
   Then Print File ARQIMP Spaces(25)
EndIf
For I From 1 to K
  Print File ARQIMP  DATA[I]+Spaces(02)
EndFor
Print File ARQIMP "\n"
Print File ARQIMP Spaces(25)
For I From 1 to K
  Print File ARQIMP VALOR[I]+Spaces(02)
EndFor
Print File ARQIMP "\n\n"

KV=KV+1
EndProc

;*******************************************************************************
;* Verifica as Grades no Pedido                                                *
;*******************************************************************************
Proc Verifica_Grades()
Private wc,gok

DynArray Array_Grade[]

Moveto TABELA_TEMP
Moveto [Numero da OF]
Locate [FaturaC->Numero da OF]
While [Numero da OF]=[FaturaC->Numero da OF]
  gok=False
  For wc From 1 to DynArraySize(Array_Grade)
    If Array_Grade[wc]=Rtrim(SubStr([Descricao do Item],24,2))
       Then gok =True
    EndIf
  EndFor
  If Not gok
     Then Array_Grade[DynArraySize(Array_Grade)+1]=Completa(Rtrim(SubStr([Descricao do Item],24,2)),1," ")
  EndIf
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile

Array array_tittm[12]
Moveto "\\Sistemas\\Estoque\\TpGrade"
Moveto [Codigo da Grade]
For wc From 1 to DynArraySize(Array_Grade)
  Locate SubStr(Array_Grade[wc],1,1)
  If RetVal
     Then array_tittm[1] =[Titulo Grade1 ]
          array_tittm[2] =[Titulo Grade2 ]
          array_tittm[3] =[Titulo Grade3 ]
          array_tittm[4] =[Titulo Grade4 ]
          array_tittm[5] =[Titulo Grade5 ]
          array_tittm[6] =[Titulo Grade6 ]
          array_tittm[7] =[Titulo Grade7 ]
          array_tittm[8] =[Titulo Grade8 ]
          array_tittm[9] =[Titulo Grade9 ]
          array_tittm[10]=[Titulo Grade10]
          array_tittm[11]=[Titulo Grade11]
          array_tittm[12]=[Titulo Grade12]
     Else For i From 1 to 12
            array_tittm[i]=""
          EndFor
  EndIf

  Array_Grade[wc]=Array_Grade[wc]+"Ŭ"+
                  Format("W4,AR",array_tittm[01])+"Ŭ"+
                  Format("W4,AR",array_tittm[02])+"Ŭ"+
                  Format("W4,AR",array_tittm[03])+"Ŭ"+
                  Format("W4,AR",array_tittm[04])+"Ŭ"+
                  Format("W4,AR",array_tittm[05])+"Ŭ"+
                  Format("W4,AR",array_tittm[06])+"Ŭ"+
                  Format("W4,AR",array_tittm[07])+"Ŭ"+
                  Format("W4,AR",array_tittm[08])+"Ŭ"+
                  Format("W4,AR",array_tittm[09])+"Ŭ"+
                  Format("W4,AR",array_tittm[10])+"Ŭ"+
                  Format("W4,AR",array_tittm[11])+"Ŭ"+
                  Format("W4,AR",array_tittm[12])+"Ŭ"
EndFor
Moveto TABELA_TEMP

Release Vars wc,wi,gok,array_tittm
EndProc

;*******************************************************************************
;* Rotina Monta Aray Grade                                                     *
;*******************************************************************************
Proc Verifica_Array_Grade()
Private i,wsite,CODANTERIOR

WSREF =[Codigo do Item]
COLUNA=0

Moveto [Codigo do Item]
If Not BUSCA_LOOKUP("Codigo do Item",[Codigo do Item],"Item no Cadastrado !")
   Then Return
EndIf
WSREF=REG_BUSCA_LOOKUP["Referencia"]

Moveto "\\Sistemas\\Estoque\\TpGrade"
Moveto [Codigo da Grade]
Locate REG_BUSCA_LOOKUP["Codigo da Grade"]
If Not RetVal
   Then Mensagem("Item "+[FaturaI->Codigo do Item]+" sem grade definida !")
        Return
   Else CopyToArray REG_BUSCA_LOOKUP
EndIf

Moveto "FaturaI"
Array_TM[1] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item1"]))
Array_TM[2] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item2"]))
Array_TM[3] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item3"]))
Array_TM[4] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item4"]))
Array_TM[5] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item5"]))
Array_TM[6] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item6"]))
Array_TM[7] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item7"]))
Array_TM[8] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item8"]))
Array_TM[9] =LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item9"]))
Array_TM[10]=LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item10"]))
Array_TM[11]=LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item11"]))
Array_TM[12]=LTrim(RTrim(REG_BUSCA_LOOKUP["Codigo Item12"]))

For i from 1 to 12
  If Not IsBlank(WSREF)
     Then QuitLoop
  EndIf
  If LTrim(RTrim(SubStr(Array_TM[i],1,2)))<>""
     Then If Len(Array_TM[i])=1
             Then CODANTERIOR=SubStr([Codigo do Item],1,7)+"00"+Array_TM[i]
             Else CODANTERIOR=SubStr([Codigo do Item],1,6)+"00"+Array_TM[i]
          EndIf
          If BUSCA_LOOKUP("Codigo do Item",CODANTERIOR,"SM")
             Then WSREF=REG_BUSCA_LOOKUP["Referencia"]
          EndIf
  EndIf
EndFor

For i from 1 to 12
  If Len(RTrim(SubStr(Array_TM[i],1,2)))=1
     Then If SubStr([Codigo do Item],10,1)=SubStr(Array_TM[i],1,1)
             Then Coluna=i
                  QuitLoop
          EndIf
     Else If SubStr([Codigo do Item],9,2)=SubStr(Array_TM[i],1,2)
             Then Coluna=i
                  QuitLoop
          EndIf
  EndIf
EndFor

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
ArqImp=PrivDir()+"RO_274.Txt"
If IsFile(ArqImp)
   Then Run NoRefresh "Del "+ArqImp
EndIf

ESPACO = "Ŭ"

Array Array_TM[12]

AGUARDE("Imprimindo Romaneio -> "+NOTAFISC)
Do_It!

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")

CoEditKey

;{TableAdd} "\\Sistemas\\Estoque\\Itens" Enter
{TableAdd} TypeIn TABELA_TEMP Enter
{TableAdd} "\\Sistemas\\Estoque\\TpGrade" Enter

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

  Verifica_Array_Grade()
  Moveto "FaturaI"

  WSCOR  = [Codigo da Cor_Tecido]
  WSPRU  = [Preco Unitario      ]
  WSREF2 = SubStr([Codigo do Item],1,6)

  GetRecord "\\Sistemas\\Estoque\\Itens" [Codigo do Item] To DynArray GRADE
  If RetVal  
     Then GRADE=Rtrim(GRADE["Codigo da Grade"])
     Else GRADE="" 
  EndIf

  Moveto TABELA_TEMP
  Moveto [Codigo do Item]
  Locate IndexOrder by "Indftgrd" WSREF2
  ;Locate IndexOrder by "Indftgrd" WSREF
  If Not RetVal
     Then End
          Down
          [Numero da OF           ]=[FaturaI->Numero da OF           ]
          [Sequencia              ]=SEQG + 1 ;BlankNum()
          [Referencia             ]=WSREF
          [Codigo do Item         ]=WSREF2                                            ;[FaturaI->Codigo do Item]    ;WSREF
          [Codigo da Cor_Tecido   ]=[FaturaI->Codigo da Cor_Tecido   ]
          [Preco Unitario         ]=[FaturaI->Preco Unitario         ]
          [Descricao do Item      ]=Substr([FaturaI->Descricao do Item],1,23)+GRADE   ;Grade na posiĈo 24
          [Descricao da Cor_Tecido]=[FaturaI->Descricao da Cor_Tecido]
          [Unidade Fiscal         ]=[FaturaI->Unidade Fiscal         ]
          SEQG=SEQG+1
  EndIf

  Switch
    Case Coluna=0 : [Qtd1  ]=[Qtd1  ]+[FaturaI->Quantidade]
    Case Coluna=1 : [Qtd1  ]=[Qtd1  ]+[FaturaI->Quantidade]
    Case Coluna=2 : [Qtd2  ]=[Qtd2  ]+[FaturaI->Quantidade]
    Case Coluna=3 : [Qtd3  ]=[Qtd3  ]+[FaturaI->Quantidade]
    Case Coluna=4 : [Qtd4  ]=[Qtd4  ]+[FaturaI->Quantidade]
    Case Coluna=5 : [Qtd5  ]=[Qtd5  ]+[FaturaI->Quantidade]
    Case Coluna=6 : [Qtd6  ]=[Qtd6  ]+[FaturaI->Quantidade]
    Case Coluna=7 : [Qtd7  ]=[Qtd7  ]+[FaturaI->Quantidade]
    Case Coluna=8 : [Qtd8  ]=[Qtd8  ]+[FaturaI->Quantidade]
    Case Coluna=9 : [Qtd9  ]=[Qtd9  ]+[FaturaI->Quantidade]
    Case Coluna=10: [Qtd10 ]=[Qtd10 ]+[FaturaI->Quantidade]
    Case Coluna=11: [Qtd11 ]=[Qtd11 ]+[FaturaI->Quantidade]
    Case Coluna=12: [Qtd12 ]=[Qtd12 ]+[FaturaI->Quantidade]
  EndSwitch
  [Preco Total]=[Preco Unitario]*([Qtd1]+[Qtd2]+[Qtd3]+[Qtd4]+[Qtd5]+[Qtd6]+
                                  [Qtd7]+[Qtd8]+[Qtd9]+[Qtd10]+[Qtd11]+[Qtd12])
  UnLockRecord

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

Print File ARQIMP CI_10CPP
Print File ARQIMP CI_6LPP

IMPFAT()

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

Do_It!
Moveto TABELA_TEMP
ClearImage
Delete TABELA_TEMP
Moveto "\\Sistemas\\Estoque\\TpGrade"
ClearImage

Moveto "FaturaC"
CoEditKey
Release Vars VALOR,DATA,ARRAY_TM,WSREF,COLUNA, NPAG, NLINHA
Release Procs IMPFAT,VENC,Verifica_Array_Grade, Cabecalho, Rodadpe, imprimeobs, Tira_QuebraLinha
LIMPAGUARDE()
