Oct 29

Adempiere Cheat Sheet (2)

Ok, sesuai janji penulis akan meneruskan artikel mengenai Adempiere Cheat Sheet.

Apa bedanya SubType SO (Sales Order) ?

Sales Order terdiri atas beberapa sub tipe. Setiap sub tipe mempunyai kelakuan khusus. Untuk tipe POS misalnya, jika dicomplete maka ia akan langsung membuat Shipment, Invoice dan Cash Journal. Sementara pada tipe Standard Order, seluruh dokumen tersebut harus dibuat satu per satu mengikuti aturan yang ada.

Ini dia daftar selengkapnya:

POS = SO -> MM -> AR -> Cash Journal
On Credit Order = SO -> MM -> AR
Prepay Order = SO -> waiting for Payment -> MM -> AR
Warehouse Order = SO -> MM

DOCUMENT SEQUENCE PREFIX PATTERN

Tahukah Anda Adempiere memiliki fitur canggih dalam penomoran dokumen ? Anda bisa menyisipkan nilai dari sebuah kolom ke dalam prefix atau suffix dari nomor dokumen yang digenerate oleh sistem. Misalnya, jika Anda menerapkan penomoran dokumen per cabang, maka Anda ingin menyisipkan kode cabang pada prefix dokumen supaya nomor dokumennya unik dan mudah diidentifikasikan.

Caranya mudah. Pada window Document Sequence, sebagai contoh masukan “SO/@AD_Org_ID@” pada field Prefix.

Maka variabel @AD_Org_ID@ akan diartikan sebagai perintah untuk mencetak kode id organisasi yang bersangkutan secara otomatis. Jika kode id dirasa tidak manusiawi, maka Anda pun bisa melakukan seperti ini:

Ubahlah isian di atas menjadi “SO/@AD_Org_ID<Value>@”.

Adempiere akan menerjemahkan ini sebagai perintah untuk lookup ke table AD_Org dan mengambil isi dari field Value yang ada pada table tersebut untuk disisipkan ke dalam prefix nomor dokumen. Dengan demikian, maka nomor dokumen Anda kira-kira akan seperti ini hasilnya:

SO/JKT/1…

SO/MDN/1…

SO/SBY/1…

Libero BOM

Set the BOM Type to ‘Make-to-Kit’, as this option will be useful when we create manufacturing order directly from the sales order. BOM Type has following options

Make-to-Kit -> Create a Manufacturing Order, Receipt for the finish product and issue the Components automatically
Current Active -> Only one active BOM will be allowed for a product
Make-to-Order – > Components can have attribute set instance, otherwise it will not allow
Product Configure -> No Implementation
Repair -> No Implementation

Set BOM Use to ‘Manufacturing’. Following BOM Use options are available

Master -> No Implementation
Engineering -> No Implementation
Manufacturing -> Create a Manufacturing Order, Receipt the finish product and issue the Components automaticaly
Planning -> No Implementation
Quantity -> No Implementation

Change Notice is useful, when some one wants to change the composition of existing BOM product. Generally in manufacturing, changing composition is governed by set rules.

Step (4) Configure Product Components in ‘Components’ included tab on the BoM tab of product window

Set Component Type to Component
Set Issue Method to Back Flush. Following Issue Method Types are supported:
Back Flush – Raw Material will be reduced automatically and components will be increased automatically
Issue – No implementation
Floor Stock – No Implementation
Components Can be configured as percentage, but in the current example we have used quantity

————————————————————————————-
The Libero BOM Component Type can be:

1.- By Product: Define a By Product as Component into BOM
2.- Component: Define a normal Component into BOM
3.- Option: Define an Option for Product Configure BOM  -> Optional
4.- Phantom: Define a Phantom as Component into BOM
5.- Packing: Define a Packing as Component into BOM
6.- Planning : Define Planning as Component into BOM
7.- Tools: Define Tools as Component into BOM
8.- Variant: Define Variant  for Product Configure BOM -> Alternative 1..9, then Optional

Daftar Table ID dan Urutan Proses Posting (Adempiere v.342)

public static int[]  documentsTableID = new int[] {
MJournal.Table_ID,            //  GL_Journal – 224
MOrder.Table_ID,            //  C_Order – 259
MInvoice.Table_ID,            //  C_Invoice – 318
MInOut.Table_ID,            //  M_InOut – 319
MInventory.Table_ID,        //  M_Inventory – 321
MMovement.Table_ID,            //  M_Movement – 323
X_M_Production.Table_ID,    //  M_Production – 325
MPayment.Table_ID,             //  C_Payment – 335
MBankStatement.Table_ID,    //  C_BankStatement – 392
MCash.Table_ID,                //  C_Cash – 407
MMatchInv.Table_ID,            //  M_MatchInv – 472
MMatchPO.Table_ID,            //  M_MatchPO – 473
MProjectIssue.Table_ID,        //    C_ProjectIssue – 623
MRequisition.Table_ID,        //    M_Requisition – 702
MAllocationHdr.Table_ID    //  C_Allocation – 735
};

Price List Schema

Ketika menyusun Price List Schema, mulailah dari kondisi yang general menuju spesifik. Baris pertama biasanya diisi dengan kondisi yang general (biarkan semua kolom kosong). Ini memastikan semua item akan masuk ke dalam Price List nantinya. Kemudian lanjutkan pada baris kedua dengan kondisi yang agak spesifik (misalnya Product Category diisi). Lalu lanjutkan lagi pada baris ketiga dengan kondisi yang makin spesifik (misalnya kolom Product diisi).

Cara pengisian yang terbalik (spesifik -> general) akan membuat hasil proses Generate Price List menjadi tidak benar karena rumusan kondisi yang spesifik akan tertimpa dengan rumusan yang general.

Staging Discount

Anda bisa menerapkan staging discount di dalam Discount Schema. Yang Anda harus perhatikan adalah urutan pengisiannya harus dimulai dari nilai break yang terbesar. Misalnya Anda sedang menyiapkan promo diskon untuk pembelian 10 unit diskon 1%, 50 unit diskon 2% dan 100 unit diskon 4%. Maka urutan pengisiannya harus dimulai dari yang terbesar yakni 100 unit pada baris 10, disusul dengan 50 unit pada baris 20 dan terakhir 10 unit pada baris 30.

discountbreak

Catatan: Nomor baris sengaja dilongkapi 10 supaya jika Anda butuh penambahan, maka Anda bisa menyisipkannya dengan mudah tanpa harus melakukan pengurutan seluruhnya.

Demikian Adempiere Cheat Sheet kali ini. Mudah-mudahan bermanfaat. Sampai jumpa.

Goodwill Consulting adalah bagian dari komunitas pengembang dan pendukung Adempiere. Jika Anda membutuhkan bantuan profesional untuk implementasi Adempiere, silahkan menghubungi kami.

Oct 27

Adempiere Cheat Sheet

Bergelut dengan aplikasi seluas ERP, banyak hal yang harus nempel terus di otak kita. Tapi seringkali justru hal-hal yang kecil dan sepele malah menjadi tidak mudah diingat. Kiat penulis adalah membuat catatan sederhana yang berfungsi sebagai “cheat sheet” alias kertas contekan supaya kita dengan cepat menemukan kembali jawabannya.

Berikut ini penulis ingin berbagi beberapa contekan yang sering dipakai oleh penulis.

ADempiere Conversion

Kalau anda sering lupa atau menjadi linglung bagaimana mengentri konversi kurs atau UOM, ini patokannya.

USD ke IDR, isi nilai tukarnya di kolom “multiply rate” (misalnya 10000).

Untuk UOM, jika satuan terkecil di master Product adalah kg.
Konversi Kg ke Ton, masukan angka “1000″ di kolom “divide rate”.

Inget ya, jangan kebalik :)

DISPLAY TYPE

Adempiere menyediakan beberapa macam “display type” untuk tipe data numerikal. Pada window Table & Column, Anda bisa menentukannya dengan mudah lewat field Reference. Namun demikian, ternyata acapkali kita sering dibuat bingung mau pilih “display type” yang mana, karena Adempiere sama sekali tidak memberi petunjuk perbedaannya.

Ok, dengan menengok coding-nya (DisplayType.java) ternyata perbedaannya adalah pada pengaturan “minimum fraction digit” seperti ini:

Integer  : -
Quantity : -
Amount   : 2
CostPrice: 2
Number   : 1

Catatan: Ternyata Amount dan Cost Price tidak memiliki perbedaan. Dengan sedikit modifikasi, penulis membuat tipe Cost Price bisa dikonfigurasi. Sehingga jika ada kebutuhan di atas 2 digit di belakang koma, maka penulis tinggal mengaturnya saja di System Configurator.

Why can’t I issue my Expense report ?

Ketika kita menjalankan proses Project Issue dengan menggunakan Expense Report, sering kali kita mengalami kegagalan dengan pesan yang sama sekali tidak dapat memberi petunjuk kepada user apa yang menjadi penyebabnya.

Sebenarnya penyebabnya ada 4 hal, yakni:
1.    Expense Report harus punya Product
2.    Expense Report harus punya Quantity
3.    Expense Report harus sama Project
4.    Expense Report belum pernah diissue sebelumnya.

Dengan sedikit modifikasi, sekarang penulis membuat pesan kesalahan menjadi jelas sehingga user tahu penyebabnya yang mana.

SEED COST LOGIC

Bagaimana cara Adempiere mencari harga pokok sebuah produk ? Ini dia yang sering membuat mumet. Kalau Anda tidak tahu logik pencariannya, dijamin Anda bakal sering-sering menepuk jidat Anda sendiri.

Ok, ini dia urutan pencariannya (asumsi pakai Costing Method Average PO):

1. M_Cost (Costing tab), field CurrentCostPrice, Cost Element = Average PO
2. C_OrderLine_ID, field PriceCost then field PriceActual (included tax corrected)
3. M_Cost (Costing tab), field CurrentCostPrice, Cost Element = Standard Costing, per Org
4. Last Invoice Price (included tax corrected)
5. Last PO Price (included tax corrected)
6. M_Product_PO (Purchasing tab), field PO Price, current vendor first
7. Purchase Price List, most current, field PriceStd then field PriceList

Print Format Lookup Logic

Bagaimana Adempiere menemukan default Print Format untuk form yang mau kita cetak ? Tergantung jenis formnya, Anda bisa mengeceknya dalam daftar berikut. Apabila Anda sudah tahu logik ini, maka Anda bisa membuat pengaturan default Print Format dengan lebih baik.

1. CHECK – Bank Account Document, then Document Type
2. DUNNING – Dunning Level
3. REMITTANCE – Print Form
4. PROJECT – Print Form
5. RFQ – RFQ Topic
6. MOVEMENT – Document Type
7. REQUISITION – Document Type
8. VOUCHER – Document Type
9. ORDER – Document Type, then Print Form
10. SHIPMENT – Document Type, then Print Form
11. INVOICE – Business partner, then Document Type, then Print Form
12. MANUFACTURING ORDER – Print Form
13. DISTRIBUTION ORDER – Print Form
14. INVENTORY – Document Type

VARIABLE SPESIAL UNTUK PENCETAKAN

Tahukah Anda jika Adempiere menyediakan beberapa variable spesial yang bisa Anda pakai dalam pencetakan, misalnya ketika Anda butuh mencetak nomor halaman dan jumlah halaman seperti ini.

“Hal 1 dari 10″

Variable ini tidak terdokumentasi dengan baik tetapi sebenarnya dapat Anda baca dengan menekan F1 (Help) ketika berada di jendela Print Format. Berikut kutipannya:

Item in the print format maintaining layout information. The following additional variables are available when printing:
@*Page@ – the current page number
@*PageCount@ – the total number of pages
@*MultiPageInfo@ – “Page x of y” – only printed if more than one page
@*CopyInfo@ – if it is a copy of the document “Duplicate” is printed
@*ReportName@ – name of the report
@*Header@ – Full Header with user/client/org name and connection
@*CurrentDate@ – the user who prints this report
@*CurrentDateTime@ – the print time
@*CurrentUser@ – the user who prints this report
The layoit logic for forms is:
- if not printed: ignore
- set New Line Position
- new page
- new line, if something was printed since last new line
- format item
- print it (if not null/empty selected)
(i.e. supress null does not prevent new line)

Catatan: khusus variable @*CurrentUser@ adalah tambahan fitur dari tim Goodwill. Jika Anda membutuhkannya, silakan hubungi tim Goodwill untuk penjelasan teknisnya.

Sekian dulu sharing “Adempiere cheat sheet”-nya. Penulis berjanji akan meneruskan sharingnya di lain kesempatan. Semoga bermanfaat.

Goodwill Consulting adalah bagian dari komunitas pengembang dan pendukung Adempiere. Jika Anda membutuhkan bantuan profesional untuk implementasi Adempiere, silahkan menghubungi kami.