Thursday, November 20, 2014

Mengatasi Error Collation conflict di SQL Server (Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.)

Hai,

Pada saat anda membuat query lalu menjalankan query tersebut lalu muncul Error seperti dibawah ini :
Msg 468, Level 16, State 9, Line 6
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.


Jangan panik...tetep tenang dan lanjutkan membaca artikel ini, kalo anda liat query yg anda tulis itu sudah benar tapi kenapa masih error yah ?

Hal itu terjadi karena perbedaan Collation antara table yang di joinkan tersebut.

cara mengatasinya anda cukup merubah Collation field tersebut menjadi Default dengan menambahkan Script :

COLLATE DATABASE_DEFAULT

Contoh :
 
 SELECT *
  FROM [tbl_karyawan] A
  left join
  tbl_ gaji B
  on A.nip = B.nip

 Menjadi :

 SELECT *
  FROM [tbl_karyawan] A
  left join
  tbl_ gaji B
  on A.nip COLLATE DATABASE_DEFAULT = B.nip COLLATE DATABASE_DEFAULT

Gimana mudah bukan ?

Wednesday, November 19, 2014

Konversi Tanggal di SQL SERVER

declare @periode as varchar(8),@periode_date as date
set @periode = '20141031'
set @periode_date ='2014-10-31'
select CONVERT(date,@periode) as HASIL
SELECT CONVERT(CHAR(10),@periode_date,110)  as HASIL
union all
SELECT CONVERT(CHAR(10),@periode_date,111)  
union all
SELECT CONVERT(CHAR(10),@periode_date,112)
union all
SELECT CONVERT(CHAR(15),@periode_date,113)  
union all
SELECT CONVERT(CHAR(15),@periode_date,109)
union all
SELECT CONVERT(CHAR(15),@periode_date,107)
union all
SELECT CONVERT(CHAR(15),@periode_date,106)
union all
SELECT CONVERT(CHAR(15),@periode_date,105)
union all
SELECT CONVERT(CHAR(15),@periode_date,104)
union all
SELECT CONVERT(CHAR(15),@periode_date,103)
union all
SELECT CONVERT(CHAR(15),@periode_date,102)
union all
SELECT CONVERT(CHAR(15),@periode_date,101)
union all
SELECT CONVERT(CHAR(15),@periode_date,100) 
Export to Excel General Format 
 
select cast(convert(decimal(12,0),convert(datetime,periode) + 2) 

Hasilnya :

Selamat Mencoba :)

Export Excel Sheet ke PDF dengan VBA Excel Macro

Pernahkan anda membuat Ratusan / Ribuan File PDF dari Excel, dan di export secara manual satu-persatu ? sungguh menjengkelkan bukan ?

Nah di artikel ini saya mencoba untuk sharing bagaimana mengotomasi hal tersebut dengan VBA Macro agar mempermudah pekerjaan kita.

Langkah-langkahnya :
  1. download Microsoft Office Add-in: Microsoft Save as PDF or XPS di sini , lalu install file yg telah anda download tadi. 
  2. Buka File Excel yang ingin anda  Convert ke PDF.
  3. Masuk ke Pilihan Developper :
  4. Buat Tombol Export dengan mengklik insert Form Control :
  5. Masuk ke Source Mode (Alt + F11)
  6. Ketikkan Script Berikut ini :
    
    Sub cetaktopdf()
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "D:\PDF\hasilnya.pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            False
        DoEvents
        MsgBox "Convert To PDF Done"
    End Sub
    
    
Jika ada banyak dokumen yang ingin di cetak tinggal melakukan perulangan pada Script di atas.

Selamat Mencoba !



Branch Profitability Calculation Method

Mencari Jumlah Karyawan Berdasarkan Range Umur di SQL Server

Hai, kali ini saya akan coba memberikan tutorial tentang bagaimana caranya mencari jumlah karyawan berdasarkan Range Umur, terkadang hal ini digunakan untuk melihat portofolio jumlah karyawan berdasarkan umur-umur tertentu.

oke lanjut, misalkan perusahaan kita mempunyai jumlah karyawan 1000 orang,dan kita hanya mempunyai informasi data sebagai berikut :

table karyawan :


data tersebut akan di buat laporan dengan format seperti ini :

Nah bagaimana penyelesaianya di SQL Server ?
Nih saya berikan contohnya untuk kasus diatas :

Pertama buat Query untuk mengetahui umur dari setiap karyawan berdasarkan tanggal lahir :

  
select nama_karyawan,tgllahir,datediff(year,tgllahir,GETDATE()) umur, case 
   when datediff(year,tgllahir,GETDATE()) between 18 and 35 then '[18-35]'
   when datediff(year,tgllahir,GETDATE()) between 36 and 40 then '[36-40]'
   when datediff(year,tgllahir,GETDATE()) between 41 and 45 then '[41-45]'
   when datediff(year,tgllahir,GETDATE()) between 46 and 50 then '[46-50]'
   when datediff(year,tgllahir,GETDATE()) between 51 and 55 then '[51-55]'
   when datediff(year,tgllahir,GETDATE()) between 56 and 60 then '[56-60]'
   when datediff(year,tgllahir,GETDATE()) between 61 and 65 then '[61-65]'
   when datediff(year,tgllahir,GETDATE()) between 61 and 65 then '[66-69]'
  end range_umur
  FROM  tbl_karyawan A


Maka hasilnya akan seperti ini
dari Query tersebut kita modifikasi sedikit seperti ini :

  
select range_umur,count(*) As Jumlah from (select  NAMA_KARYAWAN,tgllahir,datediff(year,tgllahir,GETDATE()) umur, case 
   when datediff(year,tgllahir,GETDATE()) between 18 and 35 then '[18-35]'
   when datediff(year,tgllahir,GETDATE()) between 36 and 40 then '[36-40]'
   when datediff(year,tgllahir,GETDATE()) between 41 and 45 then '[41-45]'
   when datediff(year,tgllahir,GETDATE()) between 46 and 50 then '[46-50]'
   when datediff(year,tgllahir,GETDATE()) between 51 and 55 then '[51-55]'
   when datediff(year,tgllahir,GETDATE()) between 56 and 60 then '[56-60]'
   when datediff(year,tgllahir,GETDATE()) between 61 and 65 then '[61-65]'
   when datediff(year,tgllahir,GETDATE()) between 61 and 65 then '[66-69]'
  end range_umur
  FROM  tbl_karyawan A  ) x
group by range_umur 


Sehingga hasilnya seperti ini :


Gimana, mudah bukan ?

Pengertian dan Jenis-jenis Suku Bunga

a) Pengertian Suku Bunga
           Bunga adalah imbalan jasa atas pinjaman uang, imbal jasa ini merupakan suatu kompensasi kepada pemberi pinjaman atas manfaat ke depan dari uang pinjaman tersebut apabila diinvestasikan. Jumlah pinjaman tersebut disebut “pokok utang” (principal). Persentase dari pokok utang yang dibayarkan sebagai imbal jasa (bunga) dalam suatu periode tertentu disebut “suku bunga”. Miller, RL dan Vanhoose, mengataka bahwa suku bungan adalah sejumlah dana, dinilai dalam uang, yang diterima si pemberi pinjaman (kreditor), sedangkan suku bunga adalah rasio dari bunga terhadap jumlah pinjaman.

b)  Macam-macam suku bunga 
                Pinjaman uang ke bank atau lembaga keuangan memang akan selalu dibebani bunga. Sementara berbeda tipe pinjaman, beda pula tipe bunganya. Agar tak terjerat bunga pinjaman, kenali dahulu jenis-jenisnya.Jika Anda sedang membandingkan prosentase bunga pinjaman antar bank, pastikan jenis bunga yang dipakai, apakah bunga efektif, flat atau anuitas. Karena secara umum suku bunga pinjaman dibagi menjadi 4 jenis: Suku bunga Flat, Suku Bunga Efektif, Suku Bunga Anuitas, Suku Bunga Mengambang.
           Bila anda ingin mengambil kredit, pastikan cara penghitungan kreditnya. Walaupun suku bunganya sama, namun cara penghitungannya berbeda akan mengakibatkan jumlah angsuran per bulan berbeda.

Bunga Flat 
            Pada sistem ini, jumlah pembayaran utang pokok dan bunga kredit besarnya sama tiap bulan. Bunga ini diperuntukkan kredit jangka pendek seperti kredit kendaraan dan KTA.
Suku bunga flat adalah perhitungan bunga yang paling mudah. Tiap bulan angsurannya sama, bunganya sama, cicilan pokoknya sama. Dalam kredit bunga flat atau bunga tetap, plafon kredit dan besarnya bunga akan dihitung secara proposional sesuai dengan jangka waktu kredit.
           Nilai bunga akan tetap sama setiap bulan, karena bunga dihitung dari prosentasi bunga dikalikan pokok pinjaman awal. Jadi jumlah pembayaran pokok + bunga setiap bulan akan sama besarnya.
Misal, anda berhutang Rp 100.000.000,- dengan bunga flat 12% per tahun, maka setiap bulan bunganya adalah Rp 1.000.000,-
Rumus Bunga Tetap:
Bunga per bulan = Jumlah pinjaman x Suku bunga per tahun / 12
Total Bunga = Jumlah pinjaman x (Suku bunga per tahun / 12) x Lama meminjam dalam bulan

Bunga Efektif 
            Dalam kredit dengan bunga efektif atau kadang disebut sliding rate. Perhitungan bunganya dilakukan pada setiap akhir periode angsuran. Bunga kredit dihitung dari saldo akhir setiap bulannya.
            Bunga dihitung berdasarkan nilai pokok yang belum dibayar. Jadi bunga per bulan akan berubah-ubah berdasar nilai pokok yang masih terhutang. Nilai bunga yang dibayar debitur setiap bulan akan semakin mengecil. Karena bunganya yang dibayar mengecil, maka angsuran per bulan akan semakin menurun dari waktu ke waktu. Angsuran bulan kedua lebih kecil daripada angsuran bulan pertama, begitu seterusnya.
Misal, anda berhutang Rp 100.000.000,- dengan bunga efektif 12% per tahun, dengan cicilan pokok Rp 10.000.000,- per bulan. Maka:
Bulan ke-1 bunganya 1% x Rp 100.000.000,- = Rp 1.000.000,-
Bulan ke-2 bunganya 1% x Rp 90.000.000,- = Rp 900.000,-
Bulan ke-3 bunganya 1% x Rp 80.000.000,- = Rp 800.000,-
dan seterusnya..
Rumus Bunga Efektif:
Bunga per bulan = Saldo akhir periode x Suku bunga pertahun / 12

NOTE : Jangan membandingkan sistem bunga flat dengan efektif hanya dari angkanya saja. Bunga flat 6% tidak sama dengan bunga efektif 6%. Besar bunga efektif biasanya 1,8-2 kali bunga flat. jadi, bunga flat 6% sama dengan bunga efektif 10,8%-12%.

Bunga Anuitas 
            Kredit bunga anuitas adalah modifikasi dari perhitungan kredit bunga efektif. Modifikasi ini dilakukan untuk mempermudah nasabah dalam membayar per bulannya, karena angsuran tiap bulannya sama.
 Dalam kredit dengan bunga anuitas, angsuran bulanannya tetap. Namun komposisi bunga dan pokok angsuran akan berubah tiap periodenya. Nilai bunga per bulan akan mengecil, angsuran pokok per bulannya akan membesar.
            Mendekati berakhirnya masa kredit, keadaan akan menjadi berbalik. porsi angsuran pokok akan sangat besar sedangkan porsi bunga menjadi lebih kecil.  Dalam perhitungan anuitas, porsi bunga pada masa awal sangat besar sedangkan porsi angsuran pokok sangat kecil.
Bunga Mengambang 
             Dalam sistem ini, tingkat suku bunga akan mengikuti naik-turunnya suku bunga pasar. Jika suku bunga pasar naik, maka bunga kredit anda juga akan ikut naik, demikian pula sebaliknya. Sistem bunga ini diterapkan untuk kredit jangka panjang, seperti kredit kepemilikan rumah, modal kerja, usaha dan investasi.

c) Suku Bunga VS Harga Saham
           Salah satu pengaruh yang memiliki korelasi yang sangat kuat mempengaruhi pergerakan harga-harga saham di bursa efek dan paling sering terjadi yang dapat kita amati adalah pengaruh fluktuasi tingkat suku bunga perbankan atau suku bunga yang telah ditetapkan oleh Bank Indonesia.
           
           Sebagaimana diketahui bahwa tingkat suku bunga perbankan secara periodik akan selalu berfluktuasi dan fluktuasi tingkat suku bunga perbankan tersebut akan berpengaruh kuat terhadap pergerakan harga-harga saham di bursa efek. Secara teoritis hubungan pergerakan tingkat suku bunga dengan pergerakan harga saham tersebut berbanding terbalik. Artinya apabila tingkat suku bunga mengalami kenaikan maka harga-harga saham yang diperdagangkan di bursa efek akan mengalami penurunan, maka harga-harga saham naik karena para investor akan beralih berinvestasi kepada instrumen perbankan seperti deposito misalnya dan sebaliknya kalau pergerakan tingkat suku bunga mengalami penurunan, maka harga-harga saham naik karena para investor akan beralih berinvestasi kepada instrumen saham.
            
            Faktor kedua yang memungkinkan pengaruh naik turunnya tingkat suku bunga perbankan terhadap harga-harga saham, dikarenakan setiap perusahaan pasti memiliki utang dan senantiasa mencari sumber-sumber pembiayaan melalui utang. Dimana utang merupakan bagian yang tidak terpisahkan dari kegiatan operasional suatu perusahaan, sehingga naiknya tingkat suku bunga dipastikan akan menambah beban biaya terhadap perusahaan dan akibatnya dapat mengurangi keuntungan perusahaan serta mendorong meni ngkatkan risiko terhadap perusahaan.
            
           Oleh karena itu, disimpulkan bahwa bagi perusahaan-perusahaan yang memiliki rasio utang yang cukup besar serta saham perusahaan-perusahaan yang bergerak dalam industri perbankan dan properti memiliki tingkat sensitivitas yang sangat tinggi terhadap harga saham perusahaan yang bersangkutan.
            
            Tingkat Suku Bunga adalah harga dari penggunaan uang untuk jangka waktu tertentu atau harga dari penggunaan uang yang dipergunakan dan akan dikembalikan pada saat mendatang. Nilai suku bunga Domestik di indonesia sangat terkait dengan tingkat suku bunga internasional. Hal ini disebabkan oleh akses pasar keuangan domestik terhadap pasar keuangan internasional serta kebijakan nilai tukar mata uang yang kurang fleksibel.
             
            Selain suku bunga internasional, tingkat diskonto suku bunga indonesia (SBI) juga merupakan faktor terpenting dalam penentuan suku bunga di indonesia. Peningkatan diskonto SBI segera direspon oleh suku bunga Pasar Uang Antar Bank (PUAB) sedangkan respon suku bunga deposito baru muncul setelah 7 sampai 8 bulan.
             
            Keynes berpendapat, bahwa tingkat suku bunga ditentukan oleh permintaan dan penawaran uang. Dalam menentukan tingkat suku bunga berlaku hukum permintaan dan penawaran. Apabila penawaran uang tetap, semakin tinggi pendapatan nasional semakin tinggi tingkat suku bunga. Bunga adalah imbal jasa atas pinjaman uang. Imbal jasa ini merupakan suatu kompensasi kepada pemberi pinjaman atas manfaat ke depan dari uang pinjaman tersebut apabila diinvestasikan.
             
            Perubahan tingkat suku bunga akan menyebabkan tejadinya fluktuasi harga surat berharga. Hal ini terutama akan dialami surat berharga yang memberikan pendapatan tetap, seperti obligasi. Obligasi merupakan pejanjian yang resmi antara penerbit obligasi dengan investor. Investor ini memperoleh imbalan berupa bunga tetap yang dibayarnya setiap tahun sampai obligasi tersebut jatuh tempo.
            
           Ada perbedaan antara obligasi yang dikeluarkan oleh pemerintah dengan obligasi yang dikeluarkan oleh perusahaan. Obligasi yang dikeluarkan oleh perusahaan paling tidak mengandung dua risiko yaitu risiko kegagalan dan risiko tingkat bunga, karena ada kemungkinan perusahaan mengalami kebangkrutan.  


Sumber :
http://www.referensimakalah.com/2013/02/pengertian-bunga-dan-suku-bunga.html
http://suksesitubebas.com/2013/04/24/4-jenis-suku-bunga-pinjaman-jangan-tertipu-  prosentase-rendah/

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...:)

Pengertian IDIR, DBR, DSR, dan WI Need, DOH untuk Analisa Kredit

Dear Rekan Banke'rs,

Dibawah ini merupakan pengertian dan contoh  perhitungan dari komponen" yang dibutuhkan dalam analisa kredit :


  (IDIR, DBR, DSR, dan WI Need, DOH )

a. DOH= Perbandingan antara Inventori usaha / Hpp Usaha x 30hari, menghasilkan berapa lama barang usaha tersebut laku/terjual (hari).

b. WI Need =  DOH Inventori + DOH Piutang Dagang – DOH Hutang Dagang /30hari X HPP menghasilkan seberapa banyak kebutuhan modal usaha sesunggugnya atas DOH inventori + DOH piutang dagang – DOH hutang datang dibagi 30hari dan dikali kan dengan jumlah harga pokok barang usaha dan muncullah kebutuhan modal usaha tersebut (Rp).

c. DI = Sisa penghasilan bersih dari usaha Non gaji – Angs Pinjaman Exiting – Angs pinjaman Now, menghasilkan Seberapa (Rp) banyak keuntungan bersih usaha.

d. IDIR = Angs Pinjaman Exiting + Angs Pinjaman Now / DI x 100 maksimal 80% sd 70%

, menghasilkan  Calon debitur hanya bisa menggunakan pendapatan bersih usaha sebanyak 80% sd 75% sudah termasuk kewajiban angs exiting dan angs now.

e.  DBR = Angs Pinjaman Now / Laba Kotor Usaha x100 Maksimal 25% Sd 20%

menghasilkan calon debitur hanya bisa mnggunakan maksimal 25% sd 20% dari hasil laba kotor usaha atau kebalikan dari pada IDIR.

f.  DSR = Angs Pinjaman Now + Angs pinjaman Exiing / Laba kotor usaha x100 Maksimal 40% sd 35%  menghasilkan calon debitur hanya boleh menggunakan 40% sd 35% dari laba kotor guna membayar kewajiban lain baik berupa angs exiting atau angs pinjaman now.
Di ambil dari berbagai sumber,
Selamat berhitung...

Source Code SMS Voting dengan Visual Basic 6

SCREEN SHOTNYA GAN :