;** Exp_CSN  *******************************************************************
;* Exportacao de Cadastros Server->Note Vise Vendas                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 17/12/2008 por Anivel Augusto Rodrigues
;Ultima Alteracao: 19/06/2009 por Anivel Augusto Rodrigues
;Movito Alteracao: Ajustes TpGrade
;Ultima Alteracao: 07/07/2009 por Anivel Augusto Rodrigues
;Movito Alteracao: Ajustes Selecao/Agrupamento por Gerencia
;Ultima Alteracao: 29/04/2010 por Cleber Alves            
;Motivo Alteracao: ".." VSDGGERENCIA
;Ultima Alteracao: 31/05/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustado rotina para cria‡Æo de pastas pr¢prias pra exporta‡Æo
;Ultima Alteracao: 27/06/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo Arj para c:\Arj
;Ultima Alteracao: 01/12/2011 por Bruno Carvalho
;Motivo Alteracao: Altera‡Æo de "Arj -> Varj"
;Ultima Alteracao: 07/05/2012 por Bruno Carvalho
;Motivo Alteracao: Add Sleep na rotina onde ‚ processado o ARJ
;Ultima Alteracao: 03/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes [Conta Contabil Represent]->[Codigo_Pessoa] relacionamento
;Ultima Alteracao: 23/05/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado a tabela "Iten_Com" na proc Itens()
;Ultima Alteracao: 14/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog     
;Ultima Alteracao: 29/12/2016 por Rafael Matos
;Motivo Alteracao: Ajustes MensagemCheckBoxes()               

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Clientes()

{Ask} {\\Sistemas\\Cadastro\\Destinat} Check
Moveto [Tipo                   ] TypeIn "E or C"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
Copiar("Destinat")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Tipo                   ] TypeIn "E or C"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Cadastro\\Destinfo} Check
Moveto [Codigo                 ] Example "clie"
Copiar("Destinfo")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Tipo                   ] TypeIn "E or C"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Cadastro\\Destobs} Check
Moveto [Codigo                 ] Example "clie"
Copiar("Destobs")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Tipo                   ] TypeIn "E or C"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Cadastro\\Destmsg} Check
Moveto [Codigo                 ] Example "clie"
Copiar("Destmsg")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Tipo                   ] TypeIn "E or C"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Cadastro\\End_Cob} Check
Moveto [Codigo                 ] Example "clie"
Copiar("End_Cob")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Tipo                   ] TypeIn "E or C"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Cadastro\\FichaCli} Check
Moveto [Codigo                 ] Example "clie"
Copiar("Fichacli")

{Ask} {\\Sistemas\\Cadastro\\Represen} Check
Moveto [Codigo do Representante] TypeIn "~CODREP.."
Copiar("Represen")

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

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

{Ask} {\\Sistemas\\Cadastro\\Rota} Check
Copiar ("Rota")

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

{Ask} {\\Sistemas\\Cadastro\\Cobrador} Check
Copiar ("Cobrador")

{Ask} {\\Sistemas\\Vendas\\Estados} Check
Copiar ("Estados")

EndProc

Proc Itens()

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

{Ask} {\\Sistemas\\Estoque\\Iten_cor} Check
Copiar("Iten_cor")

{Ask} {\\Sistemas\\Estoque\\Iten_Com} Check
Copiar("Iten_Com")

{Ask} {\\Sistemas\\Estoque\\Tpitem} Check
Copiar("Tpitem")

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

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

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

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

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

{Ask} {\\Sistemas\\Estoque\\Ncm} Check
Copiar("Ncm")

{Ask} {\\Sistemas\\Estoque\\Tptribut} Check
Copiar("Tptribut")

{Ask} {\\Sistemas\\Estoque\\Tpgrade} Check
Copiar("Tpgrade")

EndProc

Proc TabPreco()

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

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

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

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Vendas\\TbPrCli} Check
Moveto [Codigo da Tabela       ] TypeIn "~VSDGTABELA.."
Moveto [Codigo                 ] Example "clie"
Copiar("Tbprcli")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Vendas\\TbPrCIt} Check
Moveto [Codigo da Tabela       ] TypeIn "~VSDGTABELA.."
Moveto [Codigo                 ] Example "clie"
Copiar("Tbprcit")

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

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

EndProc

Proc TabVenda()

{Ask} {\\Sistemas\\Cadastro\\Tppagto} Check
Copiar("Tppagto")

{Ask} {\\Sistemas\\Vendas\\Condpgto} Check
Copiar("Condpgto")

{Ask} {\\Sistemas\\Vendas\\Destin} Check
Copiar("Destin")

{Ask} {\\Sistemas\\Vendas\\Transpor} Check
Copiar("Transpor")

{Ask} {\\Sistemas\\Vendas\\Veiculos} Check
Copiar("Veiculos")

EndProc

Proc Financa()

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Ctarec\\Duplic}
Moveto [Numero do Lancamento   ] Example "nlan"
Moveto [Codigo do Destinatario ] Example "clie"
{Ask} {\\Sistemas\\Ctarec\\Dupbaixa} Check
Moveto [Numero do Lancamento   ] Example "nlan"
Copiar("DupBaixa")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Ctarec\\Duplic} Check
Moveto [Codigo do Destinatario ] Example "clie"
Copiar("Duplic")


{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Cheqrec\\Chequec}
Moveto [Numero do Lancamento   ] Example "nlan"
Moveto [Codigo                 ] Example "clie"
{Ask} {\\Sistemas\\Cheqrec\\Chequei} Check
Moveto [Numero do Lancamento   ] Example "nlan"
Copiar("Chequei")

{Ask} {\\Sistemas\\Cadastro\\Destinat}
Moveto [Codigo                 ] Example "clie"
Moveto [Codigo do Representante] TypeIn "~CODREP.."
{Ask} {\\Sistemas\\Cheqrec\\Chequec} Check
Moveto [Codigo                 ] Example "clie"
Copiar("Chequec")

EndProc


;*******************************************************************************
;* Copiar                                                                      *
;*******************************************************************************
Proc Copiar(Tabela)
Do_It!

{Tools} {Copy} {Table} {Answer} TypeIn PASTA+"\\"+Tabela Enter

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"] =  27:
          Temp=False
          Switch
            Case Campo="TG_TABELA"        : Campo="NO"
            Case Campo="TG_GERENCIA"      : Campo="TG_TABELA"
            Case Campo="TG_REPRESEN"      : Campo="TG_GERENCIA"
            Case Campo="TG_OPGERENCIA"    : Campo="TG_REPRESEN"
            Case Campo="YES" Or Campo="NO": Campo="TG_TABELA"
          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_TABELA"     : Campo="TG_GERENCIA"
                    Case Campo="TG_GERENCIA"   : Campo="TG_REPRESEN"
                         If IsBlank(VSDGGERENCIA) 
                            Then VSDGGERENCIA = ".."
                         EndIf 
                    Case Campo="TG_REPRESEN"   : Campo="TG_OPGERENCIA"
                    Case Campo="TG_OPGERENCIA" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="":
     MSG_CAMPO=""
  Case Campo="TG_TABELA":
     MSG_CAMPO="Informe uma tabela"
  Case Campo="TG_REPRESEN":
     MSG_CAMPO="Informe um representante"
  Case Campo="TG_OPGERENCIA":
     MensagemCheckBoxes()
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

If Not IsAssigned(NOMEMPRESA)       Then NOMEMPRESA="Teste"  EndIf

LimpAguarde()

VSDGTABELA  =""
VSDGREPRESEN=""
VSDGGERENCIA=""
VSDGDRIVE=SubStr(Directory(),1,2)

Array TG_OPGERENCIA[1]
TG_OPGERENCIA[1]="Agrupa todos vendedores da mesma gerˆncia"

Array CheckTG_OPGERENCIA[ArraySize(TG_OPGERENCIA)]
CheckTG_OPGERENCIA[1]=False

While True

  ShowDialog "Exportacao/Cadastros Server->Note Vise Vendas" 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 "Tabela"  For "TG_TABELA"
    Accept @ 01,01 Width 08 "A5"  Picture "#*#" Tag "TG_TABELA" To VSDGTABELA
    Accept @ 01,09 Width 25 "A30" Picture "!*!" Tag "TG_NOMTAB" To VSDGNOMTAB

    Label  @ 02,00 "Gerˆncia" For "TG_GERENCIA"
    Accept @ 03,01 Width 07 "A4"  Picture "!*!" Tag "TG_GERENCIA"    To VSDGGERENCIA
    Accept @ 03,09 Width 25 "A30"  Picture "!*!" Tag "TG_NOMGERENCIA" To VSDGNOMGERENCIA

    Label  @ 04,01 "Representante"  For "TG_REPRESEN"
    Accept @ 05,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN"   To VSDGREPRESEN
    Accept @ 05,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"    To VSDGNOMREPR

    CheckBoxes @ 07,00 Height 1 Width 50 Tag "TG_OPGERENCIA"
    TG_OPGERENCIA[1] to CheckTG_OPGERENCIA[1]

    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

  If Not IsBlank(VSDGTABELA) Then
     TabOk=False
     View "\\Sistemas\\Vendas\\TbPrCab"
     Moveto [Codigo da Tabela]
     Locate VSDGTABELA
     If RetVal
        Then If [\Sistemas\Vendas\TbPrCab->Ativa]<>"N"
                Then TabOk=True
             EndIf
     EndIf
     ClearAll
     If Not TabOk
        Then Mensagem("Tabela informada esta inativa !")
             Loop
     EndIf
  EndIf

  If CheckTG_OPGERENCIA[1]=True And Not IsBlank(VSDGREPRESEN)
     Then Mensagem("Agrupar gerˆncia apenas para todos representante !")
          Loop
  EndIf

  If RTrim(VSDGGERENCIA)=""
     Then Mensagem("Gerencia inv lida !")
          Loop
  EndIf

  PASTA="\\Server"
  If DirExists(PASTA)=0
     Then Cria_Pasta(PASTA)
          Sleep 2000
  EndIf

  PASTA="\\Server\\Vise"
  If DirExists(PASTA)=0
     Then Cria_Pasta(PASTA)
          Sleep 2000
  EndIf  
  
  PASTA="\\Server\\Vise\\Exporta"
  If DirExists(PASTA)=0
     Then Cria_Pasta(PASTA)
          Sleep 2000
  EndIf

  If IsAssigned(Array_Registro)  Then Release Vars Array_Registro EndIf
  DynArray Array_Registro[]


  {Ask} {\\Sistemas\\Cadastro\\Represen} Check
  Do_It!
  ClearAll

  Sort "Answer" On "Descricao Gerencia","Codigo do Representante"
  gerant="***"
  wc=0
  Scan

    Switch

      Case CheckTG_OPGERENCIA[1]=False:
        Switch
          Case Not IsBlank(VSDGREPRESEN) And
               [Codigo do Representante]<>VSDGREPRESEN : Loop
          Case IsBlank(VSDGREPRESEN) And
               IsBlank([Codigo_Pessoa])                : Loop
        EndSwitch

        wc=wc+1
        Array_Registro[wc]=Completa([Nome Fantasia Represent],20," ")+"|"+
                           Completa([Descricao Gerencia     ],10," ")+"|"+
                           [Codigo do Representante]+"|"+
                           [Codigo do Representante]


      Case CheckTG_OPGERENCIA[1]=True :
        Switch
          Case Not IsBlank(VSDGGERENCIA) And
               VSDGGERENCIA<>".." And
               [Descricao Gerencia]<>VSDGGERENCIA      : Loop
          Case VSDGGERENCIA=".." And
               (IsBlank([Codigo_Pessoa]) Or
                IsBlank([Descricao Gerencia      ]))    : Loop
        EndSwitch

        If [Descricao Gerencia]<>gerant
           Then
                If wc>0
                   Then Array_Registro[wc]=Completa(gerant,20," ")+"|"+
                                           Completa(gerant,10," ")+"|"+
                                           Completa(FIDREP,04," ")+"|"+
                                           CODREP
                EndIf
                wc=wc+1

                gerant=[Descricao Gerencia]
                FIDREP=RTrim(SubStr([Descricao Gerencia],1,4))
                CODREP=""

        EndIf

        If IsBlank(CODREP)
           Then CODREP=[Codigo do Representante]
           Else CODREP=CODREP+" Or "+[Codigo do Representante]
        EndIf

    EndSwitch

  EndScan
  ClearAll

  For wc from 1 to DynArraySize(Array_Registro)
    NOMREP=SubStr(Array_Registro[wc],01,20)
    FIDREP=RTrim(SubStr(Array_Registro[wc],33,004))
    CODREP=RTrim(SubStr(Array_Registro[wc],38,500))

    Aguarde("Aguarde, Exportando Dados "+PASTA)

    Deleta_Arquivo(VSDGDRIVE+PASTA+"\\*.DB")
    Deleta_Arquivo(VSDGDRIVE+PASTA+"\\*.MB")
    Deleta_Arquivo(VSDGDRIVE+PASTA+"\\PTSR"+FIDREP+".ARJ")

    Sleep 2000

    Clientes()
    Itens()
    TabPreco()
    TabVenda()
    Financa()

    SetDir PASTA
    Executa_Programa("c:\\vise\\Varj.exe a PTSR"+FIDREP+" *.DB *.MB")
    Sleep 1000
    
    SetDir "\\Sistemas\\Vendas"

    Deleta_Arquivo(VSDGDRIVE+PASTA+"\\*.DB")
    Deleta_Arquivo(VSDGDRIVE+PASTA+"\\*.MB")

		LimpAguarde()
		
    Mensagem("Arquivo Gerado!// "+VSDGDRIVE+PASTA+"\\PTSR"+FIDREP)
		
	EndFor

  Mensagem("Fim do Processo !")

EndWhile
ClearAll
Release Vars All
Release Procs All
