;** GAsplan *******************************************************************
;*  Exportacao de Dados p/ Asplan                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/07/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 09/12/2005 por Davi Pereira Carrano
;Motivo Alteracao: Corrigir mensagem disquete cheio
;Ultima Alteracao: 15/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Run
;Ultima Alteracao: 25/01/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Asplan Windows
;Ultima Alteracao: 27/02/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes XCopia_Arquivo
;Ultima Alteracao: 06/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   

;*******************************************************************************
;* Rotina p/ gerar arquivos                                                    *
;*******************************************************************************
Proc GERA_ARQUIVO()
For ie From 1 to 4
    MES=ALINHM(StrVal(Month(VSDGDTINI)),2)
    Switch
        Case ie=1:
             If VSDGOPCAO[ie]=True Or VSDGOPCAO[4]=True
                Then

                     Play "\\Sistemas\\Exporta\\RegEntra"

                     If Not IsEmpty("\\Sistemas\\Estoque\\RegEntra") And
                        Search("IND",TIPOATIVIDADE)>0
                        Then Play "\\Sistemas\\Exporta\\Expentit"
                     EndIf

                     Play "\\Sistemas\\Exporta\\ExpEntra"

             EndIf
        Case ie=2:
             If VSDGOPCAO[ie]=True Or VSDGOPCAO[4]=True
                Then
                     Play "\\Sistemas\\Exporta\\RegSaida"

                     If Not IsEmpty("\\Sistemas\\Vendas\\RegSaida") And
                        Search("IND",TIPOATIVIDADE)>0
                        Then Play "\\Sistemas\\Exporta\\Expsaiit"
                     EndIf

                     Play "\\Sistemas\\Exporta\\ExpSaida"
;                     Empty "\\Sistemas\\Vendas\\RegSaida"
;                     Empty "\\Sistemas\\Exporta\\It_TempS"

             EndIf
        Case ie=3:
             If VSDGOPCAO[ie]=True Or VSDGOPCAO[4]=True
                Then;Play "\\Sistemas\\Exporta\\MovCaixa"
                    ;Play "\\Sistemas\\Exporta\\MovBanco"
                    ;Play "\\Sistemas\\Exporta\\ExpFin"
                     Play "\\Sistemas\\Exporta\\ExpcmvW"
             EndIf
    EndSwitch
EndFor
LimpAguarde()
EndProc

;*******************************************************************************
;* Rotina p/ gerar o disquete                                                  *
;*******************************************************************************
Proc GERA_DISCO()
MES=ALINHM(StrVal(Month(VSDGDTINI)),2)
ANO=SubStr(StrVal(Year(VSDGDTINI)),3,2)

If DirExists("\\Sistemas\\Exporta\\Dados\\Asplan")=0
   Then Cria_Pasta("\\Sistemas\\Exporta\\Dados\\Asplan")
EndIf


Cont = 1
Array Arquivo[8]

      Arquivo[1]="\\Sistemas\\Exporta\\Dados\\Asplan\\ME"+"0"+PREFIXO+MES+".TXT"
      Arquivo[2]="\\Sistemas\\Exporta\\Dados\\Asplan\\IE"+"0"+PREFIXO+MES+".TXT"
      Arquivo[3]="\\Sistemas\\Exporta\\Dados\\Asplan\\MS"+"0"+PREFIXO+MES+".TXT"
      Arquivo[4]="\\Sistemas\\Exporta\\Dados\\Asplan\\IS"+"0"+PREFIXO+MES+".TXT"
      Arquivo[5]="\\Sistemas\\Exporta\\Dados\\Asplan\\MF0"+PREFIXO+MES+".TXT"
      Arquivo[6]="\\Sistemas\\Exporta\\Dados\\Asplan\\MCX"+PREFIXO+MES+".DBF"
      Arquivo[7]="\\Sistemas\\Exporta\\Dados\\Asplan\\MBC"+PREFIXO+MES+".DBF"
      Arquivo[8]="\\Sistemas\\Exporta\\Dados\\Asplan\\MV0"+PREFIXO+MES+"."+ANO

Array Tamanho[8]
For i From 1 To 8
  If IsFile(Arquivo[i])
     Then Tamanho[i]=FileSize(Arquivo[i])   ;/1024
     Else Tamanho[i]=0
  EndIf
EndFor

ContByte = (Tamanho[1]+Tamanho[2]+Tamanho[3]+Tamanho[4]+Tamanho[5]+Tamanho[6]+Tamanho[7]+Tamanho[8])
Copia    = 1
Switch
   Case ContByte < DriveSpace(SubStr(VSDGDRIVE,1,1)):
         MSG=""
         For i From 1 To 8
           If IsFile(Arquivo[i])
              Then If VSDGOPCAO[4]=True Or
                      ((i=1 Or i=2) And (VSDGOPCAO[1]=True)) Or
                      ((i=3 Or i=4) And (VSDGOPCAO[2]=True)) Or
                      (i>4 And VSDGOPCAO[3]=True)
                      Then Aguarde("Copiando "+Arquivo[i]+" p/ "+VSDGDRIVE)
                           XCopia_Arquivo(Arquivo[i] + " " + VSDGDRIVE + ":")
                           MSG=MSG+Arquivo[i]+"//"
                           LimpAguarde()
                   EndIf
           EndIf
         EndFor
         Mensagem("Arquivos Gerados: // //"+MSG)
   OtherWise:
     If VSDGDRIVE="A:"
        Then ConfGeral("Para copia dos arquivos ir  gastar mais de 1 disquete !//"+
                  "Continua opera‡„o ?")
             If OK="N"
                Then Return
             EndIf
             For i From 1 to 8
                 If IsFile(Arquivo[i])
                    Then If Tamanho[i]>DriveSpace(SubStr(VSDGDRIVE,1,1)) ; Verificar
                            Then Mensagem("Aten‡„o, o arquivo://"+Arquivo[i]+",// n„o foi copiado por falta de espa‡o !")
                            Else If (i=1 And VSDGOPCAO[1]=True) Or
                                    (i=2 And VSDGOPCAO[2]=True) Or
                                    (i>2 And VSDGOPCAO[3]=True)
                                    Then Aguarde("Copiando :"+Arquivo[i]+" p/ "+VSDGDRIVE)
                                         XCopia_Arquivo(Arquivo[i] + " " + VSDGDRIVE + ":")
                                         LimpAguarde()
                                 EndIf
                         EndIf
                 EndIf
        EndFor
      EndIf
EndSwitch
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA    =""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     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_DRIVES"        : Campo="TG_DTFIM"
            Case Campo="TG_OPCOES"        : Campo="TG_DRIVES"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          EndSwitch
     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"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"    :
                         If IsBlank(VSDGEMPRESA)
                            Then Mensagem("Empresa Invalida !")
                            Else Campo="TG_DTINI"
                         EndIf
                    Case Campo="TG_DTINI"      :
                         If VSDGDTINI=BlankDate()
                            Then Mensagem("Data Inicial Invalida !")
                            Else Campo="TG_DTFIM"
                         EndIf
                    Case Campo="TG_DTFIM"      : Campo="TG_DRIVES"
                    Case Campo="TG_DRIVES"     : Campo="TG_OPCOES"
                      VSDGDRIVE=ControlValue("TG_DRIVES")
                    Case Campo="TG_OPCOES"     : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESA":
       MSG_CAMPO="Informe uma Empresa"
  Case Campo="TG_DTINI":
       MSG_CAMPO="Informe a Data Inicial"
  Case Campo="TG_OPCOES":
       MSG_CAMPO="Selecione uma ou mais op‡oes se desejar !"
       TECLA    ="=Mover  Barra de espa‡o=Marca/Desmarca  "
  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 PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()
VSDGEMPRESA=""
VSDGDTINI  =BlankDate()
VSDGDTFIM  =BlankDate()

Array VSDGOPCAO[4]

DynArray Array_Drives[]
SysInfo Drives To Array_Drives
VSDGDRIVE=SubStr(Directory(),1,2)

VSDGOPCAO[4]=True

While True
  ShowDialog "Exporta‡„o p/ Asplan/Windows" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 03,13   Height 15 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 Referente 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  @ 05,00 "Op‡oes de Movimentos " For "TG_OPCOES"
    CheckBoxes @6,00 Height 4 Width 24 Tag "TG_OPCOES"
    "Registro de Entrada " to VSDGOPCAO[1],
    "Registro de Saida   " to VSDGOPCAO[2],
    "Lan‡amento Contabil " to VSDGOPCAO[3],
    "Todos               " to VSDGOPCAO[4]

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

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

  EndDialog

  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Selecione uma empresa !")
          Loop
  EndIf
  If VSDGDTFIM=BlankDate() Or
     VSDGDTINI=BlankDate()
     Then Mensagem("Data Invalida !")
          Loop
  EndIf

  View "\\Sistemas\\Cadastro\\Empresas"
  Moveto [Codigo da Empresa]
  Locate VSDGEMPRESA
  If Not RetVal
     Then MENSAGEM("Empresa N„o Cadastrada")
          Loop
  EndIf
  PREFIXO      =SubStr([Conta Contabil Empresa],1,3)
  TIPOATIVIDADE=[Atividade]
  ClearAll

  For i from 1 to 3
      If VSDGOPCAO[i]=True
         Then VSDGOPCAO[4]=False
      EndIf
  EndFor
  If VSDGOPCAO[4]=True
     Then  For i from 1 to 3
               VSDGOPCAO[i]=True
           EndFor
  EndIf

  MES=ALINHM(StrVal(Month(VSDGDTINI)),2)
  GERA_ARQUIVO()

  GERA_DISCO()

  MENSAGEM("Fim da Opera‡„o !")

EndWhile
ClearAll
Release Vars All
Release Procs All
