Avalados por :

Função para Arredondar Preço Líquido em SQLSCRIPT com Exemplos e Explicação Detalhada

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 1 Vistas
0
Cargando...

CREATE FUNCTION SyS_FU_RedondearPrecioNeto

(

nPrecioNeto DECIMAL(19,6),

vAlmacen VARCHAR(3) ,

cRedondeo char(3)

)

--returns Precio decimal(16,6) LANGUAGE SQLSCRIPT SQL SECURITY INVOKER AS

RETURNS TABLE (Precio DECIMAL (19,6)) LANGUAGE SQLSCRIPT AS

BEGIN

DECLARE nResiduo DECIMAL (19,6);

DECLARE nFactor DECIMAL(19,6);

Declare cRedon Char(3);

DECLARE nPrecioNeto DECIMAL(19,6);

declare temp1 DECIMAL(19,6);

declare temp2 DECIMAL(19,6);

declare Precio DECIMAL(19,6);

nFactor := 5 ;

IF (:cRedondeo = 'C') then

SELECT A."U_SYS_TICE" INTO cRedondeo FROM "@SYS_PSUCURSALES" A WHERE A."U_SYS_ALMG" = vAlmacen ;

/*Si el redondeo es hacia arriba*/

IF (:cRedon = 'A') then

-- nResiduo := :nPrecioNeto % 10 ;

select (:nPrecioNeto / 10) into temp1 from dummy;

select (Cast(:temp1 as INT)*10) into temp2 from dummy;

select(:nPrecioNeto-temp2) into nResiduo from dummy;

/*Si el residuo es mayor a 1 se redondea hacia arriba*/

IF (:nResiduo > 1) then

select ((:nPrecioNeto - :nResiduo) + 10) into Precio from dummy ;

/*Si no se hace hacia abajo*/

Else

select (:nPrecioNeto - :nResiduo)into Precio from dummy  ;

End IF ;

ELSE

--nResiduo := :nPrecioNeto / 10 ;

select (:nPrecioNeto / 10) into temp1 from dummy;

select (Cast(:temp1 as INT)*10) into temp2 from dummy;

select(:nPrecioNeto-temp2) into nResiduo from dummy;

/*Si el residuo es mayor a 1 se redondea hacia arriba*/

IF (:nResiduo > :nFactor) THEN

select ((:nPrecioNeto - :nResiduo) + 10) into Precio from dummy ;

/*Si no se hace hacia abajo*/

Else

select (:nPrecioNeto - :nResiduo)into Precio from dummy  ;

End IF;

End IF;

/*En caso de que el tipo de redondeo sea a 5*/

end if;

IF (:cRedondeo = 'Y') then

--temp1:=(();

select nPrecioNeto/5 into temp1 from dummy;

select (Cast(:temp1 as INT)*10) into temp2 from dummy;

--temp2:=(10*5)

select(:nPrecioNeto-temp2) into nResiduo from dummy;

-- nResiduo:=((select nPrecioNeto from dummy)-temp2) ;

IF (:nResiduo >= 2.5) then

select ((:nPrecioNeto - :nResiduo) + 10) into Precio from dummy ;

--Precio :=((:nPrecioNeto - :nResiduo) + :nFactor);

/*Si no se hace hacia abajo*/

Else

select (:nPrecioNeto - :nResiduo)into Precio from dummy  ;

-- Precio :=(:nPrecioNeto - :nResiduo);

End IF;

/*Si no se hace hacia abajo*/

end if;

IF (cRedondeo = 'N') then

--Precio := nPrecioNeto;

select nPrecioNeto into Precio from dummy;

END IF;

RETURN SELECT Precio FROM dummy;

--return Precio;

end;

qual é o erro

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

2 Respuestas

0
Cargando...

Jonathan,

Deberías declarar tus variables después del AS y antes del BEGIN.

myVariable DATATYPE := DEFAULT_VALUE;

Mi pregunta para ti sería, qual é o erro que seu código está apresentando? Vejo que você tem código comentado e possivelmente uma sintaxe incorreta.

Tem alguma pergunta específica sobre seu SQLScript? Ou apenas quer saber onde está o erro? Não entendi completamente sua pergunta.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Jonathan,

Deberías declarar tus variables después del AS y antes del BEGIN

myVariable DATATYPE := DEFAULT_VALUE;

Mi pregunta para ti sería, qual é o erro no seu código? Vejo que você tem código comentado, assim como possivelmente uma sintaxe incorreta.

Você tem alguma pergunta específica sobre seu SQLScript? Ou apenas quer saber onde está o erro? Não entendi sua pergunta completamente.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?