To com um problema aqui... tenho uma procedure que calcula impostos, até ai tudo bem, o problema é o seguinte:
quando eu utilizo ela pelo 'exec', todos os campos que ela me retona, ficam com o valor 'NULL',
porém se eu utilizar todo o código que nela contem, ou seja, compilando apenas o miolo da procedure, ignorando os parametrôs e o bloco 'BEGIN-END', e indicando os valores que deveriam ser recebidos através dos parâmentros, ela me retorna o mesmo select com os mesmos campos que a procedure retorna, porém com os valores de impostos calculados, ou seja, não aparece valor 'NULL'.
segue o código da procedure:
CREATE PROCEDURE SP_CALCULA_IMP_NOTA(
@P_NRO_NOTA VARCHAR(6),
@P_REGIAO_ISS_N VARCHAR(20)
)
AS DECLARE @V_COD_NOTA INT
DECLARE @V_TOTAL_IMP_N DECIMAL(8,2)
DECLARE @V_VALOR_ISS DECIMAL(2,2)
BEGIN SET @V_COD_NOTA = (SELECT COD_NOTA FROM TB_NOTA WHERE NRO_NOTA = @P_NRO_NOTA)
IF EXISTS(SELECT COD_NOTA FROM TB_SERVICO_N WHERE COD_NOTA = @V_COD_NOTA)
SET @V_VALOR_ISS = (SELECT VAL_IMP_ISS FROM TB_VAL_IMP_ISS WHERE REGIAO_IMP_ISS = @P_REGIAO_ISS_N)
SELECT SUM(VALOR_SERV_N) * 0.65 / 100 AS [PIS],
SUM(VALOR_SERV_N) * 3 / 100 AS [COFINS],
SUM(VALOR_SERV_N) * 16 / 100 * 15 / 100 AS [IRPJ],
SUM(VALOR_SERV_N) * 32 / 100 * 9 /100 AS [CSLL],
SUM(VALOR_SERV_N) * 1.5 / 100 AS [IRRF],
SUM(VALOR_SERV_N) * @V_VALOR_ISS / 100 AS [ISS]
FROM TB_SERVICO_N WHERE COD_NOTA = @V_COD_NOTA
SET @V_TOTAL_IMP_N = (SELECT SUM(VALOR_SERV_N) * 0.65 / 100 FROM TB_SERVICO_N WHERE COD_NOTA = @V_COD_NOTA)
+ (SELECT SUM(VALOR_SERV_N) * 3 / 100 FROM TB_SERVICO_N WHERE COD_NOTA = @V_COD_NOTA)
+ (SELECT SUM(VALOR_SERV_N) * 16 / 100 * 15 / 100 FROM TB_SERVICO_N WHERE COD_NOTA = @V_COD_NOTA)
+ (SELECT SUM(VALOR_SERV_N) * 32 / 100 * 9 /100 FROM TB_SERVICO_N WHERE COD_NOTA = @V_COD_NOTA)
+ (SELECT SUM(VALOR_SERV_N) * 2 / 100 FROM TB_SERVICO_N WHERE COD_NOTA = @V_COD_NOTA)
+ (SELECT SUM(VALOR_SERV_N) * @V_VALOR_ISS / 100 FROM TB_SERVICO_N WHERE COD_NOTA = @V_COD_NOTA)
SELECT @V_TOTAL_IMP_N AS [TOTAL DOS IMPOSTOS]--seleciona a soma dos impostos
END
Bom eu poderia fazer o calculo na própria aplicação, porém tem o calculo do ISS que é por região, intão por causa desse motivo teria que realizar o calculo no próprio banco.
Pergunta
Thiago Cabral
Boa noite,
Salve salve galera!
To com um problema aqui... tenho uma procedure que calcula impostos, até ai tudo bem, o problema é o seguinte:
quando eu utilizo ela pelo 'exec', todos os campos que ela me retona, ficam com o valor 'NULL',
porém se eu utilizar todo o código que nela contem, ou seja, compilando apenas o miolo da procedure, ignorando os parametrôs e o bloco 'BEGIN-END', e indicando os valores que deveriam ser recebidos através dos parâmentros, ela me retorna o mesmo select com os mesmos campos que a procedure retorna, porém com os valores de impostos calculados, ou seja, não aparece valor 'NULL'.
segue o código da procedure:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bom eu poderia fazer o calculo na própria aplicação, porém tem o calculo do ISS que é por região, intão por causa desse motivo teria que realizar o calculo no próprio banco.
Se alguém poder me ajudar, agradeço...
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.