Advertisement
aadddrr

f_get_price_before_tax_and_disc

Sep 6th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Function: f_get_price_before_tax_and_disc(numeric, numeric, character varying, numeric, integer, character varying)
  2.  
  3. -- DROP FUNCTION f_get_price_before_tax_and_disc(numeric, numeric, character varying, numeric, integer, character varying);
  4.  
  5. CREATE OR REPLACE FUNCTION f_get_price_before_tax_and_disc(numeric, numeric, character varying, numeric, integer, character varying)
  6.   RETURNS numeric AS
  7. $BODY$
  8. DECLARE
  9.  
  10.     pGrossPrice             alias for $1;
  11.     pDiscountAmount         alias for $2;
  12.     pFlagTaxAmount          alias for $3;
  13.     pTaxPersen              alias for $4;
  14.     pRounding               alias for $5;
  15.     pRoundingMode           alias for $6;
  16.  
  17.     vResult                 numeric;
  18.     vTaxAmount              numeric;
  19. BEGIN
  20.  
  21.     vResult := pGrossPrice;
  22.  
  23.     IF pFlagTaxAmount = 'Y' THEN
  24.         pGrossPrice := pGrossPrice - pDiscountAmount;
  25.        
  26.         IF pRoundingMode = 'RD' THEN
  27.             SELECT pGrossPrice - TRUNC(pGrossPrice * 100/(100 + pTaxPersen), pRounding) INTO vTaxAmount;
  28.         ELSE
  29.             SELECT pGrossPrice - ROUND(pGrossPrice * 100/(100 + pTaxPersen), pRounding) INTO vTaxAmount;
  30.         END IF;
  31.    
  32.         vResult := pGrossPrice + pDiscountAmount - vTaxAmount;
  33.     END IF;
  34.    
  35.     return vResult;
  36. END;
  37. $BODY$
  38.   LANGUAGE plpgsql VOLATILE
  39.   COST 100;
  40. ALTER FUNCTION f_get_price_before_tax_and_disc(numeric, numeric, character varying, numeric, integer, character varying)
  41.   OWNER TO sts;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement