;** LPREPESQ *******************************************************************
;*  Pesquisa - Lista de Presentes                                              *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 17/05/2019 por Bruno Carvalho
;Ultima Alteracao:   /  /     por
;Motivo Alteracao: 

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

CHAVEC=0
While True
  Moveto "LPreCons"
  Moveto [Numero do Lancamento]
  
  SetaCorRegistro("Editar")
  While True
  MSGCAMPO=""
  AguardaTeclasPadrao()
  
  If Field()="Numero do Lancamento" Or
     Field()="Codigo" 
     Then TECLA = " Esc=Retornar  F1=Tabela  "
     Else TECLA = " Esc=Retornar             "
  EndIf
  
  Switch
    Case Field()="Numero do Lancamento"    : MSGCAMPO = "Numero da Lista de Presente"
    Case Field()="Codigo"                  : MSGCAMPO = "C¢digo do Cliente"
    Case Field()="Flag_1"                  : MSGCAMPO = "Op‡äes: (S)Sem Compras  (T)Todos"
  EndSwitch  
  
  Switch
   Case RetVal="F1":
         If Field()="Codigo" Or
            Field()="Numero do Lancamento"
          Then CONSULTAF1()
       EndIf  
   Case Retval="ESC":
        Switch
         Case Field()="Numero do Lancamento"    : CHAVEC=9
                                                  Del
                                                  Return
         Case Field()="Codigo"                  : Moveto [Numero do Lancamento]
         Case Field()="Flag_1"                  : Moveto [Numero do Lancamento]
        EndSwitch
   Case Retval="ENTER" : 
        Switch
         Case Field()="Numero do Lancamento"    :
              If IsBlank([]) 
                 Then Moveto [Codigo]
                 Else Moveto [Flag_1]
              EndIf
         Case Field()="Codigo"    :
              If Not IsBlank([]) 
                 Then Moveto [Flag_1]
              EndIf  
         Case Field()="Flag_1"    : 
              If IsBlank([Flag_1])
                 Then [Flag_1]="S"
              EnDIf
              If Buscar_Lista_Presente()
                 Then CHAVEC=3
                      Return
                 Else Moveto "LPreCons"
                      Moveto [Flag_1]     
              EndIf          
        EndSwitch      
    EndSwitch
  EndWhile
EndWhile

EndProc ;CHAVE()

;*******************************************************************************
;* Rotina para Localizar Registro Item - LPresenI                              *
;*******************************************************************************
Proc CHAVEI()

Moveto "LPreCons"
SetaCorRegistro("Padrao")
 
MSGCAMPO=""

While True
  Moveto "LPreConI"
  
  Moveto "LPreConI"
  Moveto [Sequencia]
  End
  ITEM = [Sequencia]
  If IsBlank(ITEM)
     Then Down
     Else Down Down
  EndIf   
  Moveto [Sequencia]
  Seta_Sequencia(ITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf
                 
  Opcao_Ver=False
  SetaCorRegistro("Editar")
  While true
        Moveto "LPreConI"
        Moveto [Sequencia]

        Prompt " Esc=Retornar  F7=Paginar  Alt+F=Fun‡äes  "
                     
        Wait Field
             Until "ESC","PGDN","ENTER","F3","F4","F7","HOME","UP","PGUP","F2","F6","F5","F8","F9","F10","F11",-68,-133,-33,-115,-116

        If RetVal=-33
           Then Echo Normal
                Echo Off
                ShowPopup " Fun‡”es " CENTERED
                 "[F6]  ~I~mprimir            " : "ImpressÆo da Lista de Itens        " : "F6",
                 Separator,
                 "~C~ancelar" : " Cancelar a Opera‡„o                                 " : "CANCELAR"
                EndMenu
                To MenuVar
                Echo Off
      
                If MenuVar="CANCELAR" or MenuVar="Esc"
                   Then Loop
                EndIf
                
                If MenuVar=""
                   Then QuitLoop
                   Else RetVal=MenuVar
                EndIf
        EndIf

        Switch
        Case RetVal="F6":
             DispositivoI("FAT")
             If OK<>""
                Then Del
                     Do_it!
                     IMPRIREL("LPRECONI","R")
                     Moveto "LPRECONS" 
                     CoeditKey
                     CHAVEI=3
                     Return
             EndIf                      
        Case RetVal="PGDN":    
             Del
             If RecordStatus("New")=True 
                Then MENSAGEM("O lan‡amento deve ter pelo menos 1(um) item!")
                Else FACA_CHAVE=False
                     CHAVEC=9
                     CHAVEI=9
                     Return
             EndIf
        Case Retval="ESC": 
             Del
             If ConfGeral("Deseja sair desta rotina ?")
                Then FACA_CHAVE=False   
                     CHAVEC=9
                     CHAVEI=9
                Else QuitLoop        
             EndIf
             Return
        Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
             Del
             While True
               PAGINA("LPreConI","MR")
               ITEM = [Sequencia]
               Switch                                    
                 Case EDITAR="S"  : ImageRights ReadOnly
                                    SetaCorRegistro("Paginar")
                                    FastMsg("Lan‡amento "+[LPresenC->Status]+", edi‡Æo nÆo permitida!")
                 Case EXCLUIR="S" : ImageRights ReadOnly
                                    SetaCorRegistro("Paginar")
                                    FastMsg("Lan‡amento "+[LPresenC->Status]+", exclusÆo nÆo permitida!")       
                 OtherWise        : QuitLoop
               EndSwitch
               SetaPosForm()
             EndWhile
             QuitLoop
        Case Retval="ENTER": 
             FastMsg("NÆo ‚ poss¡vel inclusÆo/altera‡Æo do item!")
             Loop
        EndSwitch
  EndWhile
EndWhile      

EndProc ;CHAVEI()   

;*******************************************************************************
;* Rotina para buscar os itens da lista de presente                            *
;*******************************************************************************
Proc Buscar_Lista_Presente()

If [Numero do Lancamento]=""
   Then ACHOU_LISTA = ""
        PESSOA = [Codigo]
        Moveto [Numero do Lancamento]
        Ativa_Lookup()
        Moveto [Codigo]
        Locate PESSOA 
        If RetVal
           Then While [Codigo]=PESSOA
                  If [Status]<>"CANCELADO" And [Status]<>"FINALIZADO"
                     Then If ACHOU_LISTA = ""
                             Then ACHOU_LISTA = [Numero do Lancamento]
                             Else ACHOU_LISTA = ", " + [Numero do Lancamento]
                          EndIf
                  EndIf              
                  Skip
                  If Eot() Then QuitLoop EndIf
                EndWhile
        EndIf
        KeyPress "ESC" 
        If Search(",",ACHOU_LISTA)>0
           Then Mensagem("Cliente "+PESSOA+" foi localizado em mais de uma lista "+ACHOU_LISTA+"!")
                Moveto [Codigo]
                Return False 
        EndIf
        [Numero do Lancamento] = ACHOU_LISTA 
EndIf        

NLANC = [Numero do Lancamento]
;---- Utilizado no REPORT ------------------------------------------------------
GetRecord "LPresenC" NLANC To REG_LPRESEN
If RetVal
   Then If REG_LPRESEN["Codigo"]<>""
           Then LPRECONS_CLIENTE = Rtrim(REG_LPRESEN["Nome Fantasia EmitDest"]) + "-" + REG_LPRESEN["Codigo"]
           Else LPRECONS_CLIENTE = REG_LPRESEN["Nome Fantasia EmitDest"]
        EndIf
        LPRECONS_DATA_EVENTO = Format("D13",REG_LPRESEN["Data_Evento"])
        LPRECONS_VENDEDOR    = REG_LPRESEN["Codigo do Representante"]+" "+REG_LPRESEN["Nome Fantasia Represent"]
        LPRECONS_TIPO        = REG_LPRESEN["Tipo_Lista"]
        LPRECONS_STATUS      = REG_LPRESEN["Status"]
        DATA                 = Format("D13",REG_LPRESEN["Data"]) 
EndIf

OPCOES = [LPRECONS->Flag_1]

CONT = 0
Moveto "LPresenI"
Scan For [Numero do Lancamento]=NLANC
  If OPCOES="S"
     Then If [Quantidade] - ([Quantidade_Compra]-[Quantidade_Devolvida]) <=0
             Then Loop
          EndIf     
  EndIf
  CONT = CONT + 1
  CopyToArray REG_LPRECONI
  Moveto "LPreConI"
  End Down
  REG_LPRECONI["Quantidade_Conferida"]=Blanknum()
  CopyFromArray REG_LPRECONI
  UnLockRecord
  
  Moveto "LPresenI"
EndScan

Moveto "LPreConI"

If CONT=0
   Then MSG =       Completa("N„o foi localizado a lista de presente para o cliente: ",60," ")+"////"
        MSG = MSG + Completa("-> "+[LPreCons->Codigo]+" "+[LPreCons->Nome Fantasia EmitDest],60," ")
        Mensagem(MSG)
        Return False
EndIF   

Return True

EndProc ;Buscar_Lista_Presente()

;*******************************************************************************
;* Rotina para abrir tabelas de trabalho                                       *
;*******************************************************************************
Proc Abre_Tabelas()

Empty "LPreCons"
Empty "LPreConI"

View NoWindow "LPresenC"
View NoWindow "LPresenI"
View NoWindow "LPreConI"      SetaCorRegistro("Padrao")
CoEdit NoWindow "LPreCons"

EndProc ;Abre_Tabelas()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
SYS_VALOR()
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA  =""  EndIf

Abre_Tabelas()

FACA_CHAVE =True
FACA_CHAVEI=True

PickForm "F"
OPCAO_FORM="F"
AUX=""
While FACA_CHAVE
  CHAVE()
  If CHAVEC=9 Then QuitLoop EndIf
  While FACA_CHAVEI 
    CHAVEI()
    If CHAVEI=9  Then QuitLoop  EndIf
  EndWhile  
EndWhile
Do_It!
ClearAll

Empty "LPreCons"
Empty "LPreConI"

Release Vars All
Release Procs All
