[firebase-br] RES: ENC: Ajuda com Procedure - Calculo + Atualização.
Oliveira, José Augusto Siqueira de
contabil em sivolc.ind.br
Ter Jun 21 11:03:06 -03 2011
Acredito que se você usar o campo ID para efetuar o where do update, pode
ser que corrija o seu erro.
Oliveira, José Augusto Siqueira de
Sivolc Móveis e Complementos
(32) 3531-4677
contabil em sivolc.ind.br
"Aviso de confidencialidade profissional" - Esta mensagem eletrônica e seus
anexos são destinados exclusivamente ao(s) destinatário(s) acima e podem
conter informações confidenciais sujeitas a restrição legal de comunicação
entre as partes. Caso tenha recebido esta mensagem por engano, fica V.Sa.
ciente de que a distribuição, divulgação ou disseminação das informações
aqui contidas ou anexadas é terminantemente proibida, sujeitando o
responsável às penalidades aplicáveis. Assim, solicitamos a gentileza de
retorná-la de imediato ao remetente, eliminando-a definitivamente de seu
sistema. Em caso de dúvida, queira por favor entrar em contato conosco."
"Confidentiality notice" - This message and its attachments are addressed
solely to the persons above and may contain privileged and confidential
communication. If you have received the message in error, the distribution
or dissemination of the content hereof is prohibited. Please return it
immediately to the sender and please delete the message from your system on
a permanent basis. Should you have any questions, please contact."
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Fasystem - Listas
Enviada em: terça-feira, 21 de junho de 2011 10:47
Para: 'FireBase'
Assunto: [firebase-br] ENC: Ajuda com Procedure - Calculo + Atualização.
Creio que você já descobriu o que está errado.
Você atualiza a tabela com as mesmas informações do where do select.
Creio que você precisa de um where baseado no id da linha a ser atualizada.
Outra coisa: muito cuidado com valores null nos teus cálculos. Pois se isso
acontecer não será calculado nada.
Eu sempre uso o coalesce para garantir que haverá o cálculo.
[ ]'s
Jose
-----Mensagem original-----
De: Diego Maccari [mailto:diegomaccari em ig.com.br]
Enviada em: terça-feira, 21 de junho de 2011 10:36
Para: Fasystem - Listas
Assunto: Re: [firebase-br] Ajuda com Procedure - Calculo + Atualização.
JOSÉ bom dia
Muito Obrigado por ter respondido.
retirei o Suspend mas mesmo assim não deu o resultado desejado a ideia é
atualizar os valores dos créditos de cada um dos registros com base no
calculo da SP
o que está acontecendo é que no momento em que a SP atualiza os rgistros ela
atualiza o valor calculado no ultimo registro para todos os demais, onde
deveria ser individualizado
acredito que o erro esta no UPDATE mas ainda não entendi por que, o WHERE do
UPDATE é o mesmo que uso pra selecionar os dados no SELECT do FOR talvez
seja por isso
a atualização esta sendo feito em todos os registro quando deveria ser feito
um de cada vez.
Alguma DICA ??
-----Mensagem Original-----
From: Fasystem - Listas
Sent: Tuesday, June 21, 2011 10:00 AM
To: 'Diego Maccari' ; 'FireBase'
Subject: RES: [firebase-br] Ajuda com Procedure - Calculo + Atualização.
Se não vai retornar nada não precisa do suspend;
Voce não informou o erro. Pelo menos eu não entendi.
Jose
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Diego Maccari
Enviada em: terça-feira, 21 de junho de 2011 09:30
Para: FireBase
Assunto: [firebase-br] Ajuda com Procedure - Calculo + Atualização.
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
______________________________________________
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
__________ Informação do ESET NOD32 Antivirus, versão da vacina 6225
(20110621) __________
A mensagem foi verificada pelo ESET NOD32 Antivirus.
http://www.eset.com
__________ Informação do ESET NOD32 Antivirus, versão da vacina 6225
(20110621) __________
A mensagem foi verificada pelo ESET NOD32 Antivirus.
http://www.eset.com
__________ Informação do ESET NOD32 Antivirus, versão da vacina 6226
(20110621) __________
A mensagem foi verificada pelo ESET NOD32 Antivirus.
http://www.eset.com
Mais detalhes sobre a lista de discussão lista