1

Тема: COMMON.SetRoundForPDV

CREATE FUNCTION COMMON.SetRoundForPDV
   (
   nValue NUMERIC ( 25,5 ),
      nPrecision SHORT
   )
   RETURNS NUMERIC ( 25, 5 )
DESCRIPTION 'Функція повертає число, округлене для отримання красивого ПДВ (без періодів).

Приклад:
SELECT COMMON.SetRoundForPDV(15383.00,2) FROM system.iota;
Результат: 15383.04
(для оригінального числа ПДВ 20% становив би 2563.83(3), а так маємо 2563.84)

@Dr.Sydorenko, 2025'
BEGIN
DECLARE nVAT  Numeric(25,10);
DECLARE nVAT1 Numeric(25,10);
DECLARE nVAT2 Numeric(25,10);
DECLARE nKoef Numeric(25,10);

nPrecision = ISNULL( nPrecision , 2 );
nKoef = ((COMMON.GetPercentVAT()+100)/100);
nVAT2 = cast(nValue * ( 1-1/nKoef) as SQL_NUMERIC(25,10));
nVAT1 = TRUNCATE( nVAT2 + .01 , 2);
nVAT = Round( nVAT2,2);

RETURN Round( iif( nVAT < nVAT2,nVAT1,nVAT) / ( 1-1/nKoef), nPrecision );



END;