;** GPessoa ********************************************************************
;*  Grupo de Vinculo de Pessoas                                                *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 27/07/2016 por Bruno Carvalho
;Ultima Alteracao:   /  /     por
;Motivo Alteracao: 

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()   
While True
  End
  Moveto [CodigoGrupoPessoa]

  If OPCAO_FORM="F"
    Then Down
    Else PgDn PgDn
  EndIf
  SetaCorRegistro("Editar")
  While True

  TECLA=""
  AguardaTeclasPadrao()

  If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡”es " CENTERED
             "F6  ~I~mprimir Rela‡„o dos Vinculos" : " Imprime a Rela‡„o das Pessoa(s) Vinculadas   "   : "F6",
             "~C~ancelar                         " : " Cancelar a Opera‡„o                          "   : "CANCELAR"
          EndMenu
          To MenuVar

          echo off
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf

          RetVal=MenuVar
  EndIf

  Switch
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F6":
         Del
         IMPRIMIR_GERAL()
         Quitloop
    Case RetVal="F3":
         If OPCAO_FORM="1"
            Then OPCAO_FORM="F"
            Else OPCAO_FORM="1"
         EndIf
         Del
         CHAVE=5
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME": 
         Del
         While True
           If OPCAO_FORM="F"
              Then PAGINA("GPessoaC","MR")
              Else PAGINA("GPessoaC","MT")
           EndIf
           GPESSOA_CODIGO=[CodigoGrupoPessoa]
           If EDITAR="S"
              Then CHAVE=0
                   If OPCAO_FORM="F"
                      Then PickForm "1"
                   EndIf
                   Controla_EdicaoC()
              Else If EXCLUIR="S"
                      Then MSG="Confirma a Exclus„o do Lan‡amento ?"
                           If CONFGERAL_Supervisor(MSG)
                              Then If OPCAO_FORM="F"
                                      Then PickForm "1"
                                   EndIf
                                   EXCLUSAO("Cabeca")
                                   If OPCAO_FORM="F"
                                     Then PickForm "F"
                                   EndIf           
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         Del
         CHAVE=9
         Return   
    Case Retval="ENTER":  
         If Numero_Lancamento("","F")
            Then GPESSOA_CODIGO = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC 
            Else QuitLoop
         EndIf
         PickForm "1"
         Moveto [DescricaoGrupoPessoa]
         If PROXIMO_LANCTO_REG_ACHOU
            Then CHAVE=0
                 Return
            Else CHAVE=1
                 Return
         EndIf
         If CHAVEC=1
            Then Del
         EndIf
         If OPCAO_FORM="F"
            Then PickForm "F"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile

EndProc   ;CHAVE()

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc DIGITA()   

Moveto "GPessoaI" SetaCorRegistro("Padrao")
Moveto "GPessoaC" SetaCorRegistro("Editar")

Moveto [DescricaoGrupoPessoa]
While True
  TECLA=" Esc=Retornar  "
  If CHAVE=0
     Then TECLA=TECLA + "Del=Excluir  "
     Else TECLA=TECLA + "             "
  EndIf
  TECLA    = TECLA
  MSGCAMPO = "Descri‡„o"
  
  Prompt TECLA

  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","DEL","F5","F3","F4","F8","FIELDVIEW","F35","F6","F9"

  Switch
    Case Retval="FIELDVIEW" or Retval="F35":
         EDITFIELD()
    Case RetVal="F6":
    Case RetVal="DEL":
         If CHAVE=0
            Then MSG="Confirma a Exclus„o do Lan‡amento ?"
                 If CONFGERAL_Supervisor(MSG)
                    Then EXCLUSAO("Cabeca")
                         CHAVE=9
                         QuitLoop
                 EndIf        
         Endif
    Case RetVal="ESC":
         Switch
           Case Field()="DescricaoGrupoPessoa":
                If QuerDesfazer("")
                   Then If CHAVE=0
                           Then If RecordStatus("Modified")
                                   Then Undo
                                EndIf
                           Else Del
                        EndIf
                        CHAVE=9
                        QuitLoop
                EndIf
           OtherWise:
                Left
         EndSwitch
    Case RetVal="ENTER":
         Switch
           Case Field()="DescricaoGrupoPessoa" :
                If IsBlank([])
                   Then Loop
                EndIf
                QuitLoop
           OtherWise:
                Right
         EndSwitch
  EndSwitch
EndWhile

EndProc ;DIGITAC()

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVEI()  

Moveto [Codigo]
End Down
While true
      SetaCorRegistro("Editar")
      TECLA=" Esc=Retornar  "

      If Field()="Codigo"
         Then TECLA=TECLA+"F1=Tabelas  "
      EndIf

      Prompt TECLA + "Alt+F=Fun‡”es  F7=Paginar  PgDn=Finalizar  "

      Wait Field
           Until "ESC","ENTER","F7","HOME","UP","PGUP","F1","PGDN","F9","F6",-33

      If RetVal=-33
         Then Echo Normal
              Echo Off
              ShowPopup " Fun‡”es " CENTERED
                 "F6  ~I~mprimir Vinculos" : " Imprime Pessoa(s) Vinculadas   "   : "F6",
                 "~C~ancelar             " : " Cancelar a Opera‡„o            "   : "CANCELAR"
              EndMenu
              To MenuVar
    
              echo off
              If MenuVar="CANCELAR" or MenuVar="Esc"
                 Then Loop
              EndIf
    
              RetVal=MenuVar
      EndIf

      Switch
      Case RetVal="F1":
           If Field()="Codigo"
              Then CONSULTAF1()               
           EndIf
      Case RetVal="F6": 
           Del
           CHAVEI=9
           IMPRIMIR()
           QuitLoop
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             PAGINA("GPessoaI","MR")
             If EDITAR="S"
                Then CHAVEI=0
                     CODIGO=[Codigo]
                     ;Controla_EdicaoI()
                Else If EXCLUIR="S"
                        Then CONFIRMA()
                             If OK="S"
                                Then DEL
                                Else UnLockRecord
                             EndIf
                        Else Moveto [Codigo]
                             End Down
                             QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
      Case Retval="ESC":
           If QuerDesfazer("")
              Then If RecordStatus("Modified")
                      Then Undo
                      Else Del
                   EndIf
                   CHAVEI=9
                   Digitar=False
                   Continuar=False
                   
                   If RecordStatus("New")=True
                      Then If CHAVE=1
                              Then EXCLUSAO("Cabeca")
                           EndIf
                   EndIf
                   QuitLoop
           EndIf
      Case Retval="PGDN":
           Del
           If RecordStatus("New")=True
              Then Mensagem("Ser  preciso inserir um v¡nculo para finalizar o grupo!")
                   QuitLoop
           EndIf
           CHAVEI=9
           Continuar=False
           Digitar  =False
           QuitLoop
      Case Retval="ENTER":
           If IsBlank([]) Then Loop EndIf
           CODIGO=AlinhM([],4)
           GetRecord "\\Sistemas\\Cadastro\\Destinat" CODIGO To REG_CLI
           If Not RetVal
              Then Mensagem("Pessoa n„o locaizada!")
                   Loop
              Else NOME_CLI = REG_CLI["Nome Fantasia EmitDest"]     
           EndIf
           Del
           
           ;---- Verifica a existˆncia do cliente em outro grupo ---------------
           MSG = ""
           Do_it!
           ClearAll
           View "GpessoaI"
           Moveto [Codigo]
           Locate CODIGO
           If RetVal
              Then If GPESSOA_CODIGO<>[CodigoGrupoPessoa]
                      Then GetRecord "GpessoaC" [CodigoGrupoPessoa] To REG_GPESSOAC
                           If RetVal
                              Then DESCRICAO = REG_GPESSOAC["DescricaoGrupoPessoa"]
                              Else DESCRICAO = "GRUPO NAO LOCALIZADO"
                           EndIf   
                           MSG =       Completa("Cliente "+CODIGO+" "+NOME_CLI,40," ")+"////"
                           MSG = MSG + Completa("J  incluso no grupo "+REG_GPESSOAC["CodigoGrupoPessoa"]+" "+DESCRICAO,40," ")
                           Release Vars DESCRICAO
                   EndIf
           EndIf
           CoEdit NoWindow "GpessoaC"
           PickForm "1"
           Moveto [CodigoGrupoPessoa] 
           Locate GPESSOA_CODIGO
           Moveto "GpessoaI"
           Moveto [Codigo]
           If MSG<>""
              Then Mensagem(MSG)
                   CHAVEI = 9
                   QuitLoop
           EndIf
           ;--------------------------------------------------------------------
           Locate CODIGO
           If RetVal
              Then CHAVEI = 0
                   Mensagem("Cliente "+CODIGO+" "+NOME_CLI+" j  est  incluso neste grupo!")
              Else CHAVEI = 1
                   End Down
                   [Codigo                ] = CODIGO
                   [Nome Fantasia EmitDest] = NOME_CLI
           EndIf
           If IsLockRecord()
              Then End Down
                   Moveto [Codigo]
                   Loop
           EndIf
           QuitLoop
      EndSwitch
EndWhile

EndProc ; CHAVEI()

;*******************************************************************************
;* Cabe‡alho                                                                   *
;*******************************************************************************
Proc Cabecalho()

Print File ARQIMP CI_10CPP
Print File ARQIMP "\n\n\n"
Print File ARQIMP Spaces(2)+Fill("-",78) + "\n"
Print File ARQIMP Spaces(2)+Format("W78,AC","RELACAO DE VINCULOS")+ "\n"        
Print File ARQIMP Spaces(2)+Fill("-",78)+ "\n"
Print File ARQIMP "\n"
Print File ARQIMP Spaces(2)+"Pessoa"+ "\n"
Print File ARQIMP Spaces(2)+"-------------------------------------------------------"+ "\n"

NLINHA = 9

EndProc ;Cabecalho()

;*******************************************************************************
;* Impressao                                                                   *
;*******************************************************************************
Proc IMPRIMIR()

If RecordStatus("New")=True
   Then Return 
EndIf   

Dispositivo()
If OK="" 
   Then Return 
EndIf
          
ARQIMP = PrivDir()+"GPESSOA.TXT"
If IsFile(ARQIMP)
   Then Deleta_Arquivo(ARQIMP)
EndIf

GRUPO="***"
Cabecalho()        
Home     
Scan
  If GRUPO <> [CodigoGrupoPessoa] 
     Then NLINHA = NLINHA + 2
          Print File ARQIMP Spaces(2)+CI_INEG+"GRUPO: "+[CodigoGrupoPessoa]+" "+[GPessoaC->DescricaoGrupoPessoa]+CI_FNEG + "\n"   
          GRUPO = [CodigoGrupoPessoa]    
  EndIf 
  NLINHA = NLINHA + 1
  Print File ARQIMP Spaces(2)+Format("W5",[Codigo])+Format("W20",[Nome Fantasia EmitDest])+ "\n"
  If NLINHA >= 40
     Then Print File ARQIMP "\f"
          Cabecalho()
          Print File ARQIMP Spaces(2)+CI_INEG+"GRUPO: "+[CodigoGrupoPessoa]+" "+[GPessoaC->DescricaoGrupoPessoa]+CI_FNEG + "\n" 
  EndIf
EndScan

ImpriArq(ARQIMP)
Deleta_Arquivo(ARQIMP)

EndProc ;IMPRIMIR()

;*******************************************************************************
;* Impressao                                                                   *
;*******************************************************************************
Proc IMPRIMIR_GERAL()

If RecordStatus("New")=True
   Then Return 
EndIf   

Dispositivo()
If OK="" 
   Then Return 
EndIf
          
ARQIMP = PrivDir()+"GPESSOA.TXT"
If IsFile(ARQIMP)
   Then Deleta_Arquivo(ARQIMP)
EndIf

Do_it!
ClearAll

Cabecalho()

GRUPO = "***"
View "GpessoaI"
View "GpessoaC"
Scan  
  If GRUPO <> [CodigoGrupoPessoa] 
     Then If GRUPO = "***"
             Then NLINHA = NLINHA + 2
                  Print File ARQIMP Spaces(2)+CI_INEG+"GRUPO: "+[CodigoGrupoPessoa]+" "+[DescricaoGrupoPessoa]+CI_FNEG + "\n"  
             Else NLINHA = NLINHA + 2
                  Print File ARQIMP "\n"
                  Print File ARQIMP Spaces(2)+CI_INEG+"GRUPO: "+[CodigoGrupoPessoa]+" "+[DescricaoGrupoPessoa]+CI_FNEG + "\n"
          EndIf   
          GRUPO = [CodigoGrupoPessoa]    
  EndIf 

   Moveto "GpessoaI"
   While [CodigoGrupoPessoa] = [GPessoac->CodigoGrupoPessoa] 
     NLINHA = NLINHA + 1
     Print File ARQIMP Spaces(2)+Format("W5",[Codigo])+Format("W20",[Nome Fantasia EmitDest])+ "\n"
     
     If NLINHA >= 40
        Then Print File ARQIMP "\f"
             Cabecalho()
             NLINHA = NLINHA + 2
             Print File ARQIMP Spaces(2)+CI_INEG+"GRUPO: "+[CodigoGrupoPessoa]+" "+[DescricaoGrupoPessoa]+CI_FNEG + "\n" 
     EndIf
     Skip
     If Eot() Then QuitLoop EndIf
   EndWhile
   Moveto "GpessoaC"
EndScan

ImpriArq(ARQIMP)
Deleta_Arquivo(ARQIMP)

Tabelas()

EndProc ;IMPRIMIR_GERAL()

;*******************************************************************************
;* Exclusao                                                                    *
;*******************************************************************************
Proc EXCLUSAO(TIPO)
Private TIPO

Switch
Case TIPO="Cabeca":
     Aguarde("Excluindo")
     Moveto "GPessoaI"
     While RecordStatus("New")=False
        Del
     EndWhile

     Moveto "GPessoaC"
     UnLockRecord
     PickForm "F"
     Moveto [CodigoGrupoPessoa]
     Locate GPESSOA_CODIGO

     Del
     LimpAguarde()
Case TIPO="Item":
     Del
EndSwitch

EndProc ;EXCLUSAO()

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
Digitar=True

While Digitar
  DIGITA()
  If CHAVE=9
     Then QuitLoop
  EndIf
  SetaCorRegistro("Padrao")
  Continuar=True
  While Continuar
    Moveto "GPessoaI"
    While True
      CHAVEI()
      If CHAVEI=9 Then QuitLoop EndIf
      ;Controla_EdicaoI()
    EndWhile
  EndWhile
  Moveto "GPessoaC"
EndWhile
If RecordStatus("Locked") Then UnLockRecord EndIf
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf
EndProc

;*******************************************************************************
;* Rotina para abrir Tabela                                                    *
;*******************************************************************************
Proc Tabelas()

Do_It!
ClearAll

CoEdit NoWindow "GPessoaC"
PickForm "F"

OPCAO_FORM="F"
TABELA=""
CABECA=""
CHAVE =""
CodTab=""

EndProc ;Tabelas()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
SYS_VALOR()

Tabelas()

SAIR=False
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
