Kali ini saya mendapat tugas untuk menampilkan terbilang pada report yang dibuat via iReport. Logikanya sih sederhana, kita hanya perlu membuat function untuk mengkonversi dari nilai numerik menjadi kata-kata numerik.
Ada tiga pendekatan dalam kasus ini. Pertama adalah membuat membuat class (java) yang berisi fungsi ini dan menguploadnya ke database postgres (dengan PL Java). Dengan cara ini maka kita tinggal memanggil fungsi tersebut melalu sintaks query.
Cara kedua, dalam kasus ini source data adalah database Adempeire, tambahkan field terbilang pada tabel yang diharapkan, dan isi field tersebut melalui aplikasi Adempiere. Dengan kata lain data yang dikirimkan ke report telah matang. Contoh fungsi di postgres yang menggunakan PL Java:
Cara ketiga adalah dengan menggunakan bantuan scriplet yang memangil fungsi sayInWords. Fungsi ini di simpan di class dan diupload ke JasperServer.
Ada tiga pendekatan dalam kasus ini. Pertama adalah membuat membuat class (java) yang berisi fungsi ini dan menguploadnya ke database postgres (dengan PL Java). Dengan cara ini maka kita tinggal memanggil fungsi tersebut melalu sintaks query.
Select sayNumber(1000.0) as terbilang
Cara kedua, dalam kasus ini source data adalah database Adempeire, tambahkan field terbilang pada tabel yang diharapkan, dan isi field tersebut melalui aplikasi Adempiere. Dengan kata lain data yang dikirimkan ke report telah matang. Contoh fungsi di postgres yang menggunakan PL Java:
CREATE OR REPLACE FUNCTION adempiere.sayNumber(myNumber "numeric")
RETURNS "varchar" AS
'org.compiere.sqlj.Adempiere.sayNumber(BigDecimal)'
LANGUAGE 'java' VOLATILE;
ALTER FUNCTION sayNumber(myNumber "numeric") OWNER TO adempiere;
Cara ketiga adalah dengan menggunakan bantuan scriplet yang memangil fungsi sayInWords. Fungsi ini di simpan di class dan diupload ke JasperServer.
import net.sf.jasperreports.engine.*;
import guescriptlet.utils.*;//kumpulan fungsi untuk, termasuk fungsi sayNumber()
public class FormPembayaranScriptle extends it.businesslogic.ireport.IReportScriptlet {
/** Creates a new instance of JRIreportDefaultScriptlet */
public FormPembayaranScriptlet() {
}
public String sayinwords(double number){
return AmtInWords_IN.sayNumber(number); //fungsi dipanggil dari sini
}
}