Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  1. Visão Geral
  2. Exemplo de utilização
    1. Tela XXX
      1. Outras Ações / Ações relacionadas
    2. Tela XXX
      1. Principais Campos e Parâmetros
      1. Por parâmetros
      2. Por visão gerêncial
    3. Exemplo funcional de código
    4. Fluxo de chamada das FunçõesTabelas utilizadas


    01. VISÃO GERAL

    Foi criada uma rotina com o intuito de realizar consultas nos lançamentos orçamentários (tabela AKD).

    ...

    Esses filtros podem ser passados em formato de intervalo (range (de valores de/até) ou por visão gerencial orçamentária previamente cadastrada (PCOA170).

    ...

    02. EXEMPLO DE UTILIZAÇÃO

    Lista de parâmetros disponíveis na função PCGerPlan():

    ParâmetroTipo

    Obrigatório
    Por Parâmetros

    Obrigatório Por VisãoDescrição
    oMeterObjeto

    Objeto de controle da régua
    oTextObjeto

    Objeto de controle da régua
    oDlgObjeto

    Janela da régua
    lEndLógico

    Controle finalizar da régua
    cArqtmpCaracterSimSimAlias em que será montado o arquivo temporário
    cMoedaCaracterSimSimMoeda referência para o relatório
    lPorVisaoLógicoSimSimDefine se o relatório será gerado por visão o por parâmetros
    cCodVisaoCaracter
    SimCódigo da visão gerêncial para filtro da tabela AKD
    dDataIniDataSimSimData inicial para filtro dos movimentos
    dDataFimDataSimSimData final para filtro dos movimentos
    aFiltrosArraySim
    Array com range de filtros para query

    aFiltAd

    Array

    Array com filtros de entidades adicionais
    Nota

    Importante: O intervalo máximo que poderá ser utilizado nos parâmetros de data inicial e data final (dDataIni e dDataFim) é de um ano

    a. Por parâmetros

    A variável lPorVisao deve ser declarada como .F. - Falso.
    Os intervalos para filtro devem ser passados pelo array aFiltros da seguinte forma:

    Posição do ArrayTipoConteúdo
    aFiltros[01]CConta Orçamentária De
    aFiltros[02]CConta Orçamentária Até
    aFiltros[03

    ...

    Outras Ações / Ações relacionadas

    ...

    ]CClasse Orçamentária De
    aFiltros[04]CClasse Orçamentária Até
    aFiltros[05]CTipo de Saldo
    aFiltros[06]CCentro de Custo De
    aFiltros[07]CCentro de Custo Até
    aFiltros[08]CItem De
    aFiltros[09]CItem Até
    aFiltros[10]CClasse de Valor De
    aFiltros[11]CClasse de Valor Até


    O Array de filtros de entidades adicionais aFiltAd, deve ser passado na ordem das entidades.

    Exemplo de array montado com 5 entidades adicionais:

    Posição do ArrayTipoConteúdo
    aFiltAd[01]CEntidade adicional 01 De
    aFiltAd[02]CEntidade adicional 01 Até
    aFiltAd[03]CEntidade adicional 02 De
    aFiltAd[04]CEntidade adicional 02 Até
    aFiltAd[05]CEntidade adicional 03 De
    aFiltAd[06]CEntidade adicional 03 Até
    aFiltAd[07]CEntidade adicional 04 De
    aFiltAd[08]CEntidade adicional 04 Até
    aFiltAd[09]CEntidade adicional 05 De
    aFiltAd[10]CEntidade adicional 05 Até
    Nota

    Importante: mesmo seja necessário fazer o filtro somente na entidade 05, por exemplo, o array deve ser passado completo.

    Bloco de código
    languagec#
    themeMidnight
    titleExemplo Prático por Parâmetros
    Local cTblName  := "" //Nome do arquivo temporário no banco de dados
    Local cArqTmp 	:= GetNextAlias()
    Local cMoeda  	:= "01"
    Local lPorVisao := .F.
    Local dDataIni 	:= STOD("20190101")
    Local dDataFim 	:= STOD("20191231")
    Local aFiltros  := { " ","ZZZZZZZ",;  //Conta Orçamentária De / Até
                         " ","ZZZZZZZ",;  //Classe Orçamentária De / Até
                         " ",;            //Tipo de Saldo
                         " ","ZZZZZZZ",;  //Centro de Custo De / Até
                         " ","ZZZZZZZ",;  //Item De / Até
                         " ","ZZZZZZZ" }  //Classe de Valor De / Até
    
    cTblName := PCGerPlan(nil,nil,nil,nil,cArqtmp,cMoeda,lPorVisao,nil,dDataIni,dDataFim,aFiltros)
    Nota

    Importante 1: É importante que as posições pré definidas sejam respeitadas, pois o programa está preparado para receber os valores nessa ordem.

    Nota

    Importante 2: Não utilizar filtros genéricos como no exemplo deste documento, pois isso afetará diretamente a performance da rotina.
    Os exemplos foram desenvolvido com intuito apenas didático.
    É importante observar que quanto mais específico for o filtro, mais performática a rotina será.


    b. 
    Por visão gerêncial

    A variável lPorVisao deve ser declarada como .T. - Verdadeiro
    Os filtros serão feitos posicionando na visão gerencial passada por parâmetro pela variável cCodVisao.

    Bloco de código
    languagec#
    themeMidnight
    titleExemplo Prático por Visão
    Local cTblName  := "" //Nome do arquivo temporário no banco de dados
    Local cArqTmp 	:= GetNextAlias()
    Local cMoeda  	:= "01"
    Local lPorVisao := .T.
    Local cCodVisao := "001" //Visão pré cadastrada na rotina PCOA170-Visão Gerencial Orçamentária
    Local dDataIni 	:= STOD("20190101")
    Local dDataFim 	:= STOD("20191231")
    
    cTblName := PCGerPlan(nil,nil,nil,nil,cArqtmp,cMoeda,lPorVisao,cCodVisao,dDataIni,dDataFim)

    03. EXEMPLO FUNCIONAL DE CÓDIGO


    Bloco de código
    languagec#
    themeMidnight
    titleExemplo Funcional de Código
    User Function ChamaXSAL() 
    Local cArqTmp   := GetNextAlias()
    Local lPorVisao := .F.
    Local cCodVisao := "001"
    Local cMoeda    := ""
    Local dDataIni  := STOD("")
    Local dDataFim  := STOD("")
    Local oMeter    
    Local oText
    Local oDlg
    Local lEnd
    
    dDataIni  := STOD("20190101")
    dDataFim  := STOD("20190131")
    
    aFiltros := {" ","ZZZZZZZ",; //Conta Orçamentária De / Até
                 " ","ZZZZZZZ",; //Classe Orçamentária De / Até
                 " ",;           //Tipo de Saldo
                 " ","ZZZZZZZ",; //Centro de Custo De / Até
                 " ","ZZZZZZZ",; //Item De / Até
                 " ","ZZZZZZZ" } //Classe de Valor De / Até
    
    aFiltAd  := {" ","ZZZZZZZ",; //Entidade adicional 01 De / Até
                 " ","ZZZZZZZ",; //Entidade adicional 02 De / Até            
                 " ","ZZZZZZZ",; //Entidade adicional 03 De / Até
                 " ","ZZZZZZZ",; //Entidade adicional 04 De / Até
                 " ","ZZZZZZZ" } //Entidade adicional 05 De / Até
    
    //A função pode ser chamada com ou sem régua de processamento MsgMeter()
    //Neste exemplo estamos utilizando
    
    If (Aviso("Atenção","Como quer executar a rotina?",{"Parâmetro","Visão"},1)==1)
    
    	//Método por parâmetro
    	//A variável cCodVisão não será considerada
    	//Serão utilizados os arrays de filtro
    
        lPorVisao := .F.
    
        MsgMeter({|	oMeter, oText, oDlg, lEnd |;
        PCGerPlan(oMeter,oText,oDlg,lEnd,cArqtmp,cMoeda,lPorVisao,cCodVisao,dDataIni,dDataFim,aFiltros,aFiltAd);
        },"Processando dados...","Aguarde")
    Else
    
    	//Método por visão
    	//A variável cCodVisão será considerada
    	//Os arrays de filtro serão desconsiderados
    
        lPorVisao := .T.
    
        MsgMeter({|	oMeter, oText, oDlg, lEnd |;
        PCGerPlan(oMeter,oText,oDlg,lEnd,cArqtmp,cMoeda,lPorVisao,cCodVisao,dDataIni,dDataFim,aFiltros,aFiltAd);
        },"Processando dados...","Aguarde")
    EndIf
    
    //Exibe em tela a quantidade de registros inseridos no arquivo de trabalho
    If (cArqTmp)->(Select()) > 0    
        Aviso("Atenção",cValToChar((cArqTmp)->(RecCount()))+" registros inseridos na tabela temporária",{"Ok"},1)
        (cArqTmp)->(dbCloseArea())
    EndIf
    
    Return

    04. FLUXO DE CHAMADA DE FUNÇÕES


    Image Added

    04. TELA XXXXX

    Principais Campos e Parâmetros

    ...

    Card documentos
    InformacaoUse esse box para destacar informações relevantes e/ou de destaque.
    TituloIMPORTANTE!

    ...





    HTML
    <!-- esconder o menu --> 
    
    
    <style>
    div.theme-default .ia-splitter #main {
        margin-left: 0px;
    }
    .ia-fixed-sidebar, .ia-splitter-left {
        display: none;
    }
    #main {
        padding-left: 10px;
        padding-right: 10px;
        overflow-x: hidden;
    }
    
    .aui-header-primary .aui-nav,  .aui-page-panel {
        margin-left: 0px !important;
    }
    .aui-header-primary .aui-nav {
        margin-left: 0px !important;
    }
    </style>