[firebase-br] Problema com retorno da Procedure
Sandro
oleber.itajai em gmail.com
Seg Out 20 16:44:33 -03 2008
Ja tentou enviar ponto (.) para separar decimal ao invez de virgula (,) ?
----- Original Message -----
From: "Isael Faria Junior" <isael em stetika.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, October 20, 2008 5:40 PM
Subject: Re: [firebase-br] Problema com retorno da Procedure
Não deu certo
o estranho e que acabei de fazer um teste passando o valor_unitario de
0,95 e retornei o mesmo, porem ja retornou com o valor de 95.
Aparentemente o problema e com o valor de entrada, o FB esta desprecando
o 0, e deixando só o valor resto do valor.
Kleber Caneva escreveu:
> Tente trocar tudo que vc divide por 100 para 100.00
>
>
> []´s
>
> Kléber Caneva
>
> ----- Original Message -----
> From: "Isael Faria Junior" <isael em stetika.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Monday, October 20, 2008 1:21 PM
> Subject: [firebase-br] Problema com retorno da Procedure
>
>
> Pessoal,
>
> tenho uma procedure que me retorna valores após o calculo,
> porem quando uso valores inteiros para calculo ele me retorna valores
> corretos, mais quando passo valores com virgula ele multiplica o valor
> por 100,
> alguem poria me dar uma luz ?
>
> Estou pegando o retorno pelo delphi 7, pelo banco o retorna da correto,
> porem se gravar da um valor diferente
>
> Procedure
> SET TERM ^ ;
>
> CREATE PROCEDURE SP_CALCULO_IMPOSTO_NF (
> V_SIT_IPI_EMB VARCHAR(1),
> V_PER_DESCONTO DOUBLE PRECISION,
> V_PESO DOUBLE PRECISION,
> V_QTD DOUBLE PRECISION,
> V_VAL_UNITARIO DOUBLE PRECISION,
> V_TIP_OPERACAO INTEGER,
> V_ID_PRODUTO INTEGER,
> V_PER_IPI DOUBLE PRECISION,
> V_PER_ICMS DOUBLE PRECISION)
> RETURNS (
> V_VALOR_IPI NUMERIC(15,2),
> V_VALOR_ICMS NUMERIC(15,2),
> V_VALOR_DESCONTO NUMERIC(15,2),
> V_VALOR_TOTAL NUMERIC(15,2),
> V_VAL_BASE_IPI NUMERIC(15,2),
> V_VAL_ISENTA_IPI NUMERIC(15,2),
> V_VAL_OUTRAS_IPI NUMERIC(15,2),
> V_VAL_BASE_ICMS NUMERIC(15,2),
> V_VAL_ISENTA_ICMS NUMERIC(15,2),
> V_VAL_OUTRAS_ICMS NUMERIC(15,2))
> AS
> DECLARE VARIABLE V_BC_ICMS_ST NUMERIC(15,2);
> DECLARE VARIABLE V_VAL_ICMS_ST NUMERIC(15,2);
> DECLARE VARIABLE V_ISENTA_IPI NUMERIC(15,2);
> DECLARE VARIABLE V_OUT_IPI NUMERIC(15,2);
> DECLARE VARIABLE V_ISENTA_ICMS NUMERIC(15,2);
> DECLARE VARIABLE V_OUT_ICMS NUMERIC(15,2);
> DECLARE VARIABLE V_PER_IVA NUMERIC(15,2);
> DECLARE VARIABLE V_VALOR_ITEM NUMERIC(15,2);
> DECLARE VARIABLE V_VAL_MARGEM_AGREGADA NUMERIC(15,2);
> DECLARE VARIABLE V_PER_BASE_IPI NUMERIC(15,2);
> DECLARE VARIABLE V_PER_BASE_ICMS NUMERIC(15,2);
> begin
> if (v_peso <> 0) then
> v_qtd = v_peso;
>
>
> SELECT perc_ipi,isenta_ipi,outras_ipi,
> perc_icms,isenta_icms,outras_icms
> FROM TIPO_OPERACAO
> WHERE id_tipo_operacao = :v_tip_operacao
> INTO :V_PER_BASE_IPI,:v_isenta_ipi,:v_out_ipi,
> :v_per_BASE_icms,:v_isenta_icms,:v_out_icms;
>
>
> SELECT per_iva FROM PRODUTOS
> WHERE ID_PRODUTO = :v_id_produto
> INTO :v_per_iva;
>
> if (:v_per_iva IS NULL) then
> V_PER_IVA = 0;
>
> v_valor_desconto = :v_val_unitario * (:v_per_desconto/100);
>
> v_val_base_ipi = ((:v_qtd * :v_val_unitario) - :v_valor_desconto) *
> (:V_PER_BASE_IPI/100);
> v_valor_ipi = :v_val_base_ipi * (:v_per_ipi/100);
> v_val_isenta_ipi = ((:v_qtd * :v_val_unitario) - :v_valor_desconto) *
> (:v_isenta_ipi/100);
> v_val_outras_ipi = ((:v_qtd * :v_val_unitario) - :v_valor_desconto) *
> (:v_out_ipi/100);
>
> v_val_base_icms = ((:v_qtd * :v_val_unitario) - :v_valor_desconto) *
> (:v_per_BASE_icms/100);
> v_valor_icms = :v_val_base_icms * (:v_per_icms/100);
> v_val_isenta_icms = ((:v_qtd * :v_val_unitario) - :v_valor_desconto) *
> (:v_isenta_icms/100);
> v_val_outras_icms = ((:v_qtd * :v_val_unitario) - :v_valor_desconto) *
> (:v_out_icms/100);
>
> v_valor_item = (:v_qtd * :v_val_unitario) + v_valor_ipi;
>
> v_valor_total = (:v_qtd * (:v_val_unitario - :v_valor_desconto));
>
> if (:v_sit_ipi_emb = 'S') then
> v_valor_total = v_valor_total + v_valor_ipi;
> else
> v_valor_total = v_valor_total;
>
> if (:v_per_ipi <> 0) then
> BEGIN
> V_VAL_MARGEM_AGREGADA = :v_valor_item * (:v_per_iva/100);
> v_bc_icms_st = :v_valor_item + :v_val_margem_agregada;
> v_val_icms_st = :v_bc_icms_st * (:v_per_icms/100);
> v_val_icms_st = :v_val_icms_st - v_valor_icms;
> v_valor_icms = :v_val_icms_st;
> v_valor_total = ((:v_qtd * :v_val_unitario)+ v_valor_ipi)+
> v_valor_icms;
> END
>
> suspend;
> end
>
> ______________________________________________
> 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
>
> __________ Information from ESET Smart Security, version of virus
signature database 3533 (20081017) __________
>
> The message was checked by ESET Smart Security.
>
> http://www.eset.com
>
>
>
>
______________________________________________
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