;** Represen *******************************************************************
;*  Manutencao Cadastro de Representantes                                      *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/07/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 13/11/2007 por Davi Carrano
;Motivo Alteracao: Inclusao Senha
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 05/06/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes edicao
;Ultima Alteracao: 29/06/2009 por Antonio Marcelo Alves
;Motivo Alteracao: Inclusao Novos Campos/Layout
;Ultima Alteracao: 15/03/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes F1 Cidades
;Ultima Alteracao: 30/03/2010 por Cleber Alves
;Motivo Alteracao: Ajustes Enter Cidades
;Ultima Alteracao: 14/04/2010 por Bruno Carvalho
;Motivo Alteracao: Add Campo Codigo_Pessoa
;Ultima Alteracao: 16/07/2010 por Bruno Carvalho
;Motivo Alteracao: Novos Campos/Layout  
;Ultima Alteracao: 13/10/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Edita_Memo
;Ultima Alteracao: 29/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 11/04/2010 por Bruno Carvalho
;Motivo Alteracao: Add Codigo_Cobrador
;Ultima Alteracao: 04/02/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SD_Represen
;Ultima Alteracao: 12/06/2014 por Andrey Fillipe
;Motivo Alteracao: Acrescentado o campo (Codigo da Gerencia)
;Ultima Alteracao: 09/04/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes para a Descricao Gerencia receber blank quando o codigo da Gerancia for Blank
;Ultima Alteracao: 21/01/2016 por Kamila Gomes 
;Motivo Alteracao: Ajustes IE = NAOCONTRIBUINTE
;Ultima Alteracao: 26/04/2016 por Bruno Carvalho
;Motivo Alteracao: Adicionado Busca_Cep() p/ buscar o endere‡o, bairro, cidade e estado (quando houver)
;Ultima Alteracao: 10/10/2017 por Kamila Gomes
;Motivo Alteracao: Add Data_Expira_Pedidos
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  Moveto [Codigo do Representante]
  End
  SEQ = [Codigo do Representante]

  If OPCAO_FORM="F"
     Then Down
     Else PgDn
  EndIf

  SetaCorRegistro("Editar")
  While True

  TECLA=""
  AguardaTeclasPadrao()

    Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F3":
           If OPCAO_FORM="F"
              Then OPCAO_FORM="1"
              Else OPCAO_FORM="F"
           EndIf
           Del
           CHAVE=5
           Return
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             If OPCAO_FORM="F"
                 Then PAGINA("Represen","MR")
                 Else PAGINA("Represen","MT")
             EndIf
             CODIGOR=[Codigo do Representante]
             If EDITAR="S"
                Then CHAVE=0
                     PickForm "1"
                     Controla_EdicaoC()
                 Else If EXCLUIR="S"
                         Then If QuerExcluir("deste representante/vendedor")
                                 Then PickForm "1"
                                      EXCLUSAO()
                                 Else UnLockRecord
                              EndIf
                              If OPCAO_FORM="1"
                                 Then PickForm "1"
                                 Else PickForm "F"
                              EndIf
                         Else QuitLoop
                    EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC":
           CHAVE=9
           Del
           Return
      Case Retval="ENTER":
           If IsBlank([])
              Then If IsBlank(SEQ)
                      Then []="1"
                      Else []=StrVal(NumVal(SEQ)+1)
                   EndIf
           EndIf
           []=Alinh()
           CODIGO=[]
           Del
           PickForm "1"
           Moveto [Codigo do Representante]
           Locate CODIGO
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End PgDn
                   [Codigo do Representante]=CODIGO
           EndIf
           If IsLockRecord()
              Then If OPCAO_FORM="F"
                      Then PickForm "F"
                   Endif
                   QuitLoop
           EndIf
           Return
       EndSwitch
  EndWhile
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()
Moveto [Nome Fantasia Represent]
While True
      TECLA=" Esc=Retornar  "
      If Field()="Cidade Represent" Or
         Field()="UF Represent"     Or
         Field()="Cod_Empresa"      Or
         Field()="Codigo_Pessoa"    Or
         Field()="Codigo_Cobrador"
         Then TECLA=TECLA+"F1=Tabelas  "
         Else TECLA=TECLA+"            "
      EndIf

      If CHAVE=0
         Then TECLA=TECLA+"Del=Excluir  Alt+F=Fun‡”es  PgDn=Finalizar "
      EndIf

      MSGCAMPO=""
      Switch
        Case Field()="Inativo Represent"                : MSGCAMPO="Inativo ? (Sim/N„o)"
        Case Field()="CGC Represent"                    : MSGCAMPO="Formatos: [ CPF ###.###.###-## ] ou [ CNPJ ##.###.###/####-## ]"
        Case Field()="IE Represent"                     : MSGCAMPO="Informe o N§ ou ISENTO p/ Inscr. Estadual"
        Case Field()="IM Represent"                     : MSGCAMPO="Informe o N§ ou ISENTO p/ Inscr. Municipal"
        Case Field()="RG Represent"                     : MSGCAMPO="Informe o N§ do Registro Geral"
        Case Field()="Data_Cadastro Represent"          : MSGCAMPO="Data do Cadastro"
        Case Field()="Endereco_Eletronico Represent"    : MSGCAMPO="Endere‡o Eletr“nico"
        Case Field()="Pagina_Web Represent"             : MSGCAMPO="Pagina na Internet"
        Case Field()="Codigo_Pessoa"                    : MSGCAMPO="C˘digo da Pessoa"
        Case Field()="Codigo_Cobrador"                  : MSGCAMPO="C˘digo do Cobrador"
        Case Field()="Data_Expira_Pedidos"              : MSGCAMPO="Data em que expira o uso do Vise Pedidos"
      EndSwitch

      Prompt TECLA

      Wait Field
        Message MSGCAMPO
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1","F3","F4","F5","F6","PGDN",-33

      If Retval=-33
         Then
          ShowPopup " Fun‡”es " CENTERED
           "F3 ~B~ancaria"    : " Bancaria"           : "F3",
           "F4 ~P~essoal"     : " Pessoal"            : "F4",
           "F5 ~O~bserva‡”es" : " Observa‡”es Gerais" : "F5",
           "F6 ~S~enha"       : " Cadastrar Senha"    : "F6",
           "~C~ancelar"       : " Cancelar a Opera‡„o": "CANCELAR"
          EndMenu
           To MenuVar
          echo off

          If MenuVar="CANCELAR" or MenuVar="Esc"
              Then QuitLoop
              Else RetVal=MenuVar
          EndIf

     EndIf

      Switch
      Case Retval="F1":
           If Field()="Cidade Represent" Or
              Field()="UF Represent"     Or
              Field()="Pais Represent"   Or
              Field()="Cod_Empresa"      Or
              Field()="Codigo_Pessoa"    Or
              Field()="Codigo_Cobrador"  Or
              Field()="Codigo da Gerencia"
              Then If ConsultaF1()
                      Then Switch
                             Case Field()="Cidade Represent" : [UF Represent      ]=Reg_ConsultaF1["UF"]
                                                               [Pais represent    ]=Reg_ConsultaF1["Pais"]
                             Case Field()="Codigo_Cobrador"  : [Descricao_Cobrador]=Reg_ConsultaF1["Descricao do Cobrador"]                                 
                           EndSwitch
                   EndIf        
           EndIf
      Case Retval="PGDN":
           CHAVE=9
           QuitLoop
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="F3":
           NCAMPO=Field()
           Moveto "RepreObs"
           Edita_Memo("Referencia Bancaria",14,01,09,76,"Referencia Bancaria")
           VERIFICA()
           Moveto Field NCAMPO
      Case RetVal="F4":
           NCAMPO=Field()
           Moveto "RepreObs"
           Edita_Memo("Referencia Pessoal",14,01,09,76,"Referencia Pessoal")
           VERIFICA()
           Moveto Field NCAMPO
      Case RetVal="F5":
           NCAMPO=Field()
           Moveto "RepreObs"
           Edita_Memo("Observacoes",14,01,09,76,"Observa‡”es")
           VERIFICA()
           Moveto Field NCAMPO
      Case Retval="F6":
           NCAMPO=Field()
           NovaSenha()
           Moveto Field NCAMPO

      Case Retval="DEL":
           If CHAVE=0
              Then If QuerExcluir("deste representante/vendedor")
                      Then Exclusao()
                           QuitLoop
                   EndIf
           EndIf


      Case Retval="ESC":
           Switch
           Case Field()="Nome Fantasia Represent":
                If QuerDesfazer("")
                   Then If CHAVE=1
                           Then EXCLUSAO()
                           Else Undo
                        EndIf
                        CHAVE=9
                        QuitLoop
                EndIf
                
           Case Field()="Data_Cadastro Represent"                : Moveto [Nome Fantasia Represent]
           Case Field()="Inativo Represent"                      : Moveto [Data_Cadastro Represent]
           Case Field()="Razao Social Represent"                 : Moveto [Inativo Represent]
           Case Field()="Contato Represent"                      : Moveto [Razao Social Represent]
           Case Field()="CEP Represent"                          : Moveto [Contato Represent]
           Case Field()="Endereco Represent"                     : Moveto [CEP Represent]
           Case Field()="Bairro Represent"                       : Moveto [Endereco Represent]
           Case Field()="Cidade Represent"                       : Moveto [Bairro Represent]
           Case Field()="UF Represent"                           : Moveto [Cidade Represent]
           Case Field()="Pais Represent"                         : Moveto [UF Represent]
           Case Field()="Telefone Represent"                     : Moveto [Pais Represent]
           Case Field()="Celular Represent"                      : Moveto [Telefone Represent]
           Case Field()="Fax Represent"                          : Moveto [Celular Represent]
           Case Field()="Endereco_Eletronico Repre"              : Moveto [Fax Represent]
           Case Field()="Pagina_Web Represent"                   : Moveto [Endereco_Eletronico Repre]
           Case Field()="CGC Represent"                          : Moveto [Pagina_Web Represent]
           Case Field()="IE Represent"                           : Moveto [CGC Represent]
           Case Field()="RG Represent"                           : Moveto [IE Represent]
           Case Field()="IM Represent"                           : Moveto [RG Represent]
           Case Field()="Conta Contabil Represent"               : Moveto [IM Represent]
           Case Field()="Codigo da Gerencia"                     : 
                If IsBlank([Codigo da Gerencia])
                   Then [Descricao Gerencia]=""
                EndIf
                Moveto [Conta Contabil Represent]
           Case Field()="Comissao do Representante"              : Moveto [Codigo da Gerencia]
           Case Field()="Data_Expira_Pedidos"                    : Moveto [Codigo_Cobrador]
           OtherWise:
                Left
           EndSwitch
      Case Retval="ENTER":
           Switch
           Case Field() = "Nome Fantasia Represent":
                If IsBlank([]) Then Loop EndIf
                Moveto [Data_Cadastro Represent]
           Case Field()="Data_Cadastro Represent":
                If IsBlank([])
                   Then []=Today()
                EndIf
                Moveto [Inativo Represent]
           Case Field()="Inativo Represent":
                If IsBlank([]) Then []="N" EndIf
                Moveto [Razao Social Represent]
           Case Field()="Razao Social Represent":
                If IsBlank([]) Then Loop EndIf
                Moveto [Contato Represent]
           Case Field()="Contato Represent"  : Moveto [CEP Represent]
           Case Field()="CEP Represent"      : Moveto [Endereco Represent]
                If Not Isblank([CEP Represent]) And CHAVE = 1
                   Then Busca_Cep([CEP Represent])
                        [Endereco Represent] = BUSCA_CEP_ENDERECO
                        [Bairro Represent  ] = BUSCA_CEP_BAIRRO
                        [Cidade Represent  ] = BUSCA_CEP_CIDADE
                        [UF Represent      ] = BUSCA_CEP_UF
                        [Pais Represent    ] = BUSCA_CEP_PAIS
                        Release Vars BUSCA_CEP_ENDERECO, BUSCA_CEP_BAIRRO, BUSCA_CEP_CIDADE, BUSCA_CEP_UF, BUSCA_CEP_PAIS
                EndIf
           Case Field()="Endereco Represent" : Moveto [Bairro Represent]
           Case Field()="Bairro Represent"   : Moveto [Cidade Represent]
           Case Field()="Cidade Represent":                
                If IsBlank([]) Then Loop EndIf
                Moveto [Uf Represent]
           Case Field() = "UF Represent":  
                If IsBlank([]) Then Loop EndIf
                If Not IsBlank([Cidade Represent])
                    Then Moveto [Cidade Represent]
                         Ativa_Lookup()
                         Moveto [Cidade]
                         Locate [Represen->Cidade Represent],[Represen->Uf Represent]
                         If RetVal
                            Then VSD_Cidade=[Cidade ]
                                 VSD_UF=[UF]
                                 KeyPress "ESC"
                                 Moveto "Represen"
                                 [Cidade Represent]=VSD_Cidade
                                 [Uf Represent]=VSD_UF
                                 Moveto [Pais Represent]                                             
                            Else Mensagem("Cidade n„o Cadastrada !")                                                    
                                 KeyPress "ESC"
                                 Moveto [Cidade Represent]
                         EndIf
                         Echo Off                 
                EndIf 
           Case Field() = "Pais Represent":
                If IsBlank([]) Then
                   []="BRASIL"
                EndIf
                Moveto [Telefone Represent]
           Case Field()="Telefone Represent" : Moveto [Celular Represent     ]
           Case Field()="Celular Represent"  : Moveto [Fax Represent         ]
           Case Field()="Fax Represent"      : Moveto [Endereco_Eletronico Repre]
           Case Field()="Endereco_Eletronico Repre" : Moveto [Pagina_Web Represent]
                If Not IsBlank([Endereco_Eletronico Repre])
                   Then [Endereco_Eletronico Repre]=Lower([Endereco_Eletronico Repre])
                EndIf
           Case Field()="Pagina_Web Represent"          : Moveto [CGC Represent]
                If Not IsBlank([Pagina_Web Represent])
                   Then [Pagina_Web Represent]=Lower([Pagina_Web Represent])
                EndIf

           Case Field()="CGC Represent":
                If IsBlank([]) Then Loop EndIf
                If Not Checa_CGC_CPF_Formatado([]) Then Loop EndIf
                Switch
                  Case Search(".",[CGC Represent])=4: [Tipo Pessoa Represent]="FISICA"
                  Case Search(".",[CGC Represent])=3: [Tipo Pessoa Represent]="JURIDICA"
                EndSwitch
                Moveto [IE Represent]
           Case Field()="IE Represent":
                If IsBlank([]) Then Loop EndIf
                If [Tipo Pessoa Represent]="JURIDICA"
                   Then If []<>"ISENTO" And []<>"NAOCONTRIBUINTE"
                           Then Aguarde("Validando IE")
                                If Not Valida_IE([],[UF Represent])
                                   Then LimpAguarde()
                                        Loop
                                EndIf
                                LimpAguarde()
                        EndIf  
                EndIf
                Moveto [RG Represent]
           Case Field()="RG Represent"                  : Moveto [IM Represent]
           Case Field()="IM Represent"                  : Moveto [Conta Contabil Represent]
           Case Field()="Conta Contabil Represent"      : Moveto [Codigo da Gerencia]
           Case Field()="Codigo da Gerencia"            : 
                If IsBlank([Codigo da Gerencia])
                   Then [Descricao Gerencia]=""
                EndIf
                Moveto [Comissao do Representante]
           Case Field()="Comissao do Representante"     : Moveto [Cod_Empresa]
           Case Field()="Cod_Empresa"                   : Moveto [Codigo_Pessoa]
           Case Field()="Codigo_Pessoa"                 : Moveto [Codigo_Cobrador]       
           Case Field()="Codigo_Cobrador"               :    
                If Not IsBlank([])
                     Then Ativa_Lookup()
                          Moveto [Codigo do Cobrador]
                          Locate [Represen->Codigo_Cobrador]
                          If Retval
                             Then DESC_COB=[Descricao do Cobrador]
                             Else DESC_COB=""
                          EndIf
                          KeyPress "ESC"
                     Else DESC_COB=""     
                EndIf
                If DESC_COB<>"" Then [Descricao_Cobrador]=DESC_COB EndIf
                Moveto [Data_Expira_Pedidos]
           Case Field()="Data_Expira_Pedidos"        :  
                If CHAVE=1
                   Then UnLockRecord
                EndIf
                CHAVE=0
                Moveto [Nome Fantasia Represent]
           OtherWise:
                Right
           EndSwitch
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Represent(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA    =""
MSG_CAMPO=""
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_SENHA1"        : Campo="NO"
            Case Campo="TG_SENHA2"        : Campo="TG_SENHA1"
            Case Campo="YES" Or Campo="NO": Campo="TG_SENHA1"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_SENHA1"      : Campo="TG_SENHA2"
                         VSDGSENHA1 =ControlValue("TG_SENHA1")
                    Case Campo="TG_SENHA2"      : Campo="YES"
                         VSDGSENHA2 =ControlValue("TG_SENHA2")
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_SENHA1":
       MSG_CAMPO="Informe a nova senha do Representante"
  Case Campo="TG_SENHA2":
       MSG_CAMPO="Confirme a nova senha do Representante"
  Case Campo="NO" :
       MSG_CAMPO="Cancelar/Retornar !"
  Case Campo="YES":
       MSG_CAMPO="Confirmar Dados/Entrar !"
EndSwitch

SelectControl Campo

ExibeRodapeSD(MSG_CAMPO)
ExibeRodape(2,"Esc=Retornar  Enter=Avan‡ar  "+TECLA)
RefreshDialog

Return Temp
EndProc  ; (Sd_Represent)



;*******************************************************************************
;* Rotina Monta Janela Digitacao De Senha/Vencida                              *
;*******************************************************************************
Proc NovaSenha()

VSDGSENHA1=""
VSDGSENHA2=""
While True
  Show_Janela=2
  ShowDialog "Alterar a senha do Representante" Proc "SD_Represent"
    Trigger "OPEN","ARRIVE"
      Key "ENTER","ESC"
       @ 07,22   Height 09 Width 45

       Label  @ 1,00 "Nova senha: " for "TG_SENHA1"
       Accept @ 1,23 Width 9 "A6" picture "@*@" hidden Tag "TG_SENHA1" to VSDGSENHA1

       Label  @ 3,00 "Confirmar nova senha: " for "TG_SENHA2"
       Accept @ 3,23 Width 9 "A6" picture "@*@" hidden Tag "TG_SENHA2" to VSDGSENHA2

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

  Enddialog
  If Not RetVal
     Then Return False
  EndIf
  If (VSDGSENHA1<>VSDGSENHA2) Or
     IsBlank(VSDGSENHA1) Or
     IsBlank(VSDGSENHA2)
     Then MENSAGEM("A nova senha e a senha confirmada n„o conferem !// //Digite-as novamente !")
     Else ENCRIPTASENHA(VSDGSENHA1)
          codRepr=[Codigo do Representante]
          Home
          moveto [Senha]
          Locate SENHAENC
          If Not RetVal
             Then Home
                  Moveto [Codigo do Representante]
                  Locate codRepr
                  [Senha ]=SENHAENC
                  Return True
             Else MENSAGEM("J  existe outro representante cadastrado com esta senha!// //Tente outra senha!")
                  Home
                  Moveto [Codigo do Representante]
                  Locate codRepr
          EndIf

  EndIf
EndWhile
EndProc ; (NovaSenha)

;*******************************************************************************
;* Rotina de Referencias Pessoais                                              *
;*******************************************************************************
Proc VERIFICA()

If IsBlank([Referencia Pessoal])  And
   IsBlank([Referencia Bancaria]) And
   IsBlank([Observacoes])
   Then Del
EndIf

Moveto "Represen"
EndProc 

;******************************************************************************
;*Rotina para excluir Relacao                                                 *
;******************************************************************************
Proc EXCLUSAO()

Moveto "RepreObs"
While RecordStatus("New")=False
  Del
EndWhile
Moveto "Represen"
Grava_LogEx("Representante")
Del

EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc"
CoEdit "Represen"
PickForm "F"
OPCAO_FORM="F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  If CHAVE=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
