;** RestauCF *******************************************************************
;*  Restaura‡ao de ECF's                                                       *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/06/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 06/10/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 14/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 09/11/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TpDoctos
;Ultima Alteracao: 14/02/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Posto    
;Ultima Alteracao: 13/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Verifica se j  existe lancto dos Cheques
;Ultima Alteracao: 20/01/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes caminho execvise 
;Ultima Alteracao: 16/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Layout
;Ultima Alteracao: 27/06/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo Arj para c:\Arj
;Ultima Alteracao: 28/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Dados dos Cheques
;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: 08/03/2013 por Karina Andrade
;Motivo Alteracao: Inclusao ECF_S
;Ultima Alteracao: 26/03/2013 por Karina Andrade
;Motivo Alteracao: Ajustes ECF_S
;Ultima Alteracao: 23/04/2013 por Karina Andrade
;Motivo Alteracao: Ajustes {Add} ECF_S por ECF_T, linha 161
;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
;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: 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     

;*******************************************************************************
;* ROTINA PROCESSA  -> realiza o processamento da Restaura‡ao                  *
;*******************************************************************************
Proc PROCESSA()
ClearAll

If Not IsTable(VSDGDRIVE+"\\NotaC") Or
   Not IsTable(VSDGDRIVE+"\\NotaI") Or
   Not IsTable(VSDGDRIVE+"\\NotaV") Or
   Not IsTable(VSDGDRIVE+"\\ECF_C") Or
   Not IsTable(VSDGDRIVE+"\\ECF_T") Or
   Not IsTable(VSDGDRIVE+"\\ECF_S") 
   Then Mensagem("A Unidade "+VSDGDRIVE+" n„o contem dados de Cupons Fiscais !")
        Return
EndIf

AGUARDE("Aguarde, Restaurando NotaI"+" [ 1/9]")
{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 "CUP.."
{Ask} TypeIn VSDGDRIVE+"\\NotaI" Enter Check
Moveto [Codigo da Empresa      ] Example "e"
Moveto [Numero do Documento    ] Example "d"
Moveto [Serie do Documento     ] Example "s"
Do_It!
ClearAll

If SYS_CODIGO_CLIENTE="0001"
   Then {Ask} {Answer}
        Moveto [Codigo da Empresa    ] TypeIn "Changeto 0010"
        Do_It!
        ClearAll
EndIf

{Tools} {More} {Add} {Answer} {NotaI} {Update}
ClearAll

AGUARDE("Aguarde, Restaurando NotaV"+" [ 2/9]")
{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 "CUP.."
{Ask} TypeIn VSDGDRIVE+"\\NotaV" Enter Check
Moveto [Codigo da Empresa      ] Example "e"
Moveto [Numero do Documento    ] Example "d"
Moveto [Serie do Documento     ] Example "s"
Do_It!
ClearAll

If SYS_CODIGO_CLIENTE="0001"
   Then {Ask} {Answer}
        Moveto [Codigo da Empresa    ] TypeIn "Changeto 0010"
        Do_It!
        ClearAll
EndIf

{Tools} {More} {Add} {Answer} {NotaV} {Update}
ClearAll

AGUARDE("Aguarde, Restaurando NotaC"+" [ 3/9]")
{Ask} TypeIn VSDGDRIVE+"\\NotaC" Enter Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Tipo do Documento      ] TypeIn "CUP.."
Do_It!
ClearAll

If SYS_CODIGO_CLIENTE="0001"
   Then {Ask} {Answer}
        Moveto [Codigo da Empresa    ] TypeIn "Changeto 0010"
        Moveto [Nome Fantasia Empresa] TypeIn "Changeto MINAS LACK"
        Do_It!
        ClearAll
EndIf

{Tools} {More} {Add} {Answer} {NotaC} {Update}
ClearAll

AGUARDE("Aguarde, Restaurando Tipos de Documentos")
If IsTable(VSDGDRIVE+"\\Tpdoctos")
   Then {Ask} TypeIn VSDGDRIVE+"\\Tpdoctos" Enter Check
        Do_It!
        ClearAll

        {Tools} {More} {Add} {Answer} {\\Sistemas\\Cadastro\\TpDoctos} {Update}
        ClearAll
EndIf        

If IsTable(VSDGDRIVE+"\\ECF_C")
  Then AGUARDE("Aguarde, Restaurando ECF_C"+" [ 4/9]")
       {Ask} TypeIn VSDGDRIVE+"\\ECF_C" Enter Check
       Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
       Moveto [Data                   ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
       Do_It!
       ClearAll
        
       If SYS_CODIGO_CLIENTE="0001"
          Then {Ask} {Answer}
               Moveto [Codigo da Empresa    ] TypeIn "Changeto 0010"
               Do_It!
               ClearAll
       EndIf
        
       {Tools} {More} {Add} {Answer} {ECF_C} {Update}
       ClearAll
EndIf

If IsTable(VSDGDRIVE+"\\ECF_T")
   Then AGUARDE("Aguarde, Restaurando ECF_T"+" [ 5/9]")
        {Ask} TypeIn VSDGDRIVE+"\\ECF_T" Enter Check
        Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
        Moveto [Data                   ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Do_It!
        ClearAll
        
        If SYS_CODIGO_CLIENTE="0001"
           Then {Ask} {Answer}
                Moveto [Codigo da Empresa    ] TypeIn "Changeto 0010"
                Do_It!
                ClearAll
        EndIf
        
        {Tools} {More} {Add} {Answer} {ECF_T} {Update}
        ClearAll
EndIf

If IsTable(VSDGDRIVE+"\\ECF_S")
   Then AGUARDE("Aguarde, Restaurando ECF_S"+" [ 6/9]")
        {Ask} TypeIn VSDGDRIVE+"\\ECF_S" Enter Check
        Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
        Moveto [Data                   ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Do_It!
        ClearAll
        
        If SYS_CODIGO_CLIENTE="0001"
           Then {Ask} {Answer}
                Moveto [Codigo da Empresa    ] TypeIn "Changeto 0010"
                Do_It!
                ClearAll
        EndIf
        
        {Tools} {More} {Add} {Answer} {ECF_S} {Update}
        ClearAll
EndIf


AGUARDE("Aguarde, Atualizando Cheques"+" [ 7/9]")
{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 "CUP.."
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 SYS_CODIGO_CLIENTE="0001"
   Then {Ask} {Answer}
        Moveto [Codigo da Empresa    ] TypeIn "Changeto 0010"
        Moveto [Nome Fantasia Empresa] TypeIn "Changeto MINAS LACK"
        Moveto [Codigo da Empresa-1  ] TypeIn "Changeto 0010"
        Do_It!
        ClearAll
EndIf

If not IsEmpty("Answer") Then

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

EndIf

AGUARDE("Aguarde, Atualizando Ficha Financeira"+" [ 8/9]")
View "\\Sistemas\\Cadastro\\FichaCli"
Tabela=VSDGDRIVE+"\\"+"NotaC"

Coedit "\\Sistemas\\Cadastro\\FichaCli",Tabela
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 VSDGDRIVE+"\\"+"NotaC"
EndScan
Do_It!
Clearall
IMPCUP=True

;****************** Posto **************************
AGUARDE("Aguarde, Restaurando Placas de Veiculos"+" [ 9/9]")
If DirExists("\\Sistemas\\Posto\\")=0
   Then Return
Endif    
If Not IsTable("\\Sistemas\\Posto\\Abast_P")
   Then Return
EndIf    
           
If Not IsTable(VSDGDRIVE+"\\"+"ABAST_P") Or
   IsEmpty(VSDGDRIVE+"\\"+"ABAST_P")
   Then Return
EndIf

{Ask} TypeIn VSDGDRIVE+"\\"+"ABAST_P" Enter Check
Do_It!
ClearAll

{Tools} {More} {Add} {Answer} {\\Sistemas\\Posto\\Abast_P} {Update} ClearAll

{Ask} {\\Sistemas\\Posto\\Abast_P}
Moveto [Codigo             ] Example "clie"
Moveto [Placa              ] Example "pvei"
Moveto [Ultima_Kilometragem] Example "ukm"
{Ask} {Answer} Check
Moveto [Codigo             ] Example "clie"
Moveto [Placa              ] Example "pvei"
Moveto [Ultima_Kilometragem] TypeIn ">" Example "ukm"
Do_It!
ClearAll

Add "Answer" "\\Sistemas\\Posto\\Abast_P"

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

Grava_LogEx("VENDAS RestauCF")

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_DTINI"         : Campo="TG_EMPRESA"
          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_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+"\\NOTA*.DB")
Deleta_Arquivo(VSDGDRIVE+"\\NOTA*.PX")
Deleta_Arquivo(VSDGDRIVE+"\\NOTA*.MB")
Deleta_Arquivo(VSDGDRIVE+"\\ECF_C.*")
Deleta_Arquivo(VSDGDRIVE+"\\ECF_T.*")
Deleta_Arquivo(VSDGDRIVE+"\\ECF_S.*")
Deleta_Arquivo(VSDGDRIVE+"\\TPDOCTOS.*")
Deleta_Arquivo(VSDGDRIVE+"\\ABASTC_.*")
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_ECF_"+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))="CF"   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 = "0027" Or
   SYS_CODIGO_CLIENTE = "0217" Or
   SYS_CODIGO_CLIENTE = "0029"
   Then PARAM_TRAVA_UNIDADE = False
   Else PARAM_TRAVA_UNIDADE = True
EndIf
VSDGEMPRESA         = ""
VSDGDTINI           = BlankDate()
VSDGDTFIM           = Today()-1
VSDGDTREF           = BlankDate()

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

While True
  ShowDialog "Importa‡„o Cupom Fiscal" 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 11 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 "Per¡odo EmissÆo de" For "TG_DTINI"
    Accept @ 03,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 03,16 "at‚" For "TG_DTFIM"
    Accept @ 03,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 04,00 "Data Transa‡„o" For "TG_DTREF"
    Accept @ 05,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 @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  
  IMPCUP=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 IMPCUP
     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        "OIMPECF.sc" From ";****** Variaveis de Configura‡„o Drive Padrao Vise Informatica"+"\n"
  FileWrite Append "OIMPECF.sc" From "VSDGDRIVE="+CHR(34)+VSDGDRIVE+Chr(34)+"\n"

EndWhile
ClearAll
Release Vars All
Release Procs All
