Páginas filhas
  • Customização de operandos de faturamento de serviço

Versões comparadas

Chave

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

...

Existem algumas funções padrões que retornam valores que podem ser usadas para configurar parâmetros customizados para aplicar filtros em um operando de faturamento:

Função DescriçãoTipo
wmsr48_get_empresa

Retorna a empresa corrente.

CHAR(02

wmsr48_get_seq_apuracao_faturamento

Retorna a sequência de apuração de faturamento atual, ou seja, um sequencial que corresponde ao período do faturamento de serviço. Tipo

INTEGER
wmsr48_get_seq_processo_faturamentoRetorna um sequencial que corresponde ao processo de faturamento cadastrado na proposta de faturamento do depositante, ao qual o operando processado está associado.INTEGER
wmsr48_get_depositanteRetorna o depositante atual para o qual está sendo processada a apuração de faturamento.CHAR(15)
wmsr48_get_operando_faturamento Retorna o operando de faturamento atual que está sendo processado.CHAR(20)
wmsr48_get_data_ini_processamento

Retorna a data inicial do período de apuração que está sendo processada.

Exemplo:
Se o processo é mensal retornará o dia 01/MM/AAAA.

DATE
wmsr48_get_data_fim_processamento

Retorna a data final do período de apuração que está sendo processado.

Exemplo: 
Se o processo é mensal retornará o último dia do mês DD/MM/AAAA.

DATE
wmsr48_get_data_hora_ini_processamento

igual a data inicial, porém, retorna a data/hora.

Exemplo: 
01/MM/AAAA 00:00:00

DATETIME YEAR TO SECOND
wmsr48_get_data_hora_fim_processamento

Igual a data final, porém, retorna a data/hora.

Exemplo:
DD/MM/AAAA 23:59:59.

DATETIME YEAR TO SECOND
wmsr48_get_data_atual_processamento

Retorna a data atual do processamento no período de apuração.

Exemplo:
Se o processamento for mensal e estiver processando o dia 5 do mês 05/MM/AAAA.

DATE
wmsr48_get_data_hora_atual_ini_processamento

Retorna a data/hora atual do processamento no período de apuração. A hora sempre considerará o dia completo começando às 00:00:00h e terminando às 23:59:59h.

Exemplo: 
Se o processamento for mensal e estiver processando o dia 5 do mês 05/MM/AAAA 00:00:00. 

DATETIME YEAR TO SECOND
wmsr48_get_data_hora_atual_fim_processamento

Retorna a data/hora atual do processamento no período de apuração, sendo que a hora sempre considerará o dia completo começando às 00:00:00h e terminando às 23:59:59h.

Exemplo:
Se o processamento for mensal e estiver processando o dia 5 do mês 05/MM/AAAA 23:59:59.

DATETIME YEAR TO SECOND


Exemplo de filtro utilizando parametrização customizada:

AND minha_tabela.meu_depositante = ?
AND minha_tabela.meu_campo_data_hora >= ?
AND minha_tabela.meu_campo_data_hora <= ?
AND minha_tabela.meu_campo_customizado = ?

SequênciaFunçãoTipo RetornoTamanhoPrecisão
1wmsr48_get_depositanteCHAR

15

0
2wmsr48_get_data_hora_atual_ini_processamentoDATETIME16
3wmsr48_get_data_hora_atual_fim_processamentoDATETIME16
4wmsyXXXX_minha_funcao_customizadaINTEGER100

2.5. Comando Carga Parâmetros

...

A função especificada customizada, fará o processamento e tratamento de datas de período início e fim, de forma que possam ser recuperadas por variáveis modulares ou tabelas temporárias, através de outra função que deverá ser informada no grid Parâmetros.

2.5. Grid Parâmetros


IdentificaçãoDescrição
Função RetornoFunção 4GL que retornará o valor do parâmetro.
Tipo RetornoTipo de retorno da função retorno: Char, Smallint, Integer, Decimal, Date, Datatime, Varchar.
Tamanho RetornoTamanho a ser determinado para o retorno, para parâmetros com tipo de retorno Char, Decimal e Varchar.
Precisão RetornoNúmero de casas decimais que determinará a precisão no retorno para parâmetros com tipo retorno Decimal.

3. INFORMAÇÕES ADICIONAIS SOBRE OS COMANDOS CUSTOMIZADOS

...

Esta função será executada antes do PREPARE do SQL utilizado para efetuar a leitura do valor calculado do operando no período, atuando como um “before_prepare”.

  • Possui como parâmetros que podem ser recuperados pela função LOG_getVar().
ComandoDescrição
cmd_select

...

Comando SQL do tipo SELECT, utilizado para determinar o valor do operando.

cmd_from

...

Comando SQL do tipo FROM, que indica qual(is) tabela(s) será(ão) utilizada(s) para fazer o SELECT.

cmd_where

...

Comando SQL do tipo WHERE, que indica quais filtros serão utilizados para determinar o valor do operando.




  • Recebe como parâmetros que podem ser setados através da função LOG_setVar().
ComandoDescrição
cmd_select

...

Comando SQL do tipo SELECT

...

, utilizado para determinar o valor do operando.

...

cmd_from

...

Comando SQL do tipo FROM, que indica de qual(is) tabela(s) será(ão) utilizada(s) para fazer o SELECT.

...

cmd_where

...

Comando SQL do tipo WHERE que indica quais os filtros serão utilizados para determinar o valor do operando


  • - Deve obrigatoriamente retornar TRUE ou FALSE

3.2. Criando uma Função Customizada

Para criar uma função customizada que poderá ser utilizada no Comando Customizado devem ser observados alguns padrões, pois dentro da rotina o comando SQL deve ser quebrado em três partes: SELECT, FROM e WHERE, conforme está descrito a seguir:

  • Definição das variáveis l_select_stmt, l_from_stmt ,l_where_stmt com os respectivos tamanhos a seguir:

DEFINE l_select_stmt          VARCHAR(255)
            ,l_from_stmt            VARCHAR(1000)
             l_where_stmt         VARCHAR(5000)

  • Definir Record para receber as informações do operando:

DEFINE lr_operand_fatur       RECORD
                             tip_processo                CHAR(20)                                ,tip_operando_faturamento SMALLINT
                            ,dat_base_operando        SMALLINT
                            ,filtro_customizado       LIKE wms_operando_faturamento.filtro_customizado
                            ,forma_cobranca           LIKE wms_operando_faturamento.forma_cobranca
                           END RECORD

DEFINE l_depositante CHAR(15)
LET l_depositante = wmsr48_get_depositante()

Utilizar o código do depositante para montar os nomes das tabelas no SELECT, pois as informações estão divididas em tabelas com prefixo padrão, porém, com código do depositante compondo o nome. Mais detalhes podem ser obtidos a seguir, em Tabelas e Alias.

  • Utilizar a função abaixo para obter as informações do operando de faturamento:

LET l_operando_faturamento = wmsr48_get_operando_faturamento()

  • Utilizar a função LOG_getVar(“ “) para carregar os comandos de SELECT, FROM e WHERE:

LET l_select_stmt = LOG_getVar("cmd_select")
LET l_from_stmt = LOG_getVar("cmd_from")
LET l_where_stmt = LOG_getVar("cmd_where")

  • Inicializar as variáveis l_select_stmt, l_from_stmt ,l_where_stmt:

INITIALIZE l_select_stmt
,l_from_stmt
,l_where_stmt TO NULL

Para montar a estrutura da sua função, a variável l_select_stmt deve conter um comando SQL que retorne um valor único. Neste caso, podem ser utilizadas as funções SUM(), MAX() e AVG(), por exemplo.

Também pode ser efetuada a leitura do campo Forma Cobrança, para que seja realizado um tratamento pelo Cadastro do Operando, sendo que para isso deve utilizado  como por exemplo:







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>