Histórico da Página
CONTEÚDO
| Índice | ||||||
|---|---|---|---|---|---|---|
|
1. OBJETIVO
Desenvolver uma documentação complementar do Cadastro de Operando de Faturamento (WMS6401), detalhando principalmente os campos que compõem a aba 2- Customizações.
2. ABA 2 - CUSTOMIZAÇÕES
2.1. Cálculo Customizado
Neste campo é possível efetuar a customização do cálculo, sendo necessário informar o SQL com o comando SELECT.
...
...
SELECT SUM(minha_tabela.meu_campo)
SELECT COUNT(m.campo_nao_padrao)
SELECT MAX(d.campo_nao_padrao)
SELECT AVG(m.qtd_volumes) #Média de volumes expedição por dia. m -> wms_exp_mestre_?
...
2.2. Comando Customizado
Neste campo é possível cadastrar uma função que pode manipular os comandos SQL (SELECT, FROM e WHERE ) padrões antes da execução na função padrão de apuração, sendo que 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”.
Esta função vai receber por SET as variáveis cmd_select , cmd_from e cmd_where que estarão com os valores padrões como, por exemplo:
cmd_select = "SELECT SUM(m.qtd_palete_fisico)"
cmd_from = " FROM wms_armaz_end_08345690901 m" onde 08345690901 é código do depositante.
cmd_where = " WHERE m.empresa = ‘01’ AND m.sit_registro <> 'C' AND m.data_posicao_estoque >= ? AND m.data_posicao_estoque <= ?"
A função de apuração chamará a função cadastrada no campo Comando Customizado, podendo editar e retornar estes comandos que serão recebidos por funções de GET conforme abaixo:
LET l_select_stmt = LOG_getVar("cmd_select") Máximo 255 caracteres
LET l_from_stmt = LOG_getVar("cmd_from") Máximo 1000 caracteres
LET l_where_stmt = LOG_getVar("cmd_where") Máximo 5000 caracteres
...
...
Descrever as três rotinas que podem ser agrupadas em um cadastro somente de horário, pois os três devem ser executados uma vez ao dia, todos os dias, preferencialmente fora do horário da operação.
2. SEGURO NÃO REGULARIZADO
Permite gerar os dados base para apurar o seguro não regularizado (Nota provisória sem definitiva).
Utilizado em operandos definidos para faturar seguro de estoque não regularizado.
- Programa: wms6423
- Rotina: SEGURO
- Parâmetros: 1 – código da empresa a ser executada carga de dados; 2 - usuário do sistema
3. ARMAZENAGEM
Permite gerar os dados base para apurar a armazenagem.
- Programa: wms6423
- Rotina: ARMAZ
- Parâmetros: 1 – código da empresa a ser executada carga de dados; 2 - usuário do sistema
4. ATRIBUTOS
Permite gerar os dados base para apurar os operandos relacionados a atributos.
- Programa: WMSR113
- Rotina: Deixar em branco
- Parâmetros: 1 – código da empresa a ser executada carga de dados; 2 - usuário do sistema
| Informações | ||
|---|---|---|
| ||
| Como sugestão indicamos que seja cadastrado uma linha para cada Empresa na qual deve ser executado cada um dos três processos deste gatilho e não cadastrar um gatilho diferente em cada Empresa, pois em alguns casos um gatilho pode derrubar o outro. |
4.1. Fechamento Seguro
Este gatilho deve ser cadastrado de forma separada, pois precisa ser executado apenas uma vez ao mês por Empresa.
Seu objetivo é realizar um fechamento das notas com saldo remanescente de meses anteriores. Com isso, é gerado um saldo inicial do mês corrente.
- Programa: WMS6208
- Rotina: Deixar em branco
- Parâmetros: 1 – código da empresa a ser executada carga de dados,; 2 - usuário do sistema
| Informações | ||
|---|---|---|
| ||
| Como sugestão indicamos que seja cadastrada uma linha para cada Empresa na qual será executado este gatilho e não cadastrar um gatilho diferente em cada Empresa, pois em alguns casos um gatilho pode derrubar o outro. |
2.3. Comando Retorno Valor
Neste campo é possível cadastrar uma função que pode utilizar o valor calculado para um determinado operando para, por exemplo, gravar uma tabela auxiliar específica.
Esta função não manipula o valor calculado, recebendo o valor calculado do operando para cada dia do período pela função setVar:
...
...
# Comando para ser executado após o calculo do valor do operando
# e a gravação da tabela padrão wms_geracao_dados_operando
FUNCTION wmsyXXXX_comando_retorno_valor()
...
2.4. Filtro Customizado
...
...
Retorna a empresa corrente.
...
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
...
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.
...
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.
...
igual a data inicial, porém, retorna a data/hora.
Exemplo:
01/MM/AAAA 00:00:00
...
Igual a data final, porém, retorna a data/hora.
Exemplo:
DD/MM/AAAA 23:59:59.
...
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.
...
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.
...
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.
...
15
...
...
- Não possui parâmetros que podem ser recuperados pela função LOG_getVar().
- Pode ser utilizada para carregar os valores retornados pelas funções dos parâmetros customizados
- Deve obrigatoriamente retornar TRUE ou FALSE.
a. Esta função não recebe nenhum retorno específico via LOG_setVar().
b. Pode ser utilizada para fazer a carga de variáveis customizadas para o operando que serão utilizadas de forma dinâmica, de acordo com o cadastro de parâmetros customizados.
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.
...
...
3. INFORMAÇÕES ADICIONAIS SOBRE OS COMANDOS CUSTOMIZADOS
Criar funções customizadas que podem ser utilizadas para o Comando customizado, Comando retorno valor, ou Comando carga parâmetro requer alguns padrões a serem seguidos, para que a execução da função ocorra da forma desejada e apresente o resultado esperado.
Desta forma, segue um detalhamento sobre o modo trabalho e comportamento de cada tipo de função para cada comando.
3.1. Campo Customizado
Campo para informar o nome da função na qual deverá ser efetuada a manipulação do SQL que deverá determinar o valor do operando.
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 parâmetros que podem ser recuperados pela função LOG_getVar().
...
Comando SQL do tipo SELECT, utilizado para determinar o valor do operando.
...
Comando SQL do tipo FROM, que indica qual(is) tabela(s) será(ão) utilizada(s) para fazer o SELECT.
...
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().
...
Comando SQL do tipo SELECT, utilizado para determinar o valor do operando.
...
Comando SQL do tipo FROM, que indica de qual(is) tabela(s) será(ão) utilizada(s) para fazer o SELECT.
...
- 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:
IF lr_operand_fatur.tip_processo = "ARMAZENAGEM" THEN
IF lr_operand_fatur.tip_operando_faturamento = 99 THEN #Customizado pelo Usuário
CASE lr_operand_fatur.forma_cobranca
WHEN "S"
LET l_select_stmt = "SELECT SUM(palete.qtd_saldo)"
WHEN "P"
LET l_select_stmt = "SELECT MAX(palete.qtd_saldo)"
WHEN "M"
LET l_select_stmt = "SELECT AVG(palete.qtd_saldo)"
END CASE
- Montar cada estrutura separadamente, em sua respectiva variável:
Select – l_select_stmt
LET l_select_stmt = "SELECT SUM(b.qtd_saldo/palete.qtd_saldo)"
From – l_from_stmt
LET l_from_stmt = " FROM wms_armaz_pal_", l_depositante CLIPPED, " b",
" ,(SELECT DISTINCT a.empresa ",
" ,a.data_posicao_estoque ",
" ,a.palete ",
" ,SUM(a.qtd_saldo) qtd_saldo ",
" FROM wms_armaz_pal_", l_depositante CLIPPED, " a",
" WHERE a.empresa = '",l_empresa ,"'",
" AND a.data_posicao_estoque >= ? ",
" AND a.data_posicao_estoque <= ? ",
" GROUP BY a.empresa ",
" ,a.data_posicao_estoque ",
" ,a.palete) palete "
Where = l_where_stmt
LET l_where_stmt = " WHERE b.empresa = palete.empresa ",
" AND b.data_posicao_estoque = palete.data_posicao_estoque ",
" AND b.palete = palete.palete ",
" AND EXISTS(SELECT DISTINCT 1 ",
" FROM wms_armaz_item_", l_depositante CLIPPED, " c",
" WHERE c.empresa = b.empresa ",
" AND c.data_posicao_estoque = b.data_posicao_estoque ",
" AND c.item = b.item ",
" AND c.sit_registro <> 'C' "
- E chamar a função Log_setVar(), passando os parâmetros, como cmd_select, cmd_from e cmd_where, respectivamente com suas variáveis, para que seja efetuado devido carregamento, e então o Return True indicará para a aplicação que esta poderá seguir com o prepare execute do comando SQL.
CALL LOG_setVar("cmd_select",l_select_stmt)
CALL LOG_setVar("cmd_from", l_from_stmt)
CALL LOG_setVar("cmd_where", l_where_stmt)
RETURN TRUE
END FUNCTION
3.3. Tabelas e Alias Padrões
Para facilitar o entendimento do SQL foi assumido por padrão que o ALIAS "m" indica a tabela mestre e "d" a tabela detalhe. Este padrão deverá ser seguido.
Montagem do SELECT
...
| 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>
|