Especificação de Requisitos |
|
Projeto/Versão: MEX12.0/TOTVS Microsiga Protheus V12.0 | Requisito/Módulo: 001511/SIGACTB |
Sub-Requisito/Função: 151104/Manutenção de fórmulas | Tarefa/Chamado: 00000B.05.01 |
País: Todos | Data Especificação: 04/12/13 |
Rotinas Envolvidas |
|
|
Rotina | Tipo de Operação | Opção de Menu |
CTBA093 – Manut. Fórmulas | Criação | Atualizações->Cadastros->Entidades-> Manut. Fórmulas |
Estratégia de Desenvolvimento e liberação |
|
Produto | Microsiga Protheus – Contabilidade |
Release que está sendo desenvolvido | 11.90 |
Possui Réplica? | ( )Sim (X)Não |
Qual versão? | Não aplica |
Objetivo
Criar uma rotina que permita o registro de fórmulas para serem utilizadas na opção de Lançamentos Padronizados.
Definição da Regra de Negócio
Esta opção permitirá o registro de uma configuração simples ou de uma configuração mais complexa de instruções que serão utilizadas na configuração na opção dos Lançamentos Padronizados. A primeira chamaremos Configuração Rápida e a segunda Formulação.
Ao ingressar nessa opção apresentará o browse dos dados de fórmulas existentes (tabela CWK, tela PROTÓTIPO01). Com as opções Incluir, Alterar, Visualizar, Excluir, Consulta e as padrão.
Botão Incluir
Ao ingressar nessa opção visualizará uma tela com duas abas ( PROTÓTIPO02), uma que permita realizar o registro de fórmulas simples e outra que permitirá registrar fórmulas mais complexas.
Aba de Configuração Rápida
Os dados que serão solicitados são:
Código (cwk_codfor) – Código alocado pelo usuário para identificar a fórmula. Obrigatório
Descrição (CWK_desc) – Nome curto que descreve a funcionalidade da fórmula.
Grupo (cwk_grupo) – Código do grupo ao qual pertence a formula, pode selecionar da consulta padrão da tabela genérica CZ (tabela sx5). Obrigatório
Desc. Grupo (x5_descri) – Descrição do grupo. Virtual.
Tipo (cwk_tipo) - Pode selecionar entre, Conta/C. Custo/Item contábil/Cl. Valor/Valor fixo ou Fórmula (isso indica limpeza dos demais campos descritos a seguir).
Ao sair desse campo limpará os dados dos seguintes campos, exceto o que seja do Tipo selecionado. Enviará uma mensagem de advertência ao usuário ao detectar que tem informação em algum outro campo que não seja o selecionado, antes de continuar com a exclusão. Se a resposta do usuário for afirmativa, procederá a realizar a limpeza, de outra forma, deixará o Tipo selecionado, e não limpará campo nenhum.
Tipo de dado (CWK tipdat) .- Pode selecionar entre _Numérico, Caráter ou Data. Refere-se ao tipo de resultado que determinará a fórmula ao ser utilizada na opção de Lançamento padrão ou na de Mnemônicos.
Config. Rápida (fórmula valor) |
Valor (CWK_valor) – Será ativada somente se o campo Tipo for Valor. Permitirá o registro de qualquer tipo de dado ou fórmula advpl (validar que a sintaxe advpl seja correta, verificar a função de Lançamentos padronizados para ver como e feita essa validação).
Cond. Lançamento (CWK_conasi) – Será ativado somente se o campo Tipo for Valor.
Aqui o usuário registrará uma fórmula que retorne true ou false, pois se o resultado de sua execução for true, o conteúdo do campo valor será o resultado da execução da fórmula.
Deve ser validado um código ADVPL registrado que seja válido (verificar a rotina de Lançamentos padronizados para ver como é feita essa validação).
Config. Rápida (constantes) |
Conta Cont. (CWK_cuenta) – Será ativado somente se o campo Tipo for Conta. Pode selecionar os valores da consulta específica CWKTIP.
Se o usuário digitar diretamente valores no campo, verificará se este valor existe no catálogo de contas contáveis (ct2), mas, se o início do campo for M{_}, então verificará se existe o mnemônico (tabela cwj).
C. de Custos (CWK_cc) – Será ativado somente se o campo Tipo for C. Custo e o preenchimento deste campo for obrigatório. Pode selecionar os valores da consulta específica CWKTIP.
Se o usuário digita diretamente valores no campo, verificará se este valor existe no catálogo de centro de custos (ctt), mas, se o início do campo for M_, então verificará se existe o mnemônico (tabela cwj).
Item contábil (CWK_itectb) – Será ativado somente se o campo Tipo for Item Contábil, e o preenchimento deste campo for obrigatório. Pode selecionar os valores da consulta específica CWKTIP.
Se o usuário digita diretamente valores no campo, verificará se este valor existe no catálogo de itens contábeis (ctd), mas, se o início do campo for M_, então verificará se existe o mnemônico (tabela cwj).
Cl. Valor (CWK_clvalo) – Será ativado somente se o campo Cl. Valor, e o preenchimento deste campo for obrigatório. Pode selecionar os valores da consulta específica CWKTIP.
Se o usuário digita diretamente valores no campo, verificará se este valor existe no catálogo de classe valor (cth), mas, se o início do campo for M_, então verificará se existe o mnemônico (tabela cwj).
Ajuda (CWK_help)– Permitirá registrar uma breve explicação do que faz a fórmula.
Ao selecionar Confirmar, será realizada a tradução da formula ADVPL considerando o seguinte:
- Se o tipo de dado incluído (cwk_tipo) for Conta/C. Custo/Item contábil/Cl. Valor verificará se houve algum mnemônico entre os dados selecionados, em caso afirmativo, devem ser traduzidos para o campo ou tabela correspondentes da linguagem ADVPL, segundo seja o caso. Ou seja:
- Se for um mnemônico do tipo campo (cwj_tipdat='1'), então o valor cwj_campo será salvo em cwk_advpl.
- Se for um mnemônico do tipo tabela (cwj_tipdat='2'), então o valor de cwj_tabela será salvo em cwk_advpl.
- Se o mnemônico de tipo Fórmula (cwj_tipdat='3'), procura o valor de cwj_datvin no catálogo de fórmulas (cwk, cwk_codfor) o valor contido em cwk_advpl será salvo em cwk_advpl.
- Se o mnemônico de tipo Função (cwj_tipdat='4'), procura o valor de cwj_datvin no catálogo de funções (cwn, cwn_codfun) o valor contido em cwn_advpl será salvo em cwk_advpl.
- Se o mnemônico de tipo Função de usuário (cwj_tipdat='5'), o valor contido no campo cwj_funrpo será salvo em mcwk_advpl.
- Se o mnemônico de tipo valor (cwj_tipdat='6'), o valor contido no campo cwj_valor será salvo em cwk_advpl.
Se não tem mnemônicos, salvará o valor editado diretamente no campo cwk_advpl.
- Se o tipo de dado incluído (cwk_tipo) for Valor fixo, concatenará o conteúdo da Cond. Lançamento (campo wck_conasi) ao Valor (campo cwk_valor) mas com a sintaxe de um IF. Deixando como segue:
"IF ("Cond. Lançamento", "Valor")"
O resultado será salvo no campo cwk_advpl.
Essas mesmas ações serão executadas quando seja utilizado o botão Gerar Fórmula e o resultado da tradução possa ser visualizada no primeiro campo da aba com o Código Fórmula.
Uma vez realizada a tradução, salvará a informação correspondente na tabela de fórmulas (CWK).
Aba de Formulação
Os dados que visualizará são ( protótipo03):
Fórmula (CWK_advpl) – Este dado será atualizado ao salvar a fórmula ou ao selecionar o botão Gerar Fórmula, sempre e quando exista informação em getdados inferior ou dados nos campos Conta/C. Custo/Item contábil/Cl. Valor/Valor da aba de Catálogo. Apenas será visualizada.
Os dados no getdados:
A edição do getdados somente será válida se o dado tipo da aba do Catálogo for de tipo Fórmula.
Seq. (cwl_sec) – Número de sequência, e será alocado pelo usuário. Indicará a sequência na qual será executada a fórmula. Dado obrigatório e sem repetição.
Operador (cwl_oper).- Exibirá um listbox fixo com os códigos dos operadores (dependendo do idioma exibirá diferentes descrições do operador), de acordo com o seguinte (operadores válidos):
CÓD | CÓDIGO DO OPERADOR | Tipo | OPERANDO 1 | TIPO DE OPERANDO 1 | OPERADOR 2 | TIPO DE OPERANDO 2 | Sintaxe 1
| Sintaxe 2 |
01 | SOMA | A | O | N | O | N | OP1 + OP2 |
|
02 | SUBTRAI | A | O | N | O | N | OP1 - OP2 |
|
03 | MULTIPLICA | A | O | N | O | N | OP1 * OP2 |
|
04 | DIVIDE | A | O | N | O | N | OP1 / OP2 |
|
05 | PORCENTAGEM | A | O | N | O | N | (OP1/100) * OP2 |
|
06 | TIPOCÂMBIO | A | O | D | O | N | RECMOEDA(CTOD(OP1),OP2) |
|
07 | SE-MAIOR | Condição | O | C,D,N | O | TIPO 1 | OP1>OP2 | IF (OP1>OP2 |
08 | SE-MENOR | Condição | O | C,D,N | O | TIPO 1 | OP1<OP2 | IF (OP1<OP2 |
09 | SE-DIFERENTE | Condição | O | C,D,N | O | TIPO 1 | OP1<>OP2 | IF ( OP1<>OP2 |
10 | SE-CONTEÚDO | Condição | O | C | O | C | OP1 $ OP2 | IF (OP1 $ OP2 |
11 | SE-INICIAEM | Condição | O | C | O | C | AT(OP2,OP1)==1 | IF (AT(OP2,OP1)==1 |
12 | SE-VAZIO | Condição | O | C,D | V |
| EMPTY(OP1) | IF (EMPTY(OP1) |
13 | SE-ENCONTROU | Condição | O | TABELA | O | CAMPO | OP1->(DBSEEK(XFILIAL('OP1')+OP2) | IF (OP1->(DBSEEK(XFILIAL('OP1')+OP2) |
14 | SE-FUNÇÃO | Condição | O | C | V |
| FUNNAME()=OP1 | IF (FUNNAME()=OP1 |
15 | SE-IGUAL | Condição | O | C,D,N | O | TIPO1 | OP1==OP2 | IF ( OP1==OP2 |
16 | CONVERTE-TEXTO | S | O | N | V |
| STR(OP1) |
|
17 | CONVERTE-VALOR | S | O | C | V |
| VAL(OP2) |
|
18 | REMOVE-ESPAÇOS | S | O | C | V |
| ALLTRIM(OP2) |
|
19 | FILIAL | D | O | TABELA | V |
| XFILIAL(OP1) |
|
20 | CONTEÚDO-PARÂMETRO | D | O | C | V |
| GETMV("OP1") |
|
21 | ARREDONDA | N | O | N | O | N | ROUND(OP1,OP2) |
|
22 | RESÍDUO | N | O | N | O | N | MOD(OP1 , OP2) |
|
23 | TRUNCA | N | O | N | O | N | ROUND(OP1,OP2) |
|
24 | LEE-SB1 | T | O | C | O | C | POSICIONE("SB1",1,OP1,OP2) |
|
25 | LÊ-SED | T | O | C | O | C | POSICIONE("SED",1,OP1,OP2) |
|
26 | LÊ-SF4 | T | O | C | O | C | POSICIONE("SF4",1,OP1,OP2) |
|
27 | LÊ-SA2 | T | O | C | O | C | POSICIONE("SA2",1,OP1,OP2) |
|
28 | LÊ-SA1 | T | O | C | O | C | POSICIONE("SA1",1,OP1,OP2) |
|
29 | LÊ-SBM | T | O | C | O | C | POSICIONE("SBM",1,OP1,OP2) |
|
30 | RETORNO | R | O | C,D,N | V |
| OP1 |
|
31 | CONCATENA | S | 0 | C | 0 | C | OP1+OP2 |
|
Acordo de operadores
Operando 1 (cwl_oper1) .- Somente pode ser editado se o Operador não está vazio. Este campo pode aceitar mnemônicos (reconhecidos por que iniciam em M{_}, mnemônicos concatenados pelo sinal +), valores numéricos ou caracteres (os quais devem ir entre virgulas para serem identificados.
Pode selecionar os mnemônicos da consulta específica CWJFOR.
Depois de registrar o valor pré-validará que se trata de qualquer um dos três tipos referidos:
- Se inicia com aspas, verificará o seu fechamento e será validado.
- Verificar se existe no cadastro de mnemônicos (CWJ), caso contrário validar que seja numérico.
- Se não for numérico e não existir como mnemônico não é um operando válido.
Se o tipo de dado do operando é uma Fórmula (cwj_tipdat='3'), verificar que a formula associada ao mnemónico (cwj_datvin) não seja a mesma que aquela que está sendo registrada (cwj_datvin<>m->cwk_codfor).
Depois verificará o tipo de dado que pode aceitar neste campo, de acordo com o operador selecionado (ver acordo anterior na coluna 4).
Operando 2 (cwl_oper2).- Somente será editável se o Operador não está vazio e a coluna 5 do acordo do operador tem um OU.
Terá as mesmas pré-validações que tem o operador 1, e a validação do tipo de dado que pode aceitar, será de acordo com o operador selecionado (ver acordo anterior na coluna 6).
Conjunção (cwl_conjun).- Somente será ativado se o Operador é de tipo condição, e somente permitirá selecionar entre OU e E.
Quebra a Sec (cwl_selsec).- Somente será ativado se o Operador é de Condição e o campo de Conjunção está vazio. Somente permitirá colocar numéricos. É o caminho que tomará a condição se for verdadeira.
Expressão (cwl_expres).- Permitirá gerar uma expressão aritmética utilizando operadores e mnemônicos, ao selecionar a consulta específica CTB931, abrirá uma tela que permite construir a expressão (ao sair deste campo validará que a expressão tenha sintaxe ADVPL correta) verifique o protótipo05. Somente permitirá a edição se todos os campos anteriores estão vazios.
Em cada linha deve validar que a sintaxe seja correta, de acordo com o Operador (a sintaxe está localizada num acordo em rotinas do Protheus em código duro), verificando informação como, se o tipo de dado que aceita o operador é válido ou se este é um dado obrigatório, etc.
Ao descer da linha deve demonstrar nos campos Descrição Operando 1/Descrição Operando 2, a descrição do mnemônico selecionado em cada um, mas somente se o operando é um mnemônico, do contrário, a descrição deve ficar em branco.
Os campos descrição operando1/Descrição Operando 2 devem ser criadas em tempo de execução e não salva o seu conteúdo na BD.
Nota técnica: Criar uma rotina de validação de sintaxe por cada operador, a mesma que será utilizada para a validação por linha.
Se não é correto, enviará ao usuário a mensagem correspondente e não permitirá avançar nem salvar com o erro.
Ao Confirmar, realizar as seguintes ações:
- Ordenará por consecutivo (cwl_sec).
- Traduzirá a formulação do código ADVPL (criar a rotina CTB93GEN() que realizará esta ação), mas o resultado dessa tradução será salvo no campo cwk_advpl.
- Uma vez obtida a informação do código ADVPL, deve validar a sintaxe, baseada na função Ctb080Form(), que é a mesma que atualmente utiliza a rotina de Lançamentos padrão.
- Extrair todas as tabelas utilizadas na construção da fórmula
Se a fórmula for validada corretamente, salvará os campos correspondentes nas tabelas cwk e cwl, no campo cwk_advpl salvará no código advpl resultante do ponto anterior no campo cwk_foreje salvará a instrução EjeFor e o código da fórmula, por exemplo: EjeFor("FOR001").
Salvará as tabelas utilizadas na formulação (sem repetir a tabela) na tabela de relação de fórmulas x tabelas (CWQ). Não deve levar em conta aquelas utilizadas no alias das instruções Posicione.
Botão Alterar
Ao acessar esta opção visualizará uma tela com duas abas (protótipo02) e só poderá utilizá-la se o usuário está posicionado em uma formula. Do contrário deve enviar a mensagem "Não tem dados a modificar".
Todos os dados podem ser alterados, exceto o código da fórmula (cwk_codofor), e os demais dados terão a mesma funcionalidade descrita para o botão Incluir.
Ao salvar a informação, verificar se algum Lançamento padrão utiliza a fórmula em questão: Selecionar todos os registros da relação de Lançamento padronizados x Fórmula (tabela cwm), que contenham o código da fórmula (cwk_codfor=cwm_codfor). Se encontra registros, perguntar ao usuário "Existem Lançamentos padronizados utilizando esta fórmula, se salva a informação atualizará os Lançamentos envolvidos. Prosseguir?".
Se for afirmativa a resposta, salvar, em caso contrário cancelar a operação.
Botão Excluir
Ao acessar esta opção visualizará uma tela com duas abas (prototipo02) e só poderá utilizá-la se o usuário está posicionado em uma formula. Do contrário deve enviar a mensagem "Não tem dados a excluir".
Quando o usuário clicar em Confirmar, verificar se algum Lançamento padrão utiliza a fórmula em questão, isto é Selecionar todos os registros da relação de Lançamentos padronizados x Fórmula (tabla cwm), que contenham o código da fórmula (cwk_codfor=cwm_codfor). Se encontra registros, enviará ao usuário o aviso "Existem Lançamentos padronizados utilizando esta fórmula, e não pode ser excluída". Se não encontra registros, perguntará ao usuário "Excluir a fórmula?", se for afirmativa, procederá a eliminá-la, do contrário retornará ao browse.
Botão Consultar
Ao acessar esta opção, é visualizado o cabeçalho da fórmula e uma getdados com os lançamentos padronizados que estão utilizando a fórmula ( protótipo 04).
Selecionar todos os registros da relação de Lançamentos padronizados x Fórmula (tabla cwm), que contenham o código da formula (cwk_codfor=cwm_codfor) e relacionar as coincidências com a tabela de Lançamentos (tabela ct5, ct5_lanpad=cwm_lanpad e ct5_sequen=cwm_sequen).
O cabeçalho visualizará os dados:
Código (CWK_codofor) – Código alocado pelo usuário para identificar a fórmula.
Descrição (CWK_desc) – Nome resumido que descreve a funcionalidade da fórmula.
Grupo (CWK_grupo) – Código do grupo ao qual pertence a fórmula.
Desc. Grupo (x5_descri) – Descrição do grupo.
Fórmula (CWK_advpl) – Fórmula em ADVPL.
No detalhamento visualizará os dados:
Cód Lanç Pad. (ct5_lanpad) Código do lançamento padrão, Sequencial (ct5_sequen), Status (ct5_status), Descrição (ct5_desc), Tipo Lançamento (ct5_dc) , todos os campos Cta. Cargo (ct5_debito) , Cta. Abono (ct5_credit) , C. Custos CRG (ct5_ccd), C. Custo Abn (ct5_ccc), Item Cargo (ct5_itemd), Item Abono (ct5_itemc), Cl. Vlr. Crg. (ct5_clvldb), Cl. Vlr. Abn. (ct5_clvlcr), Outr. Inf. Crg (ct5_ativde), Outr. Inf. Abn (ct5_ativcr) e os campos de valores(ct5_vlr01.. ct5_vlr05), Lanç. Moedas (ct5_moedas) .
Consulta CWJFOR.- Mnemônicos
Será criada a consulta padronizadaCWJFOR, onde serão visualizadas as colunas:
- Mnemônico (cwj_codmne)
- Descrição (cwj_descri)
- Tipo Dado (cwj_tipdat)
- Grupo (cwj_grupo)
- Tabela (cwj_tabla)
- Campo (cwj_campo)
- Dado vinculado (cwj_datvin)
- Função RPO (vwj_funrpo)
- Valor fixo (cwj_valor)
Filtrar a informação para que só apresente os registros que são do tipo que necessita o operador (segundo o acordo dos operadores).
Por exemplo: se o operador é SOMA, o operando deve ser do tipo Numérico, então os mnemônicos que apresente serão do tipo Numérico (apresentará os mnemônicos do tipo Campo, Fórmula, Função ou Valor cujo retorno seja numérico, para o primeiro validar cwj_campo no sx3 e obter x3_tipo=N, para a fórmula procurar no cadastro de fórmulas e que o tipo de esta seja numérico (cwk_tipdat=Numérico), para a função cwj_tipdat=1. Criar a função CTB093FIL, a qual terá os diferentes filtros do acordo com o tipo de dados requerido.
CÓDIGO DO OPERADOR | TIPO DE OPERANDO 1 | TIPO DE OPERANDO 2 |
SOMA | N | N |
SUBTRAI | N | N |
MULTIPLICA | N | N |
DIVIDE | N | N |
PORCENTAGEM | N | N |
TIPOCÂMBIO | D | N |
SE-MAIOR | C,D,N | Igual ao tipo Operador 1 |
SE-MENOR | C,D,N | Igual ao tipo Operador 1 |
SE-DIFERENTE | C,D,N | Igual ao tipo Operador 1 |
SE-CONTEÚDO | C | C |
SE-INICIAEM | C | C |
SE-VAZIO | C,D |
|
SE-ENCONTROU | TABELA | CAMPO |
SE-FUNÇÃO | C |
|
SE-IGUAL | C,D,N | Igual ao tipo Operador 1 |
CONVERTE-TEXTO | N |
|
CONVERTE-VALOR | C |
|
REMOVE-ESPAÇOS | C |
|
FILIAL | TABELA |
|
CONTEÚDO-PARÂMETRO | C |
|
ARREDONDA | N | N |
RESIDUO | N | N |
TRUNCA | N | N |
LÉ-SB1 | C | C |
LÉ-SED | C | C |
LÊ-SF4 | C | C |
LÊ-SA2 | C | C |
LÊ-SA1 | C | C |
LÊ-SBM | C | C |
RETORNO | C,D,N |
|
CONCATENA | C | C |
Retornará o valor do código do mnemônico selecionado (cwj_codmne).
Consulta CWKTIP.- Seleção de dado
Será criada a consulta específica CWKTIP, se o campo CWK_CUENTA é de onde se está executando, então apresentará a tela:
Somente um dos campos deve ser preenchido.
O campo Conta, terá associada a consulta padrão CT2, e ao sair do campo verificará que o dato digitado exista no catálogo de contas. Este campo só será editável si o outro estiver vazio.
O campo de Mnemónico, terá associada a consulta padrão CWJ, e ao sair do campo verificará que o dado digitado exista no catálogo de mnemônicos. Este campo só será editável se o outro estiver vazio.
Se o campo CWK_CC é de onde está sendo executado, então apresentará a tela:
Somente um dos campos deve ser preenchido.
O campo Centro de custo, terá associada a consulta padrão CTT, e ao sair do campo verificará que o dado digitado exista no catálogo de centros de custo. Este campo só será editável se o outro estiver vazio.
O campo de Mnemónico, terá associada a consulta padrão CWJ, e ao sair do campo verificará que o dado digitado exista no catálogo de mnemônicos. Este campo só será editável se o outro estiver vazio.
Se o campo CWK_ITECTB é de onde está sendo executado, então apresentará a tela:
Somente um dos campos deve ser preenchido.
O campo Item contábil, terá associada a consulta padrão CTD, e ao sair do campo verificará que o dado digitado exista no catálogo de Item contábil. Este campo só será editável se o outro estiver vazio.
O campo de Mnemónico, terá associada a consulta padrão CWJ, e ao sair do campo verificará que o dado digitado exista no catálogo de mnemônicos. Este campo só será editável se o outro estiver vazio.
Se o campo CWK_CLVALO é de onde está sendo executando, então apresentará a tela:
Somente um dos campos deve ser preenchido.
O campo Classe valor, terá associada a consulta padrão CTH, e ao sair do campo verificará que o dado digitado exista no catálogo de Classe valor. Este campo só será editável se o outro estiver vazio.
O campo de Mnemónico, terá associada a consulta padrão CWJ, e ao sair do campo verificará que o dado digitado exista no catálogo de mnemônicos. Este campo só será editável se o outro estiver vazio.
Retornará o valor digitado.
Operadores Válidos
[Retorno
#regreso6] |
Operador |
|
| Uso |
|
Espanhol | Português | Inglês |
|
|
SUMA | SOMA | ADD |
| Soma operando1 y operando2. |
Operador |
|
| Uso |
|
Espanhol | Português | Inglês |
|
|
SUBTRAI |
| SUBTRACT |
| Subtrai operando 1 e operando 2. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
MULTIPLICA |
| MULTIPLY | Multiplica operando 1 e operando 2. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
DIVIDE |
| DIVIDE | Divide operando 1 e operando 2. Onde operando 1 é o dividendo y o Operando 2 é o divisor. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
PORCENTAGEM |
| MODULUS | Obtém a porcentagem do Operando 1 sobre o Operando 2. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
TIPOCÂMBIO |
| EXCHANGE | Obtém o valor da moeda (operador2) numa data determinada (operador1). |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
SE-IGUAL |
| IF-EQUAL | Compara o valor de um mnemônico com outro, se cumpre a condição de que são IGUAIS, deve indicar com uma sequência PARA ONDE SEGUE ESTE PROCEDIMENTO, AO NAO SER CUMPRIDA A CONDIÇÃO DE IGUALDADE, a sequência de instruções continua. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
SE-MAIOR |
| IF-GREATERTHAN | Compara o valor de um mnemônico com outro, se cumpre a condição de que o valor do mnemônico se encontra em O OPERANDO 1 É MAIOR ao valor do mnemônico do OPERANDO 2, deve indicar com uma sequência PARA ONDE SEGUE ESTE PROCEDIMENTO, AO NAO SER CUMPRIDA A CONDIÇÃO, a sequência de instruções continua. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
SE-MENOR |
| IF-LESSTHAN | Compara o valor de um mnemônico com outro, se cumpre a condição de que o valor do mnemônico se encontra em O OPERANDO 1 É MENOR ao valor do mnemônico do OPERANDO 2, deve indicar com uma sequência PARA ONDE SEGUE ESTE PROCEDIMENTO, AO NAO SER CUMPRIDA A CONDIÇÃO, a sequência de instruções continua. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
SE-DIFERENTE |
| IF-NOTEQUAL | Compara o valor de um mnemônico com outro, se cumpre a condição de que são DIFERENTES, deve indicar com uma sequência PARA ONDE SEGUE ESTE PROCEDIMENTO, AO NAO SER CUMPRIDA A CONDIÇÃO, a sequência de instruções continua. |
Operador |
|
| Uso |
|
Espanhol | Português | Inglês |
|
|
SE-CONTEÚDO |
| IF-CONTENT |
| Se o mnemônico contido no Operando 1 CONTEM parte do valor contido no operando 2, se cumpre a condição, deve indicar com uma sequência PARA ONDE SEGUE ESTE PROCEDIMENTO, AO NAO SER CUMPRIDA A CONDIÇÃO, a sequência de instruções continua. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
SE-INICIAEM |
| IF-BEGIN | Se o mnemônico contido no Operador 1 INICIA com o valor contido no Operando2, se cumpre a condição, deve indicar com uma sequência PARA ONDE SEGUE ESTE PROCEDIMENTO, AO NAO SER CUMPRIDA A CONDIÇÃO, a sequência de instruções continua. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
SE-VAZIO |
| IF-EMPTY | Indica se o operando 1 está vazio. |
Espanhol | Português | Inglês |
|
SE-ENCONTROU |
| IF-FOUND | Se encontra na tabela contida no Operador 1, o valor contido no operador2 |
|
|
|
|
|
|
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
CONVERTE-VALOR |
| VALUE | Converte em VALOR NUMÉRICO o conteúdo do Operando 1 |
Operador |
|
| Uso |
|
Espanhol | Português | Inglês |
|
|
|
REMOVE-ESPAÇOS |
| DELETE-SPACES |
| Remove os espaços à esquerda e direita do mnemônico contido no Operando 2 (ALLTRIM) |
|
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
FILIAL |
|
| Devolve ao Resultado a filial do mnemônico contido no Operando 2 |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
CONTEÚDO-PARÂMETRO |
| FIND-PARAMETER | Este operador lê a tabela de Parâmetros. Busca na tabela de Parâmetros o dado especificado no operando 2. |
|
|
|
|
|
|
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
REDONDEA |
| ROUND | Arredonda o valor do Operando1 em função do número de decimais indicado no Operando 2 |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
RESIDUO |
|
| Este operador tem a mesma função que o "MOD" de uma calculadora. Divide dois mnemônicos, onde operando 1 é o dividendo e o Operando 2 é o divisor. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
TRUNCA |
| TRUNC | Tira a parte decimal do valor de um mnemônico que se encontra no Operando 2 e deixa a parte inteira em outro mnemônico. |
|
|
|
|
|
|
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
LÊ-SBM |
| READ-SBM | Obtém informação da tabela de Grupo de produtos (SBM). Obtém o valor do mnemônico contido no Operando1, buscando o mnemônico contido no Operador 2 na tabela de Grupos de produtos |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
LÉ-SB1 |
| READ-SB1 | Obtém informação da tabela de Produtos (SB1). Obtém o valor do mnemônico contido no Operando1, buscando o mnemônico contido no Operando 2 na tabela de Produtos |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
LÊ-SED |
| READ-SED | Obtém informação da tabela de Modalidades (SED). Obtém o valor do mnemônico contido no Operando1, buscando o mnemônico contido no Operando 2 na tabela de Modalidades. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
LÊ-SF4 |
| READ-SF4 | Obtém informação da tabela de TES (SF4). Obtém o valor do mnemônico contido no Operando1, buscando o mnemônico contido no Operando 2 na tabela de TES. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
LÊ-SA2 |
| READ-SA2 | Obtém informação da tabela de Fornecedores (SA2). Obtém o valor do mnemônico contido no Operando1, buscando o mnemônico contido no Operando 2 na tabela de Fornecedores. |
Operador |
|
| Uso |
Espanhol | Português | Inglês |
|
LÊ-SA1 |
| READ-SA1 | Obtém informação da tabela de Clientes (SA1). Obtém o valor do mnemônico contido no Operando1, buscando o mnemônico contido no Operando 2 na tabela de Clientes. |
Espanhol | Português | Inglês | Uso |
SE-FUNÇÃO |
|
| Verifica se o nome de uma função de ADVPL existe no RPO |
Tabelas utilizadas
- CT2.-Contas contábeis
- CTT.-Centro de custos
- CTD.- Item contábil
- CTH.-Classe valor
- CT5.- Lançamentos padronizados
- CWJ.-Mnemônicos
- CWK.-Fórmulas cabeçalho
- CWL.-Detalhe da fórmula
- CWM.-Fórmulas por lançamento padrão
- CWP.- Tabelas x fórmula
- SX5.-Tabelas genéricas
Protótipo de Telas
Protótipo 01 Retornar
Protótipo 02 Retornar
Protótipo 03 Retornar
Protótipo 04 Retornar
Protótipo 05 Retornar
Consulta CTB931 (Rotina CTB93EXPR)
Expressão a retornar.- É um campo tipo memo que o usuário poderá editar, ou ir formando a expressão com as ferramentas mostradas a seguir. Ao selecionar OK, será a expressão retornada ao getdados da fórmula.
Operadores.- Pode selecionar entre:
Ao sair deste campo, o operador selecionado será enviado ao campo memo onde está sendo formada a expressão.
Grupo.- O usuário pode digitar o código do grupo ou selecioná-lo da tabela cz das tabelas genéricas (sx5). Se verificará que seja um código válido. Ao sair deste campo filtrará a informação dos mnemônicos (CWJ), somente das tabelas (CWJ_tabla) do grupo selecionado (CWJ_grupo). Também limpar o campo Ajuda e Mnemônico.
Descrição.- Nome do grupo, somente será visualizada (x5_descri).
Tabela.- Será exibido o código da tabela e descrição (CWJ_tabla, CWH_descri) segundo o código do Grupo selecionado no campo anterior. Ao sair deste campo filtrará a informação dos mnemônicos (CWJ), visualizando somente os campos da tabela selecionada. Também limpar o campo Ajuda.
Mnemônico.- Código e descrição (CWJ_codmne, CWJ_desc) do mnemônico segundo a tabela selecionada. Ao sair deste campo preencherá os dados correspondentes no campo Ajuda.
Ajuda.- Exibir a ajuda do campo selecionado (CWJ_help). Como título nome do campo (CWJ_campo) e da tabela (CWJ_tabla), depois a ajuda (CWJ_help), depois como subtítulo de Validação o tipo e tamanho segundo a informação do campo contido na tabela sx3.
Botão Adicionar.- Adicionará o mnemônico selecionado.
Botão Limpar.- Limpará todo o conteúdo do campo memo.
Botão OK.- Enviará a expressão do campo memo ao getdados da fórmula.
Botão Anular.- Não enviará a expressão respeitando o conteúdo da expressão do getdados da formula.
Regras de Integridade
Indicado na regra de negócio.
Release Notes
Módulo | SIGACTB / PROTHEUS |
Função | Manutenção ao catálogo de fórmulas para Lançamentos padronizados |
Descrição de Função | Permite criar a formulação (que será utilizada para Lançamentos padronizados), de forma más amigável para o usuário. |
Fluxo do processo
Diagrama de Entidade e Relacionamento
Dicionário de Dados
Dicionário de Dados.
|
Campo | Tipo | Tam. | Dec. | Título | Descrição |
CWK_FILIAL | C |
|
| Filial |
|
CWK_CODFOR | C | 15 |
| Código | Descrição | Código da fórmula | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Sim | Browse | Sim | Propriedade | Real/Alterar | Val. Sistema When | ExistChav(“CWK”) iif(!INCLUI,.F.,.T.) | Help | Código da fórmula. |
|
CWK_GRUPO | C | 6 |
| Grupo | Descrição | Código do grupo | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Sim | Browse | Sim | F3 | CZ | Propriedade | Real/Alterar | Inicializador |
| Opções |
| When |
| Val. Sistema | ExistCpo("SX5","CZ"+M->CWK_GRUPO) | Help | Módulo ou grupo ao que pertence a fórmula. |
|
CWK_TIPO | C | 1 |
| Tipo | Descrição | Tipo de fórmula | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Não | Browse | Sim | F3 |
| Propriedade | Real/Alterar | Inicializador |
| Opções | 1= Conta;2=C. Custo;3=Item contábil;4=Cl. Valor;5=Valor fixo;6=fórmula | When |
| Val. Sistema |
| Help | Se o tipo for vazio, refere-se a uma fórmula complexa, se selecionar qualquer outra, é para referir uma configuração simples. |
|
CWK_TIPDAT | C | 1 |
| Tipo de dado | Descrição | Tipo de dado do resultado | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Sim | Browse | Sim | F3 |
| Propriedade | Real/Alterar | Inicializador |
| Opções | 1=Numérico;2=Caráter;3=Data | When |
| Val. Sistema |
| Help | É o tipo de dado que resulta da execução da fórmula. |
|
CWK_VALOR | C | 50 |
| Valor | Descrição | Valor a aplicar | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório |
| Browse | Sim | F3 |
| Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | M->CWK_TIPO=='5' | Val. Sistema | iif(M->CWK_TIPO=='5', !Empty(M->CWK_VALOR),.T.) .AND. CTB93FORM(,,.T.) | Help | É o valor que será registrado no Lançamento Padrão se a condição do campo Cond. Lançamento se cumpre. |
|
CWK_CONASI | C | 40 |
| Cond. Lançamento | Descrição | Condição para o Lançamento | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório |
| Browse | Não | F3 |
| Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | M->CWK_TIPO=='5' | Val. Sistema | iif(M->CWK_TIPO=='5', !Empty(M->CWK_VALOR),.T.) .AND. CTB93FORM(,,.T.) | Help | Condição em ADVPL, que deve retornar verdadeiro |
|
CWK_CUENTA | C | 20 |
| Conta Cont | Descrição | Conta contábil | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório |
| Browse | Não | F3 | CWKTIP | Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | M->CWK_TIPO=='1' | Val. Sistema | iif(M->CWK_TIPO=='1', !Empty(M->CWK_CUENTA) .and. CTB93VALID(M->CWK_CUENTA,1),.T.) | Help | Mnemônico que tenha uma conta contábil associada ou digitar diretamente o número da conta contábil. |
|
CWK_CC | C | 16 |
| C. de Custo | Descrição | Centro de custo | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório |
| Browse | Não | F3 | CWKTIP | Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | M->CWK_TIPO=='2' | Val. Sistema | iif(M->CWK_TIPO=='2', !Empty(M->CWK_CC) .and. CTB93VALID(M->CWK_CC,2),.T.) | Help | Mnemônico que tenha um centro de custo associado ou digitar diretamente o número de Centro de custo. |
|
CWK_ITECTB | C | 16 |
| Item contábil | Descrição | Item contábil | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório |
| Browse | Não | F3 | CWKTIP | Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | M->CWK_TIPO=='3' | Val. Sistema | iif(M->CWK_TIPO=='3', !Empty(M->CWK_ITECTB) .and. CTB93VALID(M->CWK_ITECTB,3),.T.) | Help | Mnemônico que tenha um Item contábil associado ou digitar diretamente o número do Item contábil. |
|
CWK_CLVALO | C | 16 |
| Cl. Valor | Descrição | Classe Valor | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório |
| Browse | Não | F3 | CWKTIP | Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | M->CWK_TIPO=='4' | Val. Sistema | iif(M->CWK_TIPO=='4', !Empty(M->CWK_CLVALO) .and. CTB93VALID(M->CWK_CLVALO,4),.T.) | Help | Mnemônico que tenha um código de Classe Valor associado ou digitar diretamente o código de Classe Valor. |
|
CWK_HELP | MEMO |
|
| Ajuda | Descrição | Ajuda | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório |
| Browse | Não | F3 |
| Propriedade | Real/Alterar | Inicializador |
| Opções |
| When |
| Val. Sistema |
| Help | Descreva o uso desta fórmula. |
|
CWK_ADVPL | MEMO |
|
| ADVPL | Descrição | Fórmula em ADVPL | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório |
| Browse | Não | F3 |
| Propriedade | Real/visualizar | Inicializador |
| Opções |
| When |
| Val. Sistema |
| Help | Tradução da fórmula para código ADVPL |
|
CWK_FOREJE | C | 30 |
| Executável | Descrição | Fórmula executável | Formato | @! | Nível | 1 | Usado | Não | Obrigatório |
| Browse | Sim | F3 |
| Propriedade | Real/Alterar | Inicializador |
| Opções |
| When |
| Val. Sistema |
| Help |
|
|
CWK_DESGPO | C | 20 |
| Desc. Grupo | Descrição | Descrição de Grupo | Formato | @! | Usado | Sim | Obrigatório | Não | Browse | Não | F3 |
| Propriedade | Virtual/Visualizar | Inicializador | IF(!INCLUI,POSICIONE("SX5",1,XFILIAL("SX5")+ "CZ"+M->CWK_GRUPO,"X5DESCRI()"),"") | Val. Sistema |
| Help | Módulo ou grupo ao que pertence a fórmula |
|
|
|
|
Índices: CWK_FILIAL+CWK_CODFOR
|
Campo | Tipo | Tam. | Dec. | Título | Descrição |
CWL_FILIAL | C |
|
| Filial |
|
CWL_CODFOR | C | 15 |
| Código | Descrição | Código da fórmula | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Sim | Browse | Não | Propriedade | Real/Alterar | Val. Sistema |
| Inicializador | IIF(!inclui,CWK->CWK_CODFOR,"0") | Help | Código da fórmula |
|
CWL_SEC | C | 6 |
| Seq. | Descrição | Número de sequência | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Sim | Browse | Não | F3 | Não | Propriedade | Real/Alterar | Inicializador |
| Opções |
| When |
| Val. Sistema | Verificar que não seja repetido no número de sequência no getdados. | Help | Sequência na qual será executada a fórmula. |
|
CWL_OPER | C | 02 |
| Operador | Descrição | Operador de formulação | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Não | Browse | Não | F3 |
| Propriedade | Real/Alterar | Inicializador |
| Opções | #CTB93LBOX() | When |
| Val. Sistema |
| Help | Operador para formular. |
|
CWL_OPER1 | C | 37 |
| Operador 1 | Descrição | Operador 1 | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Não | Browse | Sim | F3 | CWKFOR | Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | CTB93CWLEX() | Val. Sistema | CTB93VOP() | Help | É o primeiro operando utilizado pelo operador selecionado. |
|
CWL_OPER2 | C | 37 |
| Operador 2 | Descrição | Operador 2 | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Não | Browse | Sim | F3 | CWKFOR | Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | CTB93WOP2() | Val. Sistema | CTB93CWLEX() | Help | É o segundo operando utilizado pelo operador selecionado, pode ser que não seja requerido. |
|
CWL_CONJUN | C | 1 |
| Conjunção | Descrição | Conjunção | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Não | Browse | Sim | F3 |
| Propriedade | Real/Alterar | Inicializador |
| Opções | 1=Y;2=O | When | CTB93CWLEX() | Val. Sistema |
| Help | Permite continuar a sequência atual com a seguinte, por um AND ou por um OR. |
|
CWL_SELSEC | C | 6 |
| Quebra a Sec. | Descrição | Quebra a sequência | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Não | Browse | Não | F3 |
| Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | CTB93CWLEX() | Val. Sistema |
| Help | Número de sequência onde continuará, no caso em que a condição no seja cumprida. Deve existir no getdados. |
|
CWL_EXPRES | C | 200 |
| Expressão ADVPL | Descrição | Expressão ADVPL | Formato | @! | Nível | 1 | Usado | Sim | Obrigatório | Não | Browse | Não | F3 | CTB932 | Propriedade | Real/Alterar | Inicializador |
| Opções |
| When | CTB93CWLEX() | Val. Sistema | CTB93FORM() | Help | Pode registrar operações aritméticas no ADVPL. |
|
Índices: 1. CWL_FILIAL+CWL_CODFOR+CWL_SEC
2. CWL_FILIAL +CWL_OPER1
3. CWL_FILIAL+CWL_OPER2
|
Campo | Tipo | Tam. | Dec. | Título | Descrição |
CWQ_FILIAL | C |
|
| Filial |
|
CWQ_CODFOR | C | 15 |
| Código | Descrição | Código da fórmula | Formato | @! | Nível | 1 | Usado | Não | Obrigatório | Sim | Browse | Não | Propriedade | Real/Alterar | Val. Sistema |
| Help | Código da fórmula |
|
CWQ_TABLA | C | 3 |
| Alias da tabela | Descrição | Alias da tabela | Formato | @! | Nível | 1 | Usado | Não | Obrigatório | Sim | Browse | Não | Propriedade | Real/Alterar | Val. Sistema |
| Help | Alias da tabela associada à fórmula. |
|
Índices: CWQ_FILIAL+CWQ_CODFOR+CWQ_TABLA
CWQ_FILIAL+CWQ_TABLA+ CWQ_CODFOR
- CWM – Lançamentos padronizados x fórmulas
|
Campo | Tipo | Tam. | Dec. | Título | Descrição |
CWM_FILIAL | C |
|
| Filial |
|
CWM_CODFOR | C | 15 |
| Código | Descrição | Código da fórmula | Formato | @! | Nível | 1 | Usado | Não | Obrigatório | Sim | Browse | Não | Propriedade | Real/Alterar | Val. Sistema |
| Help | Código da fórmula |
|
CWM_LANPAD | C | 3 |
| Lançamento Padrão | Descrição | Código do Lançamento Padrão | Formato | @! | Nível | 1 | Usado | Não | Obrigatório | Sim | Browse | Não | Propriedade | Real/Alterar | Val. Sistema |
| Help | Código do Lançamento Padrão |
|
CWM_SEQUEN | C | 3 |
| Item do Lançamento Padrão | Descrição | Item do Lançamento Padrão | Formato | @! | Nível | 1 | Usado | Não | Obrigatório | Sim | Browse | Não | Propriedade | Real/Alterar | Val. Sistema |
| Help | Item do Lançamento Padrão |
|
Índices: CWM_FILIAL+CWM_CODFOR+CWM_LANPAD+CWM_SEQUEN
CWM_FILIAL+ CWM_LANPAD+ CWM_CODFOR
Grupo de Perguntas
Não aplica
Tabelas genéricas (sx5)
CZ.- Grupos ou Módulos |
X5_CHAVE | X5_DESCSPA |
000001 | SIGACTB |
000002 | SIGAFAT |
000003 | SIGACOM |
000004 | SIGAPCP |
000005 | SIGAGPE |
Consulta Padrão
CWJ.- Mnemônicos
CWJFOR.- Consulta específica de mnemônicos
CWJTIP.- Consulta específica de tipo de dado
CZ.- Consulta padrão de Grupos Tabela SX5
CTB931.- Consulta específica para formar expressões.
CWJ001.-Consulta padrão Mnemônicos
Parâmetros
Não aplica
Estrutura de Menu
No módulo Configurador (SIGACFG) acessar a Ambiente/Cadastros/Menu (CFGX013). Informe a nova opção do menu do SIGACTB (Contabilidade Gerencial) conforme as instruções a seguir:
Menu | Contabilidade Gerencial |
Submenu | Atualizações>Cadastros>Entidades> Manut. Fórmulas |
Nome da Rotina | Manut. Fórmulas |
Programa | CTBA093 |
Módulo | SIGACTB |
Tipo | Função Protheus |