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.