;** TransfCD *******************************************************************
;*  Transferencia/Exportacao de Tabelas Cadastro                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 22/08/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 06/01/2006 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 26/03/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tabela Preco
;Ultima Alteracao: 16/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Layout no SD_Dialog
;Ultima Alteracao: 23/06/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao novas tabelas regras para produtos
;Ultima Alteracao: 19/10/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Iten_tec" -> PRODUTOS()
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()
;Ultima Alteracao: 08/08/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado Gera_Log()
;Ultima Alteracao: 14/03/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Iten_eco" -> PRODUTOS()

;*******************************************************************************
;* ROTINA CLIENTES                                                             *
;*******************************************************************************
Proc CLIENTES()
Aguarde("Aguarde, Exportando Dados Clientes")
{Ask} {\\Sistemas\\Cadastro\\Destinat} Check
Do_It!
Copiar("CL")
ClearAll

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

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

{Ask} {\\Sistemas\\Cadastro\\Area} Check
Do_It!
Copiar ("AR")
ClearAll
EndProc

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

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

{Ask} {\\Sistemas\\Estoque\\Iten_com} Check
Do_It!
Copiar("IC")
ClearAll

{Ask} {\\Sistemas\\Estoque\\Iten_tec} Check
Do_It!
Copiar("IT")
ClearAll

{Ask} {\\Sistemas\\Estoque\\Iten_eco} Check
Do_It!
Copiar("IE")
ClearAll

{Ask} {\\Sistemas\\Estoque\\Cest} Check
Do_It!
Copiar("CE")
ClearAll

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

{Ask} {\\Sistemas\\Estoque\\Depart} Check
Do_It!
Copiar("DE")
ClearAll

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

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

{Ask} {\\Sistemas\\Estoque\\Localiza} Check
Do_It!
Copiar("LO")
ClearAll

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

{Ask} {\\Sistemas\\Estoque\\NCM} Check
Do_It!
Copiar("NC")
ClearAll

{Ask} {\\Sistemas\\Estoque\\Simbol} Check
Do_It!
Copiar("SB")
ClearAll

{Ask} {\\Sistemas\\Estoque\\Tabmva} Check
Do_It!
Copiar("TM")
ClearAll

{Ask} {\\Sistemas\\Estoque\\TpGrade} Check
Do_It!
Copiar("GD")
ClearAll

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

EndProc  ;;(Produtos)

;*******************************************************************************
;* ROTINA TABELA PRECO                                                         *
;*******************************************************************************
Proc TABPRECOS()
Aguarde("Aguarde, Exportando Dados Tabela Pre‡os")
{Ask} {\\Sistemas\\Vendas\\TbPrCab} Check
Do_It!
Copiar("TC")
ClearAll

{Ask} {\\Sistemas\\Vendas\\TbPrIte} Check
Do_It!
Copiar("TI")
ClearAll

{Ask} {\\Sistemas\\Vendas\\TbPrCpg} Check
Do_It!
Copiar("TP")
ClearAll

{Ask} {\\Sistemas\\Vendas\\TbPrCli} Check
Do_It!
Copiar("TY")
ClearAll

{Ask} {\\Sistemas\\Vendas\\TbPrCIt} Check
Do_It!
Copiar("TX")
ClearAll

{Ask} {\\Sistemas\\Vendas\\TbPrRep} Check
Do_It!
Copiar("TR")
ClearAll

{Ask} {\\Sistemas\\Vendas\\TbPrRIt} Check
Do_It!
Copiar("TS")
ClearAll

EndProc

;*******************************************************************************
;* Copiar                                                                      *
;*******************************************************************************
Proc Copiar(INI)
If IsTable(VSDGDRIVE+"\\"+INI+DATAREF)
   Then Delete VSDGDRIVE+"\\"+INI+DATAREF
EndIf

{Tools} {Copy} {Table} {Answer} TypeIn VSDGDRIVE+"\\"+INI+DATAREF Enter
EndProc

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

If VSDGDTREF<>BlankDate()
   Then AUX_DTREF = "Referente a "+StrVal(VSDGDTREF)
   Else AUX_DTREF = ""
EndIf

AUX_OPCAO = "" 
If VSDGOPCAO[1] Then AUX_OPCAO = AUX_OPCAO + "Clientes, "        EndIf 
If VSDGOPCAO[2] Then AUX_OPCAO = AUX_OPCAO + "Produtos, "        EndIf
If VSDGOPCAO[3] Then AUX_OPCAO = AUX_OPCAO + "Tabela de Preco, " EndIf
AUX_OPCAO = Rtrim(AUX_OPCAO)
If SubStr(AUX_OPCAO,Len(AUX_OPCAO),1)="," Then AUX_OPCAO = Substr(AUX_OPCAO,1,Len(AUX_OPCAO)-1) EndIf

MSG =  AUX_DTREF + ", Drive "+VSDGDRIVE+" -> Exportados: "+AUX_OPCAO
Grava_Logt("#","TransfCD",MSG)  

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_DTREF"         : Campo="NO"
            Case Campo="TG_OPCOES"        : Campo="TG_DTREF"
            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_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":
       MensagemCheckBoxes()
  Case Campo="TG_DRIVES":
       MSG_CAMPO="Selecione o drive 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[3]
VSDGOPCAO[1]=False
VSDGOPCAO[2]=False
VSDGOPCAO[3]=False

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

VSDGDTREF  =Today()

While True
  ShowDialog "Exporta‡„o Dados de Cadastro" 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 12 Width 52

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

    Label  @ 03,21 "Drives:" For "TG_DRIVES"
    PickDynArrayIndex @ 04,22 Height 2 width 05
     Columns 1
      Array_Drives
       Tag "TG_DRIVES"
        To VSDGDRIVE

    Label  @ 03,00 "Op‡oes de Tabelas" For "TG_OPCOES"
    CheckBoxes @4,00 Height 3 Width 15 Tag "TG_OPCOES"
    "Clientes   " to VSDGOPCAO[1],
    "Produtos   " to VSDGOPCAO[2],
    "Tab. Pre‡o " to VSDGOPCAO[3]

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

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  Gera_Log()

  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 PRODUTOS()  EndIf
  If VSDGOPCAO[3]=True Then TABPRECOS() EndIf

  LimpAguarde()
  MENSAGEM("Fim da Opera‡„o !")
EndWhile
ClearAll
Release Vars All
Release Procs All
