Skip to content

Instantly share code, notes, and snippets.

@mohamad-supangat
Last active March 27, 2024 02:35
Show Gist options
  • Save mohamad-supangat/0be9a1a49b4c110c1e4b330d5a0b33f8 to your computer and use it in GitHub Desktop.
Save mohamad-supangat/0be9a1a49b4c110c1e4b330d5a0b33f8 to your computer and use it in GitHub Desktop.
odoo report xml
<div class="page" style="margin: 0px !important; padding: 0px !important; font-size:13px!important; color: black!important">
<div class="oe_structure" />
<div class="row justify-content-end">
<div>
<div class="d-inline" t-if="env.context.get('proforma', False) or is_pro_forma">
<h4 class="border border-dark rounded p-2">Proforma Invoice</h4>
</div>
<!--INVOICE DP-->
<div class="d-inline" t-elif="env.context.get('proforma', False) or is_pro_forma_invoice_dp">
<h4 class="border border-dark rounded p-2">Invoice</h4>
</div>
<!--INVOICE DP DIGINEXT-->
<div class="d-inline" t-elif="env.context.get('diginext', False) or is_pro_forma_invoice_dp_diginext">
<h4 class="border border-dark rounded p-2">Invoice</h4>
</div>
<div class="d-inline" t-elif="env.context.get('invoice', False) or is_invoice">
<h4 class="border border-dark rounded p-2">Invoice</h4>
</div>
<div class="d-inline" t-else="">
<h4 t-if="doc.state not in ['draft','sent']" class="border border-dark rounded p-2">Sales
Order </h4>
<h4 t-if="doc.state in ['draft','sent']" class="border border-dark rounded p-2"> Sales
Quotation </h4>
</div>
</div>
</div>
<div class="row mt-3">
<div class="col-5">
<div class="border border-dark rounded p-2">
<div t-if="doc.partner_shipping_id == doc.partner_invoice_id">
<div style="margin-bottom: 10px">Invoice address:</div>
<div t-if="doc.partner_invoice_id.is_company == 0">
<div t-if="doc.partner_invoice_id.parent_id">
<strong t-field="doc.partner_invoice_id.parent_id" />
</div>
<strong t-field="doc.partner_invoice_id.title" />
<strong t-field="doc.partner_invoice_id.name" />
,
</div>
<div t-if="doc.partner_invoice_id.is_company == 1">
<strong t-field="doc.partner_invoice_id.name" />
</div>
<div t-field="doc.partner_invoice_id" t-options='{"widget": "contact", "fields": ["address", "phone", "fax"], "no_marker": true}' />
<p t-if="doc.partner_id.vat">
VAT:
<span t-field="doc.partner_id.vat" />
</p>
</div>
<t t-if="doc.partner_shipping_id != doc.partner_invoice_id">
<div>
<div style="margin-bottom: 10px">Invoice address:</div>
<div t-if="doc.partner_invoice_id.is_company == 0">
<div t-if="doc.partner_invoice_id.parent_id">
<strong t-field="doc.partner_invoice_id.parent_id" />
</div>
<strong t-field="doc.partner_invoice_id.title" />
<strong t-field="doc.partner_invoice_id.name" />
,
</div>
<div t-if="doc.partner_invoice_id.is_company == 1">
<strong t-field="doc.partner_invoice_id.name" />
</div>
<div t-field="doc.partner_invoice_id" t-options='{"widget": "contact", "fields": ["address", "phone", "fax"], "no_marker": true}' />
<p t-if="doc.partner_id.vat">
VAT:
<span t-field="doc.partner_id.vat" />
</p>
</div>
<!-- SHIPPING ADDRESS HANYA ADA DI DELIVERY ORDER
<div>
<div style="margin-bottom: 10px">Shipping address:</div>
<div t-if="doc.partner_shipping_id.is_company == 0">
<div t-if="doc.partner_shipping_id.parent_id">
<strong t-field="doc.partner_shipping_id.parent_id" />
</div>
<strong t-field="doc.partner_shipping_id.title" />
<strong t-field="doc.partner_shipping_id.name" />
,
</div>
<div t-if="doc.partner_shipping_id.is_company == 1">
<strong t-field="doc.partner_shipping_id.name" />
</div>
<div t-field="doc.partner_shipping_id" t-options='{"widget": "contact", "fields": ["address",
"phone", "fax"], "no_marker": true}' />
<p t-if="doc.partner_id.vat">
VAT:
<span t-field="doc.partner_id.vat" />
</p>
</div>
-->
</t>
</div>
</div>
<div class="col-7">
<div class="row">
<div class="col-6">
<div t-if="doc.state not in ['draft','sent']">
<span>SO Date</span>
<br />
<strong t-field="doc.date_order" t-options='{"format": "dd MMM yyyy"}' />
<br />
<p />
</div>
<div t-if="doc.state in ['draft','sent'] and doc.date_order">
<span>Quote Date</span>
<br />
<strong t-field="doc.date_order" t-options='{"format": "dd MMM yyyy"}' />
<br />
<p />
</div>
<div t-if="doc.state in ['draft','sent']">
<t t-if="doc.validity_date">
<span>Valid Until</span>
<br />
<strong t-field="doc.validity_date" t-options='{"format": "dd MMM yyyy"}' />
<br />
<p />
</t>
</div>
<div t-if="doc.state not in ['draft','sent']">
<span>Salesperson</span>
<br />
<strong t-field="doc.user_id.name" />
<br />
<p />
</div>
</div>
<div class="col-6">
<div t-if="doc.state not in ['draft','sent']">
<span>Invoice No.</span>
<br />
<strong t-field="doc.name" />
<br />
<p />
</div>
<!-- PENAMBAHAN KOLOM SHIP VIA -->
<div t-if="doc.state not in ['draft','sent']">
<span>Ship Via.</span>
<br />
<strong t-field="doc.carrier_id" />
<br />
<p />
</div>
<div t-if="doc.state in ['draft','sent']">
<span>Quote No.</span>
<br />
<strong t-field="doc.name" />
<br />
<p />
</div>
<!-- QUOTE NO DINONAKTIFKAN KARENA MEMBAWA DATA DARI INQUIRY
<div t-if="doc.state not in ['draft','sent']">
<span>Quote No.</span>
<br />
<strong t-field="doc.origin" />
<br />
<p />
</div>
-->
<div t-if="doc.state not in ['draft','sent'] and doc.client_order_ref">
<span>Customer Ref</span>
<br />
<strong t-field="doc.client_order_ref" />
<br />
<p />
</div>
</div>
</div>
<div class="row" t-if="doc.state in ['draft','sent']">
<div class="col-6">
<div>
<span>Salesperson</span>
<br />
<strong t-field="doc.user_id.name" />
<br />
</div>
<div>
<span>Email</span>
<br />
<strong t-field="doc.user_id.email" />
<br />
</div>
</div>
<div class="col-6" style="padding-right: 0px">
<div>
<span>Phone</span>
<br />
<strong t-field="doc.user_id.phone" />
<br />
</div>
<div>
<span>Website</span>
<br />
<strong t-field="doc.user_id.website" />
<br />
</div>
</div>
</div>
</div>
</div>
<table class="table table-sm o_main_table mt-3">
<thead style="display: table-row-group; color: #000!important">
<tr>
<th>Item</th>
<th>Description</th>
<th class="text-center">Qty</th>
<!-- <th t-if="(env.context.get('diginext', False) or is_diginext)">WTY</th> -->
<th class="text-right">Unit Price</th>
<th name="th_discount" class="text-right" groups="product.group_discount_per_so_line">
<span>Disc.%</span>
</th>
<th class="text-right">Taxes</th>
<th class="text-right" colspan="2">Amount</th>
</tr>
</thead>
<tbody class="sale_tbody">
<tr t-foreach="doc.order_line" t-as="l">
<t t-if="l.is_delivery != True and l.is_handling_cost != True">
<td>
<span t-field="l.product_id.name" />
</td>
<td>
<span t-field="l.name" />
</td>
<td class="text-center">
<span t-esc="int(l.product_uom_qty)" />
</td>
<td class="text-right">
<span t-esc="'{:,.2f}'.format(l.price_unit)" />
</td>
<td class="text-right" groups="product.group_discount_per_so_line">
<span t-esc="round(l.discount, 2)" />
</td>
<td name="td_taxes" class="text-right">
<span t-esc="', '.join(map(lambda x: (x.name), l.tax_id))" />
</td>
<td class="text-right">
<span t-esc="'{:,.2f}'.format(l.price_subtotal)" />
</td>
</t>
</tr>
</tbody>
</table>
<div class="row">
<div class="col-8">
<div class="row">
<div class="col-12" style="
border: 1px solid black;
padding: 5px 8px;
margin: 5px 0px;
border-radius: 5px;
font-size: 13px;
min-height: 75px;
">
<strong>Description</strong>
<p>
<strong t-field="doc.note" />
</p>
</div>
</div>
</div>
<div class="col-4 pull-right">
<table class="table table-sm">
<tr class="border-black">
<td>
<span>Total Without Taxes</span>
</td>
<td class="text-right">
<span t-field="doc.currency_id.symbol" />
</td>
<td class="text-right">
<span t-esc="'{:,.2f}'.format(doc.amount_untaxed)" />
</td>
</tr>
<tr>
<td>Taxes</td>
<td class="text-right">
<span t-field="doc.currency_id.symbol" />
</td>
<td class="text-right">
<span t-esc="'{:,.2f}'.format(doc.amount_tax)" />
</td>
</tr>
<tr class="border-black">
<td>
<strong>Total</strong>
</td>
<td class="text-right">
<strong t-field="doc.currency_id.symbol" />
</td>
<td class="text-right">
<strong t-esc="'{:,.2f}'.format(doc.amount_total)" />
</td>
</tr>
<tr class="border-black" t-if="(env.context.get('proforma', False) or is_pro_forma and (doc.proforma_invoice_value != doc.amount_total))">
<td>
<strong t-esc="doc.proforma_invoice_label"></strong>
</td>
<td class="text-right">
<strong t-field="doc.currency_id.symbol" />
</td>
<td class="text-right">
<strong t-esc="'{:,.2f}'.format(doc.proforma_invoice_value)" />
</td>
</tr>
<!-- INVOICE DP -->
<tr class="border-black" t-if="(env.context.get('proforma', False) or is_pro_forma_invoice_dp and (doc.proforma_invoice_value != doc.amount_total))">
<td>
<strong t-esc="doc.proforma_invoice_label"></strong>
</td>
<td class="text-right">
<strong t-field="doc.currency_id.symbol" />
</td>
<td class="text-right">
<strong t-esc="'{:,.2f}'.format(doc.proforma_invoice_value)" />
</td>
</tr>
<tr class="border-black" t-if="env.context.get('invoice_full', False) or is_invoice_full ">
<td>
<strong>Pelunasan</strong>
</td>
<td class="text-right">
<strong t-field="doc.currency_id.symbol" />
</td>
<td class="text-right">
<strong t-esc="'{:,.2f}'.format(doc.amount_total - doc.total_downpayment)" />
</td>
</tr>
</table>
</div>
</div>
<!-- REMARKS -->
<div class="row" t-if="not (env.context.get('jasaukur', False) or is_jasaukur)">
<div class="col-12" style="
border: 1px solid black;
padding: 5px 8px;
margin: 5px 0px;
border-radius: 5px;
font-size: 13px;
">
<strong>Remarks</strong>
<table>
<tr t-if="env.context.get('diginext', False) and not (env.context.get('jasaukur', False) or is_jasaukur)">
<td style="white-space: nowrap" valign="top">Payment Term </td>
<td valign="top">
:
</td>
<td valign="top">
<span t-field="doc.payment_term_id" />
</td>
</tr>
<tr t-if="not (env.context.get('jasaukur', False) or is_jasaukur or is_diginext)">
<td style="white-space: nowrap" valign="top">Payment Term </td>
<td valign="top">
:
</td>
<td valign="top">
<span t-field="doc.payment_term_id" />
</td>
</tr>
<tr t-if="(env.context.get('diginext', False) or is_diginext)">
<td style="white-space: nowrap" valign="top">Payment Term </td>
<td valign="top">
:
</td>
<td valign="top">
Down Payment 50%, Full Payment dilakukan pada tahapan User Acceptance Test (UAT)
</td>
</tr>
<tr t-if="env.context.get('diginext', False) and not (env.context.get('jasaukur', False) or is_jasaukur)">
<td valign="top">Estimated Delivery </td>
<td valign="top">
:
</td>
<td valign="top">
Untuk produk ready, dikirimkan maksimal 2 hari setelah pelunasan
<br></br>
Untuk produk indent, dikirimkan sesuai masa indent yang tercantum terhitung dari
pembayaran DP
</td>
</tr>
<tr t-if="not (env.context.get('jasaukur', False) or is_jasaukur or is_diginext)">
<td valign="top">Estimated Delivery </td>
<td valign="top">
:
</td>
<td valign="top">
Untuk produk ready, dikirimkan maksimal 2 hari setelah pelunasan
<br></br>
Untuk produk indent, dikirimkan sesuai masa indent yang tercantum terhitung dari
pembayaran DP
</td>
</tr>
<tr t-if="env.context.get('diginext', False) and not (env.context.get('jasaukur', False) or is_jasaukur)">
<td valign="top">WTY (Warranty) </td>
<td valign="top">
:
</td>
<td valign="top">
<div>
Garansi service berlaku 1x dalam jangka waktu yang tercantum pada kolom WTY
</div>
<div t-field="doc.warranties_replace_text" />
<div>(garansi replace berlaku hanya jika ada kesalahan atau kerusakan dari
pabrik/cacat produksi pabrik)</div>
</td>
</tr>
<tr t-if="not (env.context.get('jasaukur', False) or is_jasaukur or is_diginext)">
<td valign="top">WTY (Warranty) </td>
<td valign="top">
:
</td>
<td valign="top">
<div>
Garansi service berlaku 1x dalam jangka waktu yang tercantum pada kolom WTY
</div>
<div t-field="doc.warranties_replace_text" />
<div>(garansi replace berlaku hanya jika ada kesalahan atau kerusakan dari
pabrik/cacat produksi pabrik)</div>
</td>
</tr>
<tr t-if="(env.context.get('diginext', False) or is_diginext)">
<td valign="top">WTY (Warranty) </td>
<td valign="top">
:
</td>
<td valign="top">
Garansi meliputi Helpdesk Support, Error dan Bug Fixing selama 3 (tiga) bulan berlaku setelah Serah Terima Asset.
<br></br>
Untuk layanan Helpdesk Support tersedia setiap hari Senin - Jumat Pukul 09.00 s.d 16.00 WIB
<br></br>
*) Garansi hanya berlaku untuk Jasa Pembuatan Aplikasi Berbasis Website dan Jasa Pembuatan Website
</td>
</tr>
</table>
</div>
</div>
<div class="row">
<div class="col-6" style="
border: 1px solid black;
padding: 5px 8px;
margin: 5px 0px;
border-radius: 5px;
font-size: 13px;
">
<strong>Bank Information</strong>
<br />
CV. Java Multi Mandiri KCU Purwokerto a/C :
<br />
<ul style="padding-left: 20px">
<li>BCA 046-167-4070</li>
<li>MANDIRI 180-00-3657222-2</li>
<li>BNI 0-5758-01234</li>
</ul>
</div>
</div>
<div t-if="doc.state in ['draft','sent'] and not (env.context.get('jasaukur', False) or is_jasaukur or is_diginext)" class="row">
<div class="col-12" style="
border: 1px solid black;
padding: 5px 8px;
margin: 5px 0px;
border-radius: 5px;
font-size: 13px;
">
<strong>General Conditions</strong>
<ul style="padding-left: 20px">
<li>
Please state this quotation and the goods code in customer's purchase
order
</li>
<li>
Submission of Purchase Orders shall be deemed as a complete acceptance
of this terms and conditions
</li>
<li>Purchase Order is valid after signed and stamped by our manager</li>
<li>
Down Payment received is non refundable in case of order cancellation
</li>
<li>
Any changes to the purchase order should be upon prior approval by us
</li>
<li>
The goods remain in our warehouse within one month after our readiness
notification date will not be our responsibility, unless agreed
separately
</li>
<li>
Any bank costs occured in relation with the payment should be bored by
customer
</li>
<li>
In case any differences between the issued purchase order and this
quotation, customer agrees that the terms and condition shall be valid
</li>
</ul>
</div>
</div>
<div t-if="doc.state not in ['draft','sent']">
<div class="row my-5">
<div class="col-6 text-center">
From and on behalf of CV. Java Multi Mandiri
</div>
<div class="col-6 text-center">
<span t-esc="user.name" />
</div>
</div>
<div class="col-12 text-center mt64" style="font-size: 12px">
*This document is generated by system. No Signature required
</div>
</div>
</div>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment