Á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. Por parâmetros
    2. Por visão gerêncial
  3. Exemplo funcional de código
  4. Fluxo de chamada das Funções
    Tabelas 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).

...

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 lPorVisão lPorVisao deve ser declarada como .F. - Falso.
Os intervalos para filtro devem ser passados pelo array aFiltros da seguinte forma:

Posição do
array
ArrayTipoConteúdo
aFiltros[01]CConta Orçamentária De
aFiltros[02]CConta Orçamentária Até
aFiltros[03]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. 

...

Outras Ações / Ações relacionadas

...

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>