;** RestauNf *******************************************************************
;*  Restaura‡ao das Notas Fiscais                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 30/09/1999 por Anivel Augusto Rodrigues
;Ultima Alteracao: 29/06/2006 por Davi Carrano
;Motivo Alteracao: Inclui a particularidade do Cliente 0079
;Ultima Alteracao: 29/07/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Pacote
;Ultima Alteracao: 15/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Layout e Pacote
;Ultima Alteracao: 27/06/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo Arj para c:\Arj
;Ultima Alteracao: 10/08/2011 por Karina Andrade
;Motivo Alteracao: Add novas tabelas
;Ultima Alteracao: 28/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Dados dos Cheques
;Ultima Alteracao: 25/10/2011 por Bruno Carvalho
;Motivo Alteracao: Add Tabela "NotaOCP"
;Ultima Alteracao: 30/11/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo de "ExecVise -> Vexe"
;Ultima Alteracao: 30/11/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo de "ExecVise -> Vexe","Arj -> Varj"
;Ultima Alteracao: 08/12/2011 por Karina Andrade
;Motivo Alteracao: Nova nomeclatura pacote importado
;Ultima Alteracao: 03/01/2012 por Karina Andrade
;Motivo Alteracao: Ajustes nome pacote importado
;Ultima Alteracao: 19/09/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Substitui‡Æo Editor novo arquivo por FileWrite
;Ultima Alteracao: 29/05/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes para a extra‡Æo e finaliza‡Æo do arquivo de importa‡Æo
;Ultima Alteracao: 28/12/2015 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Data_Entrada ChequeI = Data de Entrada ChequeC
;Ultima Alteracao: 27/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sistema Gerador Chequec, ler P_Fatura !
;Ultima Alteracao: 06/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Controle_Dia()                                    
;Ultima Alteracao: 07/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes verifica‡Æo existente do lote de cheque
;Ultima Alteracao: 08/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes verifica‡Æo existente do lote de cheque con indice
;Ultima Alteracao: 06/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog 
;Ultima Alteracao: 04/07/2017 por Rafael Matos
;Motivo Alteracao: Retirado tabela Tempor ria Nota
;Ultima Alteracao: 14/07/2017 por Bruno Carvalho
;Motivo Alteracao: Alterado "NotaCtr" -> "NotaCC"                   
;Ultima Alteracao: 14/07/2017 por Bruno Carvalho
;Motivo Alteracao: Removido "NotaOcp" 
;Ultima Alteracao: 03/08/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes familia Nota??             
;Ultima Alteracao: 08/08/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado Gera_Log()
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx()
;Ultima Alteracao: 03/06/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ verificar a unidade de origem -> Verifica_Arquivo() e add vari vel de travamento PARAM_TRAVA_UNIDADE
;Ultima Alteracao: 05/07/2019 por Bruno Carvalho
;Motivo Alteracao: Permitir utilizar a mesma unidade de origem ao realizar importa‡Æo/exporta‡Æo de dados -> PARAM_TRAVA_UNIDADE=False p/ #0006# e #0029#
;Ultima Alteracao: 05/07/2019 por Bruno Carvalho
;Motivo Alteracao: Permitir utilizar a mesma unidade de origem ao realizar importa‡Æo/exporta‡Æo de dados -> PARAM_TRAVA_UNIDADE=False p/ #0217# 
;Ultima Alteracao: 18/11/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes unidade travar #0027     
;Ultima Alteracao: 08/01/2020 por Bruno Carvalho
;Motivo Alteracao: Permitir utilizar a mesma unidade de origem ao realizar importa‡Æo/exporta‡Æo de dados -> PARAM_TRAVA_UNIDADE=False p/ #0266#

;*******************************************************************************
;* ROTINA PROCESSA  -> realiza o processamento da Restaura‡ao                  *
;*******************************************************************************
Proc PROCESSA()
private Arquivo, wi

AGUARDE("Aguarde, Restaurando Notas")
ClearAll

If Not IsTable(VSDGDRIVE+"\\NotaC")   
   Then Mensagem("Na Unidade "+VSDGDRIVE+" n„o contem Notas !")
        Return
endif        

Array Arquivo[10]
Arquivo[1] ="Notac"
Arquivo[2] ="Notacc"
Arquivo[3] ="Notai"
Arquivo[4] ="Notaiad"
Arquivo[5] ="Notaic"
Arquivo[6] ="Notaicm"
Arquivo[7] ="Notaidd"
Arquivo[8] ="Notaidv"
Arquivo[9] ="Notar"
Arquivo[10]="Notav"

for wi from 1 to 10

  If Not IsTable(VSDGDRIVE+"\\"+Arquivo[wi])   
     Then loop
  endif        

  AGUARDE("Aguarde, Restaurando "+VSDGDRIVE+"\\"+Arquivo[wi]+" ["+Format("W2,AR",wi)+"/13]")

  switch
    case wi=1 :
      {Ask} TypeIn VSDGDRIVE+"\\Notac" Enter Check
      Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
      Moveto [Numero do Documento    ] 
      Moveto [Serie do Documento     ] 
      Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
      Moveto [Tipo do Documento      ] TypeIn "Not CUP.."
      Moveto [Codigo do Documento    ] TypeIn "~VSDGTPDOCTO.."
      Do_It!
      ClearAll

    otherwise :
      {Ask} TypeIn VSDGDRIVE+"\\Notac" Enter
      Moveto [Codigo da Empresa      ] Example "e" TypeIn ",~VSDGEMPRESA.."
      Moveto [Numero do Documento    ] Example "d"
      Moveto [Serie do Documento     ] Example "s"
      Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
      Moveto [Tipo do Documento      ] TypeIn "Not CUP.."
      Moveto [Codigo do Documento    ] TypeIn "~VSDGTPDOCTO.."
      {Ask} TypeIn VSDGDRIVE+"\\"+Arquivo[wi] Enter Check
      Moveto [Codigo da Empresa      ] Example "e"
      Moveto [Numero do Documento    ] Example "d"
      Moveto [Serie do Documento     ] Example "s"
      Do_It!
      ClearAll
  
  endswitch

  switch
    case wi=1  :
      If SYS_CODIGO_CLIENTE="0079"
         Then {Ask} {Answer} TypeIn "Fast"
              Moveto [Codigo da Empresa      ] TypeIn "0001, Changeto 0002"
              Moveto [Nome Fantasia Empresa  ] TypeIn "Changeto ALDEMAR JOSE COSTA"     
              Do_It!
              ClearAll
      EndIf
    
    otherwise  :
      If SYS_CODIGO_CLIENTE="0079"
         Then {Ask} {Answer} TypeIn "Fast"
              Moveto [Codigo da Empresa      ] TypeIn "0001, Changeto 0002"
              Do_It!
              ClearAll
      EndIf
    
  endswitch

  Add "Answer" Arquivo[wi]
  ClearAll
  If IsTable("keyViol")
     Then Delete("KeyViol")
  EndIf

endfor

AGUARDE("Aguarde, Restaurando Destinat"+" [ 11/13]")
If IsTable(VSDGDRIVE+"\\Destinat")
   Then {Ask} TypeIn VSDGDRIVE+"\\Destinat" Enter Check
        Do_It!
        ClearAll
        If Not IsEmpty("Answer")
           Then Add "Answer" "\\Sistemas\\Cadastro\\Destinat"
                ClearAll
        EndIf
        If IsTable("keyViol")
           Then Delete("KeyViol")
        EndIf
EndIf

AGUARDE("Aguarde, Atualizando Ficha Financeira"+" [ 12/13]")
{Ask} TypeIn VSDGDRIVE+"\\NotaC" Enter Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo do Documento      ] TypeIn "Not CUP.."
Moveto [Codigo do Documento    ] TypeIn "~VSDGTPDOCTO.."
Moveto [Situacao               ] TypeIn "Not C"
Do_It!
ClearAll

Coedit "\\Sistemas\\Cadastro\\FichaCli","Answer"
Scan
  If [Tipo]="C" And Search("VEND",[Descricao da Destinacao])>0
     Then
          CCLIE =[Codigo           ]
          DTEMI =[Data de Emissao  ]
          VRNF  =[Valor Nota Fiscal]

          Moveto "\\Sistemas\\Cadastro\\FichaCli"
          Moveto [Codigo]
          Locate CCLIE
          If Not RetVal
             Then End Down
                  [Codigo]=CCLIE
          EndIf

          If IsBlank([Data da Primeira Compra ])
             Then [Data da Primeira Compra ]=DTEMI
                  [Valor da Primeira Compra]=VRNF
          EndIf
          If VRNF>=[Maior Fatura]
             Then [Maior Fatura        ]=VRNF
                  [Data da Maior Fatura]=DTEMI
          EndIf

          If [Data da Ultima Compra ]<=DTEMI
             Then [Data da Ultima Compra ]=DTEMI
                  [Valor da Ultima Compra]=VRNF
          EndIf
          UnLockRecord
  EndIf
  Moveto "Answer"
EndScan
Do_It!
ClearAll

IMPNF=True

AGUARDE("Aguarde, Atualizando Cheques"+" [ 13/13]")
{Ask} TypeIn VSDGDRIVE+"\\NotaC" Enter 
Moveto [Codigo da Empresa      ] Example "e" TypeIn ",~VSDGEMPRESA.."
Moveto [Numero do Documento    ] Example "d"
Moveto [Serie do Documento     ] Example "s"
Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo do Documento      ] TypeIn "Not CUP.."
Moveto [Codigo do Documento    ] TypeIn "~VSDGTPDOCTO.."
Moveto [Situacao               ] TypeIn "Not C"
{Ask} TypeIn VSDGDRIVE+"\\NotaV" Enter Check
Moveto [Codigo da Empresa      ] Example "e"
Moveto [Numero do Documento    ] Example "d"
Moveto [Serie do Documento     ] Example "s"
Moveto [Forma de Pagamento     ] TypeIn "CH Or CP"
Do_It!
ClearAll

If IsEmpty("Answer")
   Then Return
EndIf

CODEMP="****"
SERDOC="****"
NUMDOC="****"
NR    =NRecords("Answer")

View "\\Sistemas\\CheqRec\\ChequeC"
View "\\Sistemas\\CheqRec\\ChequeI"
View "NotaC"
Coedit "Answer"

Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, Processando Cheques "+BARRA_STRING)

  If IsBlank([Numero_Cheque])
     Then loop
  endif   

  If [Codigo da Empresa  ]<>CODEMP Or
     [Serie do Documento ]<>SERDOC Or
     [Numero do Documento]<>NUMDOC
     Then
           EXISTE_NOTA=False
           while true
            
             Moveto "NotaC"
             Moveto [Codigo da Empresa]
             Locate [Answer->Codigo da Empresa  ],
                    [Answer->Numero do Documento],
                    [Answer->Serie do Documento ]
             If not RetVal
                then quitloop
             endif        
             EXISTE_NOTA=true 
  
             moveto "Answer"
             CODEMP=[Codigo da Empresa  ]
             SERDOC=[Serie do Documento ]
             NUMDOC=[Numero do Documento]
  
             EXISTE_CHEQUE_LIQUIDADO=False
             
             NUMEROL=""
             Moveto "\\Sistemas\\CheqRec\\ChequeC"
             Moveto [Codigo da Empresa]
             Locate IndexOrder by "Indchc01" [NotaC->Codigo da Empresa],[NotaC->Tipo do Documento],[NotaC->Numero do Documento]
             if retval
                then NUMEROL=[Numero do Lancamento]
                else Moveto [Observacao do Lancamento]
                     Locate "REF. "+[NotaC->Codigo da Empresa]+"/"+[NotaC->Tipo do Documento]+"/"+[NotaC->Numero do Documento]
                     if retval
                        then NUMEROL=[Numero do Lancamento]
                     endif
             endif      
                
             if not isblank(NUMEROL)
                then
                     Moveto "\\Sistemas\\CheqRec\\ChequeI"
                     Moveto [Numero do Lancamento]
                     Locate NUMEROL
                     If RetVal
                        Then While [Numero do Lancamento]=NUMEROL

                               If [Situacao]<>"EM ABERTO"
                                  Then EXISTE_CHEQUE_LIQUIDADO=True
                                       quitloop
                               EndIf
                               
                               Skip
                               If EOT() Then QuitLoop EndIf
                             EndWhile
                     EndIf
                     
                     if EXISTE_CHEQUE_LIQUIDADO=True
                        then
                             MSG="J  existem cheques movimentados para uma Nota.//"
                             MSG=MSG+"Os cheques n„o podem ser importados novamente.//"
                             MSG=MSG+"Verificar no Lan‡amento de Cheques Ok !//"
                             MSG=MSG+"Lan‡amento: "+StrVal(NUMEROL)+" - "+SubStr([\Sistemas\CheqRec\ChequeC->Observacao do Lancamento],1,20)
                             Mensagem(MSG)
                             
                             quitloop
                     endif
                     
                     Moveto "\\Sistemas\\CheqRec\\ChequeI"
                     Moveto [Numero do Lancamento]
                     Locate NUMEROL
                     If RetVal
                        Then While [Numero do Lancamento]=NUMEROL
                               del
                               If EOT() Then QuitLoop EndIf
                             EndWhile
                     EndIf
                     
                     Moveto "\\Sistemas\\CheqRec\\ChequeC"
                else
                     Moveto [Numero do Lancamento]
                     While True
                       End
                       If [Numero do Lancamento]=BlankNum()
                          Then NUMEROL=1
                          Else NUMEROL=[Numero do Lancamento]+1
                       EndIf
                       Down
                       [Numero do Lancamento   ]=NUMEROL
                       If Not IsLockRecord() Then QuitLoop EndIf
                       del
                     EndWhile
             endif
             
             [Codigo da Empresa       ]=[NotaC->Codigo da Empresa       ]
             [Data de Entrada         ]=[NotaC->Data de Emissao         ]
             [Codigo                  ]=[NotaC->Codigo                  ]
             [Codigo do Representante ]=[NotaC->Codigo do Representante ]
             [Observacao do Lancamento]="REF. "+[NotaC->Codigo da Empresa]+"/"+[NotaC->Tipo do Documento]+"/"+[NotaC->Numero do Documento]
  
             [Sistema Gerador         ]=[NotaC->Sistema Gerador         ]
             [Tipo Docto Gerador      ]=[NotaC->Tipo do Documento       ]
             [Numero Docto Gerador    ]=[NotaC->Numero do Documento     ]
             [Serie Docto Gerador     ]=[NotaC->Serie do Documento      ]
             [Numero_Carregamento_Orig]=[NotaC->Numero_Carregamento     ]
             [Valor Total             ]=0
             Controle_Dia()
             
             UnLockRecord
  
             Moveto "NotaC"
             [Numero Lancamento Cheque]=NUMEROL
             UnLockRecord
  
             quitloop
           endwhile
  EndIf

  if EXISTE_NOTA and not EXISTE_CHEQUE_LIQUIDADO
     then
          Moveto "\\Sistemas\\CheqRec\\ChequeI"
          Moveto [Numero do Lancamento]
          Locate NUMEROL, NumVal([Answer->Sequencia])
          If Not RetVal
             Then End
                  Down
                  [Numero do Lancamento]=NUMEROL
                  [Sequencia do Cheque ]=NumVal([Answer->Sequencia])
                  [Codigo_Banco        ]=[Answer->Codigo_Banco   ]
                  [Agencia             ]=[Answer->Agencia        ]
                  [Numero_Conta        ]=[Answer->Numero_Conta   ]
                  [Numero_Cheque       ]=[Answer->Numero_Cheque  ]
                  [CPF                 ]=[Answer->CPF            ]
                  [Tipo_Emitente       ]=[Answer->Tipo_Emitente  ]
                  [Titular_Cheque      ]=[Answer->Titular_Cheque ]
                  [Cidade              ]=[Answer->Cidade         ]
                  [UF                  ]=[Answer->UF             ]
                  [Data Vencimento     ]=[Answer->Data           ]
                  [Valor               ]=[Answer->Valor          ]
                  [Observacao do Cheque]=[Answer->Observacao     ]
                  [Codigo CMC7         ]=[Answer->Codigo CMC7    ]
                  
                  [Sistema Origem      ]=[NotaC->Sistema Gerador     ]
                  [Tipo do Documento   ]=[NotaC->Tipo do Documento   ]
                  [Numero do Documento ]=[NotaC->Numero do Documento ]
                  [Codigo_Cliente      ]=[NotaC->Codigo              ]
                  [Data_Entrada        ]=[NotaC->Data de Emissao     ]
                  [Situacao            ]="EM ABERTO"
                  Controle_Dia()
                  UnLockRecord
                  
                  Moveto "\\Sistemas\\CheqRec\\ChequeC"
                  [Valor Total         ]=[Valor Total  ]+[Answer->Valor   ]
                  UnLockRecord
          EndIf
  endif
  
  Moveto "Answer"
EndScan
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina para gerar o log de registro por usu rio                             *
;*******************************************************************************
Proc Gera_Log()          

If VSDGDTINI<>BlankDate()
   Then AUX_DATA = ", periodo de "+StrVal(VSDGDTINI)+" ate "+StrVal(VSDGDTFIM)
   Else AUX_DATA = ", periodo ate "+StrVal(VSDGDTFIM)
EndIf   
          
If VSDGDTREF<>BlankDate()
   Then AUX_DTREF = ", data de transa‡„o em "+StrVal(VSDGDTREF)
   Else AUX_DTREF = ""
EndIf

AUX_OPCAO = "" 
If VSDGTPDOCTO<>"" Then AUX_OPCAO = ", Tipo do Documento: "+VSDGTPDOCTO+" "+VSDGNOMTPDOCTO EndIf

Grava_LogEx("VENDAS RestauNf")  

EndProc ;Gera_Log()                    

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =   9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_TPDOCTO"       : Campo="TG_EMPRESA"
            Case Campo="TG_DTINI"         : Campo="TG_TPDOCTO"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_DTREF"         : Campo="TG_DTFIM"
            Case Campo="TG_DRIVES"        : Campo="TG_DTREF"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA" : Campo="TG_TPDOCTO"
                    Case Campo="TG_TPDOCTO" : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"   : 
                         If Isblank(VSDGDTINI)
                            Then Mensagem("Data inicial invalida !")
                                 Campo="TG_DTINI"
                            Else Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"   : 
                         If IsBlank(VSDGDTFIM) Or
                            VSDGDTFIM<VSDGDTINI
                            Then Mensagem("Data final invalida !")
                            Else Campo="TG_DTREF"
                         EndIf
                    Case Campo="TG_DTREF"   : Campo="TG_DRIVES"
                    Case Campo="TG_DRIVES"   :
                         VSDGDRIVE=ControlValue("TG_DRIVES")
                         Campo="YES"
                  EndSwitch
          EndIf
   EndSwitch
EndIf

Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe uma Empresa"
  Case Campo="TG_DTREF" :
       MSG_CAMPO="Informe a data da Transa‡„o"
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a data inicial"
  Case Campo="TG_DRIVES":
       MSG_CAMPO="Selecione o drive desejado !"
       TECLA=Chr(27)+""+Chr(26)+"=Selecionar  "
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc


;*******************************************************************************
;* ROTINA PARA DELETAR ARQUIVOS                                                *
;*******************************************************************************
Proc Deleta_Arquivos()

Deleta_Arquivo(VSDGDRIVE+"\\NOTAC.*")
Deleta_Arquivo(VSDGDRIVE+"\\NOTACC.*")
Deleta_Arquivo(VSDGDRIVE+"\\NOTAI.*")
Deleta_Arquivo(VSDGDRIVE+"\\NOTAIAD.*")
Deleta_Arquivo(VSDGDRIVE+"\\NOTAIC.*")
Deleta_Arquivo(VSDGDRIVE+"\\NOTAICM.*")
Deleta_Arquivo(VSDGDRIVE+"\\NOTAIDD.*")
Deleta_Arquivo(VSDGDRIVE+"\\NOTAIDV.*")
Deleta_Arquivo(VSDGDRIVE+"\\NOTAR.*")
Deleta_Arquivo(VSDGDRIVE+"\\NOTAV.*")
Deleta_Arquivo(VSDGDRIVE+"\\DESTINAT.*")
Sleep 2000

EndProc ;Deleta_Arquivos()

;*******************************************************************************
;* Rotina para Verificar o Nome do Arquivo                                     *
;*******************************************************************************          
Proc Verifica_Arquivo()
Private Array_Arquivo,wcs,ELinha,MSG

Aguarde("Aguarde, verificando o arquivo")          

;ARQ_ARJ="PT_ENF_"+CODEMP+"_"+
;        AlinhM(StrVal(Year(VSDGDTREF)),4) +
;        AlinhM(StrVal(Month(VSDGDTREF)),2)+
;        AlinhM(StrVal(Day(VSDGDTREF)),2)  +
;        ".ARJ"
          
DynArray Array_Arquivo[]

Wcs=0
If IsFile(PrivDir()+"Dir.Txt")
   Then Deleta_Arquivo(PrivDir()+"Dir.Txt")
EndIf

Lista_DiretorioF(VSDGDRIVE+"\\","PT*.ARJ")

If Not IsFile(PrivDir()+"Dir.Txt")
   Then Sleep(1000)
        Return False
   Else Editor Open PrivDir()+"Dir.Txt"
        If ErrorCode()=27
           Then Sleep 1000
                Return False
        EndIf
        wcs=0
        While True
          Extrair_Linha()
          If IsBlank(ELinha) Then QuitLoop EndIf
          wcs=wcs+1
          Array_Arquivo[wcs] = Completa(SubStr(ELINHA,1,Len(ELINHA)-1),40," ")+" "
        EndWhile
        CancelEdit
EndIf     

ARQ_ARJ = ""
If DynArraySize(Array_Arquivo)=0
   Then Mensagem("Arquivo de importa‡Æo nÆo foi localizado!") 
        Return False
   Else MSG = ""
        For wi From 1 To DynArraySize(Array_Arquivo)
          If Upper(SubStr(Array_Arquivo[wi],1,2))="PT"   And
             Upper(SubStr(Array_Arquivo[wi],5,2))="NF"   And
             Upper(SubStr(Array_Arquivo[wi],8,4))=CODEMP And
             Upper(SubStr(Array_Arquivo[wi],13,4))=AlinhM(StrVal(Year(VSDGDTREF)),4)  And
             Upper(SubStr(Array_Arquivo[wi],17,2))=AlinhM(StrVal(Month(VSDGDTREF)),2) And
             Upper(SubStr(Array_Arquivo[wi],19,2))=AlinhM(StrVal(Day(VSDGDTREF)),2)
             Then ARQ_ARJ = Array_Arquivo[wi]
                  If PARAM_TRAVA_UNIDADE
                     Then If Upper(SubStr(Array_Arquivo[wi],4,1)) = SubStr(Upper(Directory()),1,1)
                             Then MSG = "NÆo ‚ poss¡vel importar o arquivo na unidade de origem!"
                             Else MSG = ""           
                          EndIf
                     Else QuitLoop     
                  EndIf
          EndIf
        EndFor
        If MSG<>""
           Then Mensagem(MSG)
                Return False
        EndIf   
        Release Vars Array_Arquivo,MSG
        If ARQ_ARJ=""
           Then Mensagem("Arquivo de importa‡Æo nÆo foi localizado!")
                Return False
        EndIf
EndIf

Return True                  
                  
EndProc ;Verifica_Arquivo()                 

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

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

If SYS_CODIGO_CLIENTE = "0006" Or
   SYS_CODIGO_CLIENTE = "0029" Or
   SYS_CODIGO_CLIENTE = "0027" Or
   SYS_CODIGO_CLIENTE = "0217" Or
   SYS_CODIGO_CLIENTE = "0266"
   Then PARAM_TRAVA_UNIDADE = False
   Else PARAM_TRAVA_UNIDADE = True
EndIf
VSDGEMPRESA         = ""
VSDGTPDOCTO         = ""
VSDGDTINI           = BlankDate()
VSDGDTFIM           = Today()-1
VSDGDTREF           = BlankDate()

DynArray Array_Drives[]
SysInfo Drives To Array_Drives
If IsFile("OIMPNFS.sc")
   Then Play "OIMPNFS"
   Else VSDGDRIVE=SubStr(Directory(),1,2)
EndIf

While True
  ShowDialog "Importa‡„o Notas [Faturamento]" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
    -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140
   @ 05,12   Height 13 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP"  To VSDGNOMEMP

    Label  @ 02,00 "Tipo do Documento"  For "TG_TPDOCTO"
    Accept @ 03,01 Width 07 "A4"  Picture "!*!" Tag "TG_TPDOCTO" To VSDGTPDOCTO
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPDOCTO"  To VSDGNOMTPDOCTO

    Label  @ 04,00 "Per¡odo EmissÆo de" For "TG_DTINI"
    Accept @ 05,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,16 "at‚" For "TG_DTFIM"
    Accept @ 05,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 06,00 "Data Transa‡„o" For "TG_DTREF"
    Accept @ 07,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

    Label  @ 00,35 "Drives:" For "TG_DRIVES"
    PickDynArrayIndex @ 01,36 Height 4 width 33
     Columns 7
      Array_Drives
       Tag "TG_DRIVES"
        To VSDGDRIVE

    Pushbutton @ 09,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 09,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  IMPNF=False
  
  Deleta_Arquivos()
  Gera_Log()
  
  If VSDGEMPRESA="" 
    Then CODEMP="0000" 
    Else CODEMP=VSDGEMPRESA
  EndIf
  
  If Not Verifica_Arquivo()
     Then Loop 
  EndIf  

	Aguarde("Aguarde, descompactando o arquivo "+ARQ_ARJ)

  FileWrite PrivDir()+"funcmd.txt" From "CMD|"+"c:\\vise\\Varj.exe e -y "+VSDGDRIVE+"\\"+ARQ_ARJ+" "+VSDGDRIVE+"\\"+"\n"        
  ExecVisecf(PrivDir()+"funcmd.txt","")
  Sleep 3000

  Processa()
  Deleta_Arquivos()
  LimpAguarde()
  
  If IMPNF
     Then ARQ_IMP=VSDGDRIVE+"\\IMPORTADO_"+
                  Substr(ARQ_ARJ,1,20)+"_"+
                  Substr(Time(),1,2)  +
                  Substr(Time(),4,2)  +
                  Substr(Time(),7,2)  +
                  ".ARJ"
  
          Aguarde("Aguarde, renomeando arquivo importado")
          ExecVise("REN "+VSDGDRIVE+"\\"+ARQ_ARJ+" \""+ARQ_IMP+"\"")
          
          MSG="Opera‡ao Finalizada.// //"
          MSG=MSG+"NÆo esque‡a de Reprocessar o Estoque !"
     Else MSG="Opera‡„o Cancelada !"
  EndIf   
  Mensagem(MSG)

  FileWrite        "OIMPNFS.sc" From ";****** Variaveis de Configura‡„o Drive Padrao Vise Informatica"+"\n"
  FileWrite Append "OIMPNFS.sc" From "VSDGDRIVE="+CHR(34)+VSDGDRIVE+Chr(34)+"\n"

EndWhile
ClearAll
Release Vars All
Release Procs All
