Perbandingan Template Purchase Order

Odoo QWeb Template vs Laravel Blade Template

Template Odoo purchase_order_templates.xml
Struktur Template
<template id="report_purchaseorder_document">
  <t t-call="web.external_layout"> ← Header/footer Odoo
    t-set="address" → Vendor contact
    t-if="o.dest_address_id" → Shipping
    <div class="page">
      t-set="layout_document_title"
      <table class="o_main_table">
        t-foreach="filtered_lines"
      </table>
      <div id="total"> → Tax totals
    </div>
  </t>
</template>
Fitur Utama
  • Multi-language support (partner_id.lang)
  • Dynamic title berdasarkan state (draft/purchase/cancel)
  • Section & Subsection lines
  • Note lines (italic)
  • Per-section subtotal
  • UOM conversion display
  • Tax labels dengan grouping
  • Portal integration (Connect your software)
  • Inheritable template (primary=True)
  • Tidak ada logo perusahaan custom
  • Tidak ada box tanda tangan
  • Tidak ada terbilang
Kolom Tabel Item
KolomField
Descriptionline.name
Qtyline.product_qty + UoM
Unit Priceline.price_unit
Disc.line.discount %
Taxesline.tax_ids (labels)
Amountline.price_subtotal
Template Laravel (Saat Ini) purchase-order.blade.php
Struktur Template
@extends / @section
  <style> ← Inline CSS (119 baris)
  <table class="header-table">
    Logo + Company Name
    Doc Title + PO Code
  <hr class="header-divider">
  <table class="info-table"> → Vendor & Client
  <table class="dates-table"> → Tanggal
  <table class="items-table">
    @foreach ($po->items as $item)
  <table class="totals-table">
  <div class="signature-section">
    4 Box: Dibuat/Mengetahui/Menyetujui/Penerima
  <div class="footer-text">
Fitur Utama
  • Logo perusahaan (configurable)
  • Warna primary/secondary (configurable)
  • Box tanda tangan (4 kolom)
  • Terbilang (terbilang function)
  • NPWP display
  • Alamat kirim & catatan
  • Custom font family & size
  • Kode barang toggle
  • Single language (Indonesian only)
  • Tidak ada section/subsection lines
  • Tidak ada note lines
  • Tidak ada per-section subtotal
  • Tidak ada UOM conversion
Kolom Tabel Item (Terbaru)
KolomField
#Nomor urut
Produkbarang.nama + barang.kode
Qtyitem.jumlah
Harga Satuanitem.harga_satuan
Diskonitem.diskon
Pajakitem.nilai_pajak
Totalitem.total_setelah_pajak
Keterangan telah dihapus sesuai permintaan sebelumnya
Analisis Perbedaan & Rekomendasi
Aspek Odoo Template Laravel Template Gap
Rendering Engine QWeb (XML-based, Python backend) Blade (PHP-based, DomPDF)
Layout System Inherits dari web.external_layout (header/footer otomatis) Self-contained, semua styling inline
Dynamic Title Berubah sesuai state: RFQ / PO / Cancelled Fixed "PURCHASE ORDER" dari settings
Line Types Produk, Section, Subsection, Note Hanya produk biasa
Subtotal per Section Otomatis dihitung per section Tidak ada
Multi-UOM Tampilkan konversi UOM jika berbeda Hanya tampilkan jumlah
Tax Display Grouped tax totals (dari account module) Simple: Total Pajak saja
Signature Box Tidak ada 4 box: Dibuat/Mengetahui/Menyetujui/Penerima Laravel unggul
Terbilang Tidak ada Ada (terbilang function) Laravel unggul
Customization UI Via Odoo Studio atau code Settings form (warna, font, logo, toggle) Laravel unggul
Portal Integration Ada "Connect your software" link Tidak ada
Kesimpulan: Template Odoo lebih fleksibel untuk multi-line types dan integrasi ERP, tetapi template Laravel sudah memiliki fitur yang lebih relevan untuk dokumen PO Indonesia (tanda tangan, terbilang, NPWP, customisasi via UI). Untuk meniru struktur Odoo, perlu ditambahkan: dynamic title berdasarkan state, section/subsection lines, per-section subtotal, dan multi-UOM display.