;** ListRegr *******************************************************************
;*  Rotina para gera‡Æo de lista para sele‡Æo +/- para filtro de Ask           *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/03/2019 por Anivel Augusto Rodrigues 
;Ultima Alteracao: 22/05/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado TG_REPRESEN
;Ultima Alteracao: 31/10/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado TG_DESTIN
;Ultima Alteracao: 22/11/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_MARCA                
;Ultima Alteracao: 07/12/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_EMPRESATE 
;Ultima Alteracao: 01/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_TPLANC           
;Ultima Alteracao: 06/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustess TG_DESTIN                        
;Ultima Alteracao: 09/03/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_CONTA            
;Ultima Alteracao: 14/05/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado TG_TPITEM *Apenas p/ Tipos que controlam estoque
;Ultima Alteracao: 15/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_CONTA filtrar empresa
;Ultima Alteracao: 30/07/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Adicionado TG_TIPOEST
;Ultima Alteracao: 04/08/2020 por Bruno Carvalho
;Motivo Alteracao: Removido TG_TPITEM      
;Ultima Alteracao: 23/09/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado "TG_FAMI", "TG_GRP" e "TG_COR_TECIDO"                    
;Ultima Alteracao: 25/09/2020 por Bruno Carvalho
;Motivo Alteracao: Adicionado Ver ordem C->A                    

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog Grade                                      *
;*******************************************************************************
Proc ListaRegra_AtualizaItemArray(indice,op)
private indice,op,opold 

opold=SubStr(ListaRegra_Array[indice],ListaRegra_ColunaSelecao,1)
switch
  case op=" " and opold=" "     : op=chr(17)
  case op=" " and opold=chr(17) : op=" "      
  case op=" " and opold="-"     : op=" "      
endswitch

ListaRegra_Array[indice]=SubStr(ListaRegra_Array[indice],1,ListaRegra_ColunaSelecao-1)+op
endproc

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog Grade                                      *
;*******************************************************************************
Proc ListaRegra_ChecaOpcoesArray(tipo)
private tipo,wi,s1,s2,s3,s4,op,vrretorno,wcop1,wcop2,result

result=true

s1    =""
s4    =""

wcop1  =0
wcop2  =0
for wi from 1 to dynarraysize(ListaRegra_Array)
  
         op=      substr(ListaRegra_Array[wi],ListaRegra_ColunaSelecao,1)
  vrretorno=rtrim(substr(ListaRegra_Array[wi],ListaRegra_InicioCampoRetorno,ListaRegra_TamanhoCampoRetorno))

  s2=""
  s3=""
  switch
    case op=chr(17) : s2=       "\""+vrretorno+"\""       wcop1=wcop1+1  s4=s4+    vrretorno+"|"
    case op="-"     : s2="not "+"\""+vrretorno+"\""       wcop2=wcop2+1  s4=s4+"-"+vrretorno+"|"
  endswitch

  if not isblank(s1)
     then
          switch
            case op=chr(17) : s2=" or "+s2
            case op="-"     : s2=", "  +s2
          endswitch
  endif   
  s1=s1+s2+s3

endfor

switch
  case tipo=13:
    switch
      case isblank(s1)           : 
        if not ListaRegra_Recarregar
           then Mensagem("NÆo existe sele‡Æo !")           result=false
        endif
          
      case wcop1>0 and wcop2>0   : Mensagem("Sele‡Æo inv lida [+] com [-] ?") result=false 
    endswitch
    
    switch
      Case ListaRegra_CampoDoShowDialog="TG_TPPAGTO"         : 
        VSDGTPPAGTO="?"   VSDGNOMTPPAGTO="Op: "+s4   ListaRegra_VSDGTPPAGTO=s1    ListaRegra_TG_TPPAGTO=s4    ListaRegra_VSDGTPPAGTO_Ativo=True     
                                                                                                              ListaRegra_TG_TPPAGTO_OpVer=ListaRegra_OpVer
      Case ListaRegra_CampoDoShowDialog="TG_TPCART"          : 
        VSDGTPCART="?"    VSDGNOMCART="Op: "+s4      ListaRegra_VSDGTPCART=s1     ListaRegra_TG_TPCART=s4     ListaRegra_VSDGTPCART_Ativo=True     
                                                                                                              ListaRegra_TG_TPCART_OpVer=ListaRegra_OpVer
     
     Case ListaRegra_CampoDoShowDialog="TG_TPLANC"          : 
        VSDGTPLANC="?"    VSDGNOMLANC="Op: "+s4      ListaRegra_VSDGTPLANC=s1     ListaRegra_TG_TPLANC=s4     ListaRegra_VSDGTPLANC_Ativo=True
                                                                                                              ListaRegra_TG_TPLANC_OpVer=ListaRegra_OpVer
     
     Case ListaRegra_CampoDoShowDialog="TG_REPRESEN"         : 
        VSDGREPRESEN="?"  VSDGNOMREPR="Op: "+s4      ListaRegra_VSDGREPRESEN=s1   ListaRegra_TG_REPRESEN=s4   ListaRegra_VSDGREPRESEN_Ativo=True
                                                                                                              ListaRegra_TG_REPRESEN_OpVer=ListaRegra_OpVer
     
     Case ListaRegra_CampoDoShowDialog="TG_DESTIN"           : 
        VSDGDESTIN="?"    VSDGNOMDESTIN="Op: "+s4    ListaRegra_VSDGDESTIN=s1     ListaRegra_TG_DESTIN=s4     ListaRegra_VSDGDESTIN_Ativo=True
                                                                                                              ListaRegra_TG_DESTIN_OpVer=ListaRegra_OpVer
     
     Case ListaRegra_CampoDoShowDialog="TG_FAMI"            :
        VSDGFAMI="?"      VSDGNOMFAMI="Op: "+s4      ListaRegra_VSDGFAMI=s1       ListaRegra_TG_FAMI=s4       ListaRegra_VSDGFAMI_Ativo=True
                                                                                                              ListaRegra_TG_FAMI_OpVer=ListaRegra_OpVer
        
     Case ListaRegra_CampoDoShowDialog="TG_GRP"            :
        VSDGGRP="?"       VSDGNOMGRP="Op: "+s4       ListaRegra_VSDGGRP=s1        ListaRegra_TG_GRP=s4        ListaRegra_VSDGGRP_Ativo=True    
                                                                                                              ListaRegra_TG_GRP_OpVer=ListaRegra_OpVer
     
     Case ListaRegra_CampoDoShowDialog="TG_MARCA"            :
        VSDGMARCA="?"     VSDGNOMMARCA="Op: "+s4     ListaRegra_VSDGMARCA=s1      ListaRegra_TG_MARCA=s4      ListaRegra_VSDGMARCA_Ativo=True
                                                                                                              ListaRegra_TG_MARCA_OpVer=ListaRegra_OpVer
        
     Case ListaRegra_CampoDoShowDialog="TG_COR_TECIDO"            :
        VSDGCORTECIDO="?" VSDGNOMCORTECIDO="Op: "+s4 ListaRegra_VSDGCORTECIDO=s1  ListaRegra_TG_COR_TECIDO=s4 ListaRegra_VSDGCORTECIDO_Ativo=True   
                                                                                                              ListaRegra_TG_COR_TECIDO_OpVer=ListaRegra_OpVer

     Case ListaRegra_CampoDoShowDialog="TG_EMPRESATE"        : 
        VSDGEMPRESA="?"   VSDGNOMEMP="Op: "+s4       ListaRegra_VSDGEMPRESA=s1    ListaRegra_TG_EMPRESATE=s4  ListaRegra_VSDGEMPRESA_Ativo=True
                                                                                                              ListaRegra_TG_EMPRESATE_OpVer=ListaRegra_OpVer
           
     Case ListaRegra_CampoDoShowDialog="TG_CONTA"            : 
        VSDGCONTA="?"     VSDGNOMCONTA="Op: "+s4     ListaRegra_VSDGCONTA=s1      ListaRegra_TG_CONTA=s4      ListaRegra_VSDGCONTA_Ativo=True
                                                                                                              ListaRegra_TG_CONTA_OpVer=ListaRegra_OpVer
           
     Case ListaRegra_CampoDoShowDialog="TG_TIPOEST"          : 
        VSDGTIPOEST="?"   VSDGDESCTIPOEST="Op: "+s4  ListaRegra_VSDGTIPOEST=s1    ListaRegra_TG_TIPOEST=s4    ListaRegra_VSDGTIPOEST_Ativo=True
                                                                                                              ListaRegra_TG_TIPOEST_OpVer=ListaRegra_OpVer
           
    endswitch

  case tipo=27 and ( (wcop1>0 and wcop2 >0) or isblank(s1) ):
    switch
     
      Case ListaRegra_CampoDoShowDialog="TG_TPPAGTO"      :
        VSDGTPPAGTO=""      VSDGNOMTPPAGTO=""     ListaRegra_VSDGTPPAGTO=""     ListaRegra_TG_TPPAGTO=""      ListaRegra_VSDGTPPAGTO_Ativo=False    
     
      Case ListaRegra_CampoDoShowDialog="TG_TPCART"       :
        VSDGTPCART=""       VSDGNOMCART=""        ListaRegra_VSDGTPCART=""      ListaRegra_TG_TPCART=""       ListaRegra_VSDGTPCART_Ativo=False    
        
      Case ListaRegra_CampoDoShowDialog="TG_TPLANC"       :
        VSDGTPLANC=""       VSDGNOMLANC=""        ListaRegra_VSDGTPLANC=""      ListaRegra_TG_TPLANC=""       ListaRegra_VSDGTPLANC_Ativo=False
     
     Case ListaRegra_CampoDoShowDialog="TG_REPRESEN"       :
        VSDGREPRESEN=""     VSDGNOMREPR=""        ListaRegra_VSDGREPRESEN=""    ListaRegra_TG_REPRESEN=""     ListaRegra_VSDGREPRESEN_Ativo=False
     
     Case ListaRegra_CampoDoShowDialog="TG_DESTIN"       :
        VSDGDESTIN=""       VSDGNOMDESTIN=""      ListaRegra_VSDGDESTIN=""      ListaRegra_TG_DESTIN=""       ListaRegra_VSDGDESTIN_Ativo=False    
        
     Case ListaRegra_CampoDoShowDialog="TG_MARCA"       :
        VSDGMARCA=""        VSDGNOMMARCA=""       ListaRegra_VSDGMARCA=""       ListaRegra_TG_MARCA=""        ListaRegra_VSDGMARCA_Ativo=False
     
     Case ListaRegra_CampoDoShowDialog="TG_FAMI"       :
        VSDGFAMI=""         VSDGNOMFAMI=""        ListaRegra_VSDGFAMI=""        ListaRegra_TG_FAMI=""         ListaRegra_VSDGFAMI_Ativo=False
        
     Case ListaRegra_CampoDoShowDialog="TG_GRP"       :
        VSDGGRP=""          VSDGNOMGRP=""         ListaRegra_VSDGGRP=""         ListaRegra_TG_GRP=""          ListaRegra_VSDGGRP_Ativo=False
        
     Case ListaRegra_CampoDoShowDialog="TG_COR_TECIDO"       :
        VSDGCORTECIDO=""    VSDGNOMCORTECIDO=""   ListaRegra_VSDGCORTECIDO=""   ListaRegra_TG_COR_TECIDO=""   ListaRegra_VSDGCORTECIDO_Ativo =False

     Case ListaRegra_CampoDoShowDialog="TG_EMPRESATE"        : 
        VSDGEMPRESA=""      VSDGNOMEMP=""         ListaRegra_VSDGEMPRESA=""     ListaRegra_TG_EMPRESATE=""    ListaRegra_VSDGEMPRESA_Ativo=False

     Case ListaRegra_CampoDoShowDialog="TG_CONTA"            : 
        VSDGCONTA=""        VSDGNOMCONTA=""       ListaRegra_VSDGCONTA=""       ListaRegra_TG_CONTA=""        ListaRegra_VSDGCONTA_Ativo=False

     Case ListaRegra_CampoDoShowDialog="TG_TIPOEST"          : 
        VSDGTIPOEST=""      VSDGDESCTIPOEST=""    ListaRegra_VSDGTIPOEST=""     ListaRegra_TG_TIPOEST=""      ListaRegra_VSDGTIPOEST_Ativo=False
        
    endswitch

endswitch

return result
endproc

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog Grade                                      *
;*******************************************************************************
Proc ListaRegra_Dialog(Disparo,Campo,Evento,Elemento)
private Disparo,Campo,Evento,Elemento,TECLA,MSG_CAMPO,Temp 

Temp=True

MSG_CAMPO=""
TECLA    ="//Esc=Retornar  Enter=Confirmar  "+Chr(24)+Chr(25)+"=Mover  Barra de espa‡o=Seleciona/Desmarca"

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf

If Disparo="SELECT" 
   Then ListaRegra_AtualizaItemArray(ListaRegra_ArrayElement," ")
EndIf

If Disparo="UPDATE"
   Then Switch
          Case Campo="ListaRegra_Ver": Temp=True 
                                       ListaRegra_Recarregar=true
                                       AcceptDialog 
          OtherWise                  : Return Temp
        EndSwitch
EndIf

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Evento["KeyCode"] = -15    : Temp=False

      Case Evento["KeyCode"] = 43     : ListaRegra_AtualizaItemArray(ListaRegra_ArrayElement," ")
      Case Evento["KeyCode"] = 45     : ListaRegra_AtualizaItemArray(ListaRegra_ArrayElement,"-")
           
      Case Evento["KeyCode"] = 27     : 
        switch
          case campo="ListaRegra_NO"        : campo="ListaRegra_TG_OPCAO"
          case campo="ListaRegra_TG_OPCAO"  : campo="ListaRegra_NO"
        endswitch
      Case Evento["KeyCode"] = 13     : 
        switch
          case campo="ListaRegra_TG_OPCAO"  : campo="ListaRegra_YES"
          case campo="ListaRegra_YES"       : AcceptDialog
          case campo="ListaRegra_NO"        : CancelDialog
        endswitch
   EndSwitch
EndIf

switch
  case campo="ListaRegra_TG_OPCAO" : MSG_CAMPO=Completa("Selecione as op‡äes: [+]=Selecionar  [-]=Ignorar",80," ")
  case campo="ListaRegra_YES"      : MSG_CAMPO=Completa("[Enter]=Confirmar Dados/Executar !",80," ")
  case campo="ListaRegra_NO"       : MSG_CAMPO=Completa("[Enter]=Cancelar/Voltar !",80," ")
  case campo="ListaRegra_Ver"      : MSG_CAMPO=Completa("[Enter]=Mudar ordem visualiza‡Æo C¢digo/Alfab‚tica",80," ")
endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc      

;*******************************************************************************
;* Rotina de Selecionar Grade                                                  *
;*******************************************************************************
Proc ListaRegra_MontaArray()
private result

result=true
;-- Carregar Dados -------------------------------------------------------------
Switch                                  
  Case ListaRegra_CampoDoShowDialog="TG_TPPAGTO"      :
    ListaRegra_TituloShowDialog    = "Formas de Pagamento"
    ListaRegra_TamanhoCampoRetorno = 2 
    ListaRegra_ColunaSelecao       = 25
    View NOWINDOW "\\Sistemas\\Cadastro\\Tppagto"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 22
    endif
       
  Case ListaRegra_CampoDoShowDialog="TG_TPCART"      :
    ListaRegra_TituloShowDialog    = "Tipos de Carteira"
    ListaRegra_TamanhoCampoRetorno = 1 
    ListaRegra_ColunaSelecao       = 24
    View NOWINDOW "\\Sistemas\\Ctarec\\Tpcart"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 22
    endif

  Case ListaRegra_CampoDoShowDialog="TG_TPLANC"      :
    ListaRegra_TituloShowDialog    = "Tipos de Lan‡amentos"
    ListaRegra_TamanhoCampoRetorno = 1 
    ListaRegra_ColunaSelecao       = 24
    View NOWINDOW "\\Sistemas\\Cadastro\\Tplanc"          
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 22
    endif

  Case ListaRegra_CampoDoShowDialog="TG_REPRESEN" :
    ListaRegra_TituloShowDialog    = "Representante"
    ListaRegra_TamanhoCampoRetorno = 4 
    ListaRegra_ColunaSelecao       = 27
    View NOWINDOW "\\Sistemas\\Cadastro\\Represen"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 22
    endif

  Case ListaRegra_CampoDoShowDialog="TG_DESTIN" :
    ListaRegra_TituloShowDialog    = "Destina‡Æo"
    ListaRegra_TamanhoCampoRetorno = 3 
    ListaRegra_ColunaSelecao       = 38
    View NOWINDOW "\\Sistemas\\Vendas\\Destin"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 34
    endif

  Case ListaRegra_CampoDoShowDialog="TG_MARCA"      :
    ListaRegra_TituloShowDialog    = "Marca"
    ListaRegra_TamanhoCampoRetorno = 3 
    ListaRegra_ColunaSelecao       = 36
    View NOWINDOW "\\Sistemas\\Estoque\\Marcas"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 32
    endif

  Case ListaRegra_CampoDoShowDialog="TG_FAMI"      :
    ListaRegra_TituloShowDialog    = "Familia"
    ListaRegra_TamanhoCampoRetorno = 3 
    ListaRegra_ColunaSelecao       = 36
    View NOWINDOW "\\Sistemas\\Estoque\\Familia"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 32        
    endif
    
  Case ListaRegra_CampoDoShowDialog="TG_GRP"      :
    ListaRegra_TituloShowDialog    = "Grupos"
    ListaRegra_TamanhoCampoRetorno = 3 
    ListaRegra_ColunaSelecao       = 36
    View NOWINDOW "\\Sistemas\\Estoque\\Grupos"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 32        
    endif
  
  Case ListaRegra_CampoDoShowDialog="TG_COR_TECIDO"      :
    ListaRegra_TituloShowDialog    = "Cor do Tecido"
    ListaRegra_TamanhoCampoRetorno = 4 
    ListaRegra_ColunaSelecao       = 37
    View NOWINDOW "\\Sistemas\\Estoque\\Cores"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 32        
    endif

  Case ListaRegra_CampoDoShowDialog="TG_EMPRESATE" :
    ListaRegra_TituloShowDialog    = "Empresa"
    ListaRegra_TamanhoCampoRetorno = 4 
    ListaRegra_ColunaSelecao       = 27
    View NOWINDOW "\\Sistemas\\Cadastro\\Empresas"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 22        
    endif

  Case ListaRegra_CampoDoShowDialog="TG_CONTA" :
    ListaRegra_TituloShowDialog    = "Contas"
    ListaRegra_TamanhoCampoRetorno = 4 
    ListaRegra_ColunaSelecao       = 65
    View NOWINDOW "\\Sistemas\\Ctacor\\Conta"
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 34        
    endif
  
  Case ListaRegra_CampoDoShowDialog="TG_TIPOEST"     :
    ListaRegra_TituloShowDialog    = "Tipos do Item"
    ListaRegra_TamanhoCampoRetorno = 1 
    ListaRegra_ColunaSelecao       = 34
    View NOWINDOW "\\Sistemas\\Estoque\\TpItem"          
    if ListaRegra_OpVer="C->A" 
       then ListaRegra_InicioCampoRetorno  = 1
       else ListaRegra_InicioCampoRetorno  = 32        
    endif

  otherwise :
    result=false
EndSwitch

return result
endproc

;*******************************************************************************
;* Rotina de Selecionar Grade                                                  *
;*******************************************************************************
Proc ListaRegra_Seleciona_Opcoes()
Private LJ,AJ,wc,slista,vrcampo,processa,ListaRegra_ArrayContador, executarprocesso, titl

executarprocesso=true

ListaRegra_OpVer="A->C"

While executarprocesso

  if not ListaRegra_MontaArray() then quitloop endif

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

  slista =""
  vrcampo=""
  wc    =0
  Scan
    processa=true
  
    Switch
      Case ListaRegra_CampoDoShowDialog="TG_TPPAGTO"  :
        If IsAssigned(ListaRegra_TG_TPPAGTO)          then slista          =ListaRegra_TG_TPPAGTO            endif
        If IsAssigned(ListaRegra_TG_TPPAGTO_OpVer)    then ListaRegra_OpVer=ListaRegra_TG_TPPAGTO_OpVer      endif
        vrcampo=[Tipo do Pagamento]
        LJ=25
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W20,AL",[Descricao Tipo Pagamento])+Chr(179)+format("W02,AL",[Tipo do Pagamento       ])+chr(179)    
           else ListaRegra_Array[wc]=format("W02,AL",[Tipo do Pagamento       ])+chr(179)+format("W20,AL",[Descricao Tipo Pagamento])+Chr(179)    
        endif
        
      Case ListaRegra_CampoDoShowDialog="TG_TPCART"   :
        If IsAssigned(ListaRegra_TG_TPCART)           then slista          =ListaRegra_TG_TPCART             endif
        If IsAssigned(ListaRegra_TG_TPCART_OpVer)     then ListaRegra_OpVer=ListaRegra_TG_TPCART_OpVer       endif
        vrcampo=[Tipo de Lancamento]
        LJ=24
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W20,AL",[Descricao do Lancamento])+Chr(179)+format("W01,AL",[Tipo de Lancamento     ])+chr(179)   
           else ListaRegra_Array[wc]=format("W01,AL",[Tipo de Lancamento     ])+chr(179)+format("W20,AL",[Descricao do Lancamento])+Chr(179)  
        endif
     
      Case ListaRegra_CampoDoShowDialog="TG_TPLANC"   :
        If IsAssigned(ListaRegra_TG_TPLANC)           then slista=          ListaRegra_TG_TPLANC             endif
        If IsAssigned(ListaRegra_TG_TPLANC_OpVer)     then ListaRegra_OpVer=ListaRegra_TG_TPLANC_OpVer       endif
        vrcampo=[Tipo de Lancamento]
        LJ=24
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W20,AL",[Descricao do Lancamento])+Chr(179)+format("W01,AL",[Tipo de Lancamento     ])+chr(179)   
           else ListaRegra_Array[wc]=format("W01,AL",[Tipo de Lancamento     ])+chr(179)+format("W20,AL",[Descricao do Lancamento])+Chr(179)   
        endif
        
      Case ListaRegra_CampoDoShowDialog="TG_REPRESEN" :
        If IsAssigned(ListaRegra_TG_REPRESEN)         then slista          =ListaRegra_TG_REPRESEN           endif
        If IsAssigned(ListaRegra_TG_REPRESEN_OpVer)   then ListaRegra_OpVer=ListaRegra_TG_REPRESEN_OpVer     endif
        vrcampo=[Codigo do Representante]
        LJ=27
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W20,AL",[Nome Fantasia Represent])+Chr(179)+format("W04,AL",[Codigo do Representante])+chr(179)  
           else ListaRegra_Array[wc]=format("W04,AL",[Codigo do Representante])+chr(179)+format("W20,AL",[Nome Fantasia Represent])+Chr(179)  
        endif
      Case ListaRegra_CampoDoShowDialog="TG_DESTIN"   :
        If IsAssigned(ListaRegra_TG_DESTIN)           then slista          =ListaRegra_TG_DESTIN             endif
        If IsAssigned(ListaRegra_TG_DESTIN_OpVer)     then ListaRegra_OpVer=ListaRegra_TG_DESTIN_OpVer       endif
        vrcampo=[Codigo da Destinacao]
        LJ=38
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W30,AL",[Descricao da Destinacao])+Chr(179)+format("W1,AL",[Tipo Movimento Estoque  ])+Chr(179)+
                                     format("W03,AL",[Codigo da Destinacao   ])+chr(179)
                                       
           else ListaRegra_Array[wc]=format("W03,AL",[Codigo da Destinacao   ])+chr(179)+format("W1,AL",[Tipo Movimento Estoque  ])+Chr(179)+
                                     format("W30,AL",[Descricao da Destinacao])+Chr(179)
                                       
        endif
      Case ListaRegra_CampoDoShowDialog="TG_MARCA"    :
        If IsAssigned(ListaRegra_TG_MARCA)            then slista          =ListaRegra_TG_MARCA              endif
        If IsAssigned(ListaRegra_TG_MARCA_OpVer)      then ListaRegra_OpVer=ListaRegra_TG_MARCA_OpVer        endif
        vrcampo=[Codigo da Marca]
        LJ=36
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W30,AL",[Descricao da Marca     ])+Chr(179)+format("W03,AL",[Codigo da Marca        ])+chr(179)
           else ListaRegra_Array[wc]=format("W03,AL",[Codigo da Marca        ])+chr(179)+format("W30,AL",[Descricao da Marca     ])+Chr(179)
        endif
        
      Case ListaRegra_CampoDoShowDialog="TG_FAMI"     :
        If IsAssigned(ListaRegra_TG_FAMI)             then slista          =ListaRegra_TG_FAMI               endif
        If IsAssigned(ListaRegra_TG_FAMI_OpVer)       then ListaRegra_OpVer=ListaRegra_TG_FAMI_OpVer         endif
        vrcampo=[Codigo da Familia]
        LJ=36
        wc=wc+1
        if ListaRegra_OpVer="A->C" 
           then ListaRegra_Array[wc]=format("W30,AL",[Descricao da Familia   ])+Chr(179)+format("W03,AL",[Codigo da Familia      ])+chr(179)
           else ListaRegra_Array[wc]=format("W03,AL",[Codigo da Familia      ])+chr(179)+format("W30,AL",[Descricao da Familia   ])+Chr(179)
        endif
        
      Case ListaRegra_CampoDoShowDialog="TG_GRP"      :
        If IsAssigned(ListaRegra_TG_GRP)              then slista          =ListaRegra_TG_GRP                endif
        If IsAssigned(ListaRegra_TG_GRP_OpVer)        then ListaRegra_OpVer=ListaRegra_TG_GRP_OpVer          endif
        vrcampo=[Codigo do Grupo]
        LJ=36
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W30,AL",[Descricao do Grupo     ])+Chr(179)+format("W03,AL",[Codigo do Grupo        ])+chr(179)
           else ListaRegra_Array[wc]=format("W03,AL",[Codigo do Grupo        ])+chr(179)+format("W30,AL",[Descricao do Grupo     ])+Chr(179)
        endif
        
      Case ListaRegra_CampoDoShowDialog="TG_COR_TECIDO":
        If IsAssigned(ListaRegra_TG_COR_TECIDO)       then slista          =ListaRegra_TG_COR_TECIDO         endif
        If IsAssigned(ListaRegra_TG_COR_TECIDO_OpVer) then ListaRegra_OpVer=ListaRegra_TG_COR_TECIDO_OpVer   endif
        vrcampo=[Codigo da Cor_Tecido]
        LJ=37
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W30,AL",[Descricao da Cor_Tecido])+Chr(179)+format("W04,AL",[Codigo da Cor_Tecido   ])+chr(179)  
           else ListaRegra_Array[wc]=format("W04,AL",[Codigo da Cor_Tecido   ])+chr(179)+format("W30,AL",[Descricao da Cor_Tecido])+Chr(179)
        endif
        
      Case ListaRegra_CampoDoShowDialog="TG_EMPRESATE":
        If IsAssigned(ListaRegra_TG_EMPRESATE)        then slista          =ListaRegra_TG_EMPRESATE          endif
        If IsAssigned(ListaRegra_TG_EMPRESATE_OpVer)  then ListaRegra_OpVer=ListaRegra_TG_EMPRESATE_OpVer    endif
        vrcampo=[Codigo da Empresa]          
        LJ=27
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W20,AL",[Nome Fantasia Empresa  ])+Chr(179)+format("W04,AL",[Codigo da Empresa      ])+chr(179)  
           else ListaRegra_Array[wc]=format("W04,AL",[Codigo da Empresa      ])+chr(179)+format("W20,AL",[Nome Fantasia Empresa  ])+Chr(179)  
        endif

      Case ListaRegra_CampoDoShowDialog="TG_TIPOEST"  :
        If IsAssigned(ListaRegra_TG_TIPOEST)          then slista          =ListaRegra_TG_TIPOEST            endif
        If IsAssigned(ListaRegra_TG_TIPOEST_OpVer)    then ListaRegra_OpVer=ListaRegra_TG_TIPOEST_OpVer      endif
        vrcampo=[Tipo do Item]
        LJ=34
        wc=wc+1
        if ListaRegra_OpVer="A->C"
           then ListaRegra_Array[wc]=format("W30,AL",[Descricao Tipo do Item ])+Chr(179)+format("W01,AL",[Tipo do Item           ])+chr(179)     
           else ListaRegra_Array[wc]=format("W01,AL",[Tipo do Item           ])+chr(179)+format("W30,AL",[Descricao Tipo do Item ])+Chr(179)
        endif        

        
      Case ListaRegra_CampoDoShowDialog="TG_CONTA"    :
        If IsAssigned(ListaRegra_TG_CONTA)            then slista          =ListaRegra_TG_CONTA              endif
        If IsAssigned(ListaRegra_TG_CONTA_OpVer)      then ListaRegra_OpVer=ListaRegra_TG_CONTA_OpVer        endif
        vrcampo=[Codigo da Conta]        
        
        processa=false
        if VSDGEMPRESA="0000" or 
           VSDGEMPRESA=""     or
           VSDGEMPRESA=[Codigo da Empresa]
           Then processa=true
                LJ=65
                wc=wc+1
                if ListaRegra_OpVer="A->C"
                   then 
                        ListaRegra_Array[wc]=format("W30,AL",[Descricao da Conta ])+Chr(179)+format("W1,AL",[Tipo da Conta])+Chr(179)+
                                             format("W4,AL",[Codigo da Conta])+chr(179)+
                                             format("W25,AL",[Nome Fantasia Empresa]+"/"+[Codigo da Empresa])+chr(179)
                   else 
                        ListaRegra_Array[wc]=format("W4,AL",[Codigo da Conta])+chr(179)+
                                             format("W1,AL",[Tipo da Conta])+Chr(179)+
                                             format("W30,AL",[Descricao da Conta ])+Chr(179)+  
                                             format("W25,AL",[Nome Fantasia Empresa]+"/"+[Codigo da Empresa])+chr(179)
                endif                              
        endif   
  
    endswitch
  
    If processa
       Then switch
              case search("-"+vrcampo+"|",slista)>0  : ListaRegra_Array[wc]=ListaRegra_Array[wc]+"-" 
              case search(    vrcampo+"|",slista)>0  : ListaRegra_Array[wc]=ListaRegra_Array[wc]+chr(17)
              otherwise                              : ListaRegra_Array[wc]=ListaRegra_Array[wc]+" "
            endswitch
    EndIf
  endscan  
  ClearImage
  
  ;-------------------------------------------------------------------------------
                         
  If DynArraySize(ListaRegra_Array)=0
     Then Mensagem("Tabela sem Registros !")
          executarprocesso=false
          quitloop
  EndIf
  
  ListaRegra_ArrayContador=DynArraySize(ListaRegra_Array)
  AJ=ListaRegra_ArrayContador
  If AJ>13
     Then AJ=13
     Else If AJ<3 Then AJ=3 EndIf
  EndIf

  If LJ<31
     then LJ=31
  endif   
  
  titl=ltrim(Format("W4,EIC",ListaRegra_ArrayContador))+" registros"

  ListaRegra_Recarregar=false
  
  while true
    Showdialog ListaRegra_TituloShowDialog Proc "ListaRegra_Dialog"
      Trigger "OPEN","ARRIVE","SELECT","UPDATE"  
        Key "TAB","ReverseTab","ENTER","ESC",43,45     
          @ 01,00 height AJ+6 width LJ+6
    
      Label  @ 00,00 "Op‡äes: "+titl  For "ListaRegra_TG_OPCAO"
      PickDynArray @01,01 Height AJ width LJ+2
       Columns 1 
        ListaRegra_Array
         Tag "ListaRegra_TG_OPCAO"
          To ListaRegra_ArrayElement
    
        Pushbutton @ AJ+2,00 width 11 "~O~k"             OK     Default Value "Ok" Tag "ListaRegra_YES"  To ListaRegra_BottonValue
        Pushbutton @ AJ+2,11 width 11 "~C~ancela"        CANCEL                    Tag "ListaRegra_NO"   To ListaRegra_BottonValue
        Pushbutton @ AJ+2,22 width 12 "~V~er "+ListaRegra_OpVer                    Tag "ListaRegra_Ver"  To ListaRegra_BottonValue
  
    EndDialog
    If RetVal
       Then 
            if ListaRegra_Recarregar
               then 
                    if ListaRegra_OpVer="C->A" 
                       then ListaRegra_OpVer="A->C"
                       else ListaRegra_OpVer="C->A"
                    endif
                    ListaRegra_ChecaOpcoesArray(13)
                    quitloop
            endif    
        
            if ListaRegra_ChecaOpcoesArray(13) 
               then ListaRegra_Result=True
                    executarprocesso=false
                    quitloop
            endif
       Else
            ListaRegra_ChecaOpcoesArray(27)
            executarprocesso=false
            quitloop
    endif      
  
  endwhile

endwhile

EndProc   



;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************

ListaRegra_Seleciona_Opcoes()

Release Vars  ListaRegra_CampoDoShowDialog,
              ListaRegra_Array,
              ListaRegra_TituloShowDialog,              
              ListaRegra_InicioCampoRetorno,
              ListaRegra_TamanhoCampoRetorno, 
              ListaRegra_ColunaSelecao,
              ListaRegra_Recarregar, ListaRegra_OpVer, ListaRegra_Result

Release Procs ListaRegra_AtualizaItemArray,
              ListaRegra_ChecaOpcoesArray,     
              ListaRegra_Dialog,
              ListaRegra_Seleciona_Opcoes,
              ListaRegra_MontaArray

