Tuesday, November 18, 2014

Membuat Fungsi Kredit PMT, IPMT, PPMT, Future Value di SQL Server

Hai, Coders..
Biasanya  untuk membuat simulasi Perhitungan Angsuran Kredit (Pokok, Bunga dan Jumlah Cicilan) kita biasa menggunakan rumus PMT di Excel, nah kali ini saya akan coba share bagaimana sih membuat rumus tersebut di SQL Server ?

Caranya sangat mudah, lho kok mudah ? ya mudah orang anda tinggal Copy Paste dari sini hehe... 

 Pertama anda buat dulu Scalar Function didalam SQL Server, Gmn Caranya ? gampang kok tinggal copy paste Query di bawah ini lalu tinggal anda running dengan menekan tombol F5 pada Keyboard.

Future Value :
  
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[Fv] (@r decimal(18,18), @nper INT, @c float, @pv float, @type INT)  
RETURNS NUMERIC(18,0)
AS  
BEGIN  
 DECLARE @fv NUMERIC(18,2)  
 
 IF @type = 1  
 SET @c = @c * (1 + @r);  
 
 SET @fv = -(@c * (Power(1 + @r, @nper) - 1) / @r + @pv  
    * Power(1 + @r, @nper))  
 
 RETURN @fv  
END  
IPMT :
  
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE FUNCTION [dbo].[Ipmt] (@r decimal(18,18), @per INT, @nper INT, @pv float, @fv float, @type INT)  
RETURNS NUMERIC(20,2)   
AS  
BEGIN  
 DECLARE @ipmt NUMERIC(20,2)  
 SET @ipmt = dbo.Fv(@r, @per - 1, dbo.Pmt(@r, @nper, @pv, @fv, @type), @pv, @type) * @r  
 
 if @type = 1  
 SET @ipmt = @ipmt / (1 + @r)  
 RETURN @ipmt  
END  
GO
 

PMT :
  
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[Pmt] (@r decimal(18,18), @nper INT, @pv float, @fv float, @type INT)  
RETURNS NUMERIC(18,2)
AS  
BEGIN  
 DECLARE @pmt  NUMERIC(18,0) 
 
 SET @pmt = @r / (Power(1.0 + @r, @nper) - 1.0) * -(@pv * Power(1.0 + @r, @nper) + @fv)  
 
 if @type = 1  
 SET @pmt = @pmt / (1 + @r)  
 RETURN @pmt  
END  

GO
 

PPMT :
  
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[Ppmt] (@r NUMERIC(18,4), @per INT, @nper INT, @pv NUMERIC(18,4), @fv NUMERIC(18,4), @type INT)  
RETURNS NUMERIC(18,4)   
AS  
BEGIN  

 RETURN dbo.Pmt(@r, @nper, @pv, @fv, @type) - dbo.Ipmt(@r, @per, @nper, @pv, @fv, @type);  

END  

GO
 

Setelah semua Query di atas Berhasil di Running, maka untuk menggunakannya seperti ini :

Mencari Jumlah Angsuran perbulan (Bunga Efektif )

Contoh :
Nasabah : Andi Susanty
Jumlah Pinjaman (Plafond) : Rp. 35.000.000
Suku Bunga Efektif : 39,429% Per Tahun
Tenor : 3 Tahun (36 Bulan)


Untuk mencari jumlah angsuran yg harus Andi bayar perbulan yaitu :
PMT(SukuBunga/12,Tenor,JumlahPinjaman,0,0)

select -dbo.pmt(0.39429 / 12, 36,35000000,0,0)
= Rp. 1.672.212,-

untuk mencari porsi Bunga / Interest dalam tenor yg sedang berjalan ialah :

IPMT(SukuBunga/12,Angsuranke,Tenor,JumlahPinjaman,0,0)yaitu : Rp. 1.150.012,50


Pokok dan bunga itu berpengaruh terhadap jumlah angsuran yang telah di bayarkan, karena porsi pokok dan bunga itu setiap bulan akan berubah tergantung Angsuran ke Berapanya jika menggunakan suku bunga efektif.


Selamat berhitung...:)

2 comments:

  1. Izin copy paste master..., terima kasih atas ilmu nya..

    ReplyDelete
  2. maaf min future value fungsinya untuk apa ya?

    ReplyDelete