GARANTIR DESCONTO

Fórum SP para fazer esses calculos #48564

23/12/2004

0

Olá pessoal!

Pessoal ando meio aperriado com uma questão q está me tirando do sério, quero escrever uma SP q me clacule os eventos de uma folha de pagamento, por exemplo, com 100¬ código Delphi, já consegui fazer funcionar, e fica como se segue:
[img:18d31c58bc]http://www.galeria.mastersfusion.com.br/galeria/albums/userpics/10055/lan¬E7amento.jpg[/img:18d31c58bc]
Tela de lançamento de eventos manualmente, nada de INSS/IRRF/FGTS, pois esse serão calculados pelo sistema de forma interna, com base em uma tabela de indices para essas contribuições.

[img:18d31c58bc]http://www.galeria.mastersfusion.com.br/galeria/albums/userpics/10055/normal_Tela1.jpg[/img:18d31c58bc]
Os funcionários com seus eventos mauais lançados e um evento automático (INSS) calculado pelo botão processar.

[img:18d31c58bc]http://www.galeria.mastersfusion.com.br/galeria/albums/userpics/10055/normal_compr_pag.jpg[/img:18d31c58bc]
Comprovante de pagamento com todos os eventos devidamente calculados.

Quero algo assim, mas fazendo uma SP, se for possível alguém me dar uma ajuda fico muito grato.


Obrigado a todos por terem ao menos visualizado!

[b:18d31c58bc]Martins[/b:18d31c58bc]


Martins

Martins

Responder

Posts

23/12/2004

Fsflorencio

O q especificamente deve ser calculado? INSS/IRRF/FGTS?


Responder

Gostei + 0

23/12/2004

Martins

Isso mesmo, tenho q calcular INSS/IRRF/FGTS.
Tenho q inserir (lançar) os dados CODFUNCIONARIO, CODEVENTO, DESCRICAO, TIPO, VALOR, em outra tablea, no caso DIGITAPDR, e depois calcular esses eventos mais o TOTALPROVENTO, TOTALDESCONTOS, LIQUIDO.

Vou lançando os eventos pros funcionários, eventos manuais (salario, gratificação, complemento, faltas, etc), deverá ficar mais ou menos assim.

CODF CODEVENT DESC REF VALOR
001 00001 SALARIO BASE 260,00
001 00030 FALTAS 3 0,00
-------------------------------------------------------------------------------
002 00001 SALARIO BASE 260,00
ficá mais ou menos assim, visto por um grid, listando todos os funcionários, pois bem pretendo transferir todos esses dados para TBDIGITAPDR, só q calculando os eventos automáticos (INSS/IRRF/FGTS/TOTALPROVENTOS/TOTALDESCONTOS/LIQUIDO),
então se tiver como ficar mais ou menos assim:

CODF CODEVENT DESC REF VALOR
001 00001 SALARIO BASE 260,00
001 00030 FALTAS 3 26,00
001 99991 I.N.S.S. 7,65 19,89
001 99992 TOTPROV 260,00
001 99993 TOTDESC 45,89
001 99994 LIQUIDO 214,11
-------------------------------------------------------------------------------
002 00001 SALARIO BASE 260,00
002 99991 I.N.S.S. 7,65 19,89
002 99992 TOTPROV 260,00
002 99993 TOTDESC 19,89
002 99994 LIQUIDO 240,11

Com códigos em Pascal (Delphi), fis funcionar ok!, mas gostaria de fazer isso via SP/Trigger se for o caso, acho q não é, mas gostaria de montar algo assim com recursos do Banco (Interbase/Firebird).

Se alguém puder ajudar.

Valew

Martins


Responder

Gostei + 0

23/12/2004

Fsflorencio

Vou te dar uma idéia de como faria:

Acho que a tabela deveria ser alimentada anteriormente com (INSS/IRRF/FGTS) pela procedure abaixo.

CREATE PROCEDURE SP_ALIMENTA_EVENTOS (
CODF INTEGER) )
AS
DECLARE VARIABLE PROXIMO_CODIGO INTEGER;
DECLARE VARIABLE CODEVENT INTEGER;
DECLARE VARIABLE VALOR NUMERIC(15,2);
BEGIN
/*PEGANDO O PRÓXIMO CÓDIGO*/
SELECT MAX(CODEVENT) + 1
FROM EVENTOS
WHERE CODF = :CODF
INTO :PROXIMO_CODIGO;

/*pegando o valor do salário base desta folha para calcular o inss*/
SELECT CODF CODEVENT VALOR
FROM EVENTOS
WHERE DESC = ´SALARIO BASE´
INTO :CODF :CODEVENT :VALOR
DO
BEGIN
INSERT INTO EVENTOS(CODF CODEVENT DESC REF VALOR)
VALUES (:CODF, :PROXIMO_CODIGO, ´INSS´, ´6´, VALOR * 6 / 100); /*VAMOS SUPOR QUE O VALOR DA ALIQUOTA SEJA 6¬ APENAS SOBRE O SALARIO BASE*/
END

/*pegando o valor do salário base desta folha para calcular o FGTS*/
SELECT CODF CODEVENT VALOR
FROM EVENTOS
WHERE DESC = ´SALARIO BASE´
INTO :CODF :CODEVENT :VALOR
DO
BEGIN
INSERT INTO EVENTOS(CODF CODEVENT DESC REF VALOR)
VALUES (:CODF, :PROXIMO_CODIGO, ´FGTS´, ´9´, VALOR * 9 / 100); /*VAMOS SUPOR QUE O VALOR DA ALIQUOTA SEJA 9¬ SOBRE O SALARIO BASE*/
END
END

//vc pode declarar variáveis locais depois do ´AS´ e trabalhar como preferir
//esta procedure é apenas um caminho aberto para vc começar a trabalhar
//não me ative em minúcias, pois os cálculos são bastante complexos e também não pude testar, fiz direto no bloco de notas

//executando a procedure
EXECUTE PROCEDURE SP_ALIMENTA_EVENTOS( 1 );

CREATE PROCEDURE SP_LISTA_EVENTOS (
CODF INTEGER)
RETURNS (
CODF INTEGER,
CODEVENT INTEGER,
DESC VARCHAR(40),
REF VARCHAR(10),
VALOR NUMERIC(15,2) )
AS
DECLARE VARIABLE INSS NUMERIC(15,2);
BEGIN
FOR SELECT CODF CODEVENT DESC REF VALOR
FROM EVENTOS
INTO :CODF :CODEVENT :DESC :REF :VALOR
DO
BEGIN
SUSPEND;/*ESTE COMANDO FAZ A EXIBIÇÃO DOS PARÂMETROS DE SAÍDA*/
END
END

//EXECUTANDO A PROCEDURE

SELECT * FROM SP_LISTA_EVENTOS( 1 ); //esta é uma procedure selecionável, pois tem parâmetros de saída

Espero ter ajudado.


Responder

Gostei + 0

23/12/2004

Martins

[b:ddd9c3d766]fsflorencio[/b:ddd9c3d766], vc foi de grande ajuda sim, sua idéia vai me ser muito util, vou poder desenvolver com ela e implementar mais algumas coisas, muito obrigado mesmo, vc foi de grande ajuda mesmo.

Valew!

Se alguém tiver mais alguma idéia, por favor!

Martins


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar