Contoh Generate "Kontrak Pasokan dan Pembelian" dengan Fitur "Template Print"
Dalam skenario supply chain atau perdagangan, sering kali perlu dengan cepat menghasilkan satu "Kontrak Pasokan dan Pembelian" yang terstandarisasi, dan secara dinamis mengisi konten berdasarkan informasi pembeli, penjual, detail Produk, dll. dari sumber data. Berikut ini akan mengambil contoh kasus penggunaan "kontrak" yang disederhanakan, untuk menunjukkan bagaimana mengonfigurasi dan menggunakan fitur "Template Print", memetakan informasi data ke placeholder pada Template kontrak, sehingga otomatis menghasilkan dokumen kontrak akhir.
1. Latar Belakang dan Ikhtisar Struktur Data
Dalam contoh kami, kira-kira ada beberapa tabel data utama berikut (mengabaikan field lain yang tidak terkait):
- parties: Menyimpan informasi unit atau individu pihak A/B, termasuk nama, alamat, kontak, telepon, dll.
- contracts: Menyimpan record kontrak spesifik, termasuk nomor kontrak, foreign key pembeli/penjual, informasi penanda tangan, tanggal mulai dan selesai, rekening bank, dll.
- contract_line_items: Digunakan untuk menyimpan beberapa item di bawah kontrak ini (nama Produk, spesifikasi, jumlah, harga satuan, tanggal pengiriman, dll.)

Karena sistem saat ini hanya mendukung print tunggal, kami akan klik "Print" pada halaman "Detail Kontrak", sistem otomatis mengambil record contracts yang sesuai, serta informasi parties terkait, mengisinya ke dokumen Word atau PDF.
2. Persiapan
2.1 Persiapan Plugin
Perhatikan, "Template Print" kami adalah plugin komersial, perlu dibeli dan diaktifkan sebelum dapat melakukan operasi print.

Konfirmasi Aktivasi Plugin:
Pada halaman apa pun, buat Block Detail (misalnya users), lihat apakah ada opsi konfigurasi Template yang sesuai di konfigurasi Action:


2.2 Pembuatan Tabel Data
Buat tabel pihak utama, tabel kontrak, dan tabel item Produk yang dirancang di atas (pilih field inti saja).
Tabel Kontrak (Contracts)
Tabel Pihak (Parties)
Tabel Item Produk (Contract Line Items)
2.3 Konfigurasi Antarmuka
Input data contoh:


Konfigurasi reaction rules sebagai berikut, otomatis menghitung total dan pembayaran setelahnya:

Buat Block lihat, setelah konfirmasi data, aktifkan operasi "Template Print":

2.4 Konfigurasi Plugin Template Print

Tambahkan satu konfigurasi Template, contoh "Kontrak Pasokan dan Pembelian":


Selanjutnya kita masuk ke Tab Field List, dapat melihat semua field objek saat ini. Setelah klik "Copy", kita dapat mulai mengisi Template.

2.5 Persiapan File Kontrak
File Template Kontrak Word
Persiapkan template kontrak terlebih dahulu (file .docx), contoh: SUPPLY AND PURCHASE CONTRACT.docx
Dalam contoh artikel ini, kami memberikan versi sederhana dari "Kontrak Pasokan dan Pembelian", yang berisi placeholder contoh:
{d.contract_no}: Nomor kontrak{d.buyer.party_name},{d.seller.party_name}: Nama pembeli, penjual{d.total_amount}: Total kontrak- Serta placeholder lain seperti "kontak", "alamat", "telepon", dll.
Selanjutnya Anda dapat menyalin berdasarkan field tabel yang Anda buat dan menimpanya ke Word.
3. Tutorial Variabel Template
3.1 Pengisian Variabel Dasar, Properti Objek Relasi
Pengisian Field Dasar:
Misalnya nomor kontrak di paling atas, atau objek pihak penanda tangan kontrak. Klik copy, langsung paste ke posisi kosong yang sesuai di kontrak.


3.2 Format Data
Format Tanggal
Pada Template, kita sering perlu memformat field, terutama field tanggal. Format tanggal yang langsung disalin biasanya panjang (seperti Wed Jan 01 2025 00:00:00 GMT), perlu Format untuk menampilkan style yang kita inginkan.
Untuk field tanggal, dapat menggunakan fungsi formatD() untuk menentukan format output:
Contoh:
Misalnya field asli yang kita salin adalah {d.created_at}, dan kita perlu memformat tanggal menjadi format 2025-01-01, maka modifikasi field ini menjadi:
Style Format Tanggal Umum:
YYYY- Tahun (4 digit)MM- Bulan (2 digit)DD- Tanggal (2 digit)HH- Jam (24 jam)mm- Menitss- Detik
Contoh 2:
Format Jumlah
Misalkan ada satu field jumlah, contoh {d.total_amount} di kontrak. Kita dapat menggunakan fungsi formatN() untuk memformat angka, menentukan jumlah desimal dan thousand separator.
Sintaks:
- Jumlah Desimal: Anda dapat menentukan berapa banyak desimal yang dipertahankan. Contoh,
2berarti pertahankan 2 desimal - Thousand Separator: Tentukan apakah akan menggunakan thousand separator, biasanya
trueataufalse
Contoh 1: Format jumlah dengan thousand separator dan dua desimal
Ini akan memformat d.amount menjadi dua desimal dan menambahkan thousand separator.
Contoh 2: Format jumlah sebagai integer tanpa desimal
Ini akan memformat d.amount menjadi integer, dan menambahkan thousand separator.
Contoh 3: Format jumlah dengan dua desimal tanpa thousand separator
Di sini thousand separator dinonaktifkan, hanya mempertahankan dua desimal.
Kebutuhan Format Jumlah Lainnya:
- Simbol Mata Uang: Carbone sendiri tidak langsung menyediakan fungsi Format simbol mata uang, tetapi Anda dapat mengimplementasikannya melalui data langsung atau menambahkan simbol mata uang di Template. Contoh:
Format String
Untuk field string, dapat menggunakan :upperCase untuk menentukan format teks, contoh konversi case.
Sintaks:
Cara Konversi Umum:
upperCase- Konversi ke huruf besar semualowerCase- Konversi ke huruf kecil semuaupperCase:ucFirst- Huruf pertama besar
Contoh:
3.3 Print Loop
Cara Print Daftar Sub-objek (seperti Detail Produk)
Saat kita perlu print tabel yang berisi beberapa sub-item (contoh detail Produk), biasanya perlu mengadopsi cara print loop. Dengan begitu, sistem akan menghasilkan satu baris konten berdasarkan setiap item dalam list, hingga semua item terlewati.
Misalkan kita memiliki daftar Produk (contoh contract_items), yang berisi beberapa objek Produk. Setiap objek Produk memiliki beberapa properti, seperti nama Produk, spesifikasi, jumlah, harga satuan, total, dan catatan.
Langkah 1: Isi Field di Baris Pertama Tabel
Pertama, di baris pertama tabel (bukan header), kita langsung salin dan isi variabel Template. Variabel ini akan diganti dengan data yang sesuai, ditampilkan di output.
Contoh, baris pertama tabel sebagai berikut:
Di sini, d.contract_items[i] mewakili item ke-i dalam daftar Produk, i adalah indeks, mewakili urutan Produk saat ini.
Langkah 2: Modifikasi Indeks di Baris Kedua
Selanjutnya, di tabel baris kedua, kita modifikasi indeks field menjadi i+1, dan isi properti pertama saja. Ini karena saat print loop, kita ingin mengambil item data berikutnya dari list, dan menampilkannya di baris berikutnya.
Contoh, baris kedua diisi sebagai berikut:
Dalam contoh ini, kita mengubah [i] menjadi [i+1], dengan begitu dapat mendapatkan data Produk berikutnya dalam list.
Langkah 3: Sistem Otomatis Loop Print Saat Render Template
Saat sistem memproses Template ini, akan beroperasi sesuai logika berikut:
- Baris pertama akan diisi sesuai field yang Anda atur di Template
- Lalu, sistem akan otomatis menghapus baris kedua, dan mulai mengekstrak data dari
d.contract_items, mengisi setiap baris berulang sesuai format tabel, hingga semua detail Produk diprint
i di setiap baris akan bertambah, memastikan setiap baris menampilkan informasi Produk yang berbeda.
4. Upload dan Konfigurasi Template Kontrak
4.1 Upload Template
- Klik tombol "Add Template", input nama Template, contoh "Template Kontrak Pasokan dan Pembelian"
- Upload file kontrak Word (.docx) yang sudah disiapkan, yang sudah berisi semua placeholder

- Setelah selesai, sistem akan menampilkan Template ini di daftar Template yang dapat dipilih, untuk penggunaan selanjutnya
- Kita klik "Use" untuk mengaktifkan Template ini

Saat ini keluar dari popup, klik download Template, dapat memperoleh Template lengkap yang dihasilkan.
Tips:
- Jika Template menggunakan format
.docatau lainnya, mungkin perlu dikonversi ke.docx, tergantung dukungan plugin - Pada file Word, perhatikan jangan memisahkan placeholder ke beberapa paragraf atau text box, untuk menghindari render abnormal
Selamat menggunakan! Melalui fitur "Template Print", Anda dapat menghemat banyak pekerjaan berulang dalam manajemen kontrak, menghindari kesalahan copy paste manual, mengimplementasikan output kontrak yang terstandarisasi dan otomatis.

