;** ALT_ITEM *******************************************************************
;*  Sistema de Pontua‡Æo de Cliente                                            *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 13/08/2019 por Bruno Carvalho
;Ultima Alteracao: 17/09/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Controla_EdicaoI()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc CHAVEC()                                

FACA_CHAVEC=True
INICIO_PAGINA=True

While True
  Moveto [Numero do Lancamento]
  End                          
  NLANC=[Numero do Lancamento]
  Moveto [Numero do Lancamento]
  
  If OPCAO_FORM="F"
     Then Down          
     Else CtrlPgDn
  EndIf
  Moveto [Numero do Lancamento]

  SetaCorRegistro("Editar")
  While True

  MSGCAMPO=""
  TECLA=""
  AguardaTeclasPadrao()

  Switch
    Case RetVal=-94 : MsgTeclasPadrao()
    Case RetVal="F3":
         If OPCAO_FORM="F"
            Then OPCAO_FORM="1"
            Else OPCAO_FORM="F"
         EndIf
         Del                     
         CHAVEC=5
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           FACA_CHAVEC=True
           INICIO_PAGINA=True
           If OPCAO_FORM="F"
              Then PAGINA("AltItemC","MR")
              Else PAGINA("AltItemC","MT")
           EndIf
           NLANC=[Numero do Lancamento]
           Switch
             Case EDITAR="S":
                  PickForm "1"
                  Echo Normal
                  Echo Off
                  CHAVEC=0
                  Controla_EdicaoC()
             Case EXCLUIR="S" :
                  If Checa_Supervisor()
                     Then If QuerExcluir("")
                             Then PickForm "1"
                                  CHAVEC=9
                                  EXCLUSAO()
                                  Moveto "AltItemC"
                                  PickForm "F"
                                  QuitLoop
                          EndIf         
                  EndIf    
                  UnLockRecord
             OtherWise: QuitLoop
           EndSwitch
           If OPCAO_FORM="1"
              Then PickForm "1"
              Else PickForm "F"
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         CHAVEC=9
         Del
         Return
    Case Retval="ENTER" : 
         If Numero_Lancamento("","F")
            Then NLANC = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC   
            Else QuitLoop
         EndIf
         PickForm "1"
         Moveto [Numero do Lancamento]
         If PROXIMO_LANCTO_REG_ACHOU
            Then CHAVEC=0
                 Echo Normal
                 Echo Off
                 If Checa_Controle([Numero_Controle_Dia])
                    Then Return
                 EndIf
            Else CHAVEC=1
                 [Codigo da Empresa ]=SYS_EMPRESA_DEFAULT
                 [Status            ]="ABERTO"
                 If Checa_Controle(SYS_CONTROLE_DIA)
                    Then Return  
                    Else OPCAO_FORM="F"
                 EndIf
         EndIf
         If CHAVEC=1
            Then Del
         EndIf
         If OPCAO_FORM="F"
            Then PickForm "F"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile

EndProc  ;ChaveC()

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DigitaC()  
                         
Moveto "AltItemC"
SetaCorRegistro("Editar")

If INICIO_PAGINA
   Then If Not IsBlank(SYS_EMPRESA_DEFAULT) And CHAVEC=1
           Then [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
        EndIf   
EndIf

If CHAVEC=1
   Then Moveto [Codigo da Empresa]
        If INICIO_PAGINA And [Codigo da Empresa]<>""
           Then Moveto [Data da Ocorrencia] 
        EndIf
   Else Moveto "AltItemI"
        SetaCorRegistro("Padrao")
        Moveto "AltItemC"
        Moveto[Flag]
        SetaCorRegistro("Padrao")
        ;FACA_CHAVEI = True
        ;Return
EndIf

While True
  TECLA=" Esc=Retornar  F5=Observa‡Æo  "

  If Field()="Codigo da Empresa"  
     Then TECLA=TECLA + "F1=Tabelas  "
     Else TECLA=TECLA + "            "
  EndIf
   
  If CHAVEC=0                         
     Then TECLA=TECLA + "Del=Excluir  "
     Else TECLA=TECLA + "             "
  EndIf
  
  Switch
    Case Field()="Data da Ocorrencia"     : MSGCAMPO = "Data da ocorrˆncia de altera‡Æo dos itens"
    Case Field()="Data Inicio Utilizacao" : MSGCAMPO = "Data In¡cio de Utiliza‡Æo padrÆo para os itens"
    Case Field()="Data Final Utilizacao"  : MSGCAMPO = "Data Final de Utiliza‡Æo padrÆo para os itens"   
    Case Field()="Flag"                   : MSGCAMPO="ENTER=Prosseguir" 
    OtherWise                             : MSGCAMPO=Field()
  EndSwitch     
    
  Prompt TECLA
  Wait Field
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F5","F7","F8","F9",-33,-59,-63

  Switch
  Case RetVal="F1" Or RetVal=-59 :
       Switch
         Case Field()="Codigo da Empresa" :  CONSULTAF1()
       Endswitch       
  Case RetVal="F5" Or RetVal=-63 : OBSERVACAO()     
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If Checa_Supervisor()
                  Then If QuerExcluir("")
                          Then EXCLUSAO()
                               CHAVEC=9
                               QuitLoop
                       EndIf         
               EndIf
       EndIf                                                  
  Case Retval="ESC":  
       Switch     
         Case Field()="Codigo da Empresa" : 
              If ConfGeral("Confirma desfazer as altera‡äes para este registro ?") 
                 Then If CHAVEC=1
                         Then EXCLUSAO()
                      EndIf
                      Release Vars CHAVEI
                      CHAVEC=9
                      QuitLoop        
              Endif
       Case Field()="Flag"                  : Release Vars CHAVEI
                                              CHAVEC=9
                                              QuitLoop
       Case Field()="Data da Ocorrencia"     : Moveto [Codigo da Empresa     ]                                     
       Case Field()="Data Inicio Utilizacao" : Moveto [Data da Ocorrencia    ]              
       Case Field()="Data Final Utilizacao"  : Moveto [Data Inicio Utilizacao]
       OtherWise                             : Left
       EndSwitch
  Case Retval="ENTER":
       Switch
         Case Field()="Codigo da Empresa"                 : If IsBlank([]) Then Loop EndIf
                                                            Moveto [Data da Ocorrencia]
         Case Field()="Data da Ocorrencia"                : If IsBlank([]) Then Loop EndIf
                                                            If [Data da Ocorrencia]>=Today()   
                                                               Then Mensagem("Data da Ocorrˆncia deve ser menor que a data de hoje!")
                                                               Else Moveto [Data Inicio Utilizacao]  
                                                            EndIf
         Case Field()="Data Inicio Utilizacao"            : If IsBlank([]) Then Loop EndIf
                                                            If [Data Inicio Utilizacao]>Today()
                                                               Then Mensagem("Data In¡cio de Utiliza‡Æo nÆo pode ser maior que a data de hoje!") 
                                                                    Loop  
                                                            EndIf
                                                            Moveto [Data Final Utilizacao] 
         Case Field()="Data Final Utilizacao"             : If IsBlank([]) 
                                                                Then []=Today() 
                                                            EndIf
                                                            Switch
                                                              Case [Data Inicio Utilizacao]>[Data Final Utilizacao] :
                                                                   Mensagem("Data In¡cio de Utiliza‡Æo ‚ maior que a Data Final de Utiliza‡Æo!") 
                                                                   Loop
                                                              Case [Data Final Utilizacao]>Today() :
                                                                   Mensagem("Data Final de Utiliza‡Æo nÆo pode ser maior que a data de hoje!") 
                                                                   Loop      
                                                            EndSwitch
                                                            FACA_CHAVEI = True
                                                            QuitLoop  
         Case Field()="Flag"                              : FACA_CHAVEI = True
                                                            QuitLoop 
         OtherWise                                        : Right
       EndSwitch
  EndSwitch
EndWhile

EndProc ;DigitaC()  

;*******************************************************************************
;* Rotina para Localizar Cidades                                               *
;*******************************************************************************
Proc CHAVEI()
                  
Moveto "AltItemC"
SetaCorRegistro("Padrao")

Moveto "AltItemI"
While True
  End
  NITEM = [Sequencia]
  Down Down
  Moveto [Sequencia]
  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf
  SetaCorRegistro("Editar")
  While True  
    TECLA= " Esc=Retornar  PgDn=Finalizar  "
    
    If Field()="Sequencia" Then MSGCAMPO="Sequˆncia do Lan‡amento" EndIf
    
    Prompt TECLA
    Wait Field
         Until "ESC","ENTER","F2","ZOOM","ZOOMNEXT","DOWN","UP","RIGHT","LEFT","HOME","END","PGDN","PGUP","ROTATE",-31,-33,"F4",-62
              
    Switch                                 
    Case Retval="PGDN":    
         Del        
         ;If RecordStatus("New")
         ;   Then QuitLoop
         ;EndIf   
         FACA_CHAVEC=False
         FACA_CHAVEI=False
         CHAVEI=9
         Return 
    Case RetVal="ESC" :
         Switch
           Case Field()="Sequencia"   : Del
                                        If CHAVEC=0 And RecordStatus("New")
                                           Then Mensagem("NÆo h  itens informado nesta rela‡Æo!")
                                                QuitLoop
                                        EndIf 
                                        If CHAVEC=1 And RecordStatus("New")
                                           Then Moveto "AltItemC"
                                                FACA_CHAVEI = False
                                                CHAVEI=9
                                                Return 
                                        EndIf
                                        ConfGeral("Confirma desfazer as altera‡äes para este registro ?")
                                        If Ok<>"S"
                                           Then QuitLoop
                                        EndIf
                                        FACA_CHAVEC = False
                                        FACA_CHAVEI = False
                                        CHAVEI=9
                                        Return
         Endswitch
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":   
         Del
         While True
           PAGINA("AltItemI","MR")   
           Switch
             Case EDITAR="S"  :
                  ;unlockrecord
                  ;fastmsg("Altera‡Æo nÆo permitida !")
                  CHAVEI=0
                  Controla_EdicaoI()
             Case EXCLUIR="S" :
                  If ConfGeral("Confirma excluir este registro ?")
                     Then Grava_LogEx("AltItemI")
                          Del
                          CHAVEI=9
                          QuitLoop
                  EndIf
                  UnLockRecord
             OtherWise : QuitLoop
           EndSwitch
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":
         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf
         SEQIT=[]
         Del
         Locate NLANC,SEQIT
         If Retval
            Then CHAVEI=0
                 SEQIT=[]
            Else CHAVEI=1
                 End
                 Down Down
                 [Numero do Lancamento]=NLANC
                 [Sequencia           ]=SEQIT
                 UnLockRecord
                 Locate NLANC,SEQIT
         EndIf
         Return         
    EndSwitch
  EndWhile
EndWhile

EndProc ;ChaveI()

;*******************************************************************************
;* Rotina para Digitacao das Cidades                                           *
;*******************************************************************************
Proc DIGITAI()

Moveto [Codigo Item Atual]
While True
  TECLA=" Esc=Retornar  "
  
  If Field()="Codigo Item Atual"   Or Field()="Codigo Item Anterior"
     Then TECLA=TECLA + "F1=Tabelas  "
     Else TECLA=TECLA + "            "
  EndIf
  
  Switch
    Case Field()="Codigo Item Atual"       : MSGCAMPO="Codigo do Item ATUAL"
    Case Field()="Descricao Item Atual"    : MSGCAMPO="Descri‡Æo do Item ATUAL"
    Case Field()="Codigo Item Anterior"    : MSGCAMPO="Codigo do Item ANTERIOR"
    Case Field()="Descricao Item Anterior" : MSGCAMPO="Descri‡Æo do Item ANTERIOR"
    Case Field()="Data Inicio Utilizacao"  : MSGCAMPO="Data In¡cio de Utiliza‡Æo do item"
    Case Field()="Data Final Utilizacao"   : MSGCAMPO="Data Final de Utiliza‡Æo do item"
    OtherWise                              : MSGCAMPO=Field()
  EndSwitch         
    
  Prompt TECLA
  Wait Field
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F4","F7","F8","F9",-33
  
  Switch  
    Case RetVal="F1" Or RetVal=-59 : 
         Switch
           Case Field()="Codigo Item Atual"      Or
                Field()="Codigo Item Anterior"    :
                If CONSULTAF1()
                   Then Switch
                          Case Field()="Codigo Item Atual"    : If GetRecord_Item([Codigo Item Atual])
                                                                   Then [Descricao Item Atual   ] = REG_ITEM["Descricao do Item"]
                                                                EndIf        
                          Case Field()="Codigo Item Anterior" : If GetRecord_Item([Codigo Item Anterior])
                                                                   Then [Descricao Item Anterior] = REG_ITEM["Descricao do Item"]
                                                                EndIf   
                        EndSwitch
                        Release Vars REG_ITEM
                EndIf
       EndSwitch                      
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()       
  Case Retval="ESC":  
       Switch          
         Case Field()="Codigo Item Atual"       : If CHAVEI=1 Then Del EndIf
                                                  QuitLoop
         Case Field()="Codigo Item Anterior"    : Moveto [Codigo Item Atual      ]
         Case Field()="Descricao Item Anterior" : Moveto [Codigo Item Anterior   ]
         Case Field()="Data Inicio Utilizacao"  : If IsBlank([Codigo Item Anterior])
                                                     Then Moveto [Descricao Item Anterior]
                                                     Else Moveto [Codigo Item Anterior   ]
                                                  EndIf
         Case Field()="Data Final Utilizacao"   : Moveto [Data Inicio Utilizacao]
       EndSwitch  
  Case Retval="ENTER":  
       Switch          
         Case Field()="Codigo Item Atual"       : If IsBlank([]) Then Loop EndIf
                                                  Moveto [Codigo Item Anterior]
         Case Field()="Codigo Item Anterior"    : If IsBlank([Codigo Item Anterior])
                                                     Then Moveto [Descricao Item Anterior]
                                                     Else If [Codigo Item Anterior]=[Codigo Item Atual]
                                                             Then Mensagem("O c¢digo do item ANTERIOR ‚ igual ao informado no codigo do item ATUAL!") 
                                                             Else Moveto [Data Inicio Utilizacao]
                                                          EndIf 
                                                  EndIf    
         Case Field()="Descricao Item Anterior" : If IsBlank([Descricao Item Anterior]) 
                                                     Then Mensagem("Informe a descri‡Æo do item ANTERIOR para prosseguir!")
                                                     Else Moveto [Data Inicio Utilizacao]  
                                                  EndIf
         Case Field()="Data Inicio Utilizacao"  : If IsBlank([]) 
                                                     Then []=[AltItemC->Data Inicio Utilizacao] 
                                                  EndIf
                                                  Switch
                                                    Case [Data Inicio Utilizacao]<[AltItemC->Data Inicio Utilizacao] : 
                                                         Mensagem("Data In¡cio de Utiliza‡Æo do item ‚ menor que a Data In¡cio de Utiliza‡Æo do lan‡amento!")
                                                         Loop
                                                    Case [Data Inicio Utilizacao]>Today() : 
                                                         Mensagem("Data In¡cio de Utiliza‡Æo nÆo pode ser maior que a data de hoje!") 
                                                         Loop       
                                                  EndSwitch
                                                  Moveto [Data Final Utilizacao]
         Case Field()="Data Final Utilizacao"   : If IsBlank([]) 
                                                     Then []=[AltItemC->Data Final Utilizacao] 
                                                  EndIf
                                                  Switch
                                                    Case [Data Inicio Utilizacao]>[Data Final Utilizacao] :
                                                         Mensagem("Data In¡cio de Utiliza‡Æo ‚ maior que a Data Final de Utiliza‡Æo!") 
                                                         Loop
                                                    Case [Data Final Utilizacao]>[AltItemC->Data Final Utilizacao] :
                                                         Mensagem("Data Final de Utiliza‡Æo do item ‚ maior que a Data Final de Utiliza‡Æo do lan‡amento!") 
                                                         Loop     
                                                    Case [Data Final Utilizacao]>Today() :
                                                         Mensagem("Data Final de Utiliza‡Æo nÆo pode ser maior que a data de hoje!") 
                                                         Loop      
                                                  EndSwitch
                                                  QuitLoop                                                    
       EndSwitch
  EndSwitch
EndWhile

EndProc ;DigitaI()

;*******************************************************************************
;* Exclusao da Cabeca                                                          *
;*******************************************************************************
Proc EXCLUSAO()

Moveto "AltItemI"
While RecordStatus("New")=False
  While IsLockRecord() EndWhile
  Del
EndWhile

Moveto "AltItemC"
UnLockRecord
KeyPress "F7"
If CHAVEC=1
   Then Grava_LogEx("AltItemC")
EnDIf   
Del

EndProc ;EXCLUSAO()

;*******************************************************************************
;* Rotina para Digitacao da Observacao do Cliente                              *
;*******************************************************************************
Proc OBSERVACAO()
Private CampAnt

CampAnt=Field()
Prompt " Esc=Cancelar  F2=Gravar "

Edita_Memo("Observacao",09,01,13,76,"Observa‡”es")

If IsBlank([Observacao])
    Then Del
    Else UnLockRecord
EndIf
Moveto Field CampAnt

EndProc    ; (Observacao)

;*******************************************************************************
;* Rotina para Localizar Cidades                                               *
;*******************************************************************************
Proc GetRecord_Item(ITEM)
Private ITEM

GetRecord "\\Sistemas\\Estoque\\Itens" ITEM To REG_ITEM
If RetVal
   Then Return True
   Else Return False     
EndIf   

EndProc ;GetRecord_Item()

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoI()

DIGITAI()
Moveto "Altitemi"
If RecordStatus("Locked") Then UnLockRecord EndIf         

EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
 
CopyToArray REG_ALTITEMC

While FACA_CHAVEC
  DIGITAC()
  If CHAVEC = 9 Then QuitLoop EndIf
  If CHAVEC = 1
     Then Controle_Dia()
  EndIf
  While FACA_CHAVEI
    While True
      CHAVEI()
      If CHAVEI=9 Then QuitLoop EndIf
      If CHAVEI=7 Then     Loop EndIf
      If CHAVEI<>8 Then DIGITAI() EndIf
    EndWhile
  EndWhile
EndWhile
Moveto "AltItemC"
If RecordStatus("Locked") Then UnLockRecord EndIf
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf

SaveTables

EndProc ;Controla_EdicaoC()

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

OPCAO_FORM = "F"

CoEdit "AltItemC"
PickForm "F"
While True
  CHAVEC()
  If CHAVEC=9
     Then QuitLoop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
