;** TransfDT *******************************************************************
;*  Transferencia/Exportacao de Transacoes                                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 09/05/2003 por Anivel Augusto Rodrigues
;Ultima Alteracao: 06/01/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 15/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Run
;Ultima Alteracao: 27/02/2008 por Antonio Marcelo Alves
;Motivo Alteracao: Adição do nome do Arquivo no destino na funcao Copia_Arquivo
;Ultima Alteracao: 26/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tabela Preco
;Ultima Alteracao: 18/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Selecao Tabela Preco
;Ultima Alteracao: 26/02/2009 por Humberto F.Santos.
;Motivo Alteracao: Acrescido os nomes Fornecedores e Outros.
;Ultima Alteracao: 27/09/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Cidades, Paises
;Ultima Alteracao: 03/11/2010 por Bruno Carvalho
;Motivo Alteracao: Add Requsi‡Æo Sys_Codigo_Cliente "0253"
;Ultima Alteracao: 08/11/2010 por Bruno Carvalho
;Motivo Alteracao: Inclusao Observa‡äes de Vendas para Clientes
;Ultima Alteracao: 16/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Layout no SD_Dialog
;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 Vendas
;Ultima Alteracao: 11/08/2011 por Karina Andrade
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 25/10/2011 por Bruno Carvalho
;Motivo Alteracao: Add Tabela "NotaOCP"
;Ultima Alteracao: 01/12/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo de "Arj -> Varj"

;*******************************************************************************
;* ROTINA CLIENTES                                                             *
;*******************************************************************************

Proc CLIENTES()
Aguarde("Aguarde, Exportando Dados Clientes")

{Ask} {\\Sistemas\\Cadastro\\Destinat} Check
Copiar("CL")

{Ask} {\\Sistemas\\Cadastro\\Represen} Check
Copiar("RE")

{Ask} {\\Sistemas\\Cadastro\\Ativid} Check
Copiar("AT")

{Ask} {\\Sistemas\\Cadastro\\Area} Check
Copiar ("AR")

{Ask} {\\Sistemas\\Cadastro\\Cidades} Check
Copiar ("CI")

{Ask} {\\Sistemas\\Cadastro\\Paises} Check
Copiar ("PA")

LimpAguarde()
EndProc

;*******************************************************************************
;* ROTINA COMPLEMENTO CLIENTES                                                 *
;*******************************************************************************
Proc COMPL_CLIENTES()
Aguarde("Aguarde, Exportando Dados Complementares de Clientes")

{Ask} {\\Sistemas\\Cadastro\\DestObs} Check
Copiar("DO")

{Ask} {\\Sistemas\\Cadastro\\DestMsg} Check
Copiar("DM")

{Ask} {\\Sistemas\\Cadastro\\DestInfo} Check
Copiar("DI")

{Ask} {\\Sistemas\\Cadastro\\FichaCli} Check
Copiar("FC")

{Ask} {\\Sistemas\\Cadastro\\End_Cob} Check
Copiar("EN")

LimpAguarde()
EndProc

;*******************************************************************************
;* ROTINA PRODUTOS                                                             *
;*******************************************************************************
Proc PRODUTOS()
Aguarde("Aguarde, Exportando Dados Produtos")

{Ask} {\\Sistemas\\Estoque\\Itens} Check
Copiar("PR")

{Ask} {\\Sistemas\\Estoque\\Familia} Check
Copiar("FA")

{Ask} {\\Sistemas\\Estoque\\Unidades} Check
Copiar("UN")

{Ask} {\\Sistemas\\Estoque\\Marcas} Check
Copiar("MA")

{Ask} {\\Sistemas\\Estoque\\Cores} Check
Copiar("CO")

{Ask} {\\Sistemas\\Estoque\\Grupos} Check
Copiar("GR")

LimpAguarde()
EndProc  ;;(Produtos)

;*******************************************************************************
;* ROTINA TABELA PRECO                                                         *
;*******************************************************************************
Proc TABPRECOS()
Aguarde("Aguarde, Exportando Dados Tabela Pre‡os")

{Ask} {\\Sistemas\\Vendas\\TbPrCab} Check
Moveto [Codigo da Tabela    ] TypeIn "~VSDGTABELA.."
Copiar("TC")

{Ask} {\\Sistemas\\Vendas\\TbPrIte} Check
Moveto [Codigo da Tabela    ] TypeIn "~VSDGTABELA.."
Copiar("TI")

{Ask} {\\Sistemas\\Vendas\\TbPrCpg} Check
Moveto [Codigo da Tabela    ] TypeIn "~VSDGTABELA.."
Copiar("TP")

{Ask} {\\Sistemas\\Vendas\\TbPrCli} Check
Moveto [Codigo da Tabela    ] TypeIn "~VSDGTABELA.."
Copiar("TY")

{Ask} {\\Sistemas\\Vendas\\TbPrCIt} Check
Moveto [Codigo da Tabela    ] TypeIn "~VSDGTABELA.."
Copiar("TX")

{Ask} {\\Sistemas\\Vendas\\TbPrRep} Check
Moveto [Codigo da Tabela    ] TypeIn "~VSDGTABELA.."
Copiar("TR")

{Ask} {\\Sistemas\\Vendas\\TbPrRIt} Check
Moveto [Codigo da Tabela    ] TypeIn "~VSDGTABELA.."
Copiar("TS")

LimpAguarde()
EndProc

;*******************************************************************************
;* Notas de Saidas                                                             *
;*******************************************************************************
Proc NSAIDAS()
Aguarde("Aguarde, Exportando Notas de Saida")

Array Arquivo[12]
Arquivo[1] ="NotaC"
Arquivo[2] ="NotaI"
Arquivo[3] ="NotaV"
Arquivo[4] ="NotaIC"
Arquivo[5] ="NotaIDV"
Arquivo[6] ="NotaCF"
Arquivo[7] ="NotaIDD"
Arquivo[8] ="NotaIAD"
Arquivo[9] ="NotaR"
Arquivo[10]="NotaCTR"
Arquivo[11]="NotaTG"
Arquivo[12]="NotaOCP"

Cont     = 1

SetDir "\\Sistemas\\Vendas"
For Cont From 1 To 12
    If IsTable(Arquivo[Cont])
       Then If Arquivo[Cont]<>"NotaC"
               Then {Ask} {NotaC}
                    Moveto [Codigo da Empresa  ] Example "cemp" TypeIn ", ~VSDGEMPRESA.."
                    Moveto [Numero do Documento] Example "ndoc"
                    Moveto [Serie do Documento ] Example "sdoc"
                    Moveto [Data de Emissao    ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
                    {Ask} TypeIn Arquivo[Cont] Enter Check
                    Moveto [Codigo da Empresa  ] Example "cemp"
                    Moveto [Numero do Documento] Example "ndoc"
                    Moveto [Serie do Documento ] Example "sdoc"
               Else {Ask} {NotaC} Check
                    Moveto [Codigo da Empresa  ] TypeIn "~VSDGEMPRESA.."
                    Moveto [Data de Emissao    ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
            Endif
            Switch
              Case Cont=1 : Copiar("SC")
              Case Cont=2 : Copiar("SI")
              Case Cont=3 : Copiar("SV")
              Case Cont=4 : Copiar("SX")
              Case Cont=5 : Copiar("SD")
              Case Cont=6 : Copiar("SW")
              Case Cont=7 : Copiar("SM")
              Case Cont=8 : Copiar("SP")
              Case Cont=9 : Copiar("SR")
              Case Cont=10: Copiar("ST")
              Case Cont=11: Copiar("SG")
              Case Cont=12: Copiar("OC")
            EndSwitch
    EndIf
EndFor

If VSDGOPCAO[1]=False
   Then Aguarde("Aguarde, Exportando Dados Clientes")
        If IsTable("\\Sistemas\\Cadastro\\Destinat")
          Then {Ask} {\\Sistemas\\Cadastro\\Destinat} Check
                 Moveto [Codigo] Example "cod"
               {Ask} {\\Sistemas\\Cadastro\\FichaCli}
                 Moveto [Codigo] Example "cod"
                 Moveto [Data da Primeira Compra] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
               Copiar("CL")

               If Not IsEmpty("Answer")
                  Then
                       {Ask} {\\Sistemas\\Cadastro\\Represen} Check
                       Copiar("RE")

                       {Ask} {\\Sistemas\\Cadastro\\Ativid} Check
                       Copiar("AT")

                       {Ask} {\\Sistemas\\Cadastro\\Area} Check
                       Copiar ("AR")
               EndIf
        EndIf
EndIf
SetDir "\\Sistemas\\Cadastro"

LimpAguarde()
EndProc

;*******************************************************************************
;* Notas de Entradas                                                           *
;*******************************************************************************
Proc NENTRADAS()
Aguarde("Aguarde, Exportando Notas de Entrada")

Array Arquivo[4]
Arquivo[1]="NotaEc"
Arquivo[2]="NotaEI"
Arquivo[3]="NotaeCP"
Arquivo[4]="NotaeCV"

Cont     = 1
SetDir "\\Sistemas\\Estoque"
For Cont From 1 To 4
    If IsTable(Arquivo[Cont])
       Then If Arquivo[Cont]<>"NotaEc"
               Then {Ask} {NotaEc}
                    Moveto [Numero do Lancamento] Example "nlanc"
                    Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."
                    Moveto [Data de Entrada     ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                    {Ask} TypeIn Arquivo[Cont] Enter Check
                    Moveto [Numero do Lancamento] Example "nlanc"
               Else {Ask} {NotaEc} Check
                    Moveto [Codigo da Empresa   ] TypeIn "~VSDGEMPRESA.."
                    Moveto [Data de Entrada     ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
            Endif

            Switch
              Case Cont=1: Copiar("EC")
              Case Cont=2: Copiar("EI")
              Case Cont=3: Copiar("EP")
              Case Cont=4: Copiar("EV")
            EndSwitch
    EndIf
EndFor

If SYS_CODIGO_CLIENTE = "0253" 
   Then {Ask} {\\Sistemas\\Estoque\\RqCabeca} Check
        Copiar("RC")
        {Ask} {\\Sistemas\\Estoque\\RqItem} Check
        Copiar("RI")
        {Ask} {\\Sistemas\\Estoque\\RqMatPri} Check
        Copiar("RM")
EndIf

SetDir "\\Sistemas\\Cadastro"

LimpAguarde()
EndProc

;*******************************************************************************
;* Copiar                                                                      *
;*******************************************************************************
Proc Copiar(INI)
Do_It!
If IsTable("C:\\"+INI+DATAREF)
   Then Delete "C:\\"+INI+DATAREF
EndIf

If Not IsEmpty("Answer")
   Then {Tools} {Copy} {Table} {Answer} TypeIn "C:\\"+INI+DATAREF Enter
   Else If INI="EC" or INI="EI" Or INI="EV" or INI="EP"
           Then {Tools} {Copy} {Table} {Answer} TypeIn "C:\\"+INI+DATAREF Enter
        EndIf
EndIf
ClearAll
EndProc

;*******************************************************************************
;* 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_DTREF"         : Campo="NO"
            Case Campo="TG_EMPRESA"       : Campo="TG_DTREF"
            Case Campo="TG_TABELA"        : Campo="TG_EMPRESA"
            Case Campo="TG_DTINI"         : Campo="TG_TABELA"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPCOES"        : Campo="TG_DTFIM"
            Case Campo="TG_DRIVES"        : Campo="TG_OPCOES"
            Case Campo="YES" Or Campo="NO": Campo="TG_DTREF"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_DTREF"   : Campo="TG_EMPRESA"
                    Case Campo="TG_EMPRESA" : Campo="TG_TABELA"
                    Case Campo="TG_TABELA"  : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"   : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"   : Campo="TG_OPCOES"
                    Case Campo="TG_OPCOES"  : Campo="TG_DRIVES"
                    Case Campo="TG_DRIVES"  :
                        VSDGDRIVE=ControlValue("TG_DRIVES")
                        Campo="YES"
                  EndSwitch
          EndIf
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTREF" :
       MSG_CAMPO="Informe a Data de Referˆncia"
  Case Campo="TG_OPCOES":
       MSG_CAMPO="Selecione a(s) tabela(s) desejada(s) !"
       TECLA    ="Barra de espa‡o=Marca/Desmarca  "
  Case Campo="TG_DRIVES":
       MSG_CAMPO="Selecione o drive de destino desejado !"
       TECLA=""+"=Selecionar  "
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

Array VSDGOPCAO[6]
VSDGOPCAO[1]=False
VSDGOPCAO[2]=False
VSDGOPCAO[3]=False
VSDGOPCAO[4]=False
VSDGOPCAO[5]=False
VSDGOPCAO[6]=False

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

VSDGDTREF  =Today()
VSDGDTINI  =Today()-1
VSDGDTFIM  =Today()-1
VSDGTABELA =""

If Not IsFile("c:\\vise\\Varj.exe")
   Then MSG="Compactador/Descompactador ARJ n„o encontrado !// //"
        MSG=MSG+"Verificar com o Suporte!// //"
        MSG=MSG+"Esta rotina n„o podera ser executada !"
        Mensagem(MSG)
EndIf

While True
  ShowDialog "Exporta‡„o para Transa‡„o" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  

   @ 05,22   Height 20 Width 52

    Label  @ 00,00 "Data Referente" For "TG_DTREF"
    Accept @ 00,16 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTREF" To VSDGDTREF

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

    Label  @ 03,00 "Tabela"  For "TG_TABELA"
    Accept @ 04,01 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA" To VSDGTABELA
    Accept @ 04,10 Width 33 "A30" Picture "!*!" Tag "TG_NOMTAB" To VSDGNOMTAB

    Label  @ 05,00 "Periodo Referente" For "TG_DTINI"
    Label  @ 06,00 "de" For "TG_DTINI"
    Accept @ 06,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 06,17 "ate" For "TG_DTFIM"
    Accept @ 06,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 08,41 "Drives:" For "TG_DRIVES"
    PickDynArrayIndex @ 09,42 Height 2 width 05
     Columns 1
      Array_Drives
       Tag "TG_DRIVES"
        To VSDGDRIVE

    Label  @ 08,00 "Op‡oes de Tabelas" For "TG_OPCOES"
    CheckBoxes @9,00 Height 6 Width 33 Tag "TG_OPCOES"
    "Clientes,Fornecedores,Outros  " to VSDGOPCAO[1],
    "Financ+Obs Clientes" to VSDGOPCAO[2],
    "Produtos   " to VSDGOPCAO[3],
    "Tab. Pre‡o " to VSDGOPCAO[4],
    "Entradas   " to VSDGOPCAO[5],
    "Saidas     " to VSDGOPCAO[6]

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  Aguarde("Aguarde, Checando arquivo")
  DATAREF=AlinhM(StrVal(Day(VSDGDTREF)),2)+AlinhM(StrVal(Month(VSDGDTREF)),2)+SubStr(AlinhM(StrVal(Year(VSDGDTREF)),4),3,2)

  Deleta_Arquivo("C:\\??"+DATAREF+".DB")
  Deleta_Arquivo("C:\\??"+DATAREF+".MB")

  If VSDGOPCAO[1]=True Then CLIENTES()  EndIf
  If VSDGOPCAO[2]=True Then COMPL_CLIENTES()  EndIf
  If VSDGOPCAO[3]=True Then PRODUTOS()  EndIf
  If VSDGOPCAO[4]=True Then TABPRECOS() EndIf
  If VSDGOPCAO[5]=True Then NENTRADAS() EndIf
  If VSDGOPCAO[6]=True Then NSAIDAS()   EndIf

  Aguarde("Aguarde, Compactando pacote de transa‡„o p/ "+VSDGDRIVE+"\\PT"+DATAREF+".ARJ")
debug
  Executa_Programa("c:\\vise\\Varj.exe a C:\\PT"+DATAREF+" C:\\??"+DATAREF+".DB C:\\??"+DATAREF+".MB")

  Deleta_Arquivo("C:\\??"+DATAREF+".DB")
  Deleta_Arquivo("C:\\??"+DATAREF+".MB")
  Copia_Arquivo("C:\\PT"+DATAREF+".ARJ "+VSDGDRIVE+"\\PT"+DATAREF+".ARJ")

  If VSDGDRIVE<>"C:"
     Then Deleta_Arquivo("C:\\PT"+DATAREF+".ARJ")
  EndIf

  LimpAguarde()
  msg="Fim da Opera‡„o !// //"
  msg=msg+"Gerado arquivo->  "+VSDGDRIVE+"\\PT"+DATAREF+".ARJ"
  Mensagem(msg)
EndWhile
ClearAll
Release Vars All
Release Procs All
