Problema de Lógica - Meus Dois Neurônios Estão em Parafuso!
Enviado: 12 Jun 2008 16:32
Olá!
Pessoal, o texto ficará longo, mas por favor, leiam porque não consigo achar uma solução (solução tenho até mais de uma, mas preciso de uma que tome o menor tempo para ser processada).
Estou com um problema de lógica pura num programa Clipper.
Preciso desenvolver um RPA onde os encargos não são descontados do prestador de serviços, porque a empresa arca com estes encargos.
Mas, mesmo assim, a empresa quer que estes encargos sejam destacados no RPA como se descontados tivessem sido.
Então preciso ajustar para cima o valor contratado de forma que, ao aplicar os descontos, dê o valor líquido contratado.
É mais ou menos como utilizar a opção “Atingir Meta” do Excel.
Pensei numa regrinha de três jogando valores altos, e fictícios, para poder estabelecer a relação percentual entre o valor bruto (que eu devo encontrar) e o valor líquido (que é o valor contratado), mas já cheguei ao consenso que não é possível, pois o IR, por exemplo, só existirá após uma faixa de valor, então pode ser que o valor líquido contratado não atinja IR, mas que quando eu chegar ao valor bruto, atinja, assim como há descontos que obedecem a certo teto, como é o caso do INSS.
Incrementar de centavo a centavo até chegar ao valor bruto determinado, também fica inviável, pois a rotina de cálculos faz acessos à base de dados para buscar limites, atualizar cálculos cumulativos, buscar tetos, enfim, e incrementando os valores centavo a centavo, a rotina seria executada milhares de vezes e levaria muito tempo, tempo este que o prestador de serviços não aguardará.
Vou montar um pequeno exemplo para ficar mais claro tudo aí em cima:
VALOR BRUTO: 713,70
DESCONTOS: 3,57
INSS RETIDO: 15,70
ICMS – SUBSTITUIÇÃO: 68,51
VALOR LÍQUIDO: 625,92
Então, o valor que será passado ao programa será R$ 625,92, que é o que foi contratado com o prestador de serviços, e o programa deverá chegar aos 713,70.
Lógico que todo o cálculo estará num laço, mas este laço deverá ser executado o menor número de vezes possível, senão a performance degradará muito (já testei isto).
Bom, depois da longa história, vem a pergunta:
PELO AMOR DE DEUS, COMO SAIO DE UM VALOR LÍQUIDO PARA CHEGAR NUM VALOR BRUTO QUE DESCONHEÇO, ONDE O VALOR LÍQUIDO É O VALOR BRUTO MENOS OS ENCARGOS, DE FORMA QUE A ROTINA SEJA EXECUTADA NO MENOR NÚMERO DE VEZES POSSÍVEL?
Desde já, muito obrigado mesmo!
Abraços,
Ademir Spitzer
Pessoal, o texto ficará longo, mas por favor, leiam porque não consigo achar uma solução (solução tenho até mais de uma, mas preciso de uma que tome o menor tempo para ser processada).
Estou com um problema de lógica pura num programa Clipper.
Preciso desenvolver um RPA onde os encargos não são descontados do prestador de serviços, porque a empresa arca com estes encargos.
Mas, mesmo assim, a empresa quer que estes encargos sejam destacados no RPA como se descontados tivessem sido.
Então preciso ajustar para cima o valor contratado de forma que, ao aplicar os descontos, dê o valor líquido contratado.
É mais ou menos como utilizar a opção “Atingir Meta” do Excel.
Pensei numa regrinha de três jogando valores altos, e fictícios, para poder estabelecer a relação percentual entre o valor bruto (que eu devo encontrar) e o valor líquido (que é o valor contratado), mas já cheguei ao consenso que não é possível, pois o IR, por exemplo, só existirá após uma faixa de valor, então pode ser que o valor líquido contratado não atinja IR, mas que quando eu chegar ao valor bruto, atinja, assim como há descontos que obedecem a certo teto, como é o caso do INSS.
Incrementar de centavo a centavo até chegar ao valor bruto determinado, também fica inviável, pois a rotina de cálculos faz acessos à base de dados para buscar limites, atualizar cálculos cumulativos, buscar tetos, enfim, e incrementando os valores centavo a centavo, a rotina seria executada milhares de vezes e levaria muito tempo, tempo este que o prestador de serviços não aguardará.
Vou montar um pequeno exemplo para ficar mais claro tudo aí em cima:
VALOR BRUTO: 713,70
DESCONTOS: 3,57
INSS RETIDO: 15,70
ICMS – SUBSTITUIÇÃO: 68,51
VALOR LÍQUIDO: 625,92
Então, o valor que será passado ao programa será R$ 625,92, que é o que foi contratado com o prestador de serviços, e o programa deverá chegar aos 713,70.
Lógico que todo o cálculo estará num laço, mas este laço deverá ser executado o menor número de vezes possível, senão a performance degradará muito (já testei isto).
Bom, depois da longa história, vem a pergunta:
PELO AMOR DE DEUS, COMO SAIO DE UM VALOR LÍQUIDO PARA CHEGAR NUM VALOR BRUTO QUE DESCONHEÇO, ONDE O VALOR LÍQUIDO É O VALOR BRUTO MENOS OS ENCARGOS, DE FORMA QUE A ROTINA SEJA EXECUTADA NO MENOR NÚMERO DE VEZES POSSÍVEL?
Desde já, muito obrigado mesmo!
Abraços,
Ademir Spitzer