;** RO_0185A *******************************************************************
;** Imprime a Digitacao do Romaneio              ** Territorio Nacional **     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 24/01/2014 por Andrey Fillipe          
;Ultima Alteracao: 26/06/2018 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes itens mercadoria/servico

;*******************************************************************************
;* Observacäes referente a impressÆo do romaneio                               *
;*******************************************************************************
;
; Romaneio de impressÆo utilizado at‚ 14.08.2013
; Funcionando com a Grade, por‚m, nÆo estava montando a legenda correta da grade
; quando havia varios modelos de grade, por exemplo.
;
;*******************************************************************************
;* Checa linha na area de impressao dos itens                                  *
;*******************************************************************************
Proc Checa_Linha(Nl)
private nl

If (NLINHA+nl)>61
   Then RodaPe()
        Cabecalho()
EndIf
NLINHA=NLINHA+nl
EndProc

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

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",[FaturaC->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",[FaturaC->Numero do Pedido])+"\n\n\n"

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

Print File ARQIMP Spaces(02)+"Local Fatura..: "
Print File ARQIMP Format("W40,AL",[FaturaC->Endereco])
Print File ARQIMP Spaces(02)+[FaturaC->Bairro]+"\n"

Print File ARQIMP Spaces(18)+Format("W10,AL",[FaturaC->CEP])
Print File ARQIMP Spaces(02)+Format("W20,AL",[FaturaC->Cidade])+" -"
Print File ARQIMP Spaces(01)+Format("W04,AL",[FaturaC->UF])+"\n"

Print File ARQIMP Spaces(18)+Format("W18,AL",[FaturaC->CGC])
Print File ARQIMP Spaces(02)+Format("W25,AL",[FaturaC->IE])+"\n"

If EMAIL<>""
   Then Print File ARQIMP Spaces(18)+Format("W25,AL",EMAIL)+"\n\n"
   Else Print File ARQIMP "\n\n"
EndIf

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",[FaturaC->Data de Emissao])
Print File ARQIMP Spaces(01)+Format("D13",[FaturaC->Data de Saida])
Print File ARQIMP Spaces(01)+Format("W07,AR",[FaturaC->Numero de Volumes])
Print File ARQIMP Spaces(01)+Format("W25,AL",[FaturaC->Nome Fantasia Represent])+CI_15CPP+"\n\n"

;********************* IMPRESSAO DOS ITENS ********************************
Print File ARQIMP "Seq Item                                         P    M    G   GG   2 "+
"   4    6    8    10   12   14       Total UN   PrUnit    PrTotal"+"\n"
Print File ARQIMP "--- ----------------------------------------- ---- ---- ---- ---- ----"+
" ---- ---- ---- ---- ---- ---- ---- ------ -- -------- ----------"+"\n"
                                  ;999 999.9 123456789012345678901234567890 12345678901234567890 99.999 99.999 99.999 99.999 99.999 XX 9.999,99 999.999,99
NLINHA=22

EndProc

;*******************************************************************************
;* Rotina para Impressao do Rodape                                             *
;*******************************************************************************
Proc Rodape()
Print File ARQIMP Spaces(110)+"** 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

Moveto "FaturaC"

Moveto [Codigo]
Ativa_Lookup()
Moveto [Codigo]
Locate [FaturaC->Codigo]
If RetVal
   Then EMAIL=[Endereco_Eletronico]
   Else EMAIL=""
EndIf
KeyPress "ESC"   

NPAG=0
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]

   Checa_Linha(1)
   Moveto TABELA_TEMP

   SeqItPed=SeqItPed+1
   Print File ARQIMP Format("W03,AR",StrVal(SeqItPed))
   Print File ARQIMP Spaces(01)+Format("W10,AL",[Codigo do Item])
   Print File ARQIMP Spaces(01)+Format("W25,AL",[Descricao do Item])+Spaces(5)
   Print File ARQIMP Format("W05,EI",[Qtd1    ])
   Print File ARQIMP Format("W05,EI",[Qtd2    ])
   Print File ARQIMP Format("W05,EI",[Qtd3    ])
   Print File ARQIMP Format("W05,EI",[Qtd4    ])
   Print File ARQIMP Format("W05,EI",[Qtd5    ])
   Print File ARQIMP Format("W05,EI",[Qtd6    ])
   Print File ARQIMP Format("W05,EI",[Qtd7    ])
   Print File ARQIMP Format("W05,EI",[Qtd8    ])
   Print File ARQIMP Format("W05,EI",[Qtd9    ])
   Print File ARQIMP Format("W05,EI",[Qtd10   ])
   Print File ARQIMP Format("W05,EI",[Qtd11   ])
   Print File ARQIMP Format("W05,EI",[Qtd12   ])
   Print File ARQIMP Format("W07,EIC",[Qtd1   ]+[Qtd2   ]+[Qtd3   ]+[Qtd4    ]+
                                      [Qtd5   ]+[Qtd6   ]+[Qtd7   ]+[Qtd8    ]+
                                      [Qtd9   ]+[Qtd10  ]+[Qtd11  ]+[Qtd12   ])
   Print File ARQIMP Spaces(01)+Format("W02,AL",[Unidade Fiscal])
   Print File ARQIMP Format("W09.2,EIC",[Preco Unitario])
   Print File ARQIMP Format("W11.2,EIC",[Preco Total])+"\n"

   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"
Moveto [Forma de Pagamento]
If Busca_Lookup("Tipo do Pagamento",[FaturaC->Forma de Pagamento],"SM")
   Then NFP=REG_BUSCA_LOOKUP["Descricao Tipo Pagamento"]
   Else NFP=""
EndIf
UnLockRecord

Checa_Linha(2)
Print File ARQIMP          "                                              ---- ---- ---- ---- ----"+
" ---- ---- ---- ---- ---- ---- ---- ------             ----------"+"\n"

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

Checa_Linha(4)
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"

;********************* IMPRESSAO DOS VENCIMENTOS **************************
Checa_Linha(4)
Print File ARQIMP CI_10CPP+CI_6LPP+"Condicao Pagto: "+[Descricao CondPagto]+"  Forma Pagto: "+[Forma de Pagamento]+" "+NFP+"\n"

Print File ARQIMP "Vencimentos   : "+CI_INEG

Array DATA[9]
Array VALOR[9]
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("W10.2,AL,EIC",[Valor])
  If K=5
     Then VENC()
          K=0
  EndIf
  Skip
  If EOT() Then QuitLoop EndIf
EndWhile
If K>0
   Then VENC()
EndIf

Moveto"Faturac"

Checa_Linha(4)
Print File ARQIMP CI_10CPP+CI_6LPP+CI_FNEG
Print File ARQIMP "Transportadora: "+[Razao Social Transport]+"\n"

Print File ARQIMP "Observacoes   : "
If Substr([Observacao na Nota Fiscal],01,64)<>""
   Then Print File ARQIMP CI_INEG+Format("W64,AL",SubStr([Observacao na Nota Fiscal],001,64))+CI_FNEG+"\n"
   Else Print File ARQIMP "\n"
EndIf
If Substr([Observacao na Nota Fiscal],65,64)<>""
   Then Print File ARQIMP CI_INEG+Spaces(16)+Format("W64,AL",SubStr([Observacao na Nota Fiscal],65,64))+CI_FNEG+"\n"
EndIf
If Substr([Observacao na Nota Fiscal],129,64)<>""
   Then Print File ARQIMP CI_INEG+Spaces(16)+Format("W64,AL",SubStr([Observacao na Nota Fiscal],129,64))+CI_FNEG+"\n"
EndIf

If [Forma de Pagamento]="CH" Or [Forma de Pagamento]="CP"
   Then Checa_Linha(6)
        Print File ARQIMP CI_10CPP+CI_6LPP+"\n"
        Print File ARQIMP CI_INEG+"** NA OPORTUNIDADE PEDIMOS QUE NOS ENVIE OS CHEQUES REFERENTE A ESTE PEDIDO,"+"\n"
        Print File ARQIMP CI_INEG+"   CONFORME A RELACAO ACIMA AO NOSSO ENDERECO, VIA CARTA REGISTRADA"+CI_FNEG+"\n\n"

        Print File ARQIMP CI_INEG+"             Endereco: AV. VINTE E UM DE ABRIL, 185 - CENTRO"+CI_FNEG+"\n"
        Print File ARQIMP CI_INEG+"             CEP: 35.500-010 - DIVINOPOLIS/MG"+CI_FNEG+"\n"
EndIf

If [Forma de Pagamento]="DP" Or [Forma de Pagamento]="BO"
   Then Checa_Linha(7)
        Print File ARQIMP CI_10CPP+CI_6LPP+"\n"
        Print File ARQIMP CI_INEG+"** INFORMAMOS QUE FORAM EMITIDOS DUPLICATAS PELO BANCO DO BRASIL,"+"\n"
        Print File ARQIMP CI_INEG+"   CONFORME A RELACAO ACIMA. CASO NAO RECEBA A DUPLICATA ENTRE EM"+"\n"
        Print File ARQIMP CI_INEG+"   CONTATO COM A EMPRESA 5 DIAS ANTES DO VENCIMENTO,EVITANDO JUROS"+"\n"
        Print File ARQIMP CI_INEG+"   E DESPESAS DE CARTORIO. NAO NOS RESPONSABILIZAMOS POR ATRASO NA"+"\n"
        Print File ARQIMP CI_INEG+"   ENTREGA DAS DUPLICATAS."+CI_FNEG+"\n\n"
EndIf


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

Print File ARQIMP CI_10CPP+CI_6LPP+"\f"

EndProc

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

KV=KV+1
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 n„o 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_0185A.Txt"
If IsFile(ArqImp)
   Then Run NoRefresh "Del "+ArqImp
EndIf

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} TypeIn TABELA_TEMP Enter
{TableAdd} "\\Sistemas\\Estoque\\TpGrade" Enter

SEQG=1
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      ]

  Moveto TABELA_TEMP
  Moveto [Codigo do Item]
  Locate IndexOrder by "Indftgrd" WSREF
  If Not RetVal
     Then End
          Down
          [Numero da OF           ]=[FaturaI->Numero da OF           ]
          [Sequencia              ]=BlankNum()
          [Referencia             ]=WSREF
          [Codigo do Item         ]=WSREF
          [Codigo da Cor_Tecido   ]=[FaturaI->Codigo da Cor_Tecido   ]
          [Preco Unitario         ]=[FaturaI->Preco Unitario         ]
          [Descricao do Item      ]=[FaturaI->Descricao do Item      ]

          [Descricao do Item]=Substr([FaturaI->Descricao do Item],1,23)

          [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, NFP
Release Procs IMPFAT,VENC,Verifica_Array_Grade, Cabecalho, Rodadpe
LIMPAGUARDE()
