Precificação por Personalização (SQL)
Exemplo em uma base oracle:
P_AD_ACRESCIMO FLOAT;
BEGIN
SELECT
NVL(ACT_DEC_FIELD(p_IdSessao, 0, 'AD_ACRESCIMO'),0)
INTO P_AD_ACRESCIMO
FROM DUAL;
SELECT (7 * (NVL(P_AD_ACRESCIMO,1)))
INTO PRECO
FROM DUAL;
SELECT 10
INTO PRECOBASE
FROM DUAL;
Base da procedure Oracle:
CREATE OR REPLACE PROCEDURE ${NOME_PROCEDURE} (
p_IdSessao VARCHAR2,
p_Result OUT VARCHAR2
) AS
PRECO FLOAT;
PRECOBASE FLOAT;
P_CODPROD INT;
P_QTDNEG FLOAT;
P_UNIDADE VARCHAR2(10);
${CODIGO} --devida a forma de declaração de variáves do oracle é necessário que dentro do código seja feita a abertura do BEGIN
p_Result :=
'{' ||
'PRECO : "' || PRECO || '",' ||
'PRECOBASE : "' || PRECOBASE || '"' ||
'}';
END;
Base da procedure SQL Server:
CREATE OR ALTER PROCEDURE ${NOME_PROCEDURE}
@p_IdSessao VARCHAR(50),
@p_Result VARCHAR(50) OUTPUT
AS
BEGIN
DECLARE @PRECO FLOAT;
DECLARE @PRECOBASE FLOAT;
DECLARE @P_CODPROD INT;
DECLARE @P_QTDNEG FLOAT;
DECLARE @P_UNIDADE VARCHAR(10);
${CODIGO}
SET @p_Result = '{' +
'PRECO : "' + CAST(@PRECO AS VARCHAR(50)) + '",' +
'PRECOBASE : "' + CAST(@PRECOBASE AS VARCHAR(50)) + '"' +
'}';
END;
PRECO e PRECOBASE: devem conter o valor do preço do produto
Valores que são passados:
CODPROD: código do produto
QTDNEG: quantidade que está sendo adicionado no carrinho ( no momento da listagem a quantidade é de valor 1)
UNIDADE: unidade que está sendo adicionada