Laporan PDF

Dengan Studio, Anda dapat mengedit laporan PDF yang ada (misalnya, faktur, penawaran harga, dll.) atau membuat yang baru.

Layout default

Tata letak default laporan dikelola di luar Studio. Buka Settings, lalu, di bagian Companies pada halaman utama, klik Configure Document Layout. Pengaturan tata letak bersifat spesifik per perusahaan tetapi berlaku untuk semua laporan.

Tip

Anda dapat melihat bagaimana pengaturan yang berbeda memengaruhi tata letak laporan di pratinjau laporan di sisi kanan jendela Configure your document layout. Saat membuat atau mengedit laporan, Anda dapat melihat pratinjau laporan dengan mengklik Print preview di sisi kiri layar.

Gunakan pengaturan berikut:

  • Layout: Tujuh tata letak tersedia:

    Contoh tata letak laporan light
  • Background: Latar belakang berikut tersedia:

    • Blank: Tidak ada yang ditampilkan.

    • Demo logo: Logo demo ditampilkan di latar belakang.

    • Custom: Unggah gambar latar belakang kustom.

  • Text: Delapan font tersedia: Lato, Roboto, Open Sans, Montserrat, Oswald, Raleway, Tajawal (yang mendukung skrip Arab dan Latin), dan Fira Mono. Kunjungi situs web Google Fonts untuk melihat pratinjaunya.

  • Colors: Ubah warna primer dan sekunder yang digunakan untuk menyusun laporan. Warna default secara otomatis dihasilkan berdasarkan warna logo.

  • Alamat: Nama dan alamat perusahaan ditampilkan di header laporan eksternal. Anda dapat menambahkan beberapa baris teks.

  • Tagline: Ini ditampilkan di header laporan eksternal menggunakan tata letak Light, Striped, Bubble, Wave dan Folder dan di footer laporan eksternal menggunakan tata letak Boxed dan Bold. Anda dapat menambahkan beberapa baris teks.

  • Format kertas: Ini menentukan ukuran kertas default laporan. Anda dapat memilih A4 (21 cm x 29,7 cm) dan US Letter (21,59 cm x 27,54 cm). Ini juga dapat ditentukan untuk laporan individual di kolom Format kertas di Studio.

    Catatan

    Format kertas lain mungkin tersedia tergantung pada aplikasi atau modul yang Anda instal, misalnya, lembar label untuk aplikasi Inventaris atau lencana acara untuk aplikasi Acara.

Membuat laporan PDF baru

Untuk membuat laporan baru untuk model, (misalnya, pesanan penjualan) akses model, klik tombol (Toggle Studio), lalu klik Reports. Klik New dan, di jendela popup yang terbuka, pilih jenis laporan. Ini hanya digunakan untuk menentukan apa yang ditampilkan di header dan footer:

Setelah Anda membuat laporan, Anda dapat mulai mengeditnya.

Mengedit laporan PDF

Untuk mengakses laporan yang tersedia untuk model, akses model, klik tombol (Toggle Studio), lalu klik Reports. Pilih laporan yang ada untuk membukanya.

Sebagai alternatif, Anda juga dapat membuka Studio, klik Reports, dan cari laporan atau model tertentu.

Penting

Sangat disarankan untuk menduplikasi laporan standar dan membuat perubahan di versi yang diduplikasi. Untuk menduplikasi laporan, arahkan penunjuk mouse ke sudut kanan atas laporan, klik ikon (elipsis vertikal), lalu pilih Duplicate.

Menduplikasi laporan PDF

Opsi

Setelah Anda memilih atau membuat laporan, Anda dapat menggunakan opsi di bagian kiri layar untuk:

  • Mengubah Nama laporan: Nama baru diterapkan di mana saja (di Studio, di menu Print di bawah ikon (gear) di tampilan formulir, dan di nama file PDF).

  • Modifikasi Format kertas: Jika tidak ada nilai yang dipilih, format yang didefinisikan di tata letak default akan digunakan.

  • Tampilkan di menu cetak: untuk menambahkan laporan ke menu Cetak di tampilan formulir.

  • Muat ulang dari lampiran: untuk menyimpan laporan sebagai lampiran pada record saat pertama kali dibuat dan memuat ulang versi asli laporan pada waktu berikutnya. Ini diperlukan secara hukum untuk faktur dan terutama digunakan dalam kasus ini.

  • Batasi visibilitas untuk grup: untuk membatasi ketersediaan laporan PDF pada grup pengguna tertentu.

  • Edit sumber: untuk memodifikasi laporan secara langsung di file XML.

  • Reset laporan: untuk membuang semua perubahan yang dibuat pada laporan dan mengatur ulang ke versi standarnya.

  • Pratinjau cetak: untuk membuat dan mengunduh pratinjau laporan.

Editor laporan

Editor laporan memungkinkan Anda memodifikasi konten dan pemformatan laporan.

Tip

  • Anda dapat Membatalkan atau Mengulangi perubahan menggunakan tombol terkait atau pintasan CTRL + Z dan CTRL + Y.

  • Perubahan disimpan secara otomatis saat Anda meninggalkan laporan atau secara manual menggunakan tombol Simpan.

  • Anda dapat mengatur ulang laporan ke versi standarnya dengan mengklik tombol Reset laporan di bagian kiri layar.

Penting

Mengedit header dan footer laporan berdampak pada semua laporan standar dan kustom.

Blok kondisional

Persegi panjang putus-putus mewakili blok kondisional (pernyataan if/else). Ini digunakan untuk menampilkan/menyembunyikan konten berdasarkan kondisi tertentu. Klik blok untuk melihat kondisinya.

Lihat kondisi yang diterapkan pada blok.

Pilih nilai untuk melihat pratinjau output yang sesuai dan edit jika perlu.

Pratinjau output dari kondisi lain.

Catatan

Kondisi hanya dapat diedit di XML.

Konten lain

Ada dua jenis konten teks dalam laporan:

  • Teks statis, yaitu teks yang tidak disorot dengan warna biru, yang dapat diubah langsung di editor.

  • Teks dinamis, yaitu teks yang disorot dengan warna biru, yang digantikan oleh nilai field saat laporan dibuat, misalnya nomor sales order atau tanggal quotation.

Anda dapat menambahkan konten (misalnya field, daftar, tabel, gambar, banner, dll.) ke laporan menggunakan perintah. Ketik / untuk membuka powerbox, lalu ketik nama perintah atau pilih dari daftar.

Untuk menambahkan teks statis ke laporan, ketik teks di tempat yang Anda inginkan.

Untuk perubahan yang lebih lanjut, Anda dapat mengedit laporan dalam XML secara langsung.

Tambahkan field

Untuk menambahkan field, ketik / dan pilih perintah Field. Dalam daftar yang terbuka, pilih atau cari field; klik panah kanan di samping nama field untuk mengakses daftar field terkait jika diperlukan. Kemudian, tentukan nilai default yang akan ditampilkan jika field tidak dilengkapi dalam record dan tekan Enter.

Pilih field yang terkait.
Tambahkan atau edit tabel

Ada dua jenis tabel dalam laporan:

  • Tabel statis, yang digunakan untuk menampilkan teks statis atau field. Untuk jenis tabel ini, Anda menentukan jumlah kolom dan baris saat menambahkan tabel.

  • Tabel dinamis, yang digunakan untuk menampilkan data dari relational field. Untuk jenis tabel ini, Anda hanya menentukan jumlah kolom saat menambahkan tabel. Jumlah baris dalam laporan yang dihasilkan akan ditentukan oleh jumlah record dalam model terkait yang ditautkan dengan model saat ini.

    Example

    Dalam laporan sales order, tabel dinamis digunakan untuk menampilkan baris pesanan yang terkait dengan sales order. Jika sales order berisi 10 baris pesanan, tabel dalam laporan yang dihasilkan memiliki 10 baris; jika berisi dua baris pesanan, tabel memiliki dua baris.

Tambahkan atau edit tabel statis

Untuk menambahkan tabel statis, ketik / dan pilih perintah Table. Tentukan jumlah kolom dan baris untuk tabel. Setelah tabel ditambahkan, Anda dapat mulai mengeditnya.

Anda dapat menyisipkan, memindahkan, dan menghapus kolom dan baris menggunakan alat tabel. Posisikan kursor di atas kolom atau di sebelah kiri baris, lalu klik persegi panjang ungu dan pilih opsi.

Daftar opsi yang tersedia untuk mengedit struktur tabel.

Untuk mengubah ukuran kolom, seret batas kolom ke posisi yang diinginkan; atur ulang semua kolom ke ukuran standar dengan memilih Reset Size dari alat tabel.

Tambahkan field pilihan Anda dalam sel atau tambahkan teks statis dengan mengetik.

Tip

Untuk menambahkan teks secara terstruktur tanpa menggunakan tabel, Anda dapat menggunakan kolom. Tambahkan kolom dengan mengetik / dan memilih perintah yang sesuai: 2 columns, 3 columns, atau 4 columns.

Menambahkan atau mengedit tabel dinamis

Catatan

  • Hanya relasi dengan tipe one2many atau many2many yang dapat ditampilkan sebagai tabel dinamis.

  • Tabel dinamis yang sudah ada dalam laporan standar memiliki struktur yang lebih kompleks daripada tabel dinamis yang Anda tambahkan sendiri. Untuk tabel seperti itu, dimungkinkan untuk menyisipkan atau menghapus kolom; tidak dimungkinkan untuk memindahkan kolom atau menyisipkan, memindahkan, atau menghapus baris.

Untuk menambahkan tabel dinamis, ketik / dan pilih perintah Dynamic Table. Dalam daftar yang terbuka, pilih atau cari relasi yang akan menjadi dasar tabel dan tekan Enter. Setelah tabel ditambahkan, Anda dapat mulai mengeditnya.

Anda dapat menyisipkan, memindahkan, dan menghapus kolom menggunakan alat tabel, seperti untuk tabel statis. Juga dimungkinkan untuk menyisipkan baris statis yang akan muncul di atas atau di bawah baris yang dihasilkan.

Untuk menambahkan field ke sel, hapus teks placeholder lalu tambahkan field pilihan Anda. Kotak dialog yang terbuka menampilkan objek sumber untuk field tersebut (misalnya, model Order Lines) dan daftar field yang tersedia.

Daftar field yang tersedia untuk model baris sales order.

Ganti label Column name dengan label pilihan Anda.

Catatan

Baris default secara otomatis melakukan iterasi atas konten field, menghasilkan satu baris pada laporan untuk setiap nilai field (misalnya, satu baris per baris pesanan).

Formatting

Untuk memformat teks dalam laporan, pilih teks tersebut, lalu format menggunakan opsi di editor teks.

Memformat teks menggunakan editor teks.

Mengedit XML laporan

Peringatan

Memodifikasi XML secara langsung dapat mengakibatkan masalah laporan selama upgrade. Jika ini terjadi, cukup salin perubahan Anda dari database lama ke database yang telah diupgrade.

Untuk mengedit XML laporan, klik Edit sources di panel kiri.

Contoh

Untuk mengubah cara data ditampilkan dalam laporan Anda, Anda dapat memodifikasi widget default field secara manual. Dalam contoh di bawah ini, tanggal pesanan menampilkan tanggal dan waktu secara default, sedangkan harga satuan default ke presisi dua angka desimal.

<div class="oe_structure">
 <span t-field="doc.date_order"/>
 <span t-field="doc.price_unit"/>
</div>

Dengan menggunakan t-options, dalam hal ini opsi widget, field-field ini dapat dimodifikasi untuk menampilkan hanya tanggal dan presisi empat angka desimal:

<div class="oe_structure">
 <span t-field="doc.date_order" t-options="{'widget': 'date'}"/>
 <span t-field="doc.price_unit" t-options="{'widget': 'float', 'precision': 4}"/>
</div>

Jika Anda ingin menampilkan/menyembunyikan konten berdasarkan kondisi tertentu, Anda dapat menambahkan pernyataan kontrol if/else secara manual dalam XML laporan.

Misalnya, jika Anda ingin menyembunyikan tabel data kustom jika tidak ada tag, Anda dapat menggunakan atribut t-if untuk mendefinisikan kondisi, yang kemudian dievaluasi sebagai True atau False. Tabel tidak akan ditampilkan jika tidak ada tag dalam penawaran.

<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
    <!-- thead = table header, the row with column titles -->
    <thead>
        <!-- table row element -->
        <tr>
            <!-- table header element -->
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <!-- table body, the main content -->
    <tbody>
        <!-- we create a row for each subrecord with t-foreach -->
        <tr t-foreach="doc.tag_ids" t-as="tag">
            <!-- for each line, we output the name and price as table cells -->
            <td t-out="tag.id"/>
            <td t-out="tag.name"/>
        </tr>
    </tbody>
</table>

Jika Anda ingin menampilkan blok lain dalam hal pernyataan t-if dievaluasi sebagai False, Anda dapat menentukannya menggunakan pernyataan t-else. Blok t-else harus langsung mengikuti blok t-if dalam struktur dokumen. Tidak perlu menentukan kondisi apa pun dalam atribut t-else. Sebagai contoh, mari tampilkan pesan singkat yang menjelaskan bahwa tidak ada tag pada penawaran:

<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
    <!-- thead = table header, the row with column titles -->
    <thead>
        <!-- table row element -->
        <tr>
            <!-- table header element -->
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <!-- table body, the main content -->
    <tbody>
        <!-- we create a row for each subrecord with t-foreach -->
        <tr t-foreach="doc.tag_ids" t-as="tag">
            <!-- for each line, we output the name and price as table cells -->
            <td t-out="tag.id"/>
            <td t-out="tag.name"/>
        </tr>
    </tbody>
</table>
<div class="text-muted" t-else="">No tag present on this document.</div>

Dengan menggunakan notasi t-if/t-else, editor laporan mengenali bahwa bagian-bagian ini saling eksklusif dan harus ditampilkan sebagai blok kondisional:

Pratinjau output jika ada tag.

Anda dapat mengalihkan kondisi menggunakan editor untuk mempratinjau outputnya:

Pratinjau output jika tidak ada tag.

Jika Anda ingin memiliki beberapa opsi, Anda juga dapat menggunakan direktif t-elif untuk menambahkan kondisi perantara. Misalnya, begini cara judul laporan sales order berubah berdasarkan kondisi dokumen yang mendasarinya.

<h2 class="mt-4">
    <span t-if="env.context.get('proforma', False) or is_pro_forma">Pro-Forma Invoice # </span>
    <span t-elif="doc.state in ['draft','sent']">Quotation # </span>
    <span t-else="">Order # </span>
    <span t-field="doc.name">SO0000</span>
</h2>

Judul Pro-Forma Invoice digunakan bergantung pada beberapa kondisi kontekstual. Jika kondisi ini tidak terpenuhi dan status dokumen adalah draft atau sent, maka Quotation digunakan. Jika tidak ada kondisi tersebut yang terpenuhi, judul laporan adalah Order.

Bekerja dengan gambar dalam laporan bisa menantang, karena kontrol presisi atas ukuran dan perilaku gambar tidak selalu jelas. Anda dapat menyisipkan field gambar menggunakan editor laporan (dengan menggunakan perintah Field), tetapi menyisipkannya dalam XML menggunakan direktif t-field dan atribut t-options yang menyertainya memberikan kontrol ukuran dan posisi yang lebih baik.

Misalnya, kode berikut menghasilkan field image_128 dari produk baris sebagai gambar lebar 64px (dengan tinggi otomatis berdasarkan rasio aspek gambar).

<span t-field="line.product_id.image_128" t-options-widget="image" t-options-width="64px"/>

Opsi berikut tersedia untuk widget gambar:

  • width: lebar gambar, biasanya dalam piksel atau unit panjang CSS (misalnya, rem) (biarkan kosong untuk lebar otomatis).

  • height: tinggi gambar, biasanya dalam piksel atau unit panjang CSS (misalnya, rem) (biarkan kosong untuk tinggi otomatis).

  • class: kelas CSS yang diterapkan pada tag img; kelas Bootstrap tersedia.

  • alt: teks alternatif gambar

  • style: atribut style; memungkinkan Anda mengganti style lebih bebas daripada dengan kelas Bootstrap.

Atribut ini harus berisi string, yaitu teks yang diapit tanda kutip di dalam tanda kutip, misalnya, t-options-width="'64px'" (atau, alternatifnya, ekspresi Python yang valid).

Catatan

Widget gambar tidak dapat digunakan pada tag img. Sebaliknya, atur direktif t-field pada node span (untuk konten inline) atau div (untuk konten blok).

Misalnya, mari tambahkan kolom dengan gambar produk di tabel quotation:

<table class="table table-sm o_main_table table-borderless mt-4">
    <thead style="display: table-row-group">
        <tr>
            <th>Image</th>
            <th name="th_description" class="text-start">Description</th>
            <th>Product Category</th>
            <th name="th_quantity" class="text-end">Quantity</th>
            <th name="th_priceunit" class="text-end">Unit Price</th>
[...]
        <t t-foreach="lines_to_report" t-as="line">
            <t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal"/>
            <tr t-att-class="'bg-200 fw-bold o_line_section' if line.display_type == 'line_section' else 'fst-italic o_line_note' if line.display_type == 'line_note' else ''">
                <t t-if="not line.display_type">
                   <td>
                       <span t-field="line.product_template_id.image_128"
                             t-options-widget="'image'"
                             t-options-width="'64px'"
                             t-options-class="'rounded-3 shadow img-thumbnail'"
                           />
                   </td>
                    <td name="td_name"><span t-field="line.name">Bacon Burger</span></td>
                    <td t-out="line.product_id.categ_id.display_name"/>

Atribut t-options-width membatasi lebar gambar menjadi 64 piksel, dan kelas Bootstrap yang digunakan dalam t-options-class membuat border seperti thumbnail dengan sudut membulat dan bayangan.

Tambahkan kolom dengan gambar produk di tabel quotation.