Árvore de páginas

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:

  1. 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.

  1. 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:

  1. Se inicia com aspas, verificará o seu fechamento e será validado.
  2. Verificar se existe no cadastro de mnemônicos (CWJ), caso contrário validar que seja numérico.
  3. 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ãoSequencial (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:

Operador

+




  • (


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.

 

  • CWK –Formulação

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

 

  • CWL –Itens de Formulação

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


  • CWQ – Tabelas x fórmulas

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