ERP – Contas a Pagar – Como bloquear a alteração do favorecido na alteração de títulos por lote
Dúvida
Como bloquear a alteração do Favorecido na tela de Alteração de Títulos por Lote no módulo Gestão de Contas a Pagar ?
Solução
Não existe atualmente no sistema uma configuração que bloqueie a alteração do Favorecido, impedindo que seja informado um Favorecido diferente das definições do Fornecedor.
A informação do Favorecido nas definições do Fornecedor é para sugestão na geração dos títulos, mas isso não impede que essa informação seja alterada, assim como outros campos nas definições do fornecedor como sugestão podem ser alterados.
No entanto, essa questão pode ser tratada através de consistência via Identificador de Regras.
Na tela F501ATL - Finanças / Gestão de Contas a Pagar / Contas a Pagar / Entrada e Manutenção / Alteração de Títulos por Lote (Alteração de Títulos por Lote do Contas a Pagar) temos o identificador de regras CPA-501ATLCL01 que é executado logo após sair da linha alterada, ou seja, se o usuário alterar alguma informação de um título na grid, ele será executado.
Nesse identificador, pode ser feito um cursor na tabela E095HFO para verificar qual o favorecido que está definido para o fornecedor, e caso seja diferente do favorecido informado pelo usuário na tela, retorna uma mensagem bloqueando o processo, conforme exemplo a seguir.
Regra vinculada ao Identificador:
Definir Numero VSCodEmp;
Definir Numero VSCodFil;
Definir Numero VSNumTit;
Definir Numero VSCodFor;
Definir Numero VSCodFav;
Definir Numero VSCodFavAux;
Definir Alfa vCursor_E095HFO;
Definir Alfa vQuery;
SQL_Criar(vCursor_E095HFO); vQuery = "SELECT CODFAV \ FROM E095HFO \ WHERE CODEMP = :CODEMP \ AND CODFIL = :CODFIL \ AND CODFOR = :CODFOR"; SQL_DefinirComando(vCursor_E095HFO,vQuery); SQL_DefinirInteiro(vCursor_E095HFO, "CODEMP", VSCodEmp); SQL_DefinirInteiro(vCursor_E095HFO, "CODFIL", VSCodFil); SQL_DefinirInteiro(vCursor_E095HFO, "CODFOR", VSCodFor);
SQL_AbrirCursor(vCursor_E095HFO);
Se (SQL_EOF(vCursor_E095HFO) = 0)
{
SQL_RetornarInteiro(vCursor_E095HFO,"CODFAV",VSCodFavAux);
Se (VSCodFav <> VSCodFavAux)
GeraLog ("Não é permitido informar um favorecido diferente do configurado nas definições do fornecedor!");
}
SQL_FecharCursor(vCursor_E095HFO);
SQL_Destruir(vCursor_E095HFO);
Ao tentar alterar o favorecido, é apresentado a mensagem, já que o favorecido do título (VSCodFav) é diferente do favorecido retornado do select que consta na
variável (VSCodFavAux).