Skip to main content

Posts

Javascript : Checkbox Toggle (Pengganti Radiobutton)

 Kebutuhannya sederhana, ada banyak checkbox, tapi hanya bisa memilih satu saja.  Misalnya kita punya tabel data, tiap baris ada checkbox, hanya saja dibatasi hanya ada satu yang bisa dicentang. Saat satu baris dicentang (checked), maka yang lain otomatis dihilangkan centangnya (unchecked). // function to uncheck other checkboxes using javascript only function uncheckOther(obj)  {   if (obj.checked) {   var inputs = document.getElementsByTagName("input");   for(var i = 0; i < inputs.length; i++) {     inputs[i].checked = false;    }     obj.checked = true;   } }    Terus di tag checkbox-nya panggil fungsi tersebut: <input type="checkbox" id='test1' value="abc" onclick="uncheckOther(this)"> Sebenarnya kalau di halaman web biasa, aku bisa mengganti checkbox dengan button atau link di tiap barisnya, langsung ada ID. Masalahnya, pas aku coba pakai ini di Visualforce page (Salesforce) aku mengalami kesul...

Salesforce : Debug Log untuk user System Terkait Email-to-Case

Belum lama ini ada proyek cukup intensif berkaitan dengan Case Management di platform Salesforce.com. Salesforce sendiri sudah memiliki fitur ini, yang masuk dalam produk Service Cloud, dan cukup banyak fasilitas yang tersedia. Salah satunya adalah Email-to-case, yang memungkinkan kita menerima keluhan/saran melalui email, dan secara otomatis system akan membuat record di object Case (standard object). Aku membuat trigger untuk object Case, yang akan mengupdate field tertentu berdasar data yang diinput. Ternyata, trigger yang aku buat tidak berfungsi dengan baik jika record Case dibuat dari Email-to-case. Padahal kalau dibuat secara manual (data entry), atau dibuat dari fitur Web-to-case, triggernya bisa berfungsi dengan baik.  Nah, aku coba debug, gak muncul di Debug Log. Ternyata yang user yang menjalankan peran saat proses Email-to-case adalah user "System", bukan user yang aku pakai. Pantas saja debug log gak ada isinya, karena bukan userku yang melakukannya. Pengaturan t...

Tidak Bisa Edit Salutation di Lightning - #SalesforceJourney

Masalahnya sepele, cuma ingin mengubah daftar Salutation yang ada di object Lead dan Contact, yang merupakan field dengan tipe picklist. Dulu caranya gampang, tinggal buka object Lead, buka daftar field, pilih Salutation. Dari situ bisa langsung oprek daftar Salutation yang ada. Bisa nambah, hapus ataupun mengubah yang sudah ada. Tapi di Lightning, ternyata fitur itu tidak tersedia. Jadi hingga saat ini, satu-satunya cara ya harus pindah dulu ke tampilan Classic, dan lakukan perubahan dari sana. Oh ya, ternyata values yang ada di Salutation di Lead, juga dipakai di Contact. Jadi mengubah daftar picklist Salutation di Lead, otomatis akan berlaku juga di Contact. Praktis.

Mengatur Password MariaDB Yang Baru Diinstal di Ubuntu

Oke, sebenarnya ini masalah sepele, tapi karena aku sering lupa, aku catat saja. Ceritanya aku baru nyoba-nyoba lagi install Linux, terpaksa pakai Ubuntu lagi karenan entah mengapa nyoba install Linux Mint gagal melulu. Selanjutnya seperti biasa, install Apache, PHP, Postgresql dan MariaDb - versi gratisan dari MySQL. Termasuk tentu saja install phpmyadmin. Catatan: yang aku install adalah versi terbaru yang tersedia di ubuntu, yaitu Ver 15.1 Distrib 10.1.44-MariaDB. Sebenarnya saat install phpmyadmin, ada permintaan untuk mengisi password. Tapi karena kurang fokus, aku lupa. Pas sekarang butuh mau pakai MariaDb, baru bingung. Aku coba jalankan perintah biasa di console: > mariadb -u root -p  Pas aku masukin password kosong, error. Pas nyobain pakai password standard yang aku pakai, gagal juga. Browsing sebentar, nemu artikel ini :  https://www.digitalocean.com/community/tutorials/how-to-reset-your-mysql-or-mariadb-root-password-on-ubuntu-18-04 Jadinya aku coba lagi di...

Internet of Things, Opo Kuwi?

Belakangan ini aku sering mendengar istilah Internet of Things, tapi gak gitu paham apa maksudnya. Sejauh ini sih aku cuek saja, toh belum bersinggungan dengan pekerjaan. Akhirnya pagi ini tertarik dengan satu link video yang memberi penjelasan tentang IoT ini. Intinnya adalah  benda-benda bisa berkomunikasi satu sama lain lewat internet, bahkan tanpa campur tangan manusia. Apakah ini hal baru? Tergantung definisi barunya sejak kapan, yang jelas sih kalau di film-film sudah sering kita tonton kisah-kisah fiksi tentang teknologi ini. Tapi sekitar 10 tahun lalu aku sudah sempat mendengarkan cerita dari Pak Bagus Mahawan tentang hal ini. Hanya saja waktu itu istilah IoT belum ada. Dalam sebuah perjalanan penuh macet menuju pertemuan dengan salah satu client di Jakarta, pak Iwan berkisah tentang apa yang sedang terjadi di Jepang. Terkesan bahwa saat ini mereka sedang stagnan dalam perkembangan teknologi, dan mulai kalah dengan negara lain. Makanya mereka sedang mengembangkan k...

Foto-Foto Dalam AWS Summit 2015, Singapore

Meja registrasi acara AWS Summit 2015 di Singapura masih tampak lenggang karena acara baru akan dimulai sekitar satu jam lagi. Aku datang agak awal karena janjian dengan teman, yang mengundangku ikut acara ini. Mumpung gratis katanya, siapa tahu bisa nambah ilmu dan nambah koneksi. Lagipula aku sedang tidak terlalu sibuk, jadi ya ikutan saja. Acara berlangsung seharian di Raffles City Convention Center, lantai 4. Aku bukanlah pengguna aktif AWS, karena bagiku layanan mereka terlalu mahal. Tapi karena kantor dulu beberapa kali menggunakan layanan AWS, khususnya layanan EC2, ya sedikit banyak aku tahu lah. Tapi ya sebatas EC2 saja, lebih ke server hostingnya. Padahal sebenarnya layanan dari AWS itu ada lebih banyak lagi, sampai aku bingung dengan banyaknya menu yang ada. Karena merasa tidak perlu, aku malas belajar sendiri. Nah dengan adanya acara ini, setidaknya aku dapat overview  tentang produk-produk AWS itu, siapa tahu suatu saat dibutuhkan. Saat acara baru akan dimula...

Soal Test Class di Salesforce.com

Sumber gambar: force.com Aku adalah penganut falsafah "learning by doing", artinya lebih suka untuk praktek langsung daripada repot baca teori. Ini berlaku juga saat membeli barang baru, langsung utak-atik tanpa mau repot-repot membaca buku petunjuk penggunaan. Termasuk saat belajar pengembangan aplikasi di Salesforce.com (force.com). Seminggu pertama baca-baca dan mengikuti tutorial sangatlah membosankan, dan baru semangat ketika terjun langsung dalam proyek, dan belajar dengan mencontek hasil kerjaan orang lain. Akibatnya, tidak memiliki dasar yang mendalam. Termasuk dalam hal membuat testclass. Selama ini aku anggap testclass hanya sebagai basa-basi, formalitas agar aplikasi bisa di-deploy ke production. Soalnya system mewajibkan minimal code coverage 75%, baru bisa di-deploy. Tentu saja ini hal yang menjengkelkan dan membuat frustrasi. Hal ini diperparah dengan kebiasaanku yang tidak pernah membaca teori tentang test class ataupun cara yang benar untuk membuat test ...

[Debug] Dua Masalah PHP

Siang tadi mendapat tugas untuk memeriksa dua aplikasi bermasalah, keduanya bukan aku yang mengerjakan, dan keduanya terkait dengan PHP. Karena gak bisa aku kerjakan siang, jadi terpaksa aku cek malam hari, itupun dengan setengah niat. Kalau susah ya aku tinggalkan, kalau mudah ya aku bereskan. Kedua masalah memiliki dampak yang sama, membuat aplikasi tidak bisa berjalan semestinya, dan tanpa keterangan kesalahan yang jelas. Pokoknya pelapor hanya menyebutkan bahwa website gak jalan. Masalah pertama, terkait dengan proyek donasi, yang melakukan integrasi dengan paypal. Sebelumnya kami sudah melakukan testing di server sementara (punya kantor), dan pihak web designer mencoba menggabungkan program kami dengan desain mereka, dan menginstall di server mereka. Meskipun sudah diinstall sesuai petunjuk, tetap saja program error. Untuk kali ini pas aku coba, pesan errornya cukup jelas : "tidak bisa mengakses file /var/www/xxx/dst...". Ok, mudah, pikirku. Pas aku cek filenya, ada ko...

Menampilkan Angka dengan Format Ribuan dan Pecahan

Masalah sepele : ingin menampilkan angka seperti 12345.57 jadi 123,45.57 (untuk saat ini dibatasi hanya 2 desimal). Karena masalahnya sepele, algoritmanya juga harusnya sepele. Tapi sering lupa, jadi mending aku tulis di sini sekedar jadi pengingat. PHP Kalau di php simple, cukup pakai sintaks number_format(Angka, Jumlah Decimal) Lengkapnya bisa dilihat di sini  http://php.net/number_format JAVASCRIPT Sepertinya di javascript belum ada fungsi bawaan yang standard, jadi terpaksa bikin sendiri. Agak gak efektif memang, tapi biarlah. function currFormat(decAmount)   {     strSymbol = (decAmount < 0) ? '-' : '';     decAmount = Math.abs(decAmount);     decAmount = Math.round(decAmount * 100);     dec1 = Math.floor(decAmount / 100);     dec2 = decAmount - (dec1 * 100);          str1 = dec1.toString();     str2 = dec2.toString();        ...

Visual Force Page : Create List With Hyperlink Column

Apex code sederhana, untuk membuat table berisi daftar record suatu object, dengan menampilkan hyperlink ke record tersebut. Soalnya kalau hanya menampilkan field Name (sebagai primary key), ternyata gak ada hyperlink. Contohnya ingin menampilkan list Lead seperti berikut. Nah, potongan programnya cukup seperti ini Dengan asumsi, listLead adalah List , yang merupakan list berisi record dari standard object Lead. Sekedar pengingat saja.

Apex Controller - New Button Override with Autotext for Name

Field Name di Salesforce ada dua jenis : Autonumber atau Text(80). Jika kita pilih Autonumber, kita gak bisa mengubah nilainya. Tapi jika kita pilih Text, field ini jadi wajib. Kadangkala kita ingin punya Autonumber sendiri, tidak memakai autonumber standard dari salesforce. Ini bisa ditangani dengan membuat trigger. Masalahnya, field Name itu wajib diisi dan user tidak bisa menyimpan sebuah record tanpa memberi isi pada field tersebut, padahal field tersebut nantinya akan ditimpa (replace) dengan trigger. Jadi terkesan user harus mengisi dengan sesuatu yang tidak berguna, hanya sekedar agar record bisa disimpan. Salah satu solusi mengatasi ini adalah dengan memberi nilai default ke field Name tersebut, sehingga nilainya sudah otomatis ada, dan user tidak perlu repot-repot mengisinya. Ini bisa dilakukan dengan membuat sebuah VF Page sederhana, yang akan meng-override New button dan isinya cuma meredirect ke halaman New. Berikut contoh code Controllernya. Sengaja malas mengubah de...

Software Jaman Sekarang Cenderung Rakus

Ini hanya pendapat ngawur, tidak ada survey yang ilmiah. Menurutku, kebanyakan software jaman sekarang dibuat dengan tidak terlalu mempertimbangkan penggunaan memory dan efisiensi. Yang penting cepat diselesaikan, toh memory makin murah, storage juga makin murah, processor makin cepat. Gak terlalu pusing dengan optimasi. Kalau software dirasa berjalan lambat, bukan softwarenya yang diperbaiki, tapi spec hardwarenya yang harus diupgrade. Tambah memory, upgrade processor, dan sebagainya. Aku memang tidak pernah merasakan bikin sofware jaman cobol, fortran, C dsb. Tapi setidaknya aku pernah mengalami berbagai keterbatasan saat belum ada Windows, processor masih 133Mhz, memory 32Mb :) Jaman dimana software diusahakan sangat optimal, karena banyaknya keterbatasan hardware. Ada tuntutan software yang optimal, agar kinerja tidak terlalu tergantung dengan kemampuan hardware. Seiring dengan munculnya berbagai visual tools, yang cukup dengan drag and drop, dan perkembangan hardware tentu saja,...

Lowongan Programmer

Ini bukan posting lowongan kerja yang mencari programmer. Ini cuma posting cerita, bahwa tenaga programmer masih banyak yang nyari. :) Tadi pagi ada telpon dari Presdir (wuih, tumben beliau nelpon, soalnya dah lama gak ada komunikasi karena beliau super sibuk). Kirain mau nawarin bonus atau tambahan tunjangan (ngarep tujuh keliling !!!), eh ternyata cuma tanya apa aku punya teman programmer. Teman programmer sih banyak, tapi kalau teman programmer yang lagi nyari kerja atau mau pindah kerja, aku gak yakin. Setidaknya ada 3-4 kenalanku yang pernah menanyakan hal yang sama dalam waktu dekat. Semuanya punya "software house" yang tidak terlalu besar, tapi tetap menjanjikan. Ada diantara mereka yang sudah mencoba berbagai cara termasuk pasang iklan di berbagai media, namun hasilnya kurang maksimal juga. Masalahnya, dengan umurku sekarang, kebanyakan teman seangkatanku sudah tidak lagi berminat sebagai programmer. Mungkin cuma sedikit yang seperti aku, yang masih bergelut den...

Pengalaman Ngoprek Zurmo

Zurmo adalah aplikasi pengelolaan relasi pelanggan (customer relationship management - CRM) berbasis web dan bersifat open source. Dikembangkan selama dua tahun lebih, dan baru saja rilis versi 1.0. Entah mengapa masih ada yang bikin aplikasi CRM baru di tengah banyaknya aplikasi sejenis yang sudah ada, baik yang gratisan maupun berbayar. Belum lagi layanan berbasis cloud. Pasar CRM sepertinya masih menjanjikan. Ada beberapa hal yang membuatku tertarik mencoba Zurmo. * Open source dan gratis * Berbasis web, Dikembangkan dengan PHP. * Database bisa Mysql, PostgreSql atau Oracle * Memakai Yii sebagai framework, yang kebetulan lebih kukenal dibanding framework lain * Modular, tiap fitur ataupun menu dijadikan modul, dalam satu folder. Jadi nambahin atau ngilangin modul bisa sesederhana menambah dan menghapus folder. Ya kurang lebihnya gitu, meski gak gampang2 amat sih * Aku suka User Interface nya. Bersih dan rapi. * Fiturnya menjanjikan, seperti Gamification, activity tracking,...

Salesforce.com Trigger : Generate Auto Running Number

Salesforce memiliki tipe data berupa autonumber, yang akan terisi otomatis dengan nilai yang selalu bertambah ( auto increment ). Ternyata ini tidak hanya untuk field Name, tapi kita juga bisa menambah baru. Kita juga bisa menentukan berapa jumlah karakter dari nilai autonumber yang kita inginkan. Misalnya kita ingin field itu berisi 5 karakter, maka kita cukup atur {00000} dan nilainya nanti akan menjadi 00001, 00002 dst. Kita bahkan bisa menggabungkan dengan huruf tertentu, misal X-{00}, akan menjadi X-01 dst. Atau bahkan dengan tahun, bulan dan tanggal record tersebut dibuat, misal {YYYY}/{MM}/{000} akan menghasilkan 2012/11/001 dst. Meskipun demikian, ada beberapa kekurangan yang belum aku temukan solusinya selain dengan membuat trigger untuk menghasilkan nilai nomor urut ( running number)  tersebut. Berikut beberapa kasus yang sepertinya tidak bisa dihandle hanya dengan field auto number tersebut. Nomor urut yang perlu di-reset secara berkala, misal per bulan atau per tah...

Rumus Menghitung Umur di Salesforce

Sekedar catatan saja, buat rumus untuk menghitung umur seseorang, lewat formula field. Asumsi field tanggal lahir adalah Date_of_Birth__c IF(   MONTH(TODAY())>MONTH( Date_of_Birth__c ),   YEAR(TODAY())-YEAR(Date_of_Birth__c ),   IF(AND(MONTH(TODAY()) = MONTH(Date_of_Birth__c ),      DAY(TODAY()) >=  DAY(Date_of_Birth__c )),      YEAR(TODAY())-YEAR(Date_of_Birth__c ),      (YEAR(TODAY())-YEAR(Date_of_Birth__c ))-1) ) Entah cukup akurat atau tidak, tapi secara umum berjalan dengan baik :) Sekedar tambahan untuk, berikut rumus untuk menghitung Tanggal Akhir = Tanggal Awal + Durasi (Bulan) Agak rumit karena penjumlahan di formula hanya untuk hari, sementara dalam satu bulan jumlah hari berbeda-beda. Sebenarnya yang sulit adalah menentukan tanggal akhir, agar tanggal tidak melebihi jumlah hari di bulan tertentu. Jika Y adalah tanggal akhir, X tanggal awal dan D adalah durasi dalam bulan, kira-kira b...

Mengatasi Jumlah Tab di Salesforce

Secara default, Salesforce hanya menyediakan 25 tab. Jika kita ingin membuat tab melebihi itu, kita harus membayar lagi. Konsep tab di salesforce mirip dengan menu, bisa dibilang menggantikan menu, karena tidak banyak pilihan navigasi lain selain lewat tab. Pada dasarnya, untuk tab dibutuhkan jika kita ingin mengakses data (termasuk membuat record baru, menghapus record yang ada ataupun mengeditnya) dalam sebuah object tertentu. Sedikit merepotkan saat kita membuat object baru, kita harus membuat tab baru untuk melakukan testing atau agar object itu bisa aktif, karena membuat object baru tidak secara otomatis menghasilkan tab untuk mengakses menu itu. Untuk proyek yang sekelas ERP misalnya, tentu tidak cukup hanya memiliki 25 tab, dan kami pernah dapat complaint  dari customer karena hal itu. Makanya dulu kepikiran, pasti ada cara untuk mengatasi hal ini. Mungkin bisa dengan membuat visualforce page yang bermanfaat untuk mengakses object tertentu, tanpa harus membuat tab baru. Ak...

Take Screen Shot on Android

Dulu aku pernah menemukan sebuah file gambar di hp Android yang isinya screenshot. Padahal aku sendiri gak tahu gimana caranya mengambil screenshot. Kalau di PC kan ada tombol Print-Screen (PrnScr), dan di desktop Linux malah ada aplikasi bawaan buat screen capture yang lebih canggih. Nah, mendadak teringat dan jadi penasaran. Akibatnya aku googling deh. Hasilnya, banyak referensi yang memberitahukan daftar aplikasi yang bisa digunakan untuk melakukan hal itu. Kebanyakan merupakan aplikasi yang membutuhkan rooting , seperti Screenshot, Shoot Me, Drocap2 dsb. Itu kalau mau pakai yang gratisan. Kalau mau tanpa rooting,  ada aplikasnya, tapi bayar. Hingga akhirnya aku perhatikan komentar-komentar di halaman web yang memberi informasi itu, eh, katanya bisa melakukan screenshot tanpa aplikasi. Nah, masuk akal, wong aku pernah melakukannya kok, cuma secara tidak sengaja. Ternyata caranya gampang. Cukup pencet-tahan tombol BACK, kemudian pencet tombol HOME. Langsung deh terdengar bu...

Apex Salesforce Limitation

Geregetan juga saat coding di Salesforce.com dengan Apex, ternyata cukup banyak keterbatasan yang diterapkan di sana. Memang sih, tujuannya untuk optimalisasi proses dan mencegah server berantakan gara-gara terlalu banyak proses yang berjalan secara simultan. Bosku bilang ke client "ini adalah konsekuensi menggunakan sistem multi-tenant ". Awalnya aku penasaran, apa saja sih yang dibatasi oleh Salesforce.com ini. Eh, ternyata di debug log ada penjelasannya. Berikut daftar (mungkin belum semua) batasan yang diberikan oleh Salesforce, sekedar untuk pengingat: Number of SOQL queries: 100 Number of query rows: 50000 Number of SOSL queries: 20 Number of DML statements: 150 Number of DML rows: 10000 Number of script statements: 200000 Maximum heap size: 3000000 Number of callouts: 10 Number of Email Invocations: 10 Number of fields describes: 100 Number of record type describes: 100 Number of child relationships describes: 100 Number of picklist describes: 100 Nu...

Salesforce Data Connection with PHP

Sekedar untuk mengingat aja, contoh kelas untuk koneksi PHP ke Salesforce dengan API/SOAP. /** Class to handle connection to salesforce */ require_once("soapclient/SforcePartnerClient.php"); require_once("soapclient/BulkApiClient.php"); define('SOAP_PATH', "soapclient"); define('WSDL_XML_PARTNER', "partner.wsdl.xml"); define('WSDL_XML_ENTERPRISE', "enterprise.wsdl.xml"); define('WSDL_XML_METADATA', "metadata.wsdl.xml"); class SFConnectionClass { public $connection; public $server = 'sand'; // option (sand or prod) public $username = ''; public $password = ''; public $token = ''; public $sfSessionID = ''; public $sfLocation = ''; /* constructor // if parameter empty, use default */ public function SFConnectionClass($server = 'sand', $username = '', $password = '', $token = ...