;** VEN_REGR *******************************************************************
;*  Regra da Referˆncia                                                        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/02/2021 por Bruno Carvalho
;Ultima Alteracao: 04/03/2021 por Aivel Augusto Rodrigues      
;Motivo Alteracao: Ajustes nÆo informar referencia s¢ cor
;Ultima Alteracao: 06/03/2021 por Aivel Augusto Rodrigues      
;Motivo Alteracao: Ajustes meses entraga - regra          

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
   End
   Down 
   Moveto [CODIGO_DA_REGRA]
   If OPCAO_FORM="F"
     Then Down
     Else PgDn
   EndIf
   Moveto [CODIGO_DA_REGRA]

   SetaCorRegistro("Editar")
   While True

   TECLA=""
   AguardaTeclasPadrao()
   
   If RetVal=-33
      Then Echo Normal
           Echo Off
           ShowPopup " Fun‡”es " CENTERED
              "F6 ~I~mprimir        " : " Imprimir etiquetas              " : "F6",
              Separator,
              "~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="F3":
           If OPCAO_FORM="F"
              Then OPCAO_FORM="1"
              Else OPCAO_FORM="F"
           EndIf
           Del
           CHAVE=5
           Return
      
      Case RetVal="F6":
           Del
           If ConfGeral("Deseja imprimir a rela‡Æo da(s) regra(s)?")
              Then Imprimir("Geral")
           EndIf
           QuitLoop
      Case RetVal=-94 : MsgTeclasPadrao()
      Case (RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME"):
           While True
             If OPCAO_FORM="F"
                Then PAGINA("Ven_RegC","MR")
                Else PAGINA("Ven_RegC","MT")
             EndIf
             CODIGO=[CODIGO_DA_REGRA]
             If EDITAR="S"
                Then CHAVE=0
                     PickForm "1"
                     Controla_EdicaoC()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("desta regra")
                                Then PickForm "1"
                                     EXCLUSAO("Cabeca")
                                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 Loop EndIf 
           CODIGO=[]
           Del
           PickForm "1"
           Locate CODIGO
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End Pgdn
                   Moveto [CODIGO_DA_REGRA]
                   []=CODIGO
           EndIf
           If IsLockRecord()
              Then If OPCAO_FORM="F"
                      Then PickForm "F"
                           QuitLoop
                   EndIf
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile

EndProc  ;(Chave)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()

Moveto "Ven_RegD"
SetaCorRegistro("Padrao")

Moveto "Ven_RegC"
Moveto [DESCRICAO_DA_REGRA]
While True
      TECLA=" Esc=Retornar  "

      If CHAVE=0
         Then TECLA=TECLA+"Del=Excluir  "
      EndIf
      MSGCAMPO=Field()
      
      Switch
        Case Field()="CODIGO_DA_REGRA"       : MSGCAMPO="C¢digo da Regra"
        Case Field()="DESCRICAO_DA_REGRA"    : MSGCAMPO="Descri‡Æo da Regra"
        Case Field()="INATIVO"               : MSGCAMPO="Inativo? Sim/NÆo"
        Case Field()="OBSERVACAO_DA_REGRA"   : MSGCAMPO="Observa‡Æo da Regra"
        Case SUBSTR(Field(),1,3)="MES"       : MSGCAMPO=MSGCAMPO+", X=SELECIONAR"
      EndSwitch 
      
      Prompt TECLA
      SetaCorRegistro("Editando")
      Wait Field
        Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"

      Switch                        
      Case Retval="ESC":
           Switch
             Case Field()="DESCRICAO_DA_REGRA":
                  If QuerDesfazer("")
                     Then If CHAVE=1
                             Then DEL
                             Else Undo
                          Endif
                          CHAVE=9
                          QuitLoop
                  Endif
             OtherWise: Left     
           EndSwitch
      Case Retval="ENTER":
           Switch
             Case Field()="DESCRICAO_DA_REGRA" :             
                  If Not IsBlank([DESCRICAO_DA_REGRA])
                     Then Moveto [INATIVO]
                  EndIf   
             Case Field()="INATIVO"  : 
                  If IsBlank([]) Then []="N" EndIf
                  Moveto [OBSERVACAO_DA_REGRA]
             Case Field()="OBSERVACAO_DA_REGRA" :       
                  Moveto [MES1]
             Case Field()="MES12":       
                  QuitLoop
             otherwise            : Right
           EndSwitch
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVE=0
              Then If QuerExcluir("desta regra")
                      Then EXCLUSAO("Cabeca")
                           CHAVE=9
                           QuitLoop
                   EndIf
           EndIf
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Localizar Ordem                                                 *
;*******************************************************************************
Proc ChaveI()
While True
  Moveto [CODIGO_DA_COR_TECIDO]
  End
  Down

  SetaCorRegistro("Editar")
  While True

    TECLA= " Esc=Retornar                                                     PgDn=Finalizar  "

    MSGCAMPO=Field()
    If Field()="CODIGO_DA_COR_TECIDO"
       Then MSGCAMPO="C¢digo da Cor/Tecido"+", [F1]Consultar tabela"
    EndIf

    Prompt TECLA

    Wait Field
         Until "ESC","ENTER","F7","HOME","PGDN","UP","F1"

    Switch
    Case RetVal="F1":
         If Field()="CODIGO_DA_COR_TECIDO"
            Then CONSULTAF1()
         EndIf
    Case RetVal="ESC":
         Del
         CHAVEI=9
         Return
    Case RetVal="PGDN":
         Del
         CHAVEI=8
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("Ven_RegD","MR")
           NITEM=[CODIGO_DA_COR_TECIDO]
           If EDITAR="S"
              Then fastmsg("Edi‡Æo nÆo permitida !")
              Else If EXCLUIR="S"
                      Then CONFIRMA()
                           If OK="S"
                              Then Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":
         If isBlank([CODIGO_DA_COR_TECIDO])
            Then loop
         EndIf
         NITEM=[CODIGO_DA_COR_TECIDO]
         Del
         Locate NITEM
         If Retval
            Then fastmsg("Cor "+NITEM+" j  existe !")
                 quitloop
            Else 
                 GetRecord "\\Sistemas\\Estoque\\Cores" NITEM To REG_COR
                 If Retval
                    Then 
                         CHAVEI=1
                         End
                         Down
                         [CODIGO_DA_COR_TECIDO   ]=NITEM
                         [DESCRICAO_DA_COR_TECIDO]=REG_COR["Descricao da Cor_Tecido"]
                         UnLockRecord
                         quitloop
                    Else 
                         CHAVEI=0
                         fastmsg("Cor "+NITEM+" nÆo cadastrada !")
                         quitloop
                 EndIf   
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile
EndProc   ; (ChaveI)

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

Switch
Case TIPO="Cabeca":
     Grava_LogEx("Ven_RegC")

     Moveto "Ven_RegD"
     While RecordStatus("New")=False
       Del
     EndWhile
     Moveto "Ven_RegC"
     Del
EndSwitch

EndProc  ; (Exclusao)

;*******************************************************************************
;* Rotina Impressao                                                            *
;*******************************************************************************
Proc Imprimir(PARAM)

Dispositivo()
If OK=""
   Then Return False 
EndIf
Do_It!

AGUARDE("Aguarde, gerando relat¢rio")
If PARAM="Geral"
  Then 
       IMPRIREL("Ven_RegD","R")
       Moveto "Ven_RegC"
       CoeDitKey
  Else 
       {Ask} {Ven_RegD} Check Janela_Ven_RegD=GetWindow()
       Moveto [CODIGO_DA_REGRA] TypeIn "~CODIGO"
       Do_it!
       ClearImage
       Moveto "Ven_RegD"
       ClearImage
       
       CopyReport "Ven_RegD" "R" "Answer" "R"
       IMPRIREL("Answer","R")
       Delete "Answer" 
       
       Moveto "Ven_RegC"
       CoeDitKey
       FormKey
       Moveto "Ven_RegD"
EndIf  

EndProc  ;Imprimir()

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
SetaCorRegistro("Padrao")
While CHAVE<>9
  Moveto "Ven_RegD"
  
  CHAVEI()
  If CHAVEI=9 Or
     CHAVEI=8
     Then QuitLoop
  EndIf
EndWhile
Moveto "Ven_RegC"
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
   Else PickForm "1"
EndIf
EndProc

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

View NOWINDOW "\\Sistemas\\Estoque\\Cores"

CoEdit "Ven_RegC"
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
