[firebase-br] Ajuda com Procedure - Calculo + Atualização.

Alvaro Naves alvaro em anconsultoria.com.br
Ter Jun 21 10:07:31 -03 2011


Tente tirar o SUSPEND do seu loop. 


[]s







Alvaro Naves






---- On Tue, 21 Jun 2011 05:30:12 -0700 Diego Maccari <diegomaccari em ig.com.br> wrote ---- 



Bom dia Pessoal 
 
Ainda sou novato em SQL e FB estou tentando criar uma SP para atualizar 
alguns compos de uma tabela esta atualização requer um calculo de 
proporcionalização de creditos de PIS/COFINS 
Quando executo a SP ela calcula o valor do creditos e atualiza todos os 
registros com base no calculo realizado na 1º linha. Alguém poderia me dar 
uma dica de onde estou errando. 
 
Segue DDL. 
 
SET TERM ^ ; 
 
CREATE OR ALTER PROCEDURE PROPORCIONA_PISCOFINS_4105 ( 
 PCNPJ VARCHAR(18), 
 PMES VARCHAR(10), 
 PANO INTEGER, 
 PCST_PIS VARCHAR(2), 
 PCST_COFINS VARCHAR(2), 
 PPERCENT_EX DECIMAL(18,4) = 0.0000, 
 PPERCENT_MI DECIMAL(18,4) = 0.0000, 
 PPERCENT_NT DECIMAL(18,4) = 0.0000) 
AS 
DECLARE VARIABLE PIS DECIMAL(18,2); 
DECLARE VARIABLE PIS_EX DECIMAL(18,2); 
DECLARE VARIABLE PIS_MI DECIMAL(18,2); 
DECLARE VARIABLE PIS_NT DECIMAL(18,2); 
DECLARE VARIABLE COFINS DECIMAL(18,2); 
DECLARE VARIABLE COFINS_EX DECIMAL(18,2); 
DECLARE VARIABLE COFINS_MI DECIMAL(18,2); 
DECLARE VARIABLE COFINS_NT DECIMAL(18,2); 
DECLARE VARIABLE ID INTEGER; 
DECLARE VARIABLE BASE_CALCULO_PIS DECIMAL(18,3); 
DECLARE VARIABLE ALIQUOTA_PIS DECIMAL(18,4); 
DECLARE VARIABLE VALOR_PIS DECIMAL(18,2); 
DECLARE VARIABLE VALOR_PIS_EXPORTACAO DECIMAL(18,2); 
DECLARE VARIABLE VALOR_PIS_MERC_INTERNO DECIMAL(18,2); 
DECLARE VARIABLE VALOR_PIS_N_TRIB_INTERNO DECIMAL(18,2); 
DECLARE VARIABLE BASE_CALCULO_COFINS DECIMAL(18,3); 
DECLARE VARIABLE ALIQUOTA_COFINS DECIMAL(18,4); 
DECLARE VARIABLE VALOR_COFINS DECIMAL(18,2); 
DECLARE VARIABLE VALOR_COFINS_EXPORTACAO DECIMAL(18,2); 
DECLARE VARIABLE VALOR_COFINS_MERC_INTERNO DECIMAL(18,2); 
DECLARE VARIABLE VALOR_COFINS_N_TRIB_INTERNO DECIMAL(18,2); 
begin 
FOR 
 SELECT 
 ID, BASE_CALCULO_PIS, ALIQUOTA_PIS, VALOR_PIS, VALOR_PIS_EXPORTACAO, 
 VALOR_PIS_MERC_INTERNO, VALOR_PIS_N_TRIB_INTERNO, BASE_CALCULO_COFINS, 
 ALIQUOTA_COFINS, VALOR_COFINS, VALOR_COFINS_EXPORTACAO, 
VALOR_COFINS_MERC_INTERNO, 
 VALOR_COFINS_N_TRIB_INTERNO 
 FROM 
 TB_IN_981_4105 
 WHERE 
 CNPJ = :PCNPJ AND MES = :PMES AND ANO = :PANO AND 
 CODIGO_SIT_TRIBUTARIA_PIS = :PCST_PIS AND CODIGO_SIT_TRIBUTARIA_COFINS = 
:PCST_COFINS 
INTO 
 :ID, :BASE_CALCULO_PIS, :ALIQUOTA_PIS, :VALOR_PIS, :VALOR_PIS_EXPORTACAO, 
 :VALOR_PIS_MERC_INTERNO, :VALOR_PIS_N_TRIB_INTERNO, :BASE_CALCULO_COFINS, 
 :ALIQUOTA_COFINS, :VALOR_COFINS, :VALOR_COFINS_EXPORTACAO, 
:VALOR_COFINS_MERC_INTERNO, 
 :VALOR_COFINS_N_TRIB_INTERNO 
DO 
 PIS = (BASE_CALCULO_PIS / 100) * ALIQUOTA_PIS; 
 PIS_EX = (PIS / 100) * :PPERCENT_EX; 
 PIS_MI = (PIS / 100) * :PPERCENT_MI; 
 PIS_NT = (PIS / 100) * :PPERCENT_NT; 
 
 COFINS = (BASE_CALCULO_COFINS / 100) * ALIQUOTA_COFINS; 
 COFINS_EX = (COFINS / 100) * :PPERCENT_EX; 
 COFINS_MI = (COFINS / 100) * :PPERCENT_MI; 
 COFINS_NT = (COFINS / 100) * :PPERCENT_NT; 
 
 IF (PIS_EX > 0.0000 AND PIS_EX < 0.0100) THEN 
 PIS_EX = 0.0100; 
 
 IF (PIS_MI > 0.0000 AND PIS_MI < 0.0100) THEN 
 PIS_MI = 0.0100; 
 
 IF (PIS_NT > 0.0000 AND PIS_NT < 0.0100) THEN 
 PIS_NT = 0.0100; 
 
 IF (COFINS_EX > 0.0000 AND COFINS_EX < 0.0100) THEN 
 COFINS_EX = 0.0100; 
 
 IF (COFINS_MI > 0.0000 AND COFINS_MI < 0.0100) THEN 
 COFINS_MI = 0.0100; 
 
 IF (COFINS_NT > 0.0000 AND COFINS_NT < 0.0100) THEN 
 COFINS_NT = 0.0100; 
 
 UPDATE TB_IN_981_4105 
 SET 
 VALOR_PIS = :PIS, 
 VALOR_PIS_EXPORTACAO = :PIS_EX, 
 VALOR_PIS_MERC_INTERNO = :PIS_MI, 
 VALOR_PIS_N_TRIB_INTERNO = :PIS_NT, 
 
 VALOR_COFINS = :COFINS, 
 VALOR_COFINS_EXPORTACAO = :COFINS_EX, 
 VALOR_COFINS_MERC_INTERNO = :COFINS_MI, 
 VALOR_COFINS_N_TRIB_INTERNO = :COFINS_NT 
 WHERE 
 CNPJ = :PCNPJ AND MES = :PMES AND ANO = :PANO AND 
 CODIGO_SIT_TRIBUTARIA_PIS = :PCST_PIS AND CODIGO_SIT_TRIBUTARIA_COFINS 
= :PCST_COFINS; 
 
 SUSPEND; 
end^ 
 
SET TERM ; ^ 
 
GRANT SELECT,UPDATE ON TB_IN_981_4105 TO PROCEDURE 
PROPORCIONA_PISCOFINS_4105; 
 
GRANT EXECUTE ON PROCEDURE PROPORCIONA_PISCOFINS_4105 TO SYSDBA; 
 
 
______________________________________________ 
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107 
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 
 




Mais detalhes sobre a lista de discussão lista