Identificador de Regra
COM-000ALISS01
Módulo: COM - Comercial.
Finalidade: Alterar o percentual, valor e a base de ISS quando é feito um cálculo do mesmo.
Características: Chamado sempre que um item de serviço executar um cálculo do valor do ISS. A regra não é chamada se o item não calcular o valor de ISS, ou seja, caso exista algum parâmetro que faça com que o sistema não calcule ISS, a regra também não será chamada.
A partir da versão 5.5.2.7 foram adicionadas as variáveis VSPERCRT, VSPERPIT, VSPERCSL e VSPEROUR para representar respectivamente os percentuais de Cofins [PerCrt], PIS [PerPit], CSLL [PerCsl] e Outras Retenções [PerOur].
A partir da versão 5.8.2.1, o identificador foi alterado para permitir retornar o valor de dedução através da variável VSVLRDED, caso a base de calculo para o ISS foi alterada e não foi informado um valor de dedução, o ERP vai calcular o valor de dedução comparando o valor base de ISS original com o valor base de ISS retornado da regra.
Tela: Notas Fiscais de Entrada e Saída, Pedidos e Ordens de Compra
Transação: Utiliza a Transação de Serviço
Inserção
| Descrição | F120GPC | F120GPD | Web service SimularPedido | Web service GravarPedido | F140GNF |
|---|---|---|---|---|---|
| Executa identificador na inserção³ Ver considerações abaixo | Sim | Sim | Sim | Sim | Sim |
| Sistema acata valores devolvidos pela regra | Sim | Sim | Sim | Sim | Sim |
| Identificador disponibiliza tabelas de pedido para consulta com campo de usuário | Sim | Sim | Sim | Sim | Não |
| Calcula com base no percentual devolvido pela regra²Ver considerações abaixo | Não | Não | Não | Sim | Não |
Alteração
| Descrição | F120GPC | F120GPD | Web service SimularPedido | Web service GravarPedido | F140GNF |
|---|---|---|---|---|---|
| Executa identificador na alteração | Sim | Sim | Operação inexistente | Sim | Sim |
| Sistema acata valores devolvidos pela regra | Sim | Sim | Operação inexistente | Sim | Sim |
| Identificador disponibiliza tabelas de pedido para consulta com campo de usuário | Sim | Sim | Operação inexistente | Sim | Não |
| Calcula com base no percentual devolvido pela regra²Ver considerações abaixo | Não | Não | Operação inexistente | Sim | Não |
Recálculo
| Descrição | F120GPC | F120GPD | Web service SimularPedido | Web service GravarPedido | F140GNF |
|---|---|---|---|---|---|
| Executa identificador no recálculo | Sim | Sim | Operação inexistente | Operação inexistente | Sim |
| Sistema acata valores devolvidos pela regra | Sim | Sim | Operação inexistente | Operação inexistente | Sim |
| Identificador disponibiliza tabelas de pedido para consulta com campo de usuário | Sim | Regra¹Ver considerações abaixo | Operação inexistente | Operação inexistente | Não |
| Calcula com base no percentual devolvido pela regra²Ver considerações abaixo | Não | Não | Operação inexistente | Operação inexistente | Não |
Fechamento
| Descrição | F120GPC | F120GPD | Web service SimularPedido | Web service GravarPedido | F140GNF |
|---|---|---|---|---|---|
| Executa identificador no fechamento | Sim | Sim | Operação inexistente | Sim | Não |
| Sistema acata valores devolvidos pela regra | Sim | Sim | Operação inexistente | Sim | Não |
| Identificador disponibiliza tabelas de pedido para consulta com campo de usuário | Sim | Regra¹Ver considerações abaixo | Operação inexistente | Sim | Não |
| Calcula com base no percentual devolvido pela regra²Ver considerações abaixo | Não | Não | Operação inexistente | Sim | Não |
Considerações:
¹ Regra: Nesses cenários, não será possível acessar os campos das Tabelas de Dados Gerais e Itens de Serviço do Pedido por meio do formato Tabela.Campo. É necessário criar um cursor para as Tabelas E120PED e E120ISP para buscar valores dos campos nativos e/ou de usuário.
² Calcula com base no percentual devolvido pela regra: Nesses cenários o sistema não calcula o Valor de ISS com base no percentual devolvido pela regra. É necessário retornar os três valores referentes ao ISS, nas variáveis "VSVlrBis", "VSVlrIss" e "VSPerIss" da regra. O sistema acatará os valores retornados. Atenção! Se for retornado apenas valor para o campo PerIss, o sistema não calcula o novo valor de ISS com base no novo percentual, apenas acata esse percentual.
³ Executa identificador na inserção: Se na inserção do Item de Serviço não é sugerido um Percentual de ISS pelo sistema, então a Base, o Valor e o Percentual de ISS são enviados com valor Zero (0) para Regra. Nesse cenário, sugere-se calcular a Base do ISS por meio do mesmo cálculo efetuado pelo sistema: (VlrBru - (VlrDsc + VlrDs1 + VlrDs2 + VlrDs3 + VlrDs4 + VlrDs5));
Regra:
- Trata diversos cenário das rotinas de pedido.
- Acessa campos de usuário dos Dados Gerias e Itens de Serviço do Pedido de uma base de dados. Caso esses campos não existam na base de dados, o sistema apresentará erro ao compilar e/ou executar a regra, por isso é importante adaptar a regra para a base de dados em que for aplicada.
- Trata de forma genérica o calculo de ISS para as demais rotinas que não sejam Pedido.
/*
Definição da Variável relativa a Origem da Chamada do Identificador de Regras.
Valore Possíveis:
PED = Pedido;
NFS = Nota Fiscal de Saída;
OCT = Orçamento;
NFE = Nota Fiscal de Entrada;
OCP = Ordem de Compra.
*/
Definir Alfa VSOrigem;
/*
Definição das Variáveis relativas as Chaves do Documento de Origem.
*/
Definir Numero VSCodEmp;
Definir Numero VSCodFil;
Definir Numero VSNumero;
Definir Numero VsSeqIte;
/*
Definição das Variáveis relativa aos campos de Percentual, Base e Valor de ISS.
O Valor dessas variáveis é devolvido para o sistema.
*/
Definir Numero VSPerIss;
Definir Numero VSVlrIss;
Definir Numero VSVlrBis;
/*
Definição das Variáveis de Valores Diversos do Item do Documento de Origem.
*/
Definir Numero VSVlrBru;
Definir Numero VSPerDsc;
Definir Numero VSPerDs1;
Definir Numero VSPerDs2;
Definir Numero VSPerDs3;
Definir Numero VSPerDs4;
Definir Numero VSPerDs5;
/*
Definição das Variáveis relativas a Disponibilidade das Tabelas de Pedido em Regra.
*/
Definir Alfa VSDisp_E120Ped;
Definir Alfa VSDisp_E120Isp;
/*
Definição das Variáveis de Uso Genérico.
Essas variáveis são utilizadas apenas na função EntradaValor.
*/
Definir Alfa PRETALFA;
Definir Numero PRETNUM;
Definir Numero PTIPSAI;
Definir Alfa xValorCampoUsuarioPed;
Definir Alfa xValorCampoUsuarioItem;
Definir Funcao Carregar_CamposUsuario();
Definir Funcao Carregar_CamposUsuario_Banco();
Definir Funcao Tratar_SugestaoIss();
Definir Funcao Tratar_InsercaoPercentualZero();
Definir Funcao Tratar_CalculoIss();
/*
ENTRADAVALOR("Digite o Percentual de ISS:", "Digite o Percentual:",2, "ZZ9,999", "1", 1, PRETALFA, PRETNUM, PTIPSAI);
SE (PTIPSAI = 1)
INICIO
VSPerIss = PRETNUM;
SE (VSVLRBIS = 0)
Inicio
VSVLRBIS = (VSVlrBru - (VSPerDsc + VSPerDs1 + VSPerDs2 + VSPerDs3 + VSPerDs4 + VSPerDs5));
Fim;
VSVLRISS = (VSVLRBIS * (VSPerIss / 100));
FIM;
*/
Se (VsOrigem = "PED")
Inicio
Carregar_CamposUsuario();
Tratar_SugestaoIss();
Tratar_InsercaoPercentualZero();
Tratar_CalculoIss();
Fim
SeNao
Inicio
Tratar_InsercaoPercentualZero();
Tratar_CalculoIss();
Fim;
x = y;
Funcao Carregar_CamposUsuario();
Inicio
Se ((VSDisp_E120Ped = "S") E (VSDisp_E120Isp = "S"))
Inicio
xValorCampoUsuarioPed = E120PED.Usu_Teste;
xValorCampoUsuarioItem = E120ISP.Usu_CodPro;
Fim
SeNao
Inicio
Carregar_CamposUsuario_Banco();
Fim;
Fim;
Funcao Carregar_CamposUsuario_Banco();
Inicio
Definir Alfa xSql;
Sql_Criar(xCursor);
xSql = "SELECT E120PED.USU_TESTE, E120ISP.Usu_CodPro " +
" FROM E120PED, E120ISP " +
" WHERE E120PED.CODEMP = E120ISP.CODEMP " +
" AND E120PED.CODFIL = E120ISP.CODFIL " +
" AND E120PED.NUMPED = E120ISP.NUMPED " +
" AND E120PED.CODEMP = :VSCODEMP " +
" AND E120PED.CODFIL = :VSCODFIL " +
" AND E120PED.NUMPED = :VSNUMPED " +
" AND E120ISP.SEQISP = :VSSEQITE";
Sql_DefinirComando(xCursor, xSql);
Sql_DefinirInteiro(xCursor, "VSCODEMP", VSCodEmp);
Sql_DefinirInteiro(xCursor, "VSCODFIL", VSCodFil);
Sql_DefinirInteiro(xCursor, "VSNUMPED", VSNumero);
Sql_DefinirInteiro(xCursor, "VSSEQITE", VSSeqIte);
Sql_AbrirCursor(xCursor);
Se(Sql_EOF(xCursor) = 0)
Inicio
Sql_RetornarAlfa(xCursor, "USU_Teste", xValorCampoUsuarioPed);
Sql_RetornarAlfa(xCursor, "Usu_CodPro", xValorCampoUsuarioItem);
Fim;
Sql_FecharCursor(xCursor);
Sql_Destruir(xCursor);
Fim;
Funcao Tratar_SugestaoIss();
Inicio
Se (xValorCampoUsuarioPed = "50")
Inicio
VSPerIss = 50;
Fim
SeNao
Inicio
VSPerIss = 25;
Fim;
Fim;
Funcao Tratar_InsercaoPercentualZero();
Inicio
/*
Tratamento do cenário especifico que acontece na inserção de um registro,
quando não existe Percentual de ISS sugerido ao item.
Nesse cenário, o sistema não calcula a Base e o Valor de ISS, ou seja,
esses valores estão zerados na Regra.
Por isso, a base deve ser montada e o valor deve ser calculado de forma manual.
Os três campos devem ser retornados ao sistema (VSPerIss, VSVlrBis, VSVlrIss).
*/
SE (VsVlrBis = 0)
Inicio
VsVlrBis = (VSVlrBru - (VSPerDsc + VSPerDs1 + VSPerDs2 + VSPerDs3 + VSPerDs4 + VSPerDs5));
Fim;
Fim;
Funcao Tratar_CalculoIss();
Inicio
VSVlrIss = (VsVlrBis * (VSPerIss / 100));
Fim;
|
Variáveis Disponibilizadas:
Importante
- A variável VSREDISS retorna valor, porém o percentual alterado não é aplicado automaticamente ao Valor Base ISS. A alteração do Valor Base ISS e do Valor do ISS deve ser feita via regra.
- A partir das versões 5.10.3.83 e 5.10.4.29 o identificador de regras disponibiliza a Tabela de Dados Gerais do Pedido e Item de Serviço do Pedido para consulta. As tabelas podem ser acessadas apenas quando as variáveis VSDisp_E120Ped e VSDisp_E120Isp estiverem iguais a "S", conforme segue:
- Quando a variável VSDisp_E120Ped estiver igual a "S", terá acesso a Tabela dos Dados Gerias (E120PED) em regra para consulta dos campos (de usuário ou não) dessa tabela;
- Quando a Variável VSDisp_E120Isp estiver igual a "S", terá acesso a Tabela de Itens de Serviço do Pedido (E120ISP) em regra para consulta dos campos (de usuário ou não) dessa tabela.
Atenção
Caso o parâmetro global LisVarReg esteja habilitado, a variável ListaVariaveis estará disponível em todos os identificadores de regras do sistema. O conteúdo desta variável lista os campos disponibilizados no identificador de regras em questão.
Não é aconselhada a ativação desse parâmetro global para o uso cotidiano. Esse recurso de listagem dos campos de identificadores auxilia a construção de regras e o Suporte para, por exemplo, depuração ou quando não houver acesso à documentação dos identificadores de regras.
English
Español
English
Español


