;** Visita_B *******************************************************************
;*  Programa‡Æo de Visitas - Atualizar Registro dos Clientes                   *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 22/05/2015 por Bruno Carvalho
;Ultima Alteracao:   /  /     por 
;Motivo Alteracao:

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Atualiza_Tabelas_Temporarias()

Aguarde("Verificando os registros das visitas...")

;---- Limpando Registros Anteriores --------------------------------------
{Ask} TypeIn Tabela_P Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"   
Moveto [Situacao da Programacao] TypeIn "ABERTO"
{Ask} TypeIn Tabela_C Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] TypeIn "_Cid"
{Ask} TypeIn Tabela_D Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] TypeIn "_Cid"
Moveto [Pedido_Quantidade      ] TypeIn "Changeto Blank"
Moveto [Pedido_Valor           ] TypeIn "Changeto Blank"
Moveto [Pedido_NumeroItens     ] TypeIn "Changeto Blank"
Do_It!
ClearAll

Aguarde("Capturando os registros das visitas: PEDIDOS")

{Ask} TypeIn Tabela_P Enter
Moveto [Data Inicial           ] Check    
Moveto [Data Final             ] Check 
Do_It!
ClearAll

NR=NRecords("Answer")
CONT_DATA = 0
Array DATA_INI[NR]
Array DATA_FIM[NR]

View "Answer"
Scan
  CONT_DATA = CONT_DATA + 1
  DATA_INI[CONT_DATA] = [Data Inicial]
  DATA_FIM[CONT_DATA] = [Data Final]
EndScan
ClearAll
           
;---- Valores Totais dos Pedidos -----------------------------------------
{Ask} TypeIn Tabela_P Enter
Moveto [Codigo da Empresa      ] Check
Moveto [Nome Fantasia Empresa  ] Check 
Moveto [Numero da Programacao  ] Check TypeIn "_NProg"   
Moveto [Codigo do Representante] Check 
Moveto [Nome Fantasia Represent] Check
Moveto [Data Inicial           ] Check    
Moveto [Data Final             ] Check 
Moveto [Situacao da Programacao] Check TypeIn "ABERTO"
{Ask} TypeIn Tabela_C Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Cidade                 ] Check   
Moveto [Codigo_Cidade          ] TypeIn "_Cid"
{Ask} TypeIn Tabela_D Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo                 ] Check 
Moveto [Nome Fantasia EmitDest ] Check
Moveto [Codigo_Cidade          ] Check TypeIn "_Cid"
Moveto [Descricao do Status    ] Check
Do_It!
ClearAll

Tabela_Temp   = Cria_Temp(PrivDir())                      
Copy "Answer" Tabela_Temp
  
Tabela_PedAux = Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Visita\\RM_0100" Tabela_PedAux
Empty Tabela_PedAux

For i From 1 To NR
  AUX_INI = DateVal(DATA_INI[i])
  AUX_FIM = DateVal(DATA_FIM[i])
  
  Aguarde("Verificando PEDIDOS de "+StrVal(AUX_INI)+" at‚ "+StrVal(AUX_FIM))
  
  {Ask} TypeIn Tabela_Temp Enter Check
  Moveto [Codigo do Representante] TypeIn "_Rep"
  Moveto [Codigo                 ] TypeIn "_Cod"
  {Ask} {\\Sistemas\\Vendas\\PedidoC}
  Moveto [Numero do Pedido       ] Check TypeIn "_NPed"
  Moveto [Data de Emissao        ] TypeIn ">=~AUX_INI,<=~AUX_FIM"
  Moveto [Codigo                 ] TypeIn "_Cod"
  Moveto [Valor Nota Fiscal      ] Check 
  Moveto [Codigo do Representante] TypeIn "_Rep"
  {Ask} {\\Sistemas\\Vendas\\PedidoI}
  Moveto [Numero do Pedido       ] TypeIn "_NPed"
  Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade" 
  Do_It!
  ClearAll
  
  If IsEmpty("Answer") Then Loop EndIf
  
  {Ask} {Answer}
  Moveto [Codigo da Empresa      ] TypeIn "_CodE"
  Moveto [Nome Fantasia Empresa  ] TypeIn "_NomF" 
  Moveto [Codigo do Representante] TypeIn "_CodR"
  Moveto [Nome Fantasia Represent] TypeIn "_NomR"
  Moveto [Numero da Programacao  ] TypeIn "_NumP"
  Moveto [Cidade                 ] TypeIn "_Cid"
  Moveto [Data Inicial           ] TypeIn "_DtI"
  Moveto [Data Final             ] TypeIn "_DtF"
  Moveto [Situacao da Programacao] TypeIn "_Sit"  
  Moveto [Descricao do Status    ] TypeIn "_DesS"
  Moveto [Codigo                 ] TypeIn "_CodC"
  Moveto [Nome Fantasia EmitDest ] TypeIn "_NomC"
  Moveto [Numero do Pedido       ] TypeIn "_Ped"
  Moveto [Quantidade             ] TypeIn "_Qtd"
  Moveto [Valor Nota Fiscal      ] TypeIn "_VrN"
  {Ask} TypeIn Tabela_PedAux Enter TypeIn "Fast Insert"
  Moveto [Codigo da Empresa      ] TypeIn "_CodE"
  Moveto [Nome Fantasia Empresa  ] TypeIn "_NomF" 
  Moveto [Codigo do Representante] TypeIn "_CodR"
  Moveto [Nome Fantasia Represent] TypeIn "_NomR"
  Moveto [Numero da Programacao  ] TypeIn "_NumP"
  Moveto [Cidade                 ] TypeIn "_Cid"
  Moveto [Data Inicial           ] TypeIn "_DtI"
  Moveto [Data Final             ] TypeIn "_DtF"
  Moveto [Situacao da Programacao] TypeIn "_Sit"  
  Moveto [Descricao do Status    ] TypeIn "_DesS"
  Moveto [Codigo                 ] TypeIn "_CodC"
  Moveto [Nome Fantasia EmitDest ] TypeIn "_NomC"
  Moveto [Ocorrencia de Erros    ] TypeIn "_Ped"
  Moveto [Quantidade de Itens    ] TypeIn "_Qtd"
  Moveto [Valor Total Pedidos    ] TypeIn "_VrN"
  Do_It!
  ClearAll  
EndFor
Rename Tabela_PedAux "Answer"
 
If IsEmpty("Answer")
   Then Return
EndIf 

Aguarde("Capturando os registros das visitas: CLIENTES")

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Check
Moveto [Nome Fantasia Empresa  ] Check 
Moveto [Codigo do Representante] Check
Moveto [Nome Fantasia Represent] Check
Moveto [Numero da Programacao  ] Check
Moveto [Cidade                 ] Check
Moveto [Data Inicial           ] Check
Moveto [Data Final             ] Check
Moveto [Situacao da Programacao] Check  
Moveto [Descricao do Status    ] Check
Moveto [Codigo                 ] Check
Moveto [Nome Fantasia EmitDest ] Check
Moveto [Ocorrencia de Erros    ] Check "as Numero de Pedidos" 
Moveto [Quantidade de Itens    ] Check 
Moveto [Valor Total Pedidos    ] Check
Do_It!
ClearAll
Copy "Answer" Tabela_Temp

DynArray PED_ERRO[]
CONT = 0
NR = NRecords("Answer")

View "Answer"
Scan
  Barra(NR, RecNo())
  If CONT = 0
     Then MSG = "Aguarde, verificando ocorrencias de erro -> Nenhum Encontrado"
     Else MSG = "Aguarde, verificando ocorrencias de erro -> "+StrVal(CONT)+" Encontrado(s)"
  EndIf    
  Aguarde(MSG+BARRA_STRING)
  GetRecord "\\Sistemas\\Vendas\\PedidoC" [Numero de Pedidos] To REG_PEDC
  If RetVal
     Then If REG_PEDC["Data de Emissao"]>=[Data Inicial] And REG_PEDC["Data de Emissao"]<=[Data Final]
             Then
             Else CONT = CONT + 1
                  PED_ERRO[CONT] = Format("W6",[Numero de Pedidos])+Format("D13",REG_PEDC["Data de Emissao"])
          EndIf                            
  EndIf   
EndScan
ClearAll
                                             
Tabela_Erro = Cria_Temp(PrivDir())
Copy "Answer" Tabela_Erro
Empty Tabela_Erro 

If DynArraySize(PED_ERRO)>0
   Then Aguarde("Aguarde, verificando ocorrencias de erro -> ...")
        View Tabela_P
        View Tabela_Temp
        View Tabela_Erro
        Coedit "Answer"
        For i From 1 To DynArraySize(PED_ERRO)
          Moveto [Numero de Pedidos]
          Locate SubStr(PED_ERRO[i],1,6)
          If RetVal
             Then CopyToArray REG_PEDC  
                  
                  ;---- Colocando-o na Programa‡Æo com a Data Correspondente ---
                  AUX_REF = DateVal(SubStr(PED_ERRO[i],7,2)+"."+SubStr(PED_ERRO[i],10,2)+"."+SubStr(PED_ERRO[i],13,4))
                  Moveto Tabela_P
                  Scan
                    If AUX_REF>=[Data Inicial] And AUX_REF<=[Data Final]
                       Then REG_PEDC["Numero da Programacao"] = [Numero da Programacao]
                            REG_PEDC["Data Inicial"] = [Data Inicial]
                            REG_PEDC["Data Final"]   = [Data Final]
                            REG_PEDC["Situacao da Programacao"]  = [Situacao da Programacao]
                            REG_PEDC["Descricao do Status"] = ""
                            QuitLoop
                       Else Loop
                    EndIf        
                  EndScan
                  Moveto Tabela_Erro 
                  End Down
                  CopyFromArray REG_PEDC
                  Moveto Tabela_Temp
                  Moveto [Numero de Pedidos]
                  Locate SubStr(PED_ERRO[i],1,6)
                  If RetVal
                     Then Del
                          UnLockRecord
                  EndIf   
                  Moveto "Answer"
          EndIf
        EndFor
EndIf   
Do_It!
ClearAll

Aguarde("Capturando os registros das visitas: CLIENTES")
Rename Tabela_Temp "Answer"

{Ask} {Answer}
Moveto [Codigo da Empresa      ] Check
Moveto [Nome Fantasia Empresa  ] Check 
Moveto [Codigo do Representante] Check
Moveto [Nome Fantasia Represent] Check
Moveto [Numero da Programacao  ] Check
Moveto [Cidade                 ] Check
Moveto [Data Inicial           ] Check
Moveto [Data Final             ] Check
Moveto [Situacao da Programacao] Check  
Moveto [Descricao do Status    ] Check
Moveto [Codigo                 ] Check
Moveto [Nome Fantasia EmitDest ] Check
Moveto [Numero de Pedidos      ] TypeIn "Calc Count as Numero de Pedidos" 
Moveto [Quantidade de Itens    ] TypeIn "Calc Sum as Quantidade"
Moveto [Valor Total Pedidos    ] TypeIn "Calc Sum as Valor Nota Fiscal"
Do_It!
ClearAll

{Ask} TypeIn Tabela_C Enter
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] TypeIn "_CodC"
{Ask} {Answer}
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo                 ] TypeIn "_Cod"
Moveto [Numero de Pedidos      ] TypeIn "_QtdP"
Moveto [Quantidade             ] TypeIn "_Qtd"
Moveto [Valor Nota Fiscal      ] TypeIn "_NumP"
{Ask} TypeIn Tabela_D Enter
Moveto [Codigo da Empresa      ] TypeIn "_CodE"
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] TypeIn "_CodC"
Moveto [Codigo                 ] TypeIn "_Cod"
Moveto [Pedido_Quantidade      ] TypeIn "Changeto _QtdP"
Moveto [Pedido_Valor           ] TypeIn "Changeto _NumP"
Moveto [Pedido_NumeroItens     ] TypeIn "Changeto _Qtd"
Do_It!
ClearAll

Aguarde("Capturando os registros das visitas: CIDADES")

;----- Limpando regstros anteriores [Pedido_Quantidade] ------------------------
{Ask} TypeIn Tabela_P Enter
Moveto [Codigo da Empresa      ] Check TypeIn "_CodE" 
Moveto [Numero da Programacao  ] Check TypeIn "_NProg"   
Moveto [Situacao da Programacao] Check TypeIn "ABERTO"
{Ask} TypeIn Tabela_D Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] TypeIn "_CodC" 
{Ask} TypeIn Tabela_C Enter  
Moveto [Codigo da Empresa      ] TypeIn "_CodE" 
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] TypeIn "_CodC"
Moveto [Pedido_Quantidade      ] TypeIn "Changeto Blank"
Do_It!
ClearAll

;----- Atualizando registros [Pedido_Quantidade] da tabela de Cidades ---
{Ask} TypeIn Tabela_P Enter
Moveto [Codigo da Empresa      ] Check TypeIn "_CodE" 
Moveto [Numero da Programacao  ] Check TypeIn "_NProg"   
Moveto [Situacao da Programacao] TypeIn "ABERTO"
{Ask} TypeIn Tabela_D Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] Check 
Moveto [Pedido_Quantidade      ] TypeIn "Calc Sum as QtdPedido"
Do_It!
ClearAll

{Ask} {Answer}
Moveto [Codigo da Empresa      ] TypeIn "_CodE" 
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] TypeIn "_CodC"
Moveto [QtdPedido              ] TypeIn "_QtdP"
{Ask} TypeIn Tabela_C Enter
Moveto [Codigo da Empresa      ] TypeIn "_CodE" 
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] TypeIn "_CodC"
Moveto [Pedido_Quantidade      ] TypeIn "Changeto _QtdP"
Do_It!
ClearAll

EndProc ;Atualiza_Tabelas_Temporarias()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Relacao_Visitas()

Aguarde("Montando relat¢rio das visitas: Etapa 1")
TEMP = True

Empty Tabela

;---- Tabela Temporaria --------------------------------------------------------
{Ask} {Visita_P} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.." 
Moveto [Numero da Programacao  ] TypeIn "~VSDGPROGRAMACAO.."   
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
Moveto [Data Inicial           ] TypeIn ">=~VSDGDTINI"   
Moveto [Data Final             ] TypeIn "<=~VSDGDTFIM"
Do_IT!
ClearAll

Tabela_P = Cria_Temp(PrivDir())
Copy "Answer" Tabela_P

{Ask} TypeIn Tabela_P Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
{Ask} {Visita_C} Check
Moveto [Numero da Programacao  ] TypeIn "_NProg"
If VSDGCIDADE<>""
   Then Moveto [Cidade] TypeIn VSDGCIDADE
EndIf   
Do_IT!
ClearAll

Tabela_C = Cria_Temp(PrivDir())
Copy "Answer" Tabela_C

{Ask} TypeIn Tabela_P Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
{Ask} TypeIn Tabela_C Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"  
Moveto [Codigo_Cidade          ] TypeIn "_Cid"
{Ask} {Visita_D} Check
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo_Cidade          ] TypeIn "_Cid"
Do_It!
ClearAll

Tabela_D = Cria_Temp(PrivDir())
Copy "Answer" Tabela_D

If IsEmpty(Tabela_P) Or IsEmpty(Tabela_C) Or IsEmpty(Tabela_D) 
   Then Return False
EndIf

Atualiza_Tabelas_Temporarias()
Aguarde("Montando relat¢rio das visitas: Etapa 2")

;---- Por Cliente --------------------------------------------------------
{Ask} TypeIn Tabela_P Enter
Moveto [Codigo da Empresa      ] Check 
Moveto [Nome Fantasia Empresa  ] Check 
Moveto [Numero da Programacao  ] Check TypeIn "_NProg"   
Moveto [Codigo do Representante] Check 
Moveto [Nome Fantasia Represent] Check
Moveto [Data Inicial           ] Check   
Moveto [Data Final             ] Check
Moveto [Situacao da Programacao] Check
Moveto [Valor da Comissao      ] Check
{Ask} TypeIn Tabela_C Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Cidade                 ] Check 
Moveto [Codigo_Cidade          ] TypeIn "_Cid"
{Ask} TypeIn Tabela_D Enter
Moveto [Numero da Programacao  ] TypeIn "_NProg"
Moveto [Codigo                 ] Check 
Moveto [Nome Fantasia EmitDest ] Check
Moveto [Codigo_Cidade          ] TypeIn "_Cid"
Moveto [Descricao do Status    ] Check
Moveto [Pedido_Quantidade      ] Check TypeIn "as Numero do Pedido"
Moveto [Pedido_Valor           ] Check TypeIn "as Valor Nota Fiscal"
Moveto [Pedido_NumeroItens     ] Check TypeIn "as Quantidade"
Do_It!
ClearAll

Switch
  Case VSDGOPRELANALSINT="1" :
       ;---- Ocorrˆncia de Erros -----------------------------------------------
       If VSDGOPRELANALSINT="1" And IsAssigned(Tabela_Erro)                                                        
          Then If IsTable(Tabela_Erro)
                  Then {Ask} TypeIn Tabela_Erro Enter
                       Moveto [Codigo da Empresa      ] TypeIn "_CodE" 
                       Moveto [Nome Fantasia Empresa  ] TypeIn "_NomE"
                       Moveto [Numero da Programacao  ] TypeIn "_NProg"
                       Moveto [Codigo do Representante] TypeIn "_CodR"
                       Moveto [Nome Fantasia Represent] TypeIn "_NomF"
                       Moveto [Data Inicial           ] TypeIn "_DtI"
                       Moveto [Data Final             ] TypeIn "_DtF"
                       Moveto [Situacao da Programacao] TypeIn "_Sit"
                       Moveto [Cidade                 ] TypeIn "_Cid"
                       Moveto [Codigo                 ] TypeIn "_CodC"
                       Moveto [Nome Fantasia EmitDest ] TypeIn "_NomC"
                       Moveto [Quantidade de Itens    ] TypeIn "_QtdI"
                       Moveto [Valor Total Pedidos    ] TypeIn "_VrP"
                       Moveto [Descricao do Status    ] TypeIn "_DesS"
                       {Ask} TypeIn Tabela Enter TypeIn "Insert"
                       Moveto [Codigo da Empresa      ] TypeIn "_CodE" 
                       Moveto [Nome Fantasia Empresa  ] TypeIn "_NomE"
                       Moveto [Numero da Programacao  ] TypeIn "_NProg"
                       Moveto [Codigo do Representante] TypeIn "_CodR"
                       Moveto [Nome Fantasia Represent] TypeIn "_NomF"
                       Moveto [Data Inicial           ] TypeIn "_DtI"
                       Moveto [Data Final             ] TypeIn "_DtF"
                       Moveto [Situacao da Programacao] TypeIn "_Sit"
                       Moveto [Cidade                 ] TypeIn "_Cid"
                       Moveto [Codigo                 ] TypeIn "_CodC"
                       Moveto [Nome Fantasia EmitDest ] TypeIn "_NomC"
                       Moveto [Quantidade de Itens    ] TypeIn "_QtdI"
                       Moveto [Valor Total Pedidos    ] TypeIn "_VrP"
                       Moveto [Descricao do Status    ] TypeIn "_DesS"
                       Do_it!
                       ClearAll
                       
                       NR = NRecords(Tabela)
                       View Tabela_Erro
                       Coedit Tabela
                       Scan 
                         Barra(NR, RecNo())
                         Aguarde("Aguarde, verificando ocorrencias de erro -> ... "+BARRA_STRING)
                          
                         PEDIDO  = ""
                         NPROG   = [Numero da Programacao]
                         CODIGO  = [Codigo]
                         
                         Moveto Tabela_Erro
                         Moveto [Numero da Programacao]
                         Locate NPROG
                         If RetVal
                            Then While NPROG=[Numero da Programacao]
                                   If CODIGO = [CODIGO]
                                      Then If PEDIDO=""
                                              Then PEDIDO = [Numero de Pedidos]
                                              Else PEDIDO = PEDIDO + ", " + [Numero de Pedidos]
                                           EndIf  
                                   EndIf
                                   Skip
                                   If Eot() Then QuitLoop EndIf
                                   Locate Next NPROG
                                   If Not RetVal Then QuitLoop EndIf 
                                 EndWhile
                         EndIf
                         Moveto Tabela
                         If PEDIDO<>""
                            Then If Search(",",PEDIDO)>0
                                    Then [Ocorrencia de Erros] = "Cliente nao Programado -> Pedidos: "+PEDIDO
                                    Else [Ocorrencia de Erros] = "Cliente nao Programado -> Pedido: "+PEDIDO
                                 EndIf   
                                 UnLockRecord
                         EndIf  
                       EndScan
                       Do_it!
                       ClearAll
               EndIf
       EndIf
  Case VSDGOPRELANALSINT="2" And (VSDGMODELO="1" Or VSDGMODELO="3" Or VSDGMODELO="4") :
       {Ask} {Answer}
       Moveto [Codigo da Empresa      ] Check 
       Moveto [Nome Fantasia Empresa  ] Check 
       Moveto [Codigo do Representante] Check            
       Moveto [Nome Fantasia Represent] Check
       Moveto [Cidade                 ] Check 
       Moveto [Numero do Pedido       ] TypeIn "Calc Sum as Numero de Pedidos"
       Moveto [Codigo                 ] TypeIn "Calc Count as Numero de Clientes"
       Moveto [Valor Nota Fiscal      ] TypeIn "Calc Sum as Valor Nota Fiscal"
       Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade"
       Do_it!
       ClearAll
  Case VSDGOPRELANALSINT="2" And (VSDGMODELO="2" Or VSDGMODELO="5" Or VSDGMODELO="6") : 
       {Ask} {Answer}
       Moveto [Codigo da Empresa      ] Check
       Moveto [Numero da Programacao  ] Check
       Moveto [Valor da Comissao      ] Check  
       Moveto [Nome Fantasia Empresa  ] Check 
       Moveto [Codigo do Representante] Check            
       Moveto [Nome Fantasia Represent] Check
       Moveto [Situacao da Programacao] Check
       Moveto [Data Inicial           ] Check "_DtI"
       Moveto [Data Final             ] Check "_DtF"
       Moveto [Numero do Pedido       ] TypeIn "Calc Sum as Numero de Pedidos"
       Moveto [Codigo                 ] TypeIn "Calc Count as Numero de Clientes"
       Moveto [Valor Nota Fiscal      ] TypeIn "Calc Sum as Valor Nota Fiscal"
       Moveto [Quantidade             ] TypeIn "Calc Sum as Quantidade"
       Do_it!
       ClearAll         
EndSwitch

{Ask} {Answer}
Moveto [Codigo da Empresa      ] TypeIn "_CodE" 
Moveto [Nome Fantasia Empresa  ] TypeIn "_NomE" 
Moveto [Codigo do Representante] TypeIn "_CodR"
Moveto [Nome Fantasia Represent] TypeIn "_NomR"
Moveto [Valor Nota Fiscal      ] TypeIn "_NumP"
Moveto [Quantidade             ] TypeIn "_Qtd" 
Switch
  Case VSDGOPRELANALSINT="1"                    :
       Moveto [Numero da Programacao  ] TypeIn "_NProg"
       Moveto [Cidade                 ] TypeIn "_Cid"
       Moveto [Data Inicial           ] TypeIn "_DtI"
       Moveto [Data Final             ] TypeIn "_DtF"
       Moveto [Situacao da Programacao] TypeIn "_Sit"  
       Moveto [Descricao do Status    ] TypeIn "_DesS"
       Moveto [Codigo                 ] TypeIn "_CodC"
       Moveto [Nome Fantasia EmitDest ] TypeIn "_NomF" 
       Moveto [Valor da Comissao      ] TypeIn "_VrC"
  Case VSDGOPRELANALSINT="2" And (VSDGMODELO="1" Or VSDGMODELO="3" Or VSDGMODELO="4") :
       Moveto [Cidade                 ] TypeIn "_Cid"  
       Moveto [Numero de Pedidos      ] TypeIn "_QtdP"
       Moveto [Numero de Clientes     ] TypeIn "_QtdC"
  Case VSDGOPRELANALSINT="2" And (VSDGMODELO="2" Or VSDGMODELO="5" Or VSDGMODELO="6") :
       Moveto [Numero da Programacao  ] TypeIn "_NProg"
       Moveto [Valor da Comissao      ] TypeIn "_VrC"
       Moveto [Situacao da Programacao] TypeIn "_Sit"
       Moveto [Data Inicial           ] TypeIn "_DtI" 
       Moveto [Data Final             ] TypeIn "_DtF"
       Moveto [Numero de Pedidos      ] TypeIn "_QtdP"
       Moveto [Numero de Clientes     ] TypeIn "_QtdC"           
EndSwitch
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa      ] TypeIn "_CodE" 
Moveto [Nome Fantasia Empresa  ] TypeIn "_NomE"
Moveto [Codigo do Representante] TypeIn "_CodR"
Moveto [Nome Fantasia Represent] TypeIn "_NomR"
Moveto [Valor Total Pedidos    ] TypeIn "_NumP"
Moveto [Quantidade de Itens    ] TypeIn "_Qtd"
Switch
  Case VSDGOPRELANALSINT="1"                    :
       Moveto [Numero da Programacao  ] TypeIn "_NProg"
       Moveto [Cidade                 ] TypeIn "_Cid" 
       Moveto [Data Inicial           ] TypeIn "_DtI" 
       Moveto [Data Final             ] TypeIn "_DtF" 
       Moveto [Situacao da Programacao] TypeIn "_Sit"   
       Moveto [Descricao do Status    ] TypeIn "_DesS"
       Moveto [Codigo                 ] TypeIn "_CodC"
       Moveto [Nome Fantasia EmitDest ] TypeIn "_NomF"     
       Moveto [Valor da Comissao      ] TypeIn "_VrC"
  Case VSDGOPRELANALSINT="2" And (VSDGMODELO="1" Or VSDGMODELO="3" Or VSDGMODELO="4") :
       Moveto [Cidade                 ] TypeIn "_Cid"
       Moveto [Numero de Pedidos      ] TypeIn "_QtdP"
       Moveto [Numero de Clientes     ] TypeIn "_QtdC"  
  Case VSDGOPRELANALSINT="2" And (VSDGMODELO="2" Or VSDGMODELO="5" Or VSDGMODELO="6") :
       Moveto [Numero da Programacao  ] TypeIn "_NProg"
       Moveto [Valor da Comissao      ] TypeIn "_VrC"
       Moveto [Situacao da Programacao] TypeIn "_Sit"
       Moveto [Data Inicial           ] TypeIn "_DtI" 
       Moveto [Data Final             ] TypeIn "_DtF"
       Moveto [Numero de Pedidos      ] TypeIn "_QtdP"
       Moveto [Numero de Clientes     ] TypeIn "_QtdC"    
EndSwitch
Do_It!
ClearAll

If VSDGOPRELANALSINT="2" And (VSDGMODELO="3" Or VSDGMODELO="4" Or VSDGMODELO="5" Or VSDGMODELO="6")
   Then {Ask} TypeIn Tabela Enter
        Moveto [Codigo da Empresa      ] Check 
        Moveto [Nome Fantasia Empresa  ] Check
        Moveto [Valor Total Pedidos    ] TypeIn "Calc Sum as Valor Total Pedidos"
        Moveto [Quantidade de Itens    ] TypeIn "Calc Sum as Quantidade de Itens"
        Moveto [Numero de Pedidos      ] TypeIn "Calc Sum as Numero de Pedidos"
        Moveto [Numero de Clientes     ] TypeIn "Calc Sum as Numero de Clientes"
        Switch
          Case VSDGMODELO="3" :
               Moveto [Codigo do Representante] Check
               Moveto [Nome Fantasia Represent] Check
          Case VSDGMODELO="4" :
               Moveto [Cidade                 ] Check
          Case VSDGMODELO="5" :
               Moveto [Data Inicial           ] Check
               Moveto [Data Final             ] Check
          Case VSDGMODELO="6" :
               Moveto [Numero da Programacao  ] Check
               Moveto [Codigo do Representante] Check
               Moveto [Nome Fantasia Represent] Check
               Moveto [Valor da Comissao      ] Check
               Moveto [Situacao da Programacao] Check 
               Moveto [Data Inicial           ] Check 
               Moveto [Data Final             ] Check
        EndSwitch
        Do_It!
        ClearAll
        
        Empty Tabela
        
        {Ask} {Answer}
        Moveto [Codigo da Empresa      ] TypeIn "_CodE" 
        Moveto [Nome Fantasia Empresa  ] TypeIn "_NomE"
        Moveto [Valor Total Pedidos    ] TypeIn "_NumP"
        Moveto [Quantidade de Itens    ] TypeIn "_Qtd"
        Moveto [Numero de Pedidos      ] TypeIn "_QtdP"
        Moveto [Numero de Clientes     ] TypeIn "_QtdC"
        Switch
          Case VSDGMODELO="3" :
               Moveto [Codigo do Representante] TypeIn "_CodR"
               Moveto [Nome Fantasia Represent] TypeIn "_CodN"
          Case VSDGMODELO="4" :
               Moveto [Cidade                 ] TypeIn "_Cid"
          Case VSDGMODELO="5" :
               Moveto [Data Inicial           ] TypeIn "_DtI"
               Moveto [Data Final             ] TypeIn "_DtF"
          Case VSDGMODELO="6" :
               Moveto [Numero da Programacao  ] TypeIn "_NProg"
               Moveto [Codigo do Representante] TypeIn "_CodR"
               Moveto [Nome Fantasia Represent] TypeIn "_NomF"
               Moveto [Valor da Comissao      ] TypeIn "_VrC"
               Moveto [Situacao da Programacao] TypeIn "_Sit" 
               Moveto [Data Inicial           ] TypeIn "_DtI"
               Moveto [Data Final             ] TypeIn "_DtF"
        EndSwitch
        {Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
        Moveto [Codigo da Empresa      ] TypeIn "_CodE" 
        Moveto [Nome Fantasia Empresa  ] TypeIn "_NomE"
        Moveto [Valor Total Pedidos    ] TypeIn "_NumP"
        Moveto [Quantidade de Itens    ] TypeIn "_Qtd"
        Moveto [Numero de Pedidos      ] TypeIn "_QtdP"
        Moveto [Numero de Clientes     ] TypeIn "_QtdC"
        Switch
          Case VSDGMODELO="3" :
               Moveto [Codigo do Representante] TypeIn "_CodR"
               Moveto [Nome Fantasia Represent] TypeIn "_CodN"
          Case VSDGMODELO="4" :
               Moveto [Cidade                 ] TypeIn "_Cid"
          Case VSDGMODELO="5" :
               Moveto [Data Inicial           ] TypeIn "_DtI"
               Moveto [Data Final             ] TypeIn "_DtF"
          Case VSDGMODELO="6" :
               Moveto [Numero da Programacao  ] TypeIn "_NProg"
               Moveto [Codigo do Representante] TypeIn "_CodR"
               Moveto [Nome Fantasia Represent] TypeIn "_NomF"
               Moveto [Valor da Comissao      ] TypeIn "_VrC" 
               Moveto [Situacao da Programacao] TypeIn "_Sit" 
               Moveto [Data Inicial           ] TypeIn "_DtI"
               Moveto [Data Final             ] TypeIn "_DtF"               
        EndSwitch  
        Do_It!
        ClearAll 
EndIf     

If VSDGOPRELANALSINT="1" And VSDGMODELO="2"  
   Then If IsTable(Tabela_Erro)
           Then {Ask} TypeIn Tabela_Erro Enter
                Moveto [Numero da Programacao] TypeIn "_NProg"
                Moveto [Codigo               ] TypeIn "_Cod"
                {Ask} TypeIn Tabela Enter TypeIn "Delete" 
                Moveto [Numero da Programacao] TypeIn "_NProg"
                Moveto [Codigo               ] TypeIn "_Cod"
                Do_it!
                ClearAll
                
                If IsTable("Deleted")
                   Then If Not IsEmpty("Deleted")
                           Then Empty Tabela
                                Add "Deleted" Tabela
                                ClearAll
                                {Ask} TypeIn Tabela_P Enter
                                Moveto [Numero da Programacao] TypeIn "_Prog"
                                Moveto [Valor da Comissao    ] TypeIn "_VrC"
                                {Ask} TypeIn Tabela Enter
                                Moveto [Numero da Programacao] TypeIn "_Prog"
                                Moveto [Valor da Comissao    ] TypeIn "Changeto _VrC"
                                Do_it!
                                ClearAll
                           Else TEMP = False
                        EndIf
                   Else TEMP = False     
                EndIf
           Else TEMP = False 
        EndIf   
EndIf

If Not TEMP
   Then MSG = "N„o h  registros com ocorrˆncia de erros!"
EndIf   
       
Return TEMP

EndProc ;Relacao_Visitas()

;*******************************************************************************
;* Rotina para Finalizar Visitas                                               *
;*******************************************************************************
Proc Finalizar_Visitas()

{Ask} TypeIn Tabela_P Enter
Moveto [Situacao da Programacao] TypeIn "Changeto FINALIZADO" 
Do_It!
ClearAll

{Tools} {More} {Add} TyPeIn Tabela_P Enter {Visita_P}
If MenuChoice()="NewEntries"
   Then {Update}
EndIf
ClearAll
{Tools} {More} {Add} TyPeIn Tabela_C Enter {Visita_C}
If MenuChoice()="NewEntries"
   Then {Update}
EndIf
ClearAll
{Tools} {More} {Add} TyPeIn Tabela_D Enter {Visita_D}
If MenuChoice()="NewEntries"
   Then {Update}
EndIf
ClearAll

EndProc ;Finalizar_Visitas()

;*******************************************************************************
;* Rotina para Atualizar Valor da Comissao de cada representante nos pedidos   *
;*******************************************************************************
Proc Atualiza_Comissao()

{Ask} TypeIn Tabela_P Enter
Moveto [Data Inicial           ] Check    
Moveto [Data Final             ] Check 
Do_It!
ClearAll

Release Vars NR,CONT_DATA,DATA_INI,DATA_FIM
NR=NRecords("Answer")
CONT_DATA = 0
Array DATA_INI[NR]
Array DATA_FIM[NR]

View "Answer"
Scan
  CONT_DATA = CONT_DATA + 1
  DATA_INI[CONT_DATA] = [Data Inicial]
  DATA_FIM[CONT_DATA] = [Data Final]
EndScan
ClearAll

For i From 1 To NR
  AUX_INI = DateVal(DATA_INI[i])
  AUX_FIM = DateVal(DATA_FIM[i])
  
  Aguarde("Atualizando comissao nos PEDIDOS de "+StrVal(AUX_INI)+" at‚ "+StrVal(AUX_FIM))
  
  {Ask} TypeIn Tabela_P Enter
  Moveto [Numero da Programacao    ] TypeIn "_NProg"   
  Moveto [Codigo do Representante  ] TypeIn "_Rep"
  Moveto [Situacao da Programacao  ] TypeIn "ABERTO"
  Moveto [Valor da Comissao        ] TypeIn "_VrC"
  Moveto [Data Inicial             ] TypeIn "~AUX_INI"
  Moveto [Data Final               ] TypeIn "~AUX_FIM"
  {Ask} TypeIn Tabela_C Enter
  Moveto [Numero da Programacao    ] TypeIn "_NProg"   
  Moveto [Codigo_Cidade            ] TypeIn "_Cid"
  {Ask} TypeIn Tabela_D Enter
  Moveto [Numero da Programacao    ] TypeIn "_NProg"
  Moveto [Codigo                   ] TypeIn "_Cod"
  Moveto [Codigo_Cidade            ] TypeIn "_Cid"  
  {Ask} {\\Sistemas\\Vendas\\PedidoC} 
  Moveto [Data de Emissao          ] TypeIn ">=~AUX_INI,<=~AUX_FIM"
  Moveto [Codigo                   ] TypeIn "_Cod"
  Moveto [Codigo do Representante  ] TypeIn "_Rep"
  Moveto [Comissao do Representante] TypeIn "Changeto _VrC"
  Do_It!
  ClearAll
EndFor

If Istable(Tabela_Erro)
   Then If Not IsEmpty(Tabela_Erro)
           Then Aguarde("Atualizando comissao nos PEDIDOS ... [OE]")
                {Ask} TypeIn Tabela_Erro Enter
                Moveto [Numero da Programacao    ] TypeIn "_NProg"
                Moveto [Numero de Pedidos        ] TypeIn "_NPed"
                {Ask} TypeIn Tabela_P Enter
                Moveto [Numero da Programacao    ] TypeIn "_NProg"
                Moveto [Situacao da Programacao  ] TypeIn "ABERTO"
                Moveto [Valor da Comissao        ] TypeIn "_VrC"
                {Ask} {\\Sistemas\\Vendas\\PedidoC} 
                Moveto [Numero do Pedido         ] TypeIn "_NPed"
                Moveto [Comissao do Representante] TypeIn "Changeto _VrC"   
                Do_It!
                ClearAll
        EndIf        
EndIf                
     
EndProc ;Atualiza_Comissao()

;*******************************************************************************
;* Carrega F1 Personalizado do ShowDialog                                      *
;*******************************************************************************
Proc SDCarrega_F1(PARAM)
Private PARAM 

Switch 
  Case PARAM = "Programacao"    : {Ask} {\\Sistemas\\Visita\\Visita_P}
                                  Moveto [Numero da Programacao  ] Check 
                                  Moveto [Nome Fantasia Represent] Check    
                                  Do_It!
                                  Moveto "\\Sistemas\\Visita\\Visita_P"
                                  ClearImage
                                  Monta_Opcoes("Programa‡„o da Visita","F1_Temp")
  Case PARAM = "Representante"  : {Ask} {\\Sistemas\\Visita\\Visita_P}
                                  Moveto [Numero da Programacao  ] TypeIn "~VSDGPROGRAMACAO.." 
                                  Moveto [Codigo do Representante] Check
                                  Moveto [Nome Fantasia Represent] Check    
                                  Do_It!
                                  Moveto "\\Sistemas\\Visita\\Visita_P"                         
                                  ClearImage                                                                                       
                                  Monta_Opcoes("Vendedor","F1_Temp")
  Case PARAM = "Cidade"         : {Ask} {\\Sistemas\\Visita\\Visita_P}
                                  Moveto [Numero da Programacao  ] TypeIn "_NProg,~VSDGPROGRAMACAO.." 
                                  Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
                                  {Ask} {\\Sistemas\\Visita\\Visita_C}
                                  Moveto [Numero da Programacao  ] TypeIn "_NProg" 
                                  Moveto [Codigo_Cidade          ] Check
                                  Moveto [Cidade                 ] Check
                                  Moveto [UF                     ] Check 
                                  Do_It!
                                  Moveto "\\Sistemas\\Visita\\Visita_P"
                                  ClearImage   
                                  Moveto "\\Sistemas\\Visita\\Visita_C"
                                  ClearImage                                                                          
                                  Monta_Opcoes("Cidade da Visita","F1_Temp")
  Case PARAM = "Cliente"        : {Ask} {\\Sistemas\\Visita\\Visita_P}
                                  Moveto [Numero da Programacao  ] TypeIn "_NProg,~VSDGPROGRAMACAO.."
                                  Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
                                  If VSDGCIDADE<>""
                                     Then {Ask} {\\Sistemas\\Visita\\Visita_C}
                                          Moveto [Numero da Programacao] TypeIn "_NProg"
                                          Moveto [Codigo_Cidade        ] TypeIn "_CD"
                                          Moveto [Cidade               ] TypeIn VSDGCIDADE 
                                  EndIf  
                                  {Ask} {\\Sistemas\\Visita\\Visita_D}
                                  Moveto [Numero da Programacao  ] Check TypeIn "_NProg"
                                  If VSDGCIDADE<>""
                                     Then Moveto [Codigo_Cidade  ] TypeIn "_CD" 
                                  EndIf   
                                  Moveto [Codigo                 ] Check
                                  Moveto [Nome Fantasia EmitDest ] Check
                                  Do_It!
                                  Moveto "\\Sistemas\\Visita\\Visita_P"
                                  ClearImage   
                                  Moveto "\\Sistemas\\Visita\\Visita_D"
                                  ClearImage                          
                                  If VSDGCIDADE<>""
                                     Then Moveto "\\Sistemas\\Visita\\Visita_C"
                                          ClearImage                
                                  EndIf                                                
                                  Monta_Opcoes("Cliente da Visita","F1_Temp")                           
EndSwitch                           

Return True

EndProc ;SDCarrega_F1()

;*******************************************************************************
;* Rotina Monta Lista de Tabelas a Processar                                   *
;*******************************************************************************
Proc ListadeTabelas()

If IsAssigned(Array_Tabelas)
   Then Release Vars Array_Tabelas
EndIf
DynArray Array_Tabelas[]

Array_Tabelas[01]="Visita_P"
Array_Tabelas[02]="Visita_C"
Array_Tabelas[03]="Visita_D"

EndProc

;*******************************************************************************
;* Rotina Bloqueia Tabelas da Pasta                                            *
;*******************************************************************************
Proc BloqueiaTabelas(Pasta)
Private MSG, Pasta, i

For i From 1 to DynArraySize(Array_Tabelas)
  If IsTable(Pasta+Array_Tabelas[i])
     Then Lock Pasta+Array_Tabelas[i] FL
          If Not RetVal
             Then MSG=Completa("O usu rio "+Upper(ErrorUser())+" esta usando uma rotina do sistema",52," ")+"//"
                  MSG=MSG+Completa("que atualiza a programa‡„o de visitas!",52," ")+"////"
                  MSG=MSG+Completa("- Contact -lo para liberar esta rotina",52," ")+"//"            
                  MSG=MSG+Completa("- Processo Abortado",52," ")+"//"
                  Mensagem(MSG)
                  Return False
          EndIf
  EndIf
EndFor

Return True
EndProc

;*******************************************************************************
;* Rotina Desbloqueia Tabelas da Pasta                                         *
;*******************************************************************************
Proc DesbloqueiaTabelas(Pasta)
Private Pasta, i

For i From 1 to DynArraySize(Array_Tabelas)
  If IsTable(Pasta+Array_Tabelas[i])
     Then UnLock Pasta+Array_Tabelas[i] FL
  EndIf
EndFor

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf        
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
          Switch
            Case Campo="TG_MODELO" :
                 Switch             
                   Case VSDGOPRELANALSINT="1" :
                        Echo Normal
                        Echo Off
                        ShowPopup " Modelos Sint‚ticos " CENTERED
                          "~1~ MODELO ANALITICO           " : " Modelo Analitico                            " :"1",
                          "~2~ APENAS OCORRENCIA DE ERROS " : " Modelo Analitico: APENAS OCORRENCIA DE ERROS" :"2",
                          Separator,        
                          "~C~ancelar                     " : " Cancelar a Opera‡„o                         " : "CANCELAR"
                        EndMenu
                        To MenuVar
                        Echo Off
                   Case VSDGOPRELANALSINT="2" :     
                        Echo Normal
                        Echo Off
                        ShowPopup " Modelos Sint‚ticos " CENTERED
                          "~1~ EMPRESA/VENDEDOR/CIDADES " : " Modelo Sint‚tico: EMPRESA/VENDEDOR/CIDADES " :"1",
                          "~2~ EMPRESA/VENDEDOR/PERIODO " : " Modelo Sint‚tico: EMPRESA/VENDEDOR/PERIODO " :"2",
                          "~3~ EMPRESA/VENDEDOR         " : " Modelo Sint‚tico: EMPRESA/VENDEDOR         " :"3",
                          "~4~ EMPRESA/CIDADE           " : " Modelo Sint‚tico: EMPRESA/CIDADES          " :"4",
                          "~5~ EMPRESA/PERIODO          " : " Modelo Sint‚tico: EMPRESA/PERIODO          " :"5",
                          "~6~ EMPRESA/PROGRAMACAO      " : " Modelo Sint‚tico: EMPRESA/PROGRAMACAO      " :"6",
                          Separator,        
                          "~C~ancelar                   " : " Cancelar a Opera‡„o                        " : "CANCELAR"
                        EndMenu
                        To MenuVar
                        Echo Off
                 EndSwitch
                 If MenuVar<>"CANCELAR" And MenuVar<>"Esc"
                     Then VSDGMODELO = MenuVar    
                 EndIf
            Case Campo="VIS_PROGRAMACAO"   : If SDCarrega_F1("Programacao")
                                                Then AUX_MAR = "1" 
                                                     Seleciona_Opcoes("Programa‡„o da Visita","F1_Temp")   
                                             EndIf
            Case Campo="VIS_REPRESEN"      : If SDCarrega_F1("Representante")
                                                Then AUX_REF = "1"
                                                     Seleciona_Opcoes("Vendedor","F1_Temp")  
                                             EndIf
            Case Campo="VIS_CIDADE"        : If SDCarrega_F1("Cidade")
                                                Then AUX_REF = "1"
                                                     Seleciona_Opcoes("Cidade da Visita","F1_Temp")  
                                             EndIf                                                               
          EndSwitch      
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="VIS_PROGRAMACAO"   : Campo="TG_EMPRESA"
            Case Campo="VIS_REPRESEN"      : Campo="VIS_PROGRAMACAO"
            Case Campo="VIS_CIDADE"        : Campo="VIS_REPRESEN"
            Case Campo="TG_OPRELANALSINT"  : Campo="VIS_CIDADE"  
            Case Campo="TG_MODELO"         : Campo="TG_OPRELANALSINT"
            Case Campo="TG_DTINI"          : Campo="TG_MODELO"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="VIS_ATUALIZA"      : Campo="TG_DTFIM"           
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESA"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"        : Campo="VIS_PROGRAMACAO" 
                    Case Campo="VIS_PROGRAMACAO"   : Campo="VIS_REPRESEN"
                         VSDGPROGRAMACAO = ControlValue("VIS_PROGRAMACAO")
                         If Not IsBlank(VSDGPROGRAMACAO) 
                            Then SDCarrega_F1("Programacao")
                                 VSDGPROGRAMACAO = AlinhM(VSDGPROGRAMACAO,6)
                                 If Not Checa_Opcoes("Programa‡„o da Visita",VSDGPROGRAMACAO)
                                    Then VSDGPROGRAMACAO    = ""
                                         Mensagem("Programa‡„o de Visita inv lida !")
                                         Campo="VIS_PROGRAMACAO"      
                                 EndIf
                          EndIf              
                    Case Campo="VIS_REPRESEN"      : Campo="VIS_CIDADE"     
                         VSDGREPRESEN = ControlValue("VIS_REPRESEN")
                         If IsBlank(VSDGREPRESEN) 
                            Then VSDGNOMREPR = "TODOS"   
                            Else SDCarrega_F1("Representante")
                                 VSDGREPRESEN = AlinhM(VSDGREPRESEN,4)
                                 If Not Checa_Opcoes("Vendedor",VSDGREPRESEN)     
                                    Then VSDGREPRESEN = ""
                                         VSDGNOMREPR  = ""
                                         Switch
                                           Case Not IsBlank(VSDGPROGRAMACAO) : 
                                                MSG = "Vendedor inv lido ou n„o corresponde a programa‡„o informada!"
                                           OtherWise                         :
                                                MSG = "Vendedor inv lido"
                                         EndSwitch
                                         Mensagem(MSG)
                                         Campo="VIS_REPRESEN"   
                                 EndIf
                          EndIf  
                    Case Campo="VIS_CIDADE"        : Campo="TG_OPRELANALSINT"    
                         VSDGCIDADE = ControlValue("VIS_CIDADE")
                         If IsBlank(VSDGCIDADE) 
                            Then VSDGCIDADE = ""   
                            Else SDCarrega_F1("Cidade")
                                 If Not Checa_Opcoes("Cidade da Visita",VSDGCIDADE)
                                    Then VSDGCIDADE = ""
                                         Switch
                                           Case Not IsBlank(VSDGREPRESEN) And Not IsBlank(VSDGPROGRAMACAO) : 
                                                MSG = "Cidade inv lida ou n„o corresponde//ao vendedor ou programa‡„o informada!"
                                           Case Not IsBlank(VSDGREPRESEN) : 
                                                MSG = "Cidade inv lida ou n„o corresponde ao vendedor informado!"     
                                           Case Not IsBlank(VSDGPROGRAMACAO) : 
                                                MSG = "Cidade inv lida ou n„o corresponde a programa‡„o informada!"
                                           OtherWise                         :
                                                MSG = "Cidade inv lida"
                                         EndSwitch
                                         Mensagem(MSG)
                                         Campo="VIS_CIDADE"    
                                 EndIf
                          EndIf
                    Case Campo="TG_OPRELANALSINT"  : Campo="TG_MODELO"
                    Case Campo="TG_MODELO"         : Campo="TG_DTINI"
                         VSDGMODELO=ControlValue("TG_MODELO")
                         Switch
                           case VSDGOPRELANALSINT="1" :
                                Switch
                                  Case VSDGMODELO="2" : VSDGNOMMODELO = "MODELO ANALITICO - APENAS OCORRENCIA DE ERROS"
                                  OtherWise           : VSDGMODELO    = "1"
                                                        VSDGNOMMODELO = "MODELO ANALITICO"
                                EndSwitch
                           case VSDGOPRELANALSINT="2" :
                                Switch
                                  Case VSDGMODELO="2" : VSDGNOMMODELO = "MODELO SINTETICO - EMPRESA/VENDEDOR/PERIODO" 
                                  Case VSDGMODELO="3" : VSDGNOMMODELO = "MODELO SINTETICO - EMPRESA/VENDEDOR"
                                  Case VSDGMODELO="4" : VSDGNOMMODELO = "MODELO SINTETICO - EMPRESA/CIDADES"
                                  Case VSDGMODELO="5" : VSDGNOMMODELO = "MODELO SINTETICO - EMPRESA/PERIODO"
                                  Case VSDGMODELO="6" : VSDGNOMMODELO = "MODELO SINTETICO - EMPRESA/PROGRAMACAO"
                                  OtherWise           : VSDGMODELO    = "1"
                                                        VSDGNOMMODELO = "MODELO SINTETICO - EMPRESA/VENDEDOR/CIDADES"
                                EndSwitch
                         EndSwitch
                    Case Campo="TG_DTINI"          : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"          : Campo="VIS_ATUALIZA"
                    Case Campo="VIS_ATUALIZA"      : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

If Campo="TG_MODELO" And VSDGOPRELANALSINT="2"
   Then TECLA = TECLA + "F1=Modelos  "
EndIf

Switch
  Case Campo="VIS_PROGRAMACAO":
     MSG_CAMPO="Informe a Programa‡Æo da Visita"
  Case Campo="VIS_REPRESEN":
     MSG_CAMPO="Informe o Representante"
  Case Campo="VIS_CIDADE":
     MSG_CAMPO="Informe a Cidade"
  Case Campo="TG_MODELO":
     Switch
       Case VSDGOPRELANALSINT="1" : 
            MSG_CAMPO="1=Analitico 2=Analitico/Ocorrencia de Erros"
       Case VSDGOPRELANALSINT="2" :
            MSG_CAMPO="1=Vend/Cidade 2=Vend/Periodo 3=Vendedor 4=Cidade 5=Periodo 6=Programacao"
     EndSwitch                
Endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc ;SD_Dialog()

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
Sys_Valor()

VSDGEMPRESA          = ""
VSDGNOMEMP           = ""
VSDGPROGRAMACAO      = ""
VSDGREPRESEN         = ""
VSDGNOMREPR          = ""
VSDGCIDADE           = ""
VSDGOPRELANALSINT    = ""
VSDGNOMOPRELANALSINT = ""  
VSDGMODELO           = ""
VSDGNOMMODELO        = ""
VSDGDTINI            = BlankDate()
VSDGDTFIM            = BlankDate()

Array VIS_ATUALIZA[2]
VIS_ATUALIZA[1]="Finalizar as visitas em ABERTO ?"
VIS_ATUALIZA[2]="Atualiza o VALOR DA COMISSAO nos pedidos ?"

Array Check_ATUALIZA[2]
Check_ATUALIZA[1]=False
Check_ATUALIZA[2]=False

While True
  ShowDialog "Programa‡„o de Visita" Proc "SD_Dialog"                        
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 07,12 Height 18 Width 58

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA" To VSDGEMPRESA
    Accept @ 01,09 Width 23 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 00,33 "Programa‡Æo"  For "VIS_PROGRAMACAO"
    Accept @ 01,34 Width 11 "A6"  Picture "#*#" Tag "VIS_PROGRAMACAO"    To VSDGPROGRAMACAO

    Label  @ 02,00 "Vendedor"  For "VIS_REPRESEN"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "VIS_REPRESEN" To VSDGREPRESEN
    Accept @ 03,09 Width 23 "A20" Picture "!*!" Tag "VIS_NOMREPR"  To VSDGNOMREPR
                                                                                                                 
    Label  @ 02,33 "Cidade"  For "VIS_CIDADE"
    Accept @ 03,34 Width 20 "A17" Picture "!*!" Tag "VIS_CIDADE"  To VSDGCIDADE
                                                                                                               
    Label  @ 04,00 "Op‡„o do Relat¢rio" For "TG_OPRELANALSINT"
    Accept @ 05,01 Width 04 "A1"  Picture "1,2" Tag "TG_OPRELANALSINT" To VSDGOPRELANALSINT    
    Accept @ 05,06 Width 26 "A23"  Picture "!*!" Tag "TG_NOMOPRELANASINT" To VSDGNOMOPRELANALSINT    
    
    Label  @ 06,00 "Modelo do Relat¢rio" For "TG_MODELO"
    Accept @ 07,01 Width 04 "A1"  Picture "1,2,3,4,5,6" Tag "TG_MODELO" To VSDGMODELO
    Accept @ 07,06 Width 48 "A45"  Picture "!*!" Tag "TG_NOMMODELO" To VSDGNOMMODELO
    
    Label  @ 08,00 "Per¡odo Referente" For "TG_DTINI"
    Label  @ 09,00 "de" For "TG_DTINI"
    Accept @ 09,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,17 "at‚" For "TG_DTFIM"
    Accept @ 09,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
    
    CheckBoxes @ 11,00 Height 2 Width 50 Tag "VIS_ATUALIZA" 
    VIS_ATUALIZA[1] to Check_ATUALIZA[1],
    VIS_ATUALIZA[2] to Check_ATUALIZA[2]
    
    Pushbutton @ 14,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 14,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If IsBlank(VSDGDTFIM) 
     Then Mensagem("Data Final Inv lida !")
          Loop
  EndIf

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  ListadeTabelas()
  If (BloqueiaTabelas("\\Sistemas\\Visita\\"))
     Then Tabela = Cria_Temp(PrivDir())
          Copy "\\Base\\Sistemas\\Visita\\RM_0100" Tabela
                  
          Switch
            Case Not IsBlank(VSDGPROGRAMACAO) : MSG = "N„o h  pedido(s) vinculado(s) a esta programa‡„o!" 
            Case Not IsBlank(VSDGREPRESEN)    : MSG = "N„o h  pedido(s) vinculado(s) a este vendedor!"
            Case Not IsBlank(VSDGCIDADE)      : MSG = "N„o h  pedido(s) vinculado(s) a esta cidade!"
            OtherWise                         : MSG = "N„o h  pedido(s) vinculado(s)!"
          EndSwitch
          
          If Not Relacao_Visitas() Then Mensagem(MSG) Loop EndIf
          Switch
            Case VSDGOPRELANALSINT="2" And VSDGMODELO="1" : IMPRIREL(Tabela,"1") 
            Case VSDGOPRELANALSINT="2" And VSDGMODELO="2" : IMPRIREL(Tabela,"2")
            Case VSDGOPRELANALSINT="2" And VSDGMODELO="3" : IMPRIREL(Tabela,"3")
            Case VSDGOPRELANALSINT="2" And VSDGMODELO="4" : IMPRIREL(Tabela,"4")
            Case VSDGOPRELANALSINT="2" And VSDGMODELO="5" : IMPRIREL(Tabela,"5")
            Case VSDGOPRELANALSINT="2" And VSDGMODELO="6" : IMPRIREL(Tabela,"6")
            Case VSDGOPRELANALSINT="1"                    : IMPRIREL(Tabela,"R")
          EndSwitch
          
          If Check_ATUALIZA[2]
             Then ConfGeral("Deseja atualizar a comissao do representante nos pedidos ?")
                  If Ok="S"
                     Then Atualiza_Comissao()
                  EndIf
          EndIf
          
          If Check_ATUALIZA[1]
             Then ConfGeral("Deseja realmente finalizar as visitas em ABERTO ?")
                  If Ok="S"
                     Then Finalizar_Visitas()
                  EndIf
          EndIf
          
          Delete Tabela
          Delete Tabela_P
          Delete Tabela_C
          Delete Tabela_D
          If IsAssigned(Tabela_Erro)
             Then If IsTable(Tabela_Erro)
                     Then Delete Tabela_Erro
                  EndIf
          EndIf
          If IsAssigned(Tabela_PedAux)
             Then If IsTable(Tabela_PedAux)
                     Then Delete Tabela_PedAux
                  EndIf
          EndIf
          If IsAssigned(Tabela_Temp)
             Then If IsTable(Tabela_Temp)
                     Then Delete Tabela_Temp
                  EndIf
          EndIf 
  EndIf
  ListadeTabelas()
  DesbloqueiaTabelas("\\Sistemas\\Visita\\")
EndWhile

ClearAll
Release Vars All
Release Procs All