;** MLista  ********************************************************************
;*  monta listas                                                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 24/02/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc             

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)  
Private Disparo,Campo,Evento,Elemento,Temp,MSG_CAMPO,TECLA

Temp=True
MSG_CAMPO=""
TECLA=""

If Disparo="OPEN" 
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf

If Disparo="CLOSE"
   Then If RELATORIOS
          Then Info1=""
               Info2=""
               Info3=""
               Info4=""
               Info5=""
        EndIf       
EndIf

If Disparo="UPDATE" And Campo="TG_Registro"
   Then If RELATORIOS 
           Then Temp=True
                Mostra_Informacoes()
                Return Temp
        EndIf     
EndIf


If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =   9: Temp=False
     Case Evento["KeyCode"] = -59:
          Switch
            Case Campo="TG_CODSTATUS"    : ArraySeleciona(Campo,arraystatus)
            Case Campo="TG_CODSITUACAO"  : ArraySeleciona(Campo,arraysitcliente)
            Case Campo="TG_CODCONSFINAL" : ArraySeleciona(Campo,arrayconsfinal) 
            Case Campo="TG_CODTIPO"      : ArraySeleciona(Campo,arraytipo) 
            Case Campo="TG_CODTPASSIST"  : ArraySeleciona(Campo,arraytpassist) 

            Case Campo="TG_DESTREL" : If Not RELATORIOS()
                                         Then VSDGDESTREL=""
                                              VSDGMODELO   =""
                                         Else VSDGDESTREL=Codigo_Info 
                                              VSDGMODELO   =Informacoes
                                      EndIf   
            OtherWise                 : Dialog_F1()
          EndSwitch  
                
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch          
            Case Campo="TG_Registro"       : CancelDialog                                             
            Case Campo="TG_REGISTRO"       : Campo="NO_ARRAY"
            Case Campo="TG_DESTINATINI"    : Campo="NO"
            Case Campo="TG_DESTINATFIM"    : Campo="TG_DESTINATINI"
            Case Campo="TG_CODSTATUS"      : Campo="TG_DESTINATFIM"
            Case Campo="TG_CODCONSFINAL"   : Campo="TG_CODSTATUS"
            Case Campo="TG_CODSITUACAO"    : Campo="TG_CODCONSFINAL"
            Case Campo="TG_CODTIPO"        : Campo="TG_CODSITUACAO"
            Case Campo="TG_CODTPASSIST"    : Campo="TG_CODTIPO"
            Case Campo="TG_AREA"           : Campo="TG_CODTPASSIST"
            Case Campo="TG_ESTADO"         : Campo="TG_AREA"
            Case Campo="TG_CIDADE"         : Campo="TG_ESTADO"
            Case Campo="TG_ATIVIDADE"      : Campo="TG_CIDADE"
            Case Campo="TG_REPRESEN"       : Campo="TG_ATIVIDADE"     
            Case Campo="TG_GERENCIA"       : Campo="TG_REPRESEN"
            Case Campo="TG_ROTA"           : Campo="TG_GERENCIA"
            Case Campo="TG_CONTATO"        : Campo="TG_ROTA"
            Case Campo="TG_NOMOPRELCODALF" : Campo="TG_CONTATO"  
            Case Campo="TG_NOMDATA"        : Campo="TG_NOMOPRELCODALF"
            Case Campo="TG_DTINI"          : Campo="TG_NOMDATA"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="TG_VRINI"          : Campo="TG_NOMDATA"
            Case Campo="TG_VRFIM"          : Campo="TG_VRINI"
            Case Campo="TG_DESTREL"        : Campo="TG_NOMDATA"
            Case Campo="YES" Or Campo="NO" : Campo="TG_DESTINATINI"
          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_DESTINATINI" :Campo="TG_DESTINATFIM"
                    Case Campo="TG_DESTINATFIM" :
                         If VSDGDESTINATFIM < VSDGDESTINATINI
                            Then Mensagem("Codigo final menor que codigo inicial !")
                            Else Campo="TG_CODSTATUS"
                         EndIf 

                    Case Campo="TG_CODSTATUS"     : 
                         if ArrayLocate(Campo,arraystatus)
                            then Campo="TG_CODCONSFINAL"
                         endif
                         
                    Case Campo="TG_CODCONSFINAL"  : 
                         if ArrayLocate(Campo,arrayconsfinal)
                            then Campo="TG_CODSITUACAO"
                         endif

                    Case Campo="TG_CODSITUACAO"   : 
                         if ArrayLocate(Campo,arraysitcliente)
                            then 
                                 Campo="TG_CODTIPO"
                         endif

                    Case Campo="TG_CODTIPO"       : 
                         if ArrayLocate(Campo,arraytipo)
                            then Campo="TG_CODTPASSIST"
                         endif
                         
                    Case Campo="TG_CODTPASSIST"   :
                         if ArrayLocate(Campo,arraytpassist)
                            then Campo="TG_AREA"
                         endif
                         
                    Case Campo="TG_AREA"          : 
                         VSDGAREA=ControlValue("TG_AREA")
                         If Not IsBlank(VSDGAREA)
                           Then VSDGAREA=ALINHM(VSDGAREA,2)
                                View NOWINDOW "\\Sistemas\\Cadastro\\Area"
                                Moveto [Codigo da Area]
                                Locate VSDGAREA
                                If Not RetVal
                                   Then MENSAGEM("Area n„o Cadastrada !")
                                        Valor=False
                                   Else VSDGNOMAREA=[Descricao da Area]
                                        Campo="TG_ESTADO"
                                EndIf
                                ClearAll
                           Else VSDGNOMAREA="TODAS"
                                Campo="TG_ESTADO"
                         EndIf
                    Case Campo="TG_ESTADO"      : Campo="TG_CIDADE"
                    Case Campo="TG_CIDADE"      : Campo="TG_ATIVIDADE"
                         If Upper(VSDGCIDADE)="TODAS"
                            Then CIDADE=""
                            Else CIDADE=VSDGCIDADE
                         EndIf
                         
                    Case Campo="TG_ATIVIDADE"   : Campo="TG_REPRESEN"     
                    Case Campo="TG_REPRESEN"    : Campo="TG_GERENCIA"          
                    Case Campo="TG_GERENCIA"    : Campo="TG_ROTA"
                    Case Campo="TG_ROTA"          : 
                         VSDGROTA=ControlValue("TG_ROTA")
                         If Not IsBlank(VSDGROTA)
                           Then VSDGROTA=ALINHM(VSDGROTA,4)
                                View NOWINDOW "\\Sistemas\\Cadastro\\Rota"
                                Moveto [Codigo da Rota]
                                Locate VSDGROTA
                                If Not RetVal
                                   Then MENSAGEM("Rota n„o Cadastrada !")
                                        Valor=False
                                   Else VSDGNOMROTA=[Descricao da Rota]
                                        Campo="TG_CONTATO"
                                EndIf
                                ClearAll
                           Else VSDGNOMROTA="TODAS"
                                Campo="TG_CONTATO"
                         EndIf

                    Case Campo="TG_CONTATO"      : Campo="TG_NOMOPRELCODALF"
                         VSDGCONTATO=ControlValue("TG_CONTATO")

                    Case Campo="TG_NOMOPRELCODALF" : 
                         VSDGNOMOPRELCODALF=ControlValue("TG_NOMOPRELCODALF")
                         If IsBlank(VSDGNOMOPRELCODALF) 
                            Then VSDGNOMOPRELCODALF="CODIGO"
                         EndIf
                         Carrega_VarSeleciona()   
                         Campo="TG_NOMDATA"
                         
                    Case Campo="TG_NOMDATA"     : 
                         VSDGNOMDATA=ControlValue("TG_NOMDATA")
                         If IsBlank(VSDGNOMDATA)
                            Then VSDGNOMDATA="IGNORAR"
                         EndIf
                         If VSDGNOMDATA<>"COM COMPRAS II"
                            Then VSDGVRINI=BlankNum()
                                 VSDGVRFIM=BlankNum()
                         EndIf
                         If VSDGNOMDATA="IGNORAR"
                            Then VSDGDTINI=BlankDate()
                                 VSDGDTFIM=BlankDate()
                                 Campo="TG_DESTREL"
                            Else Campo="TG_DTINI"
                         EndIf            
                         Carrega_VarSeleciona()   
                         
                    Case Campo="TG_DTINI"       : 
                         If VSDGNOMDATA<>"IGNORAR" And VSDGDTINI=BlankDate()
                            Then Mensagem("Data inicial inv lida !")
                            Else Campo="TG_DTFIM"
                         EndIf   
                    Case Campo="TG_DTFIM"       : 
                         If VSDGNOMDATA="COM COMPRAS II"
                            Then Campo="TG_VRINI"
                            Else Campo="TG_DESTREL"
                         EndIf            
                    Case Campo="TG_VRINI"     : Campo="TG_VRFIM" 
                         VSDGVRINI=ControlValue("TG_VRINI")
                    Case Campo="TG_VRFIM"     :                   
                         VSDGVRFIM=ControlValue("TG_VRFIM")
                         If IsBlank(VSDGVRFIM)
                            Then Mensagem("Valor final inv lida !")
                            Else Campo="TG_DESTREL"
                         EndIf   

                    Case Campo="TG_DESTREL"    :  
                         VSDGDESTREL=ControlValue("TG_DESTREL")
                            
                         If Not IsBlank(VSDGDESTREL)
                            Then If Type(NumVal(VSDGDESTREL))="N"
                                    Then If Len(VSDGDESTREL) >= 1 And Len(VSDGDESTREL) <=3
                                            Then Carrega_Array("DestRel")
                                                 VSDGDESTREL=AlinhM(VSDGDESTREL,3)                                                
                                                 For RTW From 1 To ArraySize(Relatorio_Clientes)
                                                   MODELOINVALIDO=True
                                                   If SubStr(Relatorio_Clientes[RTW],1,3)=VSDGDESTREL
                                                      Then MODELOINVALIDO=False
                                                           Informacoes   = Rtrim(SubStr(Relatorio_Clientes[RTW],5,80))
                                                           VSDGDESTREL = Rtrim(SubStr(Relatorio_Clientes[RTW],1,4))
                                                           VSDGMODELO    = Rtrim(SubStr(Relatorio_Clientes[RTW],5,80))
                                                           QuitLoop
                                                   EndIf        
                                                 EndFor
                                                 If MODELOINVALIDO
                                                    Then Mensagem("Informar n£mero de relat¢rio v lido!")
                                                         Campo="TG_DESTREL"
                                                    Else Campo="YES"
                                                 EndIf    
                                            Else Mensagem("Informar n£mero de relat¢rio v lido!")
                                                 Campo="TG_DESTREL"     
                                         EndIf
                                    Else Campo="YES"
                                 EndIf
                         EndIf  
                    Case Campo="TG_Registro"  : AcceptDialog   
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="":
       MSG_CAMPO=""
  Case Campo="TG_NOMDATA":
       MSG_CAMPO=""   
  Case Campo="TG_ROTA":
       MSG_CAMPO="Informe a Rota"   
  Case Campo="TG_NOMOPRELCODALF":
       MSG_CAMPO="C=C¢digo  A=Alfab‚tica"   
  Case Campo="TG_DESTREL":
       MSG_CAMPO="Modelo de Relat¢rio para Impress„o"
  Case Campo="TG_DTINI"  : MSG_CAMPO="Informe a Data Inicial"   
  Case Campo="TG_DTFIM"  : MSG_CAMPO="Informe a Data Final"
  Case Campo="TG_VRINI"  : MSG_CAMPO="Informe o valor inicial"   
  Case Campo="TG_VRFIM"  : MSG_CAMPO="Informe a valor final"
Endswitch

If Campo="TG_CODSTATUS"         Or
   Campo="TG_CODSITUACAO"       Or
   Campo="TG_CODTIPO"           Or
   Campo="TG_CODCONSFINAL"      Or
   Campo="TG_CODTPASSIST"       Or
   Campo="TG_NOMDATA"           Or    
   Campo="TG_NOMOPRELCODALF"    Or
   Campo="TG_DESTREL"           Or
   Campo="TG_ROTA"    
   Then MSG_CAMPO=MSG_CAMPO+", [F1]Consultar tabela"
EndIf

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc   

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc ArrayPegaDados(tag,tipo)
Private tag, tipo, i, retorno, posi, posf, s

retorno=""

for i from 1 to DynArraySize(ListaDeArrays) 
  if search(tag,ListaDeArrays[i])>0 then
      switch
        case tipo="array":
          posi=search("array",ListaDeArrays[i])
          if posi>0
             then posf=searchfrom(",",ListaDeArrays[i],posi)
                  if posf>0
                     then return ltrim(rtrim(substr(ListaDeArrays[i],posi,posf-posi)))
                  endif
          endif           
    
        case tipo="titulo":
          posi=search("tit=",ListaDeArrays[i])
          if posi>0
             then return ltrim(rtrim(substr(ListaDeArrays[i],posi+4,40)))
          endif           
    
        case tipo="vrdefaultvsdgcod":
          posi=search("vrdef=",ListaDeArrays[i])
          if posi>0
             then posf=searchfrom(",",ListaDeArrays[i],posi)
                  if posf>0
                     then s=ltrim(rtrim(substr(ListaDeArrays[i],posi+6,posf-(posi+6))))
                          if s="null" then s="" endif
                          return s
                  endif
          endif           
        
        case tipo="vsdgcod":
          posi=search("VSDGCOD",ListaDeArrays[i])
          if posi>0
             then posf=searchfrom(",",ListaDeArrays[i],posi)
                  if posf>0
                     then return ltrim(rtrim(substr(ListaDeArrays[i],posi,posf-posi)))
                  endif
          endif           
    
        case tipo="vsdgnom":
          posi=search("VSDGNOM",ListaDeArrays[i])
          if posi>0
             then posf=searchfrom(",",ListaDeArrays[i],posi)
                  if posf>0
                     then return ltrim(rtrim(substr(ListaDeArrays[i],posi,posf-posi)))
                  endif
          endif           
        
        case tipo="tudo":
          posi=search("tudo=",ListaDeArrays[i])
          if posi>0
             then posf=searchfrom(",",ListaDeArrays[i],posi)
                  if posf>0
                     then return ltrim(rtrim(substr(ListaDeArrays[i],posi+5,posf-(posi+5))))
                  endif
          endif           
        
      endswitch
  endif
endfor

return retorno
endproc

;*******************************************************************************
;* Rotina para cria‡Æo/carga de lista de array                                 *
;*******************************************************************************
Proc ArrayAdd(nomearray,string)
Private nomearray,string

;---------- Dados Obrigatorios --------------------
;ArrayAdd("Criar")
;ArrayAdd(...)
;ArrayAdd("Fim")

switch
  case Upper(string)="CRIAR" or Upper(string)="FIM" :
    Contador_arraylista = 0 
    
  otherwise                 :    
    If Not IsAssigned(nomearray)
       Then Mensagem("Array nÆo definido !")
            Return
    EndIf   

    Contador_arraylista = Contador_arraylista + 1
    If string = "Separator"
       Then string = Fill(chr(196),74)
    EndIf 
    nomearray[Contador_arraylista]=string

endswitch

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc ArrayLocate(tag,nomearray)
private tag, i, nomearray, posi, vr, s, vsdgcodtemp, vsdgnomtemp

vsdgcodtemp=ArrayPegaDados(tag,"vsdgcod")
vsdgnomtemp=ArrayPegaDados(tag,"vsdgnom")
vr        =ControlValue(tag)

if vr=""
   then s=ArrayPegaDados(tag,"vrdefaultvsdgcod")
        if s="" 
           then 
                varassign vsdgcodtemp from s
                varassign vsdgnomtemp from ArrayPegaDados(tag,"tudo")
                return true
           else 
                vr=s
        endif   
endif        
varassign vsdgcodtemp from vr

foreach i in nomearray
  posi=searchfrom(" ",nomearray[i],1)
  if posi>1
     then
          if Ltrim(RTrim(substr(nomearray[i],1,posi)))=vr
             then
                  varassign vsdgnomtemp from Ltrim(SubStr(nomearray[i],posi+1,75))
                  return true
          endif   
  endif
endforeach 

fastmsg("Valor inv lido !")
return false
endproc

;*******************************************************************************
;* Rotina para Controle do Modelo de Relat¢rio                                 *
;*******************************************************************************
Proc SD_ListaArray(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento,
        Temp, MSG_CAMPO, TECLA,
        Janela_SD_ListaArray, CoresSD_ListaArray, WinArrayListaArray

Temp     =True
MSG_CAMPO=""
TECLA    =""

If Disparo="OPEN"    
   Then 
        If Not IsAssigned(SYS_COR_RODAPE) 
           Then SYS_COR_RODAPE =31
                SYS_COR_RODAPED=30 
        EndIf

        Window handle Dialog To Janela_SD_ListaArray
        If IsAssigned(CoresSD_ListaArray)
           Then Release Vars CoresSD_ListaArray
        EndIf
        Dynarray WinArrayListaArray[]
        Dynarray CoresSD_ListaArray[]
                                                          
        CoresSD_ListaArray[01]=SYS_COR_RODAPE                    ;Borda e T¡tulo          Branco_Azul
        CoresSD_ListaArray[25]=SYS_COR_RODAPE                    ;Lista

        If SYS_COR_RODAPE =79
           then  CoresSD_ListaArray[26]=124                      ;linha selecionada                    
        endif

        Window SetColors Janela_SD_ListaArray     From CoresSD_ListaArray
        Window SetAttributes Janela_SD_ListaArray From WinArrayListaArray

        AoCriarShowDialog() 
EndIf

If Disparo="SELECT"  
   Then VSDGOPLISTAARRAY=ControlValue("TG_OPLISTAARRAY")
        AcceptDialog 
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9    : Temp=False
     Case Evento["KeyCode"] = 27   : CancelDialog
     Case Evento["KeyCode"] = 13   :
       VSDGOPLISTAARRAY=ControlValue("TG_OPLISTAARRAY")
       If SubStr(listaarray[VSDGOPLISTAARRAY],1,1)=chr(196)  
          Then FastMsg("Op‡„o inv lida !")       
          Else AcceptDialog
       EndIf   
   EndSwitch
EndIf
Switch
  Case Campo="TG_OPLISTAARRAY":
     MSG_CAMPO="Informe o c¢digo desejado !"
     TECLA    ="=Selecionar  "
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Modelo de Relat¢rio                                                         *
;*******************************************************************************
Proc ArraySeleciona(tag,nomearray)
private tag, tl,i ,ml, listaarray, oksel, VSDGOPLISTAARRAY,
        titulo, vsdgcodtemp, vsdgnomtemp, posi

titulo   =ArrayPegaDados(tag,"titulo")
vsdgcodtemp   =ArrayPegaDados(tag,"vsdgcod")
vsdgnomtemp   =ArrayPegaDados(tag,"vsdgnom")

Array listaarray[DynArraySize(nomearray)]
For i from 1 to DynArraySize(nomearray)
  listaarray[i]=nomearray[i]
endfor 

;Ser  necess rio carregar no script os modelos que vÆo pertencer a lista
;Por Exemplo: DefinirListaArray()

;Maximo de 70 Posi‡äes na largura do Array

switch
  case ArraySize(listaarray)>19 : tl=19
  case ArraySize(listaarray)<3  : tl=3 
  otherwise                     : tl=ArraySize(listaarray)
endswitch

ml=0
For i from 1 to ArraySize(listaarray)
  if substr(listaarray[i],1,1)<>chr(196) and
     len(listaarray[i])>ml 
     then ml=len(listaarray[i]) 
  endif
Endfor
switch
  case ml>74 : ml=74
  case ml<30 : ml=30
endswitch

oksel=False

ShowDialog titulo Proc "SD_ListaArray"
 Trigger "OPEN","SELECT"  
 Key "ENTER","ESC"
  @ 01,01 Height tl+2 Width ml+4

  PickArray @00,00 Height tl width ml+2
   Columns 1
    listaarray
     Tag "TG_OPLISTAARRAY"
      To VSDGOPLISTAARRAY

EndDialog
If RetVal
   Then
        posi=searchfrom(" ",listaarray[VSDGOPLISTAARRAY],1)
        if posi>1
           then
                oksel=True
                varassign vsdgcodtemp from Ltrim(Rtrim(SubStr(listaarray[VSDGOPLISTAARRAY],1,posi)))
                varassign vsdgnomtemp from       Ltrim(SubStr(listaarray[VSDGOPLISTAARRAY],posi+1,75))
        endif
EndIf

return oksel
EndProc ;(ArraySeleciona)


;*******************************************************************************
;* Rotina para defini‡äes de lista de array                                    *
;*******************************************************************************
proc DefinirListaArray()

;               TAG, VSDG..,VSDGNOM.., dynarray, vr default, tudo?, titulosd
DynArray ListaDeArrays[]
ListaDeArrays[1]="TG_CODSTATUS   , VSDGCODSTATUS   , VSDGNOMSTATUS    , arraystatus    , vrdef=1   , tudo=TODOS, tit=Status"
ListaDeArrays[2]="TG_CODSITUACAO , VSDGCODSITUACAO , VSDGNOMSITUACAO  , arraysitcliente, vrdef=null, tudo=TODAS, tit=Situa‡äes"
ListaDeArrays[3]="TG_CODCONSFINAL, VSDGCODCONSFINAL, VSDGNOMCONSFINAL , arrayconsfinal , vrdef=null, tudo=TODOS, tit=Op‡äes"
ListaDeArrays[4]="TG_CODTIPO     , VSDGCODTIPO     , VSDGNOMTIPO      , arraytipo      , vrdef=null, tudo=TODAS, tit=Tipos"
ListaDeArrays[5]="TG_CODTPASSIST , VSDGCODTPASSIST , VSDGNOMTPASSIST  , arraytpassist  , vrdef=null, tudo=TODAS, tit=Tipos"

DynArray arraystatus[]
ArrayAdd(arraystatus,"Criar") ; linha obrigatoria inicial
ArrayAdd(arraystatus,"1 ATIVO")
ArrayAdd(arraystatus,"2 INATIVO")
ArrayAdd(arraystatus,"Fim")

DynArray arraysitcliente[]
ArrayAdd(arraysitcliente,"Criar") ; linha obrigatoria inicial
ArrayAdd(arraysitcliente,"1 OTIMO")
ArrayAdd(arraysitcliente,"2 BOM")
ArrayAdd(arraysitcliente,"3 REGULAR")
ArrayAdd(arraysitcliente,"4 PESSIMO")
ArrayAdd(arraysitcliente,"Separator")
ArrayAdd(arraysitcliente,"5 RECADASTRO")
ArrayAdd(arraysitcliente,"Fim")

DynArray arraytipo[]
ArrayAdd(arraytipo,"Criar") ; linha obrigatoria inicial
ArrayAdd(arraytipo,"F FISICA")
ArrayAdd(arraytipo,"J JURIDICA")
ArrayAdd(arraytipo,"Fim")

DynArray arrayconsfinal[]
ArrayAdd(arrayconsfinal,"Criar") ; linha obrigatoria inicial
ArrayAdd(arrayconsfinal,"S SIM")
ArrayAdd(arrayconsfinal,"N NÇO")
ArrayAdd(arrayconsfinal,"Fim")

DynArray arraytpassist[]
ArrayAdd(arraytpassist,"Criar") ; linha obrigatoria inicial
ArrayAdd(arraytpassist,"E EVENTUAL")
ArrayAdd(arraytpassist,"C CONTRATANTE")
ArrayAdd(arraytpassist,"A ACUMULA ACERTO")
ArrayAdd(arraytpassist,"R RECEBE DIA FIXO")
ArrayAdd(arraytpassist,"Fim")

endproc

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

If Not IsAssigned(SYS_CODIGO_CLIENTE) Then SYS_CODIGO_CLIENTE="" EndIf

VSDGDESTINATINI   = ""
VSDGDESTINATFIM   = ""
VSDGCODSTATUS     = ""
VSDGNOMSTATUS     = ""
VSDGCONSFINAL     = ""
VSDGSITUACAO      = ""
VSDGROTA          = ""
VSDGNOMROTA       = ""
VSDGTIPO          = ""
VSDGTPASSIST      = ""
VSDGESTADO        = ""
VSDGCIDADE        = ""
VSDGREPRESEN      = ""
DESCTP            = "Clientes"
VSDGATIVIDADE     = ""
VSDGAREA          = ""
VSDGDTINI         = BlankDate()
VSDGDTFIM         = BlankDate()
VSDGCIDADE        = ""
VSDGOPRELCODALF   = ""
VSDGOPRELANALSINT = ""
VSDGOBSERVACAO    = ""
VSDGCABECALHO     = ""
VSDGLOCAL         = ""
VSDGDESTREL       = ""
VSDGMODELO        = ""
VSDGDATA          = ""
RELATORIOS        = False
Checa_Lista       = False
CONSULTAF1        = False
FACA_RELATORIO    = "0"
VSDGVRINI         = BlankNum()
VSDGVRFIM         = BlankNum()
Informacoes       =""


definirlistaarray()

While True

  ShowDialog "Relat¢rio de Clientes" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE","SELECT"  
  Mouse "UP"
  Key "TAB","ReverseTab","F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 22 Width 80

    Label  @ 00,00 "Intervalo C¢digo de"  For "TG_DESTINATINI"
    Accept @ 01,02 Width 08 "A5"  Picture "[&,#][#*#]" Tag "TG_DESTINATINI" To VSDGDESTINATINI
    Label  @ 01,10 "at‚"  For "TG_DESTINATFIM"
    Accept @ 01,15 Width 08 "A5"  Picture "[&,#][#*#]" Tag "TG_DESTINATFIM" To VSDGDESTINATFIM

    Label  @ 02,00  "Status do Cliente" For "TG_CODSTATUS"  
    Accept @ 03,01  Width 06 "A03" Picture "!*!" Tag "TG_CODSTATUS" To VSDGCODSTATUS
    Accept @ 03,06  Width 17 "A25" Picture "!*!" Tag "TG_NOMSTATUS" To VSDGNOMSTATUS
    
    Label  @ 04,00 "Consumidor Final" For "TG_CODCONSFINAL"
    Accept @ 05,01  Width 20 "A03" Picture "!*!" Tag "TG_CODCONSFINAL" To VSDGCODCONSFINAL
    Accept @ 05,06  Width 17 "A25" Picture "!*!" Tag "TG_NOMCONSFINAL" To VSDGNOMCONSFINAL

    Label  @ 06,00  "Situacao do Cliente" For "TG_CODSITUACAO"
    Accept @ 07,01  Width 06 "A03" Picture "!*!" Tag "TG_CODSITUACAO" To VSDGCODSITUACAO
    Accept @ 07,06  Width 17 "A25" Picture "!*!" Tag "TG_NOMSITUACAO" To VSDGNOMSITUACAO

    Label  @ 08,00  "Tipo de Pessoa" For "TG_CODTIPO"
    Accept @ 09,01  Width 06 "A03" Picture "!*!" Tag "TG_CODTIPO" To VSDGCODTIPO
    Accept @ 09,06  Width 17 "A25" Picture "!*!" Tag "TG_NOMTIPO" To VSDGNOMTIPO        
    
    Label  @ 10,00  "Tipo Assistˆncia" For "TG_CODTPASSIST"
    Accept @ 11,01  Width 06 "A03" Picture "!*!" Tag "TG_CODTPASSIST" To VSDGCODTPASSIST
    Accept @ 11,06  Width 17 "A25" Picture "!*!" Tag "TG_NOMTPASSIST" To VSDGNOMTPASSIST

    Label  @ 00,23  "Area"  For "TG_AREA"
    Accept @ 01,26  Width 05 "A2"  Picture "!*!" Tag "TG_AREA" To VSDGAREA
    Accept @ 01,30  Width 23 "A30"  Picture "!*!" Tag "TG_NOMAREA" To VSDGNOMAREA  

    Label  @ 02,23  "Estado"  For "TG_ESTADO"
    Accept @ 03,26  Width 05 "A2"  Picture "!*!" Tag "TG_ESTADO" To VSDGESTADO
    Accept @ 03,30  Width 23 "A20" Picture "!*!" Tag "TG_NOMESTADO"  To VSDGNOMESTADO

    Label  @ 04,23  "Cidade"  For "TG_CIDADE"
    Accept @ 05,24  Width 29 "A20"  Picture "!*!" Tag "TG_CIDADE" To VSDGCIDADE   

    Label  @ 06,23  "Atividade"  For "TG_ATIVIDADE"
    Accept @ 07,24  Width 07 "A4"  Picture "!*!" Tag "TG_ATIVIDADE" To VSDGATIVIDADE
    Accept @ 07,30  Width 23 "A30"  Picture "!*!" Tag "TG_NOMATIV" To VSDGNOMATIV

    Label  @ 08,23  "Representante"  For "TG_REPRESEN"
    Accept @ 09,24  Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 09,30  Width 23 "A15" Picture "!*!" Tag "TG_NOMREPR" To VSDGNOMREPR 
    
    Label  @ 10,23 "Gerˆncia " For "TG_GERENCIA"
    Accept @ 11,24 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_GERENCIA" To VSDGGERENCIA
    Accept @ 11,30 Width 23 "A10"  Picture "!*!" Tag "TG_DESCGERENCIA" To VSDGDESCGERENCIA    

    Label  @ 12,23  "Rota"  For "TG_ROTA"
    Accept @ 13,24  Width 07 "A4"  Picture "!*!" Tag "TG_ROTA" To VSDGROTA
    Accept @ 13,30  Width 23 "A15"  Picture "!*!" Tag "TG_NOMROTA" To VSDGNOMROTA


    Label  @ 00,54  "Contato" For "TG_CONTATO"
    Accept @ 01,55  Width 20 "A10"  Picture "!*!" Tag "TG_CONTATO" To VSDGCONTATO   

    Label  @ 02,54  "Op‡„o de Ordem" For "TG_NOMOPRELCODALF"
    Accept @ 03,55  Width 20 "A12" Picture "CODIGO,ALFABETICA" Tag "TG_NOMOPRELCODALF" To VSDGNOMOPRELCODALF   
    Accept @ 03,100 Width 1   "A1" Picture "!*!" Tag "TG_ICOOPRELCODALF" To VSDGICOOPRELCODALF
                
    Label  @ 04,54  "Op‡”es de Datas"  For "TG_NOMDATA"
    Accept @ 05,55  Width 20 "A20"  Picture "!*!" Tag "TG_NOMDATA" To VSDGNOMDATA
    Accept @ 05,100 Width 1   "A1" Picture "!*!" Tag "TG_ICODATA" To VSDGICODATA

    Label  @ 06,54  "Per¡odo Referente" For "TG_DTINI"
    Label  @ 07,54  " de" For "TG_DTINI"
    Accept @ 07,59  Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 08,54  "at‚" For "TG_DTFIM"
    Accept @ 08,59  Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 10,54  "Faixa de valor" For "TG_VRINI"
    Label  @ 11,54  " de" For "TG_VRINI"
    Accept @ 11,59  Width 13 "$"  Picture "#*#.[##]" Tag "TG_VRINI" To VSDGVRINI
    Label  @ 12,54  "at‚" For "TG_VRFIM"
    Accept @ 12,59  Width 13 "$"  Picture "#*#.[##]" Tag "TG_VRFIM" To VSDGVRFIM

    Label  @ 15,00  "Modelo de Relat¢rio"  For "TG_DESTREL"
    Accept @ 16,01  Width 06 "A5"  Picture "!*!" Tag "TG_DESTREL" To VSDGDESTREL
    Accept @ 16,06  Width 71 "A65"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

    
    Pushbutton @ 18,24 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,38 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog 
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf  
                                                   
EndWhile
ClearAll
Release Vars All
Release Procs All
