;** VisitaC ********************************************************************
;*  Programa‡Æo de Visitas                                                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 17/06/2015 por Bruno Carvalho           
;Ultima Alteracao: 21/07/2015 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao copiar a programa‡Æo
;Ultima Alteracao: 03/01/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado "Bib_Proc" 
                  
;*******************************************************************************
;* Rotina de Controle p/ ShowDialog                                            *
;*******************************************************************************
Proc Geral_Dialog(Disparo,Campo,Evento,Elemento)
Private JANELA, WinArray5
TECLA=" Esc=Retornar  "
MSG_CAMPO=""
Temp=True

Campo ="TG_PROGREP"
                      
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9:
          Temp=False
     Case Evento["KeyCode"] = -59:
          If Campo="TG_PROGREP" And PARAM_COPIA_PROG = "CHAVEC" 
             Then Seleciona_Opcoes_TEMP(opcoes_prog,"Seleciona Programa‡„o de Visita","")
          EndIf
     Case Evento["KeyCode"] = 27:
          Switch
            Case Campo="TG_PROGREP"   :  CancelDialog
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          Switch
            Case Campo="TG_PROGREP" :
                 VSDGPROGREP = ControlValue("TG_PROGREP")
                 If VSDGPROGREP<>""
                    Then VSDGPROGREP=AlinhM(VSDGPROGREP,6)
                         If PARAM_COPIA_PROG = "CHAVEC"
                            Then If Not Checa_Opcoes_TEMP(opcoes_prog,"Seleciona Programa‡„o de Visita",VSDGPROGREP)  
                                    Then Mensagem("Programa‡„o informada n„o foi localizada !")
                                    Else ConfGeral("Deseja copiar a programa‡„o "+VSDGPROGREP+" ?")
                                         If OK="S"
                                            Then AcceptDialog
                                         EndIf
                                 EndIf
                            Else If VSDGPROGREP = [Numero da Programacao]
                                    Then Mensagem("O novo N§ da Programa‡„o ‚ inv lido !")
                                    Else ConfGeral("Deseja copiar a programa‡„o "+[Numero da Programacao]+" para a nova programa‡„o "+VSDGPROGREP+" ?")
                                         If OK="S"
                                            Then AcceptDialog
                                         EndIf
                                 EndIf 
                         EndIf    
                    Else If PARAM_COPIA_PROG = "CHAVEC"
                             Then Mensagem("Informe a programa‡„o a ser copiada para prosseguir !")
                             Else Mensagem("Informe a novo numero para a programa‡„o a ser copiada !")
                         EndIf    
                  EndIf   
          EndSwitch        
          Temp=False
   EndSwitch
EndIf

SelectControl Campo
TECLA=" Esc=Retornar  "
If Campo="TG_PROGREP" And PARAM_COPIA_PROG = "CHAVEC"   
   Then TECLA=TECLA+"F1=Tabelas  "
EndIf

Switch
  Case Campo="TG_PROGREP" And PARAM_COPIA_PROG = "CHAVEC" :
       MSGCAMPO="Informe o n§ da programa‡„o a ser copiada !"
  Case Campo="TG_PROGREP" : 
       MSGCAMPO="Informe o novo n§ da programa‡„o a ser copiada !"     
  OtherWise:
       MSGCAMPO=""
EndSwitch

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)
Mouse Hide
RefreshDialog
Return TEMP

EndProc   ;Geral_Dialog()                  
                  
;*******************************************************************************
;* 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()
    
    If RetVal=-33
       Then Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
              "F5 ~C~opiar Programa‡„o " : " Copiar a Programa‡„o de Visita" : "F5",
              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=-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("VisitaC","MR")
                Else PAGINA("VisitaC","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 "VisitaCL"             
           SetaCorRegistro("Padrao")     
                                         
           Moveto "VisitaCD"             
           SetaCorRegistro("Padrao")     
           
           Moveto "VisitaC"        
           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 Localizar Cidades                                               *
;*******************************************************************************
Proc CHAVEI()
                  
Moveto "VisitaC"
SetaCorRegistro("Padrao")

Moveto "VisitaCD"
SetaCorRegistro("Editar")
While True
  Calcular_Comissao()
  Moveto "VisitaCD"
  Moveto [Sequencia  ] TOT_CID =ImageCCount()
  Moveto [Pedido_Meta] VR_META =ImageCSum()
  
  VR_META  = Format("W10.2,EIC",ImageCSum())
  TAB_WORK = Format("W4,AR",StrVal(TOT_CID)) 
  Switch
    Case TOT_CID = 1 : TAB_WORK = TAB_WORK + " Cidade"
    Case TOT_CID > 1 : TAB_WORK = TAB_WORK + " Cidades"
    OtherWise        : TAB_WORK = ""
  EndSwitch
  
  End
  NITEM = [Sequencia]
  Down
  Moveto [Sequencia]
  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf
  SetaCorRegistro("Editar")
  While True  
    TECLA= " Esc=Retornar  "
    
    If Field()="Cidade" Or 
       Field()="UF"           
       Then TECLA=TECLA + "F1=Tabelas  "
       Else TECLA=TECLA + "            "
    EndIf
    TECLA = TECLA + "             "
    TECLA = TECLA + "               PgDn=Finalizar  "
    
    Prompt TECLA  
    
    Switch
      Case Field()="Cidade"       : MSGCAMPO="Informe a Cidade"
      Case Field()="UF"           : MSGCAMPO="Informe o Estado da Cidade"
      Case Field()="Pedido_Meta"  : MSGCAMPO="Valor da Meta"
      OtherWise                   : MSGCAMPO=Field()
    EndSwitch  

    Prompt TECLA
    Wait Field
         Message MSGCAMPO
         Until "F1","ESC","ENTER","F2","ZOOM","ZOOMNEXT","DOWN","UP","RIGHT","LEFT","HOME","END","PGDN","PGUP","ROTATE",-31,-33,-115,-116
              
    Switch
    Case Retval=-116 : Del
                       FACA_CHAVEI = False
                       FACA_CHAVEV = True
                       CHAVEI=8
                       Return       
    Case RetVal="F1":
         Switch
           Case Field()="Cidade" Or
                Field()="UF"      :       
                If Field()="UF"
                   Then Seleciona_Opcoes_TEMP(opcoes_uf,"Seleciona_UF","")
                EndIf
                If Field()="Cidade"
                   Then Seleciona_Opcoes_TEMP(opcoes_cid,"Seleciona_Cidade","")
                EndIf         
         EndSwitch                                   
    Case Retval="PGDN":   
         Del
         If Field()="Cidade" And [Cidade]=""
            Then Moveto [Cidade]
                 If RecordStatus("New")=True
                    Then MENSAGEM("A Programa‡„o deve ter pelo menos 1(um) Cidade !")
                         QuitLoop
                 EndIf
         EndIf        
         FACA_CHAVEC=False
         FACA_CHAVEI=False
         CHAVEI=9
         Return 
    Case RetVal="ESC" :
         Switch
           Case Field()="Sequencia"   : If [Cidade]<>""
                                           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
           Calcular_Comissao()
           PAGINA("VisitaCD","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 Localizar Clientes                                              *
;*******************************************************************************
Proc CHAVEV()    

AUX_REP = [VisitaC->Codigo do Representante]

Moveto "VisitaC"
SetaCorRegistro("Padrao")

Moveto "VisitaCL"
SetaCorRegistro("Editar")
While True
  Moveto "VisitaCL"
  Moveto [Sequencia] TOT_CID =ImageCCount()
  TAB_WORK = Format("W4,AR",StrVal(TOT_CID)) 
  Switch
    Case TOT_CID = 1 : TAB_WORK = TAB_WORK + " Cliente"
    Case TOT_CID > 1 : TAB_WORK = TAB_WORK + " Clientes"
    OtherWise        : TAB_WORK = ""
  EndSwitch
  Moveto [Sequencia]
  End
  NITEM = [Sequencia]
  Down      
  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf
  SetaCorRegistro("Editar")
  While True
    TECLA= " Esc=Retornar  "
    
    If Field()="Descricao do Status" Or 
       Field()="Codigo"           
       Then TECLA=TECLA + "F1=Tabelas  "
       Else TECLA=TECLA + "            "
    EndIf
    TECLA=TECLA + "             "
        
    TECLA = TECLA + "Alt+F=Fun‡”es  PgDn=Finalizar  "

    Switch
      Case Field()="Codigo"              : MSGCAMPO = "Cliente do Representante" 
      Case Field()="Descricao do Status" : MSGCAMPO = "Descri‡„o do Status"
      OtherWise                          : MSGCAMPO=Field()
    EndSwitch  

    Prompt TECLA
    Wait Field
         Message MSGCAMPO
         Until "F1","ESC","ENTER","F2","ZOOM","ZOOMNEXT","DOWN","UP","RIGHT","LEFT","HOME","END","PGDN","PGUP","ROTATE",-31,-33,"F5",-115,-116

    If RetVal=-33
       Then Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
              "F5 ~B~uscar Clientes do Representante "+AUX_REP : " Buscar todos os cliente do representante "+AUX_REP : "F5",
              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=-115 : Del
                       FACA_CHAVEI = True
                       FACA_CHAVEV = False
                       CHAVEV=8
                       Return      
    Case Retval=-116 : Del
                       FACA_CHAVEV = False
                       FACA_CHAVEM = True
                       CHAVEV=8
                       Return                      
    Case RetVal="F5" :
         ConfGeral("Deseja incluir TODOS os clientes do representante "+AUX_REP+" na rela‡„o ?")
         If OK<>"S"
            Then Del
                 QuitLoop
         EndIf
         
         CONT_CID = 0
         DynArray CID[]
         Moveto "VisitaCD" Home
         
         If RecordStatus("New") 
            Then Mensagem("N„o h  cidades informadas para este vendedor !")
                 Moveto "VisitaCL"
                 Del
                 QuitLoop
         EndIf    
         Scan
           CONT_CID = CONT_CID + 1
           CID[CONT_CID] = [Cidade] 
         EndScan          
         Moveto "VisitaCL"
         
         Del  
         NR=NRecords("\\Sistemas\\Cadastro\\Destinat")
         
         Release Vars Aux_Opcoes
         DynArray Aux_Opcoes[]
         
         wcg      = 0
         Moveto [Codigo]
         KeyPress "F1"   
         
         Scan For [Codigo do Representante]=AUX_REP And [Tipo]="C" And [Inativo]<>"S"
           Barra(NR, RecNo())
           Aguarde("Aguarde, omportando clientes do representante "+BARRA_STRING)
           
           ACHOU_CIDADE = False
           For i From 1 To DynArraySize(CID) 
             If [Cidade]=CID[i]
                Then ACHOU_CIDADE = True
                     QuitLoop
             EndIf
           EndFor 
           
           If Not ACHOU_CIDADE Then Loop EndIf
           wcg=wcg+1
           Aux_Opcoes[wcg]=Format("W4",[Codigo])
         EndScan
         KeyPress "ESC"
         
         CONT_TEMP_CL = 0
         DynArray TEMP_CL[]        
         Home
         Scan
           If [Pedido_Quantidade  ]<>BlankNum() Or
              [Pedido_Valor       ]<>BlankNum() Or
              [Pedido_NumeroItens ]<>BlankNum() Or
              [Descricao do Status]<>""
              Then CONT_TEMP_CL = CONT_TEMP_CL + 1
                   TEMP_CL[CONT_TEMP_CL] = Format("W4",[Codigo])+Format("W12",[Pedido_Quantidade])  +
                                                                 Format("W12.2",[Pedido_Valor])     +
                                                                 Format("W12",[Pedido_NumeroItens]) +
                                                                 Format("W20",[Descricao do Status ]) 
           EndIf   
         EndScan
         
         While Not RecordStatus("New")
           Del
         EndWhile  
         AUX_SEQ = 0
         MSG     = ""
         
         If wcg > 0               
            Then For out From 1 To DynArraySize(Aux_Opcoes)
                   AUX_SEQ = AUX_SEQ + 1
                   End Down
                   [Sequencia] = AUX_SEQ
                   [Codigo   ] = Aux_Opcoes[out]                                       
                   UnLockRecord        
                 EndFor
                 
                 For out From 1 To DynArraySize(TEMP_CL)
                   COD_CLI = SubStr(TEMP_CL[out],1,4) 
                   PED_QTD = Rtrim(SubStr(TEMP_CL[out],5,12))
                   PED_VR  = Rtrim(SubStr(TEMP_CL[out],17,12))
                   PED_NUM = Rtrim(SubStr(TEMP_CL[out],29,12))
                   DESC_ST = Ltrim(Rtrim(SubStr(TEMP_CL[out],41,20)))
                   
                   If PED_QTD<>"" Then PED_QTD = NumVal(PED_QTD) EndIf
                   If PED_VR<>""  Then PED_VR = NumVal(PED_VR)   EndIf
                   If PED_NUM<>"" Then PED_NUM = NumVal(PED_NUM) EndIf
                   
                   Home
                   Moveto [Codigo]
                   Locate COD_CLI
                   If RetVal
                      Then If PED_QTD<>"" And PED_QTD<>BlankNum() Then [Pedido_Quantidade  ]=PED_QTD EndIf
                           If PED_VR<>""  And PED_VR<>BlankNum()  Then [Pedido_Valor       ]=PED_VR  EndIf
                           If PED_NUM<>"" And PED_NUM<>BlankNum() Then [Pedido_NumeroItens ]=PED_NUM EndIf
                           [Descricao do Status]=DESC_ST 
                           UnLockRecord
                   EndIf
                 EndFor
            Else MSG="N„o tem clientes do representante informado!"     
         EndIf
         If MSG<>"" Then Mensagem(MSG) EndIf    
         QuitLoop
    Case Retval="PGDN":   
         Del
         Moveto [Sequencia]
         If RecordStatus("New")=True
            Then MENSAGEM("A Programa‡„o deve ter pelo menos 1(um) cliente !")
                 QuitLoop
         EndIf   
         FACA_CHAVEI=False
         FACA_CHAVEC=False
         FACA_CHAVEV=False
         CHAVEV=9
         Return     
    Case RetVal="ESC" :
         Switch
           Case Field()="Sequencia"    : If [Codigo]<>""
                                            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_CHAVEV = False
                                         FACA_CHAVEI = False
                                         CHAVEV=9
                                         Return
         Endswitch
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           Moveto [Pedido_Quantidade] VC_QTD   = ImageCSum()
           Moveto [Pedido_Valor     ] VC_VALOR = ImageCSum()
           Moveto [Sequencia        ] TOT_CLI  = ImageCCount()
           
           TAB_WORK = Format("W4,AR",StrVal(TOT_CLI))
           Switch
             Case TOT_CLI = 1 : TAB_WORK = TAB_WORK + " Cliente"
             Case TOT_CLI > 1 : TAB_WORK = TAB_WORK + " Clientes"
             OtherWise        : TAB_WORK = ""
           EndSwitch
                      
           PAGINA("VisitaCL","MR")

           SEQIT=[Sequencia]
           If EDITAR="S"
              Then CHAVEV=0
                   DIGITAV()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then CHAVEV=8
                                   Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER" :
         Mensagem("Utilize a Op‡Æo p/ carregar os clientes do representante !")
         Loop
       
        ;---- Desativado ---------------------------
         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf
         SEQIT=[Sequencia]
         Del
         Moveto [Sequencia]
         Locate SEQIT
         If Retval
            Then CHAVEV=0
                 SEQIT=[]
            Else CHAVEV=1
                 End
                 Down
                 [Sequencia]=SEQIT
                 UnLockRecord
                 Locate NLANC,SEQIT
         EndIf
         Return   
    EndSwitch
  EndWhile
EndWhile

EndProc ;ChaveV()  
                 
;*******************************************************************************
;* Rotina para Localizar Clientes                                              *
;*******************************************************************************
Proc CHAVEM()

Moveto "VisitaC"
SetaCorRegistro("Padrao")

Moveto "VisitaCM"
SetaCorRegistro("Editar")
While True
  Moveto "VisitaCM"
  Moveto [Sequencia]
  End
  NITEM = [Sequencia]
  Down
  [Numero da Programacao]=NLANC
  Moveto [Sequencia]
  Seta_Sequencia(NITEM,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf
  Moveto [Sequencia]
  SetaCorRegistro("Editar")
  While True
    TECLA= " Esc=Retornar  "
    
    If Field()=""             
       Then TECLA=TECLA + "F1=Tabelas  "
       Else TECLA=TECLA + "            "
    EndIf
    TECLA=TECLA + "             "
        
    TECLA = TECLA + "               PgDn=Finalizar  "

    Switch
      Case Field()="Sequencia"        : MSGCAMPO="Sequˆncia da Faixa"
      Case Field()="Meta_Inicial"     : MSGCAMPO="Valor da Meta Inicial"
      Case Field()="Meta_Final"       : MSGCAMPO="Valor da Meta Final"
      Case Field()="Meta_Porcentagem" : MSGCAMPO="Porcentagem da Faixa da Meta de "+Ltrim(StrVal([Meta_Inicial]))+" at‚ "+Ltrim(StrVal([Meta_Final]))
      OtherWise                       : MSGCAMPO=Field()
    EndSwitch  

    Prompt TECLA
    Wait Field
         Message MSGCAMPO
         Until "F1","ESC","ENTER","F2","ZOOM","ZOOMNEXT","DOWN","UP","RIGHT","LEFT","HOME","END","PGDN","PGUP","ROTATE",-31,-115

    Switch
    Case Retval=-115 : Del
                       FACA_CHAVEV = True
                       FACA_CHAVEM = False
                       CHAVEM=8
                       Return
    Case RetVal="ESC" :  
         Switch
           Case Field()="Sequencia"        : If [Meta_Inicial]<>BlankNum()
                                                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
                                             FACA_CHAVEV = False
                                             FACA_CHAVEM = False
                                             CHAVEM=9
                                             Return
         EndSwitch
    Case Retval="PGDN":   
         Del
         Moveto [Sequencia]
         If RecordStatus("New")=True
            Then MENSAGEM("A Programa‡„o deve ter pelo menos 1(um) faixa de comiss„o !")
                 QuitLoop
         EndIf   
         FACA_CHAVEC=False
         FACA_CHAVEI=False
         FACA_CHAVEV=False
         FACA_CHAVEM=False
         CHAVEM=9
         Return          
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("VisitaCM","MR")
           SEQIT=[Sequencia]
           If EDITAR="S"
              Then CHAVEM=0
                   DIGITAM()
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then CHAVEM=8
                                   Del
                              Else UnLockRecord
                           EndIf
                      Else QuitLoop
                   EndIf
           EndIf
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":  
         If Not Seta_Sequencia(NITEM,True)
            Then Del
                 QuitLoop
         EndIf
         SEQIT=[Sequencia]
         Del
         Moveto [Sequencia] 
         Locate SEQIT
         If Retval
            Then CHAVEM=0
                 SEQIT=[]
            Else CHAVEM=1
                 End Down
                 [Sequencia  ]=SEQIT
                 UnLockRecord
                 Locate NLANC,SEQIT
         EndIf 
         Return 
    EndSwitch
  EndWhile
EndWhile

EndProc ;ChaveM()

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc DigitaC()  
      
Moveto "VisitaCD"     
Moveto [Pedido_Meta] VR_META =ImageCSum()
VR_META  = Format("W10.2,EIC",ImageCSum())
SetaCorRegistro("Padrao")      
      
Moveto "VisitaCL"
SetaCorRegistro("Padrao")          
                         
Moveto "VisitaC"
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=1
   Then Moveto [Codigo da Empresa]
        If INICIO_PAGINA And [Codigo da Empresa]<>""
           Then Moveto [Codigo do Representante]
           Else 
        EndIf
   Else Calcular_Comissao()
        Moveto [Situacao da Programacao]      
EndIf

While True
  TECLA=" Esc=Retornar  "

  If Field()="Codigo do Representante" Or Field()="Situacao da Programacao"
     Then TECLA=TECLA + "F1=Tabelas  "
     Else TECLA=TECLA + "            "
  EndIf
   
  If CHAVEC=0                         
     Then TECLA=TECLA + "Del=Excluir  "
     Else TECLA=TECLA + "             "
  EndIf
  
  Switch
    Case Field()="Situacao da Programacao" : MSGCAMPO="Situa‡„o da Programa‡„o: ABERTO/SUSPENSO/FINALIZADO"
    OtherWise                              : MSGCAMPO=Field()
  EndSwitch
  
  If CHAVEC=0 And Field()="Situacao da Programacao"
     Then Moveto [Situacao da Programacao]
  EndIf     
    
  Prompt TECLA
  Wait Field
       Message MSGCAMPO
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F4","F5","F7","F8","F9",-33

  If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Situa‡„o da Programa‡„o " CENTERED
            "F5 ~C~opiar Programa‡„o " : " Copiar a programa‡„o "+[Numero da Programacao]+" p/ uma nova programa‡„o": "F5",
            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="F1":
       Switch
         Case Field()="Codigo do Representante" Or
              Field()="Codigo da Empresa"       : CONSULTAF1()
         Case Field()="Situacao da Programacao" : 
              Echo Normal
              Echo Off
              ShowPopup " Situa‡„o da Programa‡„o " CENTERED
                "ABERTO     " : " Situa‡„o da Programa‡„o: ABERTO     ": "ABERTO",
                "SUSPENSO   " : " Situa‡„o da Programa‡„o: SUSPENSO   ": "SUSPENSO",
                "FINALIZADO " : " Situa‡„o da Programa‡„o: FINALIZADO ": "FINALIZADO",
                Separator,
                "~C~ancelar " : " Cancelar a Opera‡Æo               ": "CANCELAR"
              EndMenu
              To MenuVar
              Echo off
         
              If MenuVar="CANCELAR" or MenuVar="Esc"
                 Then Loop
              EndIf
              [] = MenuVar
       EndSwitch
  Case Retval="F5" :     
       PARAM_COPIA_PROG = "DIGITAC"           
       If Not Copiar_Programaca(PARAM_COPIA_PROG)
          Then Loop
       EndIf
       CHAVEC=9       
       QuitLoop
  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()="Codigo do Representante" : Moveto [Codigo da Empresa]
       Case Field()="Situacao da Programacao" : 
            If CHAVEC=0
               Then Undo
                    Release Vars CHAVEI              
                    CHAVEC=9
                    QuitLoop        
               Else Moveto [Codigo do Representante]    
            Endif 
       Case Field()="Data Inicial"            : Moveto [Situacao da Programacao]
       Case Field()="Data Final"              : Moveto [Data Inicial]
       OtherWise                              : Left
       EndSwitch
  Case Retval="ENTER":
       Switch
         Case Field()="Codigo da Empresa"                 : If IsBlank([]) Then Loop EndIf
                                                            Moveto [Codigo do Representante] 
         Case Field()="Codigo do Representante"           : If IsBlank([]) Then Loop EndIf
                                                            Moveto [Situacao da Programacao]
         Case Field()="Situacao da Programacao"           : If IsBlank([]) Then []="ABERTO" 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
                                                            FACA_CHAVEI = True
                                                            QuitLoop
         OtherWise                                        : Right
       EndSwitch
  EndSwitch
EndWhile

EndProc ;DigitaC()  

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

Moveto "VisitaC"
SetaCorRegistro("Padrao")    

Moveto "VisitaCD"       
SetaCorRegistro("Editar")                  

If CHAVEI=0
   Then Moveto [Pedido_Meta]
   Else Moveto [Cidade]
EndIf

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()="Cidade"       : MSGCAMPO="Informe a Cidade"
    Case Field()="UF"           : MSGCAMPO="Informe o Estado da Cidade"
    Case Field()="Pedido_Meta"  : MSGCAMPO="Valor da Meta"
    OtherWise                   : MSGCAMPO=Field()
  EndSwitch
    
  Prompt TECLA
  Wait Field
       Message MSGCAMPO
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F4","F7","F8","F9",-33
  
  Switch  
  Case RetVal="F1": 
       Switch
         Case Field()="Cidade" Or
              Field()="UF"      :       
              If Field()="UF"
                 Then Seleciona_Opcoes_TEMP(opcoes_uf,"Seleciona_UF","")
              EndIf
              If Field()="Cidade"
                 Then Seleciona_Opcoes_TEMP(opcoes_cid,"Seleciona_Cidade","")
              EndIf         
       EndSwitch       
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEI=0
          Then If QuerExcluir("Deseja realmente excluir a cidade da rela‡„o ?")
                  Then Del
                       CHAVEI=9
                       QuitLoop
               EndIf
       EndIf
  Case Retval="ESC":  
       Switch     
         Case Field()="Cidade"         : If CHAVEI=1 Then Del EndIf
                                         QuitLoop
         Case Field()="UF"             : Moveto [Cidade]
         Case Field()="Pedido_Meta"    : If CHAVEI=1 
                                            Then Moveto [UF]
                                            Else QuitLoop
                                         EndIf   
       EndSwitch
  Case Retval="ENTER":  
       Switch
         Case Field()="Cidade"      : If [Cidade]="" Then Loop EndIf
                                      Moveto [UF]
         Case Field()="UF"          : If [UF]="" Then Loop EndIf
                                      CIDADE = [Cidade]
                                      UF     = [UF]    
                                      GetRecord "\\Sistemas\\Cadastro\\Cidades" [Cidade],[UF] To REG_CIDADE
                                      If RetVal
                                         Then SEQITEM=[Sequencia]
                                              CIDADE = REG_CIDADE["Cidade"]
                                              UF     = REG_CIDADE["UF"]
                                         Else Mensagem("Cidade "+Upper([Cidade])+" n„o localizada no cadastro de CIDADES ou //ESTADO n„o corresponde a cidade!")
                                              Loop
                                      EndIf
              
                                      Home 
                                      Moveto [Cidade]
                                      Locate CIDADE
                                      If RetVal And SEQITEM <> [Sequencia]
                                         Then Mensagem("A Cidade j  consta na rela‡„o e est  posicionado na sequˆncia "+StrVal([Sequencia])+"!")
                                              Moveto [Sequencia]
                                              Locate SEQITEM
                                              Moveto [Sequencia]
                                              Del
                                              QuitLoop
                                      EndIf
                                      Moveto [Pedido_Meta]
         Case Field()="Pedido_Meta" : QuitLoop    
       EndSwitch
  EndSwitch
EndWhile

EndProc ;DigitaI()

;*******************************************************************************
;* Rotina para Digitacao dos Clientes                                          *
;*******************************************************************************
Proc DigitaV()
           
Moveto "VisitaC"
SetaCorRegistro("Padrao")            

Moveto "VisitaCL"
SetaCorRegistro("Editar")

If CHAVEV=0
   Then Moveto [Descricao do Status]
   Else Moveto [Codigo]
EndIf   

While True
  TECLA=" Esc=Retornar  "

  If Field()="Descricao do Status" ;Or 
     ;Field()="Codigo"           
     Then TECLA=TECLA + "F1=Tabelas  "
     Else TECLA=TECLA + "            "
  EndIf
  
  If CHAVEV=0
     Then TECLA=TECLA + "Del=Excluir  "
     Else TECLA=TECLA + "             "
  EndIf
  
  TECLA = TECLA + "               "

  Switch
    Case Field()="Codigo"              : MSGCAMPO = "Cliente do Representante" 
    Case Field()="Descricao do Status" : MSGCAMPO = "Descri‡„o do Status"
    OtherWise                          : MSGCAMPO=Field()
  EndSwitch  
  
  Prompt TECLA
  Wait Field
       Message MSGCAMPO
       Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F7","F8","F9",-33

  Switch
  Case RetVal="F1":
       Switch
         ;Case Field()="Codigo"              : Carrega_Cliente()
         ;                                     Moveto "VisitaCL"
         ;                                     Moveto [Codigo]
         ;                                     If SEM_REP
         ;                                        Then Seleciona_Opcoes("Seleciona_Cliente","")
         ;                                       Else Mensagem("N„o tem clientes do representante informado!")
         ;                                     EndIf
         Case Field()="Descricao do Status" : Seleciona_Opcoes_TEMP(opcoes_status,"Status","")
       EndSwitch       
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEV=0
          Then If QuerExcluir("Deseja realmente excluir este cliente da rela‡„o ?")
                  Then Del
                       CHAVEV=9
                       QuitLoop
               EndIf
       EndIf                                
  Case Retval="ESC":   
       Switch     
         Case Field()="Codigo"                  : If CHAVEV=1 
                                                     Then If [Codigo]<>""
                                                             Then ConfGeral("Confirma desfazer as altera‡äes para este registro ?")
                                                                  If Ok<>"S"
                                                                     Then Loop
                                                                     Else Del
                                                                          Quitloop
                                                                  EndIf          
                                                          EndIf   
                                                          Del
                                                  EndIf
                                                  QuitLoop
         Case Field()="Descricao do Status"     : If CHAVEV=0
                                                     Then QuitLoop
                                                     Else Moveto [Codigo]
                                                  EndIf   
       EndSwitch
  Case Retval="ENTER": 
       Switch
         Case Field()="Codigo"    : 
              Mensagem("Utilize a Op‡Æo p/ carregar os clientes do representante !")
              Loop
              
              ;----- Processo Destaivado ---------------------
              If Isblank([]) Then Loop EndIf
                 
              CLIENTE_COD = [Codigo]
              CLIENTE_DES = [Nome Fantasia EmitDest] 
              CLIENTE_SEQ = [Sequencia]
              Home 
              Moveto [Codigo]
              Locate CLIENTE_COD
              If RetVal And CLIENTE_SEQ <> [Sequencia]
                 Then Mensagem("O cliente j  consta na rela‡„o e est  posicionado na sequˆncia "+StrVal([Sequencia])+"!")
                      Moveto [Sequencia]
                      Locate CLIENTE_SEQ
                      Moveto [Codigo]
                      Del
                      QuitLoop
              EndIf
              
              If CHAVEV=1
                 Then If Not SEM_REP
                         Then Mensagem("N„o tem clientes do representante informado!")
                              Loop
                      EndIf
                      Carrega_Cliente()
                      Moveto "VisitaCL"
                      Moveto [Codigo]
                      If Not Checa_Opcoes("Seleciona_Cliente",[])
                         Then Mensagem("Cliente inv lido ou n„o corresponde ao representante informado!")
                              Loop
                      EndIf
              EndIf         
              Moveto [Descricao do Status]
         Case Field()="Descricao do Status" :  
              If Isblank([]) Then QuitLoop EndIf
              If Not Checa_Opcoes_TEMP(opcoes_status,"Status",[Descricao do Status])
                 Then Mensagem("Status n„o cadastrado!")
                      Loop
             EndIf
             UnLockRecord
             QuitLoop
       EndSwitch
  EndSwitch
EndWhile

EndProc ;DigitaV()              

;*******************************************************************************
;* Rotina para Digitacao dos Clientes                                          *
;*******************************************************************************
Proc DigitaM()
           
Moveto "VisitaC"
SetaCorRegistro("Padrao")            
               
Moveto "VisitaCM"
SetaCorRegistro("Editar")
If CHAVEM=0
   Then Moveto [Meta_Porcentagem]
   Else Moveto [Meta_Inicial]
EndIf   
While True
  TECLA=" Esc=Retornar  "

  Switch
    Case Field()="Meta_Inicial"     : MSGCAMPO="Valor da Meta Inicial"
    Case Field()="Meta_Final"       : MSGCAMPO="Valor da Meta Final"
    Case Field()="Meta_Porcentagem" : MSGCAMPO="Comiss„o da Faixa da Meta de "+Ltrim(StrVal(Format("W12.2,EIC",[Meta_Inicial])))+" at‚ "+
                                               Ltrim(StrVal(Format("W12.2,EIC",[Meta_Final])))
    OtherWise                       : MSGCAMPO=Field()
  EndSwitch   
  
  Prompt TECLA
  Wait Field
       Message MSGCAMPO
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","F7","F8","F9",-33

  Switch  
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEM=0
          Then If QuerExcluir("Deseja realmente excluir esta faixa de meta ?")
                  Then Del
                       CHAVEM=9
                       QuitLoop
               EndIf
       EndIf                                
  Case Retval="ESC":  
       Switch     
         Case Field()="Meta_Inicial"     : If CHAVEM=1 
                                              Then If [Meta_Inicial]<>BlankNum()
                                                      Then ConfGeral("Confirma desfazer as altera‡äes para este registro ?")
                                                           If Ok<>"S"
                                                              Then Loop
                                                              Else Del
                                                                   Quitloop
                                                           EndIf          
                                                   EndIf   
                                                   Del
                                           EndIf
                                           QuitLoop
         Case Field()="Meta_Final"       : Moveto [Meta_Inicial]
         Case Field()="Meta_Porcentagem" : If CHAVEM=0
                                              Then QuitLoop
                                              Else Moveto [Meta_Final]
                                           EndIf   
       EndSwitch
  Case Retval="ENTER":
       Switch
         Case Field()="Meta_Inicial"    :
              If Isblank([]) Then Loop EndIf
              Moveto [Meta_Final]
         Case Field()="Meta_Final"    : 
              If Isblank([]) Then Loop EndIf
              
              If [Meta_Final] <= [Meta_Inicial] And [Meta_Final]>0 
                 Then Mensagem("O Valor da Meta Final deve ser superior ao Valor da Meta Inicial !")
                      Loop  
              EndIf
              If CHAVEM = 1
                 Then UnlockRecord
                      COMISSAO_METAI = [Meta_Inicial]
                      COMISSAO_METAF = [Meta_Final] 
                      COMISSAO_SEQ   = [Sequencia]
                      MSG            = ""
                      
                      Home 
                      Scan
                        If COMISSAO_SEQ <> [Sequencia]
                           Then Switch
                                  Case COMISSAO_METAI = [Meta_Inicial]  : MSG = "O Valor da Meta Inicial j  consta na rela‡„o//e est  posicionado na sequˆncia "+
                                                                                 StrVal([Sequencia])+"!"
                                  Case COMISSAO_METAI <= [Meta_Inicial] : MSG = "O Valor da Meta Inicial deve ser superior ao lan‡ado na sequˆncia "+
                                                                                 StrVal([Sequencia])+"!"                                                                                                                             
                                EndSwitch
                        EndIf   
                        If MSG <> "" Then QuitLoop EndIf
                      EndScan
                      Moveto [Sequencia]
                      Locate COMISSAO_SEQ
                      Moveto [Meta_Inicial]
                      If MSG <> ""
                         Then Mensagem(MSG)
                              Loop
                         ELse     
                      EndIf 
                             
                      MSG = ""
                      Home 
                      Scan
                        If COMISSAO_SEQ <> [Sequencia]
                           Then Switch
                                  Case COMISSAO_METAF = [Meta_Final]  : MSG = "O Valor da Meta Final j  consta na rela‡„o//e est  posicionado na sequˆncia "+
                                                                               StrVal([Sequencia])+"!"
                                  Case COMISSAO_METAI <= [Meta_Final] : MSG = "O Valor da Meta Inicial deve ser superior //"+
                                                                              "ao Valor da Meta Final lan‡ado na sequˆncia "+
                                                                               StrVal([Sequencia])+"!"
                                  Case [Meta_Final] = 0               : MSG = "O Valor da Meta Final j  foi finalizado e est  posicionado na sequˆncia "+
                                                                               StrVal([Sequencia])+"!"    
                                  Case COMISSAO_METAF <= [Meta_Final] : If COMISSAO_METAF<>0
                                                                           Then MSG = "O Valor da Meta Final deve ser superior ao lan‡ado na sequˆncia "+
                                                                                      StrVal([Sequencia])+"!"
                                                                        EndIf                                                                                                                                                      
                                EndSwitch
                        EndIf   
                        If MSG <> "" Then QuitLoop EndIf
                      EndScan
                      Moveto [Sequencia]
                      Locate COMISSAO_SEQ
                      Moveto [Meta_Final]
                      If MSG <> ""
                         Then Mensagem(MSG)
                              Loop
                         ELse     
                      EndIf 
              EndIf
              Moveto [Meta_Porcentagem]     
         Case Field()="Meta_Porcentagem" :  
              If Isblank([]) Then Loop EndIf
              UnLockRecord
              QuitLoop
       EndSwitch
  EndSwitch
EndWhile

EndProc ;DigitaM()

;*******************************************************************************
;* Rotina para Copiar Programa‡Æo                                              *
;*******************************************************************************
Proc Copiar_Programaca(PARAM)
Private PARAM, TITULO, PROGRAMACAO, REG_PROG, AUX_PROG, MSG 

PROGRAMACAO = ""          
If PARAM="CHAVEC"           
   Then TITULO = "Copiar Programa‡„o"
        Do_it!
        ClearAll

        {Ask} {\\Sistemas\\Visita\\VisitaC}
        Moveto [Numero da Programacao] Check
        Moveto [Data Inicial         ] Check
        Moveto [Data Final           ] Check
        Do_It!
        ClearAll
        
        Monta_Opcoes_TEMP("Seleciona Programa‡„o de Visita","")
        ClearAll
  Else TITULO = "Nova Programa‡„o" 
EndIf

          
VSDGPROGREP = ""        
While True
  Showdialog TITULO Proc "Geral_Dialog"
    Trigger "OPEN","ARRIVE"
    Key "F1","TAB","ReverseTab","ENTER","ESC"
    @ 08,25 height 06 width 29

    Label  @ 01,01 "N§ da Programa‡„o" for "TG_PROGREP"
    Accept @ 02,02  Width 12 "A6" picture "!*!" Tag "TG_PROGREP" to VSDGPROGREP

 Enddialog
 Mouse Show
 Echo Off
 
 If Not RetVal 
    Then If PARAM="CHAVEC"     
            Then QuitLoop
            Else Return False
         EndIf   
 Endif  
 
 If PARAM="CHAVEC" 
    Then PROGRAMACAO = VSDGPROGREP
    Else PROGRAMACAO = NLANC
         Home
         Moveto [Numero da Programacao]
         Locate VSDGPROGREP
         If RetVal
            Then Mensagem("N§ da Programa‡„o "+VSDGPROGREP+" j  existe na rela‡Æo das programa‡”es de visita !")
                 Moveto [Numero da Programacao]
                 Locate PROGRAMACAO
                 Moveto [Situacao da Programacao]
                 Loop
         EndIf
         AUX_PROG    = VSDGPROGREP
 EndIf   
 QuitLoop
EndWhile
                        
MSG = ""
If PROGRAMACAO<>""                  
   Then Do_It!                
        ClearAll
        CoedIt "VisitaC"
        Moveto [Numero da Programacao]
        Locate PROGRAMACAO
        If RetVal
           Then CopyToArray REG_PROG
                Home
                For i From 1 to 10
                  Moveto [Numero da Programacao]
                  End
                  If PARAM="CHAVEC" 
                     Then If IsBlank([])
                             Then AUX_PROG="1"
                             Else AUX_PROG=StrVal(NumVal([])+1)
                          EndIf  
                  EndIf
                  AUX_PROG=AlinhM(AUX_PROG,6)
                  REG_PROG["Numero da Programacao"]=AUX_PROG
                  Down
                  CopyFromArray REG_PROG
                  PostRecord KeyViol LeaveLocked
                  If RetVal     
                     Then UnLockRecord
                          Do_It!
                          ClearAll
                          
                          {Ask} {VisitaC}
                          Moveto [Numero da Programacao  ] TypeIn "~AUX_PROG"
                          Moveto [Valor da Comissao      ] TypeIn "Changeto Blank"
                          Do_It!
                          ClearAll
                          
                          ;---- Cidade -----------------------------------------
                          {Ask} {VisitaCD} Check
                          Moveto [Numero da Programacao] TypeIn "~PROGRAMACAO"
                          Do_it!
                          ClearAll
                          
                          {Ask} {Answer}
                          Moveto [Numero da Programacao] TypeIn "Changeto ~AUX_PROG"
                          Do_it!
                          ClearAll        
                          
                          Add "Answer" "VisitaCD"
                          ClearAll
                          
                          {Ask} {VisitaCD}
                          Moveto [Numero da Programacao  ] TypeIn "~AUX_PROG"
                          Moveto [Pedido_Quantidade      ] TypeIn "Changeto Blank"
                          Moveto [Pedido_Valor           ] TypeIn "Changeto Blank"
                          Do_It!
                          ClearAll
                                                    
                          ;---- Cliente ----------------------------------------
                          {Ask} {VisitaCL} Check
                          Moveto [Numero da Programacao] TypeIn "~PROGRAMACAO"
                          Do_it!
                          ClearAll
                          
                          {Ask} {Answer}
                          Moveto [Numero da Programacao] TypeIn "Changeto ~AUX_PROG"
                          Do_it!
                          ClearAll           
                          
                          Add "Answer" "VisitaCL"
                          ClearAll
                          
                          {Ask} {VisitaCL}
                          Moveto [Numero da Programacao  ] TypeIn "~AUX_PROG"
                          Moveto [Pedido_Quantidade      ] TypeIn "Changeto Blank"
                          Moveto [Pedido_Valor           ] TypeIn "Changeto Blank"
                          Moveto [Pedido_NumeroItens     ] TypeIn "Changeto Blank"
                          Do_It!
                          ClearAll   
                          
                          ;---- Comissao ---------------------------------------
                          {Ask} {VisitaCM} Check
                          Moveto [Numero da Programacao] TypeIn "~PROGRAMACAO"
                          Do_it!
                          ClearAll
                          
                          {Ask} {Answer}
                          Moveto [Numero da Programacao] TypeIn "Changeto ~AUX_PROG"
                          Do_it!
                          ClearAll
                          
                          Add "Answer" "VisitaCM"
                          ClearAll
                          
                          MSG = "Programa‡„o Copiada !"
                          QuitLoop
                     Else Del
                  EndIf    
                EndFor
           Else MSG = "Programa‡„o "+PROGRAMACAO+" n„o foi localizada !"
        EndIf    
EndIf   
Carrega_Tabela()

If MSG<>""
   Then Mensagem(MSG)
EndIf   
  
Return True
           
EndProc ;Copiar_Programaca()

;*******************************************************************************
;* Rotina para Calcular o Valor da Comissao                                    *
;*******************************************************************************
Proc Calcular_Comissao()
Private COMISSAO,TAB_ANT,CAMPO_ANT
  
TAB_ANT   = Table()
CAMPO_ANT = Field()
COMISSAO  = 0

Moveto "VisitaCD"
Moveto [Pedido_Meta] VR_META=ImageCSum()

Moveto "VisitaC"
[Valor da Meta    ] = VR_META
SaveTables

Moveto TAB_ANT
Moveto Field CAMPO_ANT

EndProc ;Calcular_Comissao()
              
;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc Carrega_Cliente()
Private i

If CARREGA_CLIENTES
   Then Return
EndIf   

;---- Clientes -----------------------------------------------------------------
Moveto "VisitaCL"    
Aguarde("Aguarde, verificando clientes do vendedor... ")
SEM_REP = True 
If Not Monta_Opcoes_TEMP("Seleciona_Cliente",Format("W4",[VisitaC->Codigo do Representante]))
   Then SEM_REP = False
   Else CARREGA_CLIENTES = True
EndIf
Moveto "VisitaC"

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

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

Moveto "VisitaC"
UnLockRecord
KeyPress "F7"
Del

EndProc   ; (Exclusao_C)

;*******************************************************************************
;* Exclusao do Item                                                            *
;*******************************************************************************
Proc EXCLUSAO_I()
   
Moveto "VisitaCD"
While RecordStatus("New")=False
  EXCLUSAO_V()
EndWhile

Moveto "VisitaCD"
Del   

EndProc ;EXCLUSAO_I()         

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EXCLUSAO_V()

Moveto "VisitaCM"
While RecordStatus("New")=False
  EXCLUSAO_M()
EndWhile

Moveto "VisitaCL"
Del  

EndProc ;EXCLUSAO_V()

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc EXCLUSAO_M()

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

EndProc ;EXCLUSAO_M()

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

FACA_CHAVEC = True
FACA_CHAVEI = False
FACA_CHAVEV = False
FACA_CHAVEM = 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
    While FACA_CHAVEV
      CHAVEV()
      If CHAVEV=9  Then QuitLoop  EndIf
      If CHAVEV=7  Then     Loop  EndIf
      If CHAVEV<>8 Then DIGITAV() EndIf
      While FACA_CHAVEM
        CHAVEM()
        If CHAVEM=9  Then QuitLoop  EndIf
        If CHAVEM=7  Then     Loop  EndIf
        If CHAVEM<>8 Then DIGITAM() EndIf
      EndWhile
    EndWhile
  EndWhile  
EndWhile

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

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

EndProc ;Controla_EdicaoC()       

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

View NOWINDOW "\\Sistemas\\Vendas\\PedidoC" 
CoEdit "VisitaC"

PickForm "F"  

EndProc ;Carrega_Tabela()     

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

PARAM_COPIA_PROG = "CHAVEC"
CARREGA_CLIENTES = False

;---- Monta F1 para Status -----------------------------------------------------
;**** Status *****************************
{Ask} {VisitaST}
Moveto [Codigo do Status   ] Check 
Moveto [Descricao do Status] Check   
Do_It!
ClearAll

Monta_Opcoes_TEMP("Status","")
ClearAll

;**** Cidades ****************************
{Ask} {\\Sistemas\\Cadastro\\Cidades}
Moveto [Cidade             ] Check 
Moveto [UF                 ] Check   
Moveto [Codigo_Cidade      ] Check
Do_It!
ClearAll

Monta_Opcoes_TEMP("Seleciona_Cidade","")
ClearAll

;**** Estados ****************************
{Ask} {\\Sistemas\\Vendas\\Estados}
Moveto [UF                 ] Check   
Moveto [Descricao          ] Check
Do_It!
ClearAll

Monta_Opcoes_TEMP("Seleciona_UF","")
ClearAll

;-------------------------------------------------------------------------------
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