;** Rankvc *********************************************************************
;** Cadastro de Metas por Representante                                        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 07/12/2016 por Rafael Matos
;Alterado em     : 14/12/2016 por Rafael Matos
;Motivo Alteracao: InclusÆo do Campo Marca
;Ultima Alteracao: 29/04/2021 por Bruno Carvalho
;Motivo Alteracao: Ajustes no filtro ao buscar a empresa -> Monta_Opcoes("Empresas","")

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

INICIO_PAGINA=True

While True
  Finalizar=False
  Moveto [Numero da Programacao]
  End
  NLANC=[Numero da Programacao]
  Moveto [Numero da Programacao]

  If OPCAO_FORM="F"
     Then Down
     Else Pgdn 
  EndIf
  Moveto [Numero da Programacao]
  
  SetaCorRegistro("Editar")
  While True
    MSGCAMPO=""
    TECLA=""
    AguardaTeclasPadrao()
    
    Switch      
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F5": Del
                        PARAM_COPIA_PROG = "CHAVEC"                           
                        If Not Copiar_Programaca(PARAM_COPIA_PROG)
                           Then Loop
                        EndIf   
                        QuitLoop
      Case RetVal="F3":
           If OPCAO_FORM="3"
              Then OPCAO_FORM="4"
              Else OPCAO_FORM="3"
           EndIf
           Del
           CHAVEC=6
           Return      
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           Del
           While True
             INICIO_PAGINA=True
             Finalizar=False
             TAB_WORK = ""
             If OPCAO_FORM="F"
                Then PAGINA("Rankvc","MR")
                Else PAGINA("Rankvc","MT")
             EndIf
             NLANC=[Numero da Programacao]
             Switch
               Case EDITAR="S": 
                    PickForm "1"
                    Echo Normal
                    Echo Off
                    CHAVEC=0
                    Controla_EdicaoC()
                    UnLockRecord
                    If Finalizar Then QuitLoop EndIf
               Case EXCLUIR="S":
                    PickForm "1"
                    Echo Normal
                    Echo Off
                    MSG="Confirma a Exclus„o da Programa‡„o ?"
                    If ConfGeral(MSG)
                       Then EXCLUSAO_C()
                       Else UnLockRecord
                    EndIf    
               OtherWise: QuitLoop
             EndSwitch
             If OPCAO_FORM="F"
                Then PickForm "F"
                Else PickForm "1"
             EndIf       
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC": 
           CHAVEC=9
           Del                    
           Return        
      Case Retval="ENTER": 
           If IsBlank([])
              Then If NLANC = "999999"
                      Then Mensagem("Faixa de c¢digo livre excedida !////D£vidas, verifique com o suporte vise.")
                           Del
                           QuitLoop         
                   EndIf
                   If IsBlank(NLANC)
                      Then []="1"
                      Else []=StrVal(NumVal(NLANC)+1)
                   EndIf
              Else If Type(NumVal(SubStr([],1,1))) <> "N"
                      Then Mensagem("N£mero da programa‡„o inv lido !//D£vidas, verifique com o suporte vise.")
                           Del
                           QuitLoop  
                   EndIf                 
           EndIf
           NLANC_ANT = NLANC
           []=Alinh()
           NLANC=[]
           If NLANC_ANT<>"" And (NumVal(NLANC) > NumVal(NLANC_ANT)+1)
              Then Mensagem("O n£mero da programa‡„o dever  ser sequencial !")
                   Del
                   QuitLoop
           EndIf
           Release Vars NLANC_ANT      
           Del
           
           PickForm "1"
           End PgDn PgDn PgDn    
           
           Moveto "Rankvc"        
           Moveto [Numero da Programacao]
           Locate NLANC
           If Retval
              Then CHAVEC=0
              Else CHAVEC=1
                   End PgDn PgDn PgDn
                   [Numero da Programacao ]=NLANC
           EndIf
           
           If Not IsLockRecord()
              Then Echo Normal
                   Echo Off
                   If CHAVEC=1
                      Then Return
                   EndIf
           EndIf
           If CHAVEC=1
              Then Del
           EndIf
           If OPCAO_FORM="3"
              Then PickForm "3"
           EndIf
           QuitLoop
       EndSwitch
  EndWhile
EndWhile
                      
EndProc   

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DigitaC()         
TOTAL_FATURAMENTO=BlankNum()
      
Moveto "Rankvc"  

SetaCorRegistro("Editar")
Moveto [Codigo da Empresa]

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

If CHAVEC=0
   Then 
         Moveto "Rankvi"
         Moveto [Meta_Faturamento]
         TOTAL_FATURAMENTO=ImageCSum()
         
         If TOTAL_FATURAMENTO = 0
            Then TOTAL_FATURAMENTO=BlankNum()
         EndIf  
EndIf

moveto "Rankvc" 

[Total_Faturamento] = TOTAL_FATURAMENTO       

If CHAVEC=1
   Then Moveto [Codigo da Empresa]
        If INICIO_PAGINA And [Codigo da Empresa]<>""
           Then Moveto [Data Inicial]
           Else 
        EndIf     
EndIf

While True
  TECLA=" Esc=Retornar  "

  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
  
  MSGCAMPO = Field()   
  
  If Field()="Codigo da Empresa"      
     Then Monta_Opcoes("Empresas","")     
  EndIf
    
  Prompt TECLA
  Wait Field
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F4","F5","F7","F8","F9",-33

  If RetVal=-33
     Then 
  EndIf         
  
  Switch
  Case RetVal="F1":
       Switch
         Case Field()="Codigo da Marca"   :
              CONSULTAF1()
         Case Field()="Codigo da Empresa" :         
              Seleciona_Opcoes("Empresas","CR")       
       EndSwitch
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEC=0
          Then If QuerExcluir("")
                  Then EXCLUSAO_C()
                       CHAVEC=9
                       QuitLoop
               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_C()
                      EndIf
                      Release Vars CHAVEI
                      CHAVEC=9
                      QuitLoop        
              Endif       
       Case Field()="Data Inicial"    : Moveto [Codigo da Empresa]
       Case Field()="Data Final"      : Moveto [Data Inicial]
       Case Field()="Codigo da Marca" : Moveto [Data Final]
       OtherWise                     : Left
       EndSwitch
  Case Retval="ENTER":
       Switch
         Case Field()="Codigo da Empresa"                 : If Not Checa_Opcoes("Empresas",[])
                                                               Then Mensagem("Empresa inv lida !")
                                                                    Loop
                                                            EndIf   
                                                            Moveto [Data Inicial] 
         Case Field()="Data Inicial"                      : If IsBlank([Data Inicial]) Then [Data Inicial]=Today() EndIf
                                                            Moveto [Data Final] 
         Case Field()="Data Final"                        : If IsBlank([Data Final]) Then Mensagem("A [Data Final] deve ser informada!") Loop EndIf
                                                            If [Data Final] <= [Data Inicial]
                                                               Then Mensagem("A Data Final deve ser superior a [Data Inicial] informada!")
                                                                    Loop
                                                            EndIf
                                                            Moveto [Codigo da Marca]
         Case Field()="Codigo da Marca"                   : If SYS_CODIGO_CLIENTE="0222" And IsBlank([]) Then Loop EndIf                                                      
                                                            FACA_CHAVEI = True
                                                            QuitLoop
  OtherWise                                        : Right
       EndSwitch
  EndSwitch
EndWhile

EndProc ;DigitaC()  

;*******************************************************************************
;* Rotina para Localizar Cidades                                               *
;*******************************************************************************
Proc CHAVEI()
MSGCAMPO=""                
Moveto "Rankvc"
SetaCorRegistro("Padrao")

Moveto "Rankvi"
SetaCorRegistro("Editar")
While True
 Calcula_Totais()
  
  End
  NITEM = [Sequencia]
  Down
  Moveto [Sequencia]
  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf
  SetaCorRegistro("Editar")
  
  While True  
    TECLA= " Esc=Retornar  "
    
    TECLA = TECLA + "             "
    TECLA = TECLA + "               PgDn=Finalizar  "
    
    Prompt TECLA    

    Prompt TECLA
    Wait Field
         Until "F1","ESC","ENTER","F2","ZOOM","ZOOMNEXT","DOWN","UP","RIGHT","LEFT","HOME","END","PGDN","PGUP","ROTATE"
              
    Switch
    Case Retval="PGDN":   
         Del
         If Field()="Codigo do Representante" And [Codigo do Representante]=""
            Then Moveto [Codigo do Representante]
                 If RecordStatus("New")=True
                    Then MENSAGEM("Deve ter pelo menos 1(uma) meta cadastrada  !")
                         QuitLoop
                 EndIf
         EndIf        
         FACA_CHAVEC=False
         FACA_CHAVEI=False
         CHAVEI=9
         Return 
    Case RetVal="ESC" :
         Switch
           Case Field()="Sequencia"   : If [Codigo do Representante]<>""
                                           Then ConfGeral("Confirma desfazer as altera‡äes para este registro ?")
                                                If Ok<>"S"
                                                   Then Loop
                                                   Else Del
                                                        Quitloop
                                                EndIf          
                                        EndIf   
                                        Del     
                                        FACA_CHAVEC = True
                                        FACA_CHAVEI = False
                                        CHAVEI=9
                                        Return  
           Case Field()="UF"          : Moveto [Cidade]
           Case Field()="Pedido_Meta" : Moveto [UF]
         Endswitch
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":   
         Del
         While True
           Calcula_Totais()
           PAGINA("Rankvi","MR")   
           If EDITAR="S"
              Then CHAVEI=0
                   DIGITAI()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then CHAVEI=8
                                   Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
           If Finalizar 
              Then CHAVEI=8
                   Finalizar=False
                   Return
           EndIf
         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
                 [Numero da Programacao]=NLANC
                 [Sequencia            ]=SEQIT
                 UnLockRecord
                 Locate NLANC,SEQIT
         EndIf
         Return         
    EndSwitch
  EndWhile
EndWhile

EndProc ;ChaveI()

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

Moveto "Rankvc"
SetaCorRegistro("Padrao")    

Moveto "RankvI"       
SetaCorRegistro("Editar")                 

Moveto [Codigo do Representante]

While True
  TECLA=" Esc=Retornar  "

  If Field()="Cidade" Or 
     Field()="UF"           
     Then TECLA=TECLA + "F1=Tabelas  "
     Else TECLA=TECLA + "            "
  EndIf
   
  If CHAVEI=0
     Then TECLA=TECLA + "Del=Excluir  "
     Else TECLA=TECLA + "             "
  EndIf

  Switch
    Case Field()="Codigo do Representante"       : MSGCAMPO="Representante"
    Case Field()="Meta_Faturamento"              : MSGCAMPO="Meta de Faturamento"
    Case Field()="Meta_Itens"                    : MSGCAMPO="Meta de Itens por Pedido/Venda"
    Case Field()="Meta_ValorMedio"               : MSGCAMPO="Valor M‚dio por Pedido/Venda"
    Case Field()="Meta_Pecas"                    : MSGCAMPO="Meta de Pe‡as por Pedido/Venda"
    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": 
       If Field()="Codigo do Representante" 
          Then CONSULTAF1()
       EndIF         
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEI=0
          Then If QuerExcluir("")
                  Then Del
                       CHAVEI=9
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC":  
       Switch     
         Case Field()="Codigo do Representante"    : If CHAVEI=1 Then Del EndIf
                                                     QuitLoop
         Case Field()="Meta_Faturamento"           : Moveto [Codigo do Representante]
         Case Field()="Meta_Itens"                 : Moveto [Meta_Faturamento       ]
         Case Field()="Meta_ValorMedio"            : Moveto [Meta_Itens             ]
         Case Field()="Meta_Pecas"                 : Moveto [Meta_Faturamento       ]    
       EndSwitch
  Case Retval="ENTER":  
       Switch
         Case Field()="Codigo do Representante"      : If [Codigo do Representante]="" Then Loop EndIf
                                                       CODIGO_DO_REPRESENTANTE = [Codigo do Representante]
                                                       SEQITEM=[Sequencia]
                                                       Home 
                                                       Moveto [Codigo do Representante]
                                                       Locate CODIGO_DO_REPRESENTANTE
                                                       If RetVal And SEQITEM <> [Sequencia]
                                                          Then FastMsg("O Representante j  existe na rela‡Æo")
                                                               Moveto [Sequencia]
                                                               Locate SEQITEM
                                                               Moveto [Sequencia]
                                                               Del
                                                               QuitLoop
                                                       EndIf        
                                                       Moveto [Meta_Faturamento]
                                                       
         Case Field()="Meta_Faturamento"             : If SYS_CLIENTE_CONFEC <> ""
                                                          Then Moveto [Meta_Pecas]
                                                          Else Moveto [Meta_Itens]
                                                       EndIf
                                                          
         Case Field()="Meta_Itens"                   : If Isblank([Meta_Itens]) Then Loop EndIf
                                                       Moveto [Meta_ValorMedio]
         Case Field()="Meta_ValorMedio"              : If Isblank([Meta_ValorMedio]) Then Loop EndIf
                                                       If SYS_CLIENTE_CONFEC <> "" 
                                                          Then Moveto [Meta_Pecas]
                                                          Else QuitLoop
                                                       EndIf   
         Case Field()="Meta_Pecas"                   : If Isblank([Meta_Pecas]) Then Loop EndIf                                                                                                              
                                                       QuitLoop                                                 
       EndSwitch
  EndSwitch
EndWhile

EndProc ;DigitaI()

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

FACA_CHAVEC = True
FACA_CHAVEI = False    
          
While FACA_CHAVEC
  DIGITAC()
  If CHAVEC = 9 Then QuitLoop EndIf
  While FACA_CHAVEI
    CHAVEI()
    If CHAVEI=9  Then QuitLoop  EndIf
    If CHAVEI=7  Then     Loop  EndIf
    If CHAVEI<>8 Then DIGITAI() EndIf
  EndWhile  
EndWhile

Moveto "Rankvc"
If RecordStatus("Locked") Then UnLockRecord EndIf         

If OPCAO_FORM="F"
   Then PickForm "F"
EndIf
SaveTables

EndProc ;Controla_EdicaoC()

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

Moveto "Rankvi"
While RecordStatus("New")=False
  While IsLockRecord() EndWhile
  EXCLUSAO_I()
EndWhile

Moveto "Rankvc"
UnLockRecord
KeyPress "F7"
Del

EndProc   ; (Exclusao_C)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EXCLUSAO_I()

Moveto "Rankvi"
While RecordStatus("New")=False
  Del
EndWhile

EndProc ;EXCLUSAO_I)

;*******************************************************************************
;* Rotina p/ Calcular Totais                                                   *
;*******************************************************************************
Proc Calcula_Totais()
Private TAB_ANT,CAMPO_ANT
  
TAB_ANT   = Table()
CAMPO_ANT = Field()

Moveto "Rankvi"
Moveto [Meta_Faturamento] TOTAL_FATURAMENTO=ImageCSum()

Moveto "Rankvc"
[Total_Faturamento    ] = TOTAL_FATURAMENTO
SaveTables

Moveto TAB_ANT
Moveto Field CAMPO_ANT

EndProc ;Calcular_Comissao()


;*******************************************************************************
;* Rotina p/ Carregar Tabela                                                   *
;*******************************************************************************
Proc Carrega_Tabela()     

;View NOWINDOW "\\Sistemas\\Vendas\\PedidoC" 
CoEdit "Rankvc"

PickForm "F"  

EndProc ;Carrega_Tabela() 

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Bloq"
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
Sys_Valor()
PARAM_COPIA_PROG = "CHAVEC"
CARREGA_CLIENTES = False

;***** Verificar se o Cliente tem acesso a esta rotina *****
If Bloqueia_Rotina("METAS")
   Then Return
EndIf   
;***********************************************************

Carrega_Tabela()  

If ErrorCode()=4
   Then Do_It!
        ClearAll
        Release Vars All
        Release Procs All
        return
EndIf

OPCAO_FORM="F"
While True
  CHAVE()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=6
     Then If OPCAO_FORM="1"
             Then PickForm "1"
             Else PickForm "F"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll       
Release Vars All
Release Procs All
