[DRAFT][IMP] *: adapt report layouts to new report editor
Enhanced reports for better compatibility with Odoo 16.4's new Report Editor: - Added `<div class="oe_structure"></div>` for user customization. - Converted t-field/t-esc/t-out from div to span. - Introduced demo data and adjusted t-if/t-else branching. - Bundled t-if/elif/else directives for the 'condition selector' UI. - Refactored `<t>` nodes in tables where feasible. task-3447407 closes odoo/odoo#135739 Related: odoo/enterprise#47501 Signed-off-by: Bouvy Damien (dbo) <dbo@odoo.com>
This commit is contained in:
@@ -5,38 +5,42 @@
|
||||
<t t-set="o" t-value="o.with_context(lang=lang)"/>
|
||||
<t t-set="values" t-value="o._get_payment_receipt_report_values()"/>
|
||||
<div class="page">
|
||||
<h3><strong id="payment_title">Payment Receipt: <span t-field="o.name"/></strong></h3>
|
||||
<h3><strong id="payment_title">Payment Receipt: <span t-field="o.name"/>INV0001</strong></h3>
|
||||
|
||||
<div class="mb-4 mt-3">
|
||||
<div name="date" class="row">
|
||||
<div class="col-6" t-if="o.date">
|
||||
Payment Date: <span t-field="o.date"/>
|
||||
Payment Date: <span t-field="o.date">2023-01-01</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div class="row">
|
||||
<div class="col-6" t-if="o.partner_type">
|
||||
<t t-if="o.partner_type == 'customer'">
|
||||
Customer:
|
||||
</t>
|
||||
<t t-if="o.partner_type == 'supplier'">
|
||||
<t t-else="o.partner_type == 'supplier'">
|
||||
Vendor:
|
||||
</t><span t-field="o.partner_id"/>
|
||||
</t><span t-field="o.partner_id">Marc Demo</span>
|
||||
</div>
|
||||
<div name="payment_method"
|
||||
t-if="values['display_payment_method'] and o.payment_method_id"
|
||||
class="col-6">
|
||||
Payment Method: <span t-field="o.payment_method_id.name"/>
|
||||
Payment Method: <span t-field="o.payment_method_id.name">Credit card</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div class="row">
|
||||
<div class="col-6" t-if="o.amount">
|
||||
Payment Amount: <span t-field="o.amount" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/>
|
||||
Payment Amount: <span t-field="o.amount" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}">50 USD</span>
|
||||
</div>
|
||||
<div class="col-6" t-if="o.ref">
|
||||
Memo: <span t-field="o.ref"/>
|
||||
Memo: <span t-field="o.ref">Sample Memo</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<table name="invoices"
|
||||
t-if="values['display_invoices']"
|
||||
class="table table-sm">
|
||||
@@ -61,39 +65,40 @@
|
||||
<!-- MOVE -->
|
||||
<t t-if="inv.move_type != 'entry'">
|
||||
<tr>
|
||||
<td><span t-field="inv.invoice_date"/></td>
|
||||
<td><span t-field="inv.name"/></td>
|
||||
<td><span t-field="inv.ref"/></td>
|
||||
<td><span t-field="inv.invoice_date">2023-01-01</span></td>
|
||||
<td><span t-field="inv.name">INV001</span></td>
|
||||
<td><span t-field="inv.ref">Sample Ref</span></td>
|
||||
<td t-if="otherCurrency"/>
|
||||
<td class="text-end"><span t-field="inv.amount_total"/></td>
|
||||
<td class="text-end"><span t-field="inv.amount_total">100.00 USD</span></td>
|
||||
</tr>
|
||||
<!-- PAYMENTS/REVERSALS -->
|
||||
<tr t-foreach="inv._get_reconciled_invoices_partials()[0]" t-as="par">
|
||||
<t t-set="payment" t-value="par[2].move_id"/>
|
||||
<td><span t-field="payment.date"/></td>
|
||||
<td><span t-field="payment.name"/></td>
|
||||
<td><span t-field="payment.ref"/></td>
|
||||
<td><span t-field="payment.date">2023-01-05</span></td>
|
||||
<td><span t-field="payment.name">PAY001</span></td>
|
||||
<td><span t-field="payment.ref">Payment Ref</span></td>
|
||||
<t t-set="amountPayment" t-value="-payment.amount_total"/>
|
||||
<t t-set="amountInvoice" t-value="-par[1]"/>
|
||||
<t t-set="currencyPayment" t-value="payment.currency_id"/>
|
||||
<t t-set="currencyInvoice" t-value="inv.currency_id"/>
|
||||
<!-- Fill the column "Amount In Currency" only if necessary -->
|
||||
<td t-if="otherCurrency" class="text-end"><span t-if="currencyPayment != currencyInvoice" t-out="amountPayment" t-options="{'widget': 'monetary', 'display_currency': currencyPayment}"/></td>
|
||||
<td class="text-end"><span t-out="amountInvoice" t-options="{'widget': 'monetary', 'display_currency': currencyInvoice}"/></td>
|
||||
<td t-if="otherCurrency" class="text-end"><span t-if="currencyPayment != currencyInvoice" t-out="amountPayment" t-options="{'widget': 'monetary', 'display_currency': currencyPayment}">50.00 EUR</span></td>
|
||||
<td class="text-end"><span t-out="amountInvoice" t-options="{'widget': 'monetary', 'display_currency': currencyInvoice}">25.00 USD</span></td>
|
||||
</tr>
|
||||
<!-- BALANCE -->
|
||||
<tr>
|
||||
<td/>
|
||||
<td><strong>Due Amount for <span t-field="inv.name"/></strong></td>
|
||||
<td><strong>Due Amount for <span t-field="inv.name">INV001</span></strong></td>
|
||||
<td/>
|
||||
<td t-if="otherCurrency"/>
|
||||
<td class="text-end"><strong><span t-field="inv.amount_residual"/></strong></td>
|
||||
<td class="text-end"><strong><span t-field="inv.amount_residual">25.0 USD</span></strong></td>
|
||||
</tr>
|
||||
</t>
|
||||
</t>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-call="account.report_statement_internal_layout">
|
||||
<div class="page">
|
||||
<div class="oe_structure"></div>
|
||||
<div class="border border-top-0 border-end-0 border-start-0 border-info">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
@@ -32,34 +33,36 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<div class="pt-2 pb-2">
|
||||
<div class="row">
|
||||
<div class="col-7">
|
||||
<h5>
|
||||
<strong>
|
||||
<t t-out="o.journal_id.display_name"/>
|
||||
<t t-if="o.journal_id.bank_account_id">
|
||||
- <t t-out="o.journal_id.bank_account_id.display_name"/>
|
||||
</t>
|
||||
<t t-if="o.journal_id.code">
|
||||
- <t t-out="o.journal_id.code"/>
|
||||
</t>
|
||||
<span t-out="o.journal_id.display_name">Journal Name</span>
|
||||
<span t-if="o.journal_id.bank_account_id">
|
||||
- <span t-out="o.journal_id.bank_account_id.display_name">Bank Account Name</span>
|
||||
</span>
|
||||
<span t-if="o.journal_id.code">
|
||||
- <span t-out="o.journal_id.code">12345</span>
|
||||
</span>
|
||||
</strong>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-5" style="text-align: end;">
|
||||
<h5>
|
||||
<strong>
|
||||
<t t-if="o.name">
|
||||
<span t-field="o.name"/>
|
||||
- </t>
|
||||
<span t-field="o.date"/>
|
||||
<span t-if="o.name">
|
||||
<span t-field="o.name">Statement Name</span>
|
||||
- </span>
|
||||
<span t-field="o.date">2023-08-15</span>
|
||||
</strong>
|
||||
</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-lg m-0 table-borderless border border-end-0 border-start-0 border-info">
|
||||
<tbody>
|
||||
<tr>
|
||||
@@ -71,12 +74,12 @@
|
||||
</td>
|
||||
<td class="p-0">
|
||||
<strong>
|
||||
<span t-out="o.line_ids and o.line_ids.sorted(lambda line: line.date)[0].date" t-options='{"widget": "date"}'/>
|
||||
<span t-out="o.line_ids and o.line_ids.sorted(lambda line: line.date)[0].date" t-options='{"widget": "date"}'>2023-08-11</span>
|
||||
</strong>
|
||||
</td>
|
||||
<td class="text-end p-0">
|
||||
<strong>
|
||||
<span t-field="o.balance_start"/>
|
||||
<span t-field="o.balance_start">1000.0</span>
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -86,12 +89,12 @@
|
||||
</td>
|
||||
<td class="p-0">
|
||||
<strong>
|
||||
<span t-out="o.line_ids and o.line_ids.sorted(lambda line: line.date)[-1].date" t-options='{"widget": "date"}'/>
|
||||
<span t-out="o.line_ids and o.line_ids.sorted(lambda line: line.date)[-1].date" t-options='{"widget": "date"}'>2023-08-31</span>
|
||||
</strong>
|
||||
</td>
|
||||
<td class="text-end p-0">
|
||||
<strong>
|
||||
<span t-field="o.balance_end_real"/>
|
||||
<span t-field="o.balance_end_real">1500.0</span>
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -101,25 +104,27 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-borderless m-0">
|
||||
<tbody>
|
||||
<tr t-foreach="o.line_ids" t-as="line">
|
||||
<td class="w-25 py-1">
|
||||
<span class="d-block fw-bold" t-field="line.date"/>
|
||||
<span class="d-block fw-bold" t-field="line.date">2023-08-11</span>
|
||||
</td>
|
||||
<td class="py-1">
|
||||
<span class="d-block fw-bold" t-if="line.partner_id">
|
||||
<t t-out="line.partner_id.name"/> <t t-if="line.partner_bank_id and line.partner_bank_id.partner_id != line.partner_id">(<t t-out="line.partner_bank_id.partner_id.name"/>)</t>
|
||||
<span t-out="line.partner_id.name">Marc Demo</span> <span t-if="line.partner_bank_id and line.partner_bank_id.partner_id != line.partner_id">(<span t-out="line.partner_bank_id.partner_id.name">Bank of odoo</span>)</span>
|
||||
</span>
|
||||
<span class="d-block" t-if="line.partner_bank_id or line.account_number" t-out="line.account_number or line.partner_bank_id.acc_number"/>
|
||||
<span class="d-block" t-if="line.payment_ref" t-field="line.payment_ref"/>
|
||||
<span class="d-block" t-if="line.partner_bank_id or line.account_number" t-out="line.account_number or line.partner_bank_id.acc_number">534677881234</span>
|
||||
<span class="d-block" t-if="line.payment_ref" t-field="line.payment_ref">Payment Reference</span>
|
||||
</td>
|
||||
<td class="text-end py-1">
|
||||
<span t-att-class="'d-block fw-bold' + (' text-danger' if line.amount < 0 else '')" t-field="line.amount"/>
|
||||
<span t-att-class="'d-block fw-bold' + (' text-danger' if line.amount < 0 else '')" t-field="line.amount">100.0</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
@@ -188,22 +188,24 @@
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<div class="row footer o_event_full_page_ticket_footer d-block">
|
||||
<div class="o_event_full_page_ticket_powered_by bg-odoo text-white text-center p-2 w-100">
|
||||
<t t-if="event.organizer_id">
|
||||
<span class="fw-bold" t-field="event.organizer_id.name"></span>
|
||||
<span t-if="event.organizer_id">
|
||||
<span class="fw-bold" t-field="event.organizer_id.name">Marc Demo</span>
|
||||
<span t-if="event.organizer_id.phone" class="ps-3 fa fa-phone"/>
|
||||
<span t-if="event.organizer_id.phone" t-field="event.organizer_id.phone"/>
|
||||
<span t-if="event.organizer_id.phone" t-field="event.organizer_id.phone">+123456789</span>
|
||||
<span t-if="event.organizer_id.email_normalized" class="ps-3 fa fa-envelope"/>
|
||||
<span t-if="event.organizer_id.email_normalized" t-field="event.organizer_id.email_normalized"/>
|
||||
<span t-if="event.organizer_id.email_normalized" t-field="event.organizer_id.email_normalized">organizer@email.com</span>
|
||||
<span t-if="event.organizer_id.website" class="ps-3 fa fa-globe"/>
|
||||
<span t-if="event.organizer_id.website" t-field="event.organizer_id.website"/>
|
||||
</t>
|
||||
<span t-if="event.organizer_id.website" t-field="event.organizer_id.website">https://www.example.com</span>
|
||||
</span>
|
||||
<t t-else="">
|
||||
<span t-out="event.name"/> <!-- Force some content to avoid messing the layout -->
|
||||
<span t-out="event.name">Odoo Community Days</span> <!-- Force some content to avoid messing the layout -->
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
</template>
|
||||
|
||||
<template id="event_registration_report_template_full_page_ticket">
|
||||
@@ -293,21 +295,18 @@
|
||||
<span t-if="use_map_marker" class="fa fa-map-marker"/>
|
||||
<t t-if="event.address_id.contact_address.strip()">
|
||||
<t t-set="address_bits" t-value="event.address_id.contact_address.split('\n')"/>
|
||||
<t t-if="address_bits">
|
||||
<t t-set="partner_name" t-value="address_bits[0]"/>
|
||||
<span t-out="partner_name"/>
|
||||
</t>
|
||||
<span t-if="address_bits" t-out="address_bits[0]">Rue de la Paix 123</span>
|
||||
<t t-if="len(address_bits) > 1">
|
||||
<br/>
|
||||
</t>
|
||||
<t t-set="remaining_bits" t-value="address_bits[1:]"/>
|
||||
<t t-foreach="remaining_bits" t-as="address_bit">
|
||||
<t t-if="address_bit and address_bit.strip()">
|
||||
<span class="text-muted" t-out="address_bit"/>
|
||||
<span class="text-muted" t-out="address_bit">Rue de la Paix 123</span>
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
<t t-else="" t-out="event.address_id.name"/>
|
||||
<span t-else="" t-out="event.address_id.name">1000 Brussels</span>
|
||||
</template>
|
||||
|
||||
</odoo>
|
||||
|
||||
@@ -14,14 +14,18 @@
|
||||
<template id="print_employee_badge">
|
||||
<t t-call="web.basic_layout">
|
||||
<div class="page">
|
||||
<div class="oe_structure"></div>
|
||||
<t t-foreach="docs" t-as="employee">
|
||||
<div class="col-md-6">
|
||||
<div class="oe_structure"></div>
|
||||
<table style="width:243pt; height:153pt; border: 1pt solid black; border-collapse:separate; border-radius:8pt; margin:5pt">
|
||||
<td style="width:33%;" valign="center">
|
||||
<table style="width:77pt; height:150pt" class="table-borderless">
|
||||
<tr style="height:30%">
|
||||
<td align="center" valign="center">
|
||||
<img t-if="employee.company_id.logo" t-att-src="image_data_uri(employee.company_id.logo)" style="max-height:45pt;max-width:90%" alt="Company Logo"/>
|
||||
<span t-if="employee.company_id.logo">
|
||||
<img t-att-src="image_data_uri(employee.company_id.logo)" style="max-height:45pt;max-width:90%" alt="Company Logo"/>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr style="height:70%;">
|
||||
@@ -33,14 +37,16 @@
|
||||
</td>
|
||||
<td style="width:67%" valign="center">
|
||||
<table style="width:155pt; height:85pt" class="table-borderless">
|
||||
<tr><th><div style="font-size:15pt; margin-bottom:0pt;margin-top:0pt;" align="center"><t t-esc="employee.name"/></div></th></tr>
|
||||
<tr><td><div align="center" style="font-size:10pt;margin-bottom:5pt;"><t t-esc="employee.job_id.name"/></div></td></tr>
|
||||
<tr><td><div t-if="employee.barcode" t-field="employee.barcode" t-options="{'widget': 'barcode', 'width': 600, 'height': 120, 'img_style': 'max-height:50pt;max-width:100%;', 'img_align': 'center'}"/></td></tr>
|
||||
<tr><th><div style="font-size:15pt; margin-bottom:0pt;margin-top:0pt;" align="center"><span t-out="employee.name">Marc Demo</span></div></th></tr>
|
||||
<tr><td><div align="center" style="font-size:10pt;margin-bottom:5pt;"><span t-out="employee.job_id.name">Software Developer</span></div></td></tr>
|
||||
<tr><td><div t-if="employee.barcode" t-field="employee.barcode" t-options="{'widget': 'barcode', 'width': 600, 'height': 120, 'img_style': 'max-height:50pt;max-width:100%;', 'img_align': 'center'}">12345678901</div></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
@@ -5,30 +5,32 @@
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-call="web.external_layout">
|
||||
<div class="page o_content_pdf">
|
||||
<div class="oe_structure"></div>
|
||||
<h2>Expenses Report</h2>
|
||||
<h3><t t-out="o.name"/></h3>
|
||||
<h3><span t-out="o.name">Business Trip</span></h3>
|
||||
<div class="row o_header">
|
||||
<div class="col-6">
|
||||
<div class="row">
|
||||
<div class="col-3 fw-bold"><span>Employee:</span> </div>
|
||||
<div class="col-9 text-muted"><span t-field="o.employee_id.name"/></div>
|
||||
<div class="col-9 text-muted"><span t-field="o.employee_id.name">Marc Demo</span></div>
|
||||
</div>
|
||||
<div class="row" t-if="o.accounting_date">
|
||||
<div class="col-3 fw-bold"><span>Date:</span></div>
|
||||
<div class="col-9 text-muted"><span t-field="o.accounting_date"/></div>
|
||||
<div class="col-9 text-muted"><span t-field="o.accounting_date">2023-08-11</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="row" t-if="o.user_id.name">
|
||||
<div class="col-3 fw-bold"><span>Manager:</span></div>
|
||||
<div class="col-9 text-muted"><span t-field="o.user_id"/></div>
|
||||
<div class="col-9 text-muted"><span t-field="o.user_id">Mitchell Admin</span></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-3 fw-bold"><span>Paid by:</span></div>
|
||||
<div class="col-9 text-muted"><span t-field="o.payment_mode"/></div>
|
||||
<div class="col-9 text-muted"><span t-field="o.payment_mode">Credit Card</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
|
||||
<table class="o_table">
|
||||
<thead>
|
||||
@@ -45,46 +47,56 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr t-foreach="o.expense_line_ids" t-as="line">
|
||||
<td class="text-start"><span t-field="line.date"/></td>
|
||||
<td class="text-start"><span t-field="line.date"></span></td>
|
||||
<td t-att-class="'text-start' + (' o_overflow' if len(line.name) > 30 else '')">
|
||||
<span t-field="line.name"/><br/>
|
||||
<span t-field="line.name">Flight Ticket</span><br/>
|
||||
<span>
|
||||
<div t-foreach="line.analytic_distribution" t-as="distribution">
|
||||
<t t-out="line.env['account.analytic.account'].browse(int(distribution))[0].name"/>: <t t-out="line.analytic_distribution.get(distribution)"/>
|
||||
</div>
|
||||
<span t-foreach="line.analytic_distribution" t-as="distribution">
|
||||
<span t-out="line.env['account.analytic.account'].browse(int(distribution))[0].name">Analytic Account Name</span>:
|
||||
<span t-out="line.analytic_distribution.get(distribution)">50%</span>
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class="text-end"><span t-field="line.price_unit"/></td>
|
||||
<td class="text-end"><span t-field="line.quantity"/></td>
|
||||
<td class="text-end"><span t-field="line.price_unit">$100.00</span></td>
|
||||
<td class="text-end"><span t-field="line.quantity">1</span></td>
|
||||
<td class="text-end">
|
||||
<t t-foreach="line.tax_ids" t-as="tax">
|
||||
<t t-if="tax.description"><span t-field="tax.description"/></t>
|
||||
<t t-if="not tax.description"><span t-field="tax.name"/></t>
|
||||
<t t-if="tax.description"><span t-field="tax.description">VAT</span></t>
|
||||
<t t-if="not tax.description"><span t-field="tax.name">Tax Name</span></t>
|
||||
</t>
|
||||
</td>
|
||||
<td t-if="foreign_currencies" class="text-end"><span t-field="line.total_amount_currency" t-options='{"widget": "monetary", "display_currency": line.currency_id}'/></td>
|
||||
<td class="text-end"><span t-field="line.total_amount" t-options='{"widget": "monetary", "display_currency": o.company_currency_id}'/></td>
|
||||
<td t-if="foreign_currencies" class="text-end">
|
||||
<span t-field="line.total_amount_currency" t-options='{"widget": "monetary", "display_currency": line.currency_id}'>$120.00</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="line.total_amount" t-options='{"widget": "monetary", "display_currency": o.company_currency_id}'>$100.00</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
<div class="row justify-content-end o_total">
|
||||
<div class="col-4">
|
||||
<div class="oe_structure"></div>
|
||||
<table class="o_subtable">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Untaxed Amount</td>
|
||||
<td class="text-end"><span t-field="o.untaxed_amount" t-options='{"widget": "monetary", "display_currency": o.currency_id}'/></td>
|
||||
<td class="text-end"><span t-field="o.untaxed_amount" t-options='{"widget": "monetary", "display_currency": o.currency_id}'>$500.00</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Taxes</td>
|
||||
<td class="text-end"><span t-field="o.total_tax_amount" t-options='{"widget": "monetary", "display_currency": o.currency_id}'/></td>
|
||||
<td class="text-end"><span t-field="o.total_tax_amount" t-options='{"widget": "monetary", "display_currency": o.currency_id}'>$100.00</span></td>
|
||||
</tr>
|
||||
<tr class="fw-bold">
|
||||
<td>Total</td>
|
||||
<td class="text-end"><span t-field="o.total_amount" t-options='{"widget": "monetary", "display_currency": o.currency_id}'/></td>
|
||||
<td class="text-end">
|
||||
<span t-field="o.total_amount" t-options='{"widget": "monetary", "display_currency": o.currency_id}'>$600.00</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -97,8 +109,9 @@
|
||||
<t t-call="web.html_container">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-call="web.basic_layout">
|
||||
<div class="oe_structure"></div>
|
||||
<div t-if="attachment and attachment.mimetype != 'application/pdf'">
|
||||
<h3> <t t-out="attachment.res_name"/> </h3>
|
||||
<h3> <span t-out="attachment.res_name">Attachment Name</span> </h3>
|
||||
<img t-att-src="attachment.image_src" class="o_attachment_pdf"/>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
$text-color: #3f4650;
|
||||
$text-color-secondary: #545e6c;
|
||||
$text-muted: #a1b2c9;
|
||||
$text-color: #16171a;
|
||||
$text-color-secondary: #16171a;
|
||||
$text-muted: #3b4757;
|
||||
$progess-bar-background: #f5f5f5;
|
||||
|
||||
div.o_employee_cv {
|
||||
@@ -29,6 +29,8 @@ div.o_employee_cv {
|
||||
|
||||
.o_sidebar {
|
||||
color: #fff;
|
||||
margin-top: -150px;
|
||||
margin-left: 500px;
|
||||
width: inherit;
|
||||
display: inline-block;
|
||||
max-width: 50%;
|
||||
@@ -55,8 +57,8 @@ div.o_employee_cv {
|
||||
}
|
||||
|
||||
.o_profile_job {
|
||||
color: rgba(256, 256, 256, 0.6);
|
||||
font-size: 16px;
|
||||
color: rgba(256, 256, 256, 0.9);
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@@ -18,43 +18,50 @@
|
||||
<div class="o_company row">
|
||||
<div class="col-12 mb-4">
|
||||
<img t-if="o.company_id.logo" t-att-src="image_data_uri(o.company_id.logo)" style="max-height: 45px;" alt="Logo"/>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
<div class="col-12 mb-4" style="font-weight: bold;">
|
||||
<t t-esc="o.company_id.partner_id.name"/>
|
||||
<span t-out="o.company_id.partner_id.name">Demo Company Name</span>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<span t-field="o.company_id.partner_id" t-options='{"widget": "contact", "fields": ["address"], "no_marker": True}'>Demo Address</span>
|
||||
</div>
|
||||
<div class="col-12" t-field="o.company_id.partner_id" t-options='{"widget": "contact", "fields": ["address"], "no_marker": True}'/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="report_employee_cv_sidepanel">
|
||||
<div class="oe_structure"></div>
|
||||
<div class="o_sidebar" t-attf-style="
|
||||
background: #{color_primary};
|
||||
background-color: #{color_primary};">
|
||||
<div class="o_profile">
|
||||
<img class="img img-fluid rounded-circle o_profile_image" t-attf-src="data:image/png;base64,#{o.image_128}" alt="" t-if="o.image_128"/>
|
||||
<h1 class="o_profile_name mt-2" t-field="o.name"/>
|
||||
<h3 class="o_profile_job mb-2" t-field="o.job_id"/>
|
||||
<h1 class="o_profile_name mt-2" t-field="o.name">Marc Demo</h1>
|
||||
<h3 class="o_profile_job mb-2" t-field="o.job_id">Software Developer</h3>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div class="o_sidebar_section" t-if="show_contact">
|
||||
<ul class="o_social">
|
||||
<li class="email" t-if="o.company_id.email">
|
||||
<i class="fa fa-solid fa-envelope pe-2"/>
|
||||
<a t-attf-href="mailto: #{o.company_id.email}" t-field="o.company_id.email"/>
|
||||
<a t-attf-href="mailto: #{o.company_id.email}" t-field="o.company_id.email">demo@email.com</a>
|
||||
</li>
|
||||
<li class="phone" t-if="o.company_id.mobile">
|
||||
<i class="fa fa-solid fa-phone pe-2"/>
|
||||
<a t-attf-href="tel:#{o.company_id.mobile}" t-field="o.company_id.mobile"/>
|
||||
<a t-attf-href="tel:#{o.company_id.mobile}" t-field="o.company_id.mobile">+1234567890</a>
|
||||
</li>
|
||||
<li class="website" t-if="o.company_id.website">
|
||||
<i class="fa fa-solid fa-globe pe-2"/>
|
||||
<a t-attf-href="tel:#{o.company_id.website}" t-field="o.company_id.website"/>
|
||||
<a t-attf-href="tel:#{o.company_id.website}" t-field="o.company_id.website">www.demo.com</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
</template>
|
||||
|
||||
|
||||
<template id="report_employee_cv_main_panel">
|
||||
<div class="oe_structure"></div>
|
||||
<t t-foreach="resume_lines[o]" t-as="line_type">
|
||||
<div class="o_main_panel">
|
||||
<div class="o_main_panel_section">
|
||||
@@ -62,28 +69,29 @@
|
||||
<span class="o_main_panel_icon" t-attf-style="background: #{color_secondary};">
|
||||
<i class="fa fa-solid fa-briefcase"/>
|
||||
</span>
|
||||
<t t-esc="line_type"/>
|
||||
<span t-out="line_type">Experience</span>
|
||||
</h2>
|
||||
<t t-foreach="resume_lines[o][line_type]" t-as="resume_line">
|
||||
<div class="o_main_panel_resume_title ps-5">
|
||||
<div class="o_main_panel_resume_title_job">
|
||||
<h3 class="o_main_panel_resume_job" t-field="resume_line.name"/>
|
||||
<h3 class="o_main_panel_resume_job" t-field="resume_line.name">Software Developer</h3>
|
||||
</div>
|
||||
<div class="o_main_panel_resume_title_dates">
|
||||
<t t-set="present">Present</t>
|
||||
<div class="o_main_panel_resume_year">
|
||||
<t t-esc="resume_line.date_start.year"/> - <t t-esc="resume_line.date_end.year if resume_line.date_end else present"/>
|
||||
<span t-out="resume_line.date_start.year">2022</span> - <span t-out="resume_line.date_end.year if resume_line.date_end else 'Present'">2023</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="o_main_panel_resume_description ps-5 w-auto">
|
||||
<p t-field="resume_line.description"/>
|
||||
<p t-field="resume_line.description">Odoo India pvt. Ltd</p>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<t t-set="has_languages" t-value="skill_type_language and any(skill_line.skill_type_id == skill_type_language for skill_line in o.employee_skill_ids)"/>
|
||||
<div class="o_main_panel mt-4" t-if="has_languages">
|
||||
<div class="o_main_panel_section" t-if="skill_type_language">
|
||||
@@ -97,7 +105,7 @@
|
||||
<t t-if="skill_line.skill_type_id == skill_type_language">
|
||||
<div class="o_main_panel_resume_title ps-5 pb-2">
|
||||
<div class="o_main_panel_resume_title_job">
|
||||
<h3 class="o_main_panel_resume_job"><t t-esc="skill_line.skill_id.name"/> - <t t-esc="skill_line.skill_level_id.name"/></h3>
|
||||
<h3 class="o_main_panel_resume_job"><span t-out="skill_line.skill_id.name">English</span> - <span t-out="skill_line.skill_level_id.name">Fluent</span></h3>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
@@ -105,21 +113,22 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<t t-set="has_skills" t-value="show_skills and any(skill_line.skill_type_id != skill_type_language for skill_line in o.employee_skill_ids)"/>
|
||||
<div class="o_main_panel mt-4" t-if="has_skills">
|
||||
<div class="o_main_panel_section">
|
||||
<h2 class="o_main_panel_title" t-attf-style="color: #{color_secondary};">
|
||||
<span class="o_main_panel_icon" t-attf-style="background: #{color_secondary};">
|
||||
<i class="fa fa-solid fa-rocket"/>
|
||||
</span>Skills
|
||||
</span>
|
||||
Skills
|
||||
</h2>
|
||||
<t t-set="valid_skills" t-value="[skill for skill in o.employee_skill_ids if skill.skill_type_id != skill_type_language]"/>
|
||||
<!-- Thanks wkhtmltopdf -->
|
||||
<t t-foreach="[valid_skills[n:n+2] for n in range(0, len(valid_skills), 2)]" t-as="skills_pair">
|
||||
<div class="o_main_panel_skills row ps-5">
|
||||
<t t-foreach="skills_pair" t-as="skill_line">
|
||||
<div class="o_main_panel_skill_line col-6 pe-4" t-if="skill_line.skill_type_id != skill_type_language">
|
||||
<h3 class="o_main_panel_skill_name" t-field="skill_line.skill_id"/>
|
||||
<h3 class="o_main_panel_skill_name" t-field="skill_line.skill_id">Python</h3>
|
||||
<div class="progress o_main_panel_skill_progress_bar">
|
||||
<div
|
||||
class="o_main_panel_skill_progress_bar_color"
|
||||
@@ -135,5 +144,6 @@
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
</template>
|
||||
</odoo>
|
||||
|
||||
@@ -5,45 +5,50 @@
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="page">
|
||||
<div class="oe_structure"></div>
|
||||
<div class="row text-center">
|
||||
<div class="o_offer col-lg-12">
|
||||
<h4 t-if="o._get_mail_partner().name">
|
||||
Congratulations
|
||||
<t t-esc="o._get_mail_partner().name"/>,
|
||||
<span t-out="o._get_mail_partner().name">John Doe</span>,
|
||||
</h4>
|
||||
<t t-set="text">on your next order</t>
|
||||
<h4>Here is your reward from <t t-esc="o.program_id.company_id.name"/>.</h4>
|
||||
<h4>Here is your reward from <span t-out="o.program_id.company_id.name">Odoo</span>.</h4>
|
||||
<div class="oe_structure"></div>
|
||||
<t t-foreach="range(len(o.program_id.reward_ids))" t-as="reward_idx">
|
||||
<t t-set="reward" t-value="o.program_id.reward_ids[reward_idx]"/>
|
||||
<strong><t t-esc="reward.description"/></strong>
|
||||
<strong><span t-out="reward.description">loyalty Reward</span></strong>
|
||||
<br/>
|
||||
<t t-if="reward_idx < (len(o.program_id.reward_ids) - 1)">
|
||||
<span class="text-center">OR</span>
|
||||
<br/>
|
||||
</t>
|
||||
</t>
|
||||
<h1 class="fw-bold" style="font-size: 34px" t-esc="text"/>
|
||||
<h1 class="fw-bold" style="font-size: 34px"><span t-out="text">DEMO_TEXT</span></h1>
|
||||
<br/>
|
||||
<h4 t-if="o.expiration_date">
|
||||
Use this promo code before
|
||||
<span t-field="o.expiration_date" t-options='{"format": "yyyy-MM-d"}'/>
|
||||
<span t-field="o.expiration_date" t-options='{"format": "yyyy-MM-d"}'>2023-08-20</span>
|
||||
</h4>
|
||||
<h2 class="mt-4">
|
||||
<strong class="bg-light" t-esc="o.code"></strong>
|
||||
<strong class="bg-light"><span t-out="o.code">DEMO_CODE</span></strong>
|
||||
</h2>
|
||||
<t t-set="rule" t-value="o.program_id.rule_ids[:1]"/>
|
||||
<h4 t-if="rule.minimum_qty > 1">
|
||||
<span>Minimum purchase of</span>
|
||||
<strong t-esc="rule.minimum_qty"/> <span>products</span>
|
||||
<strong t-out="rule.minimum_qty">5</strong> <span>products</span>
|
||||
</h4>
|
||||
<h4 t-if="rule.minimum_amount">
|
||||
<span>Valid for purchase above</span>
|
||||
<strong t-esc="rule.minimum_amount" t-options="{'widget': 'monetary', 'display_currency': rule.currency_id}"/>
|
||||
<strong t-out="rule.minimum_amount" t-options="{'widget': 'monetary', 'display_currency': rule.currency_id}">$100</strong>
|
||||
</h4>
|
||||
<div class="oe_structure"></div>
|
||||
<br/>
|
||||
<div t-field="o.code" t-options="{'widget': 'barcode', 'width': 600, 'height': 100}"/>
|
||||
<span t-field="o.code" t-options="{'widget': 'barcode', 'width': 600, 'height': 100}">ABCDE12345</span>
|
||||
<div class="oe_structure"></div>
|
||||
<br/><br/>
|
||||
<h4>Thank you,</h4>
|
||||
<div class="oe_structure"></div>
|
||||
<br/>
|
||||
<div class="mt32">
|
||||
<div class="text-center">
|
||||
@@ -53,9 +58,10 @@
|
||||
<div>
|
||||
<div class="text-center d-inline-block">
|
||||
<span t-field="o.program_id.company_id.partner_id"
|
||||
t-options='{"widget": "contact", "fields": ["address", "email"], "no_marker": True}'/>
|
||||
t-options='{"widget": "contact", "fields": ["address", "email"], "no_marker": True}'>John Doe</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -76,43 +82,52 @@
|
||||
<template id="gift_card_report">
|
||||
<t t-call="web.html_container">
|
||||
<t t-call="web.external_layout">
|
||||
<div class="oe_structure"></div>
|
||||
<div style="margin:0px; font-size:24px; font-family:arial, 'helvetica neue', helvetica, sans-serif; line-height:36px; color:#333333; text-align: center">
|
||||
Here is your gift card!
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div style="padding-top:20px; padding-bottom:20px">
|
||||
<img src="/loyalty/static/img/gift_card.png" style="display:block; border:0; outline:none; text-decoration:none; margin:auto;" width="300"/>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div style="padding:0; margin:0px; padding-top:35px; padding-bottom:35px; text-align:center;">
|
||||
<h3 style="margin:0px; line-height:48px; font-family:arial, 'helvetica neue', helvetica, sans-serif; font-size:40px; font-style:normal; font-weight:normal; color:#333333; text-align:center">
|
||||
<strong><span t-esc="o.points" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/></strong>
|
||||
<strong><span t-out="o.points" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}">1000</span></strong>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div style="padding:0; margin:0px; padding-top:35px; padding-bottom:35px; background-color:#efefef; text-align:center;">
|
||||
<p style="margin:0px; font-size:14px;font-family:arial, 'helvetica neue', helvetica, sans-serif; line-height:21px; color:#333333">
|
||||
<strong>Gift Card Code</strong>
|
||||
</p>
|
||||
<p style="margin:0px; font-size:25px;font-family:arial, 'helvetica neue', helvetica, sans-serif; line-height:38px; color:#A9A9A9">
|
||||
<span t-field="o.code"/>
|
||||
<span t-field="o.code">ABCDE12345</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div style="padding:0; margin:0px; padding-top:10px; padding-bottom:10px; text-align:center;">
|
||||
<h3 style="margin:0px; line-height:17px; font-family:arial, 'helvetica neue', helvetica, sans-serif; font-size:14px; font-style:normal; font-weight:normal; color:#A9A9A9; text-align:center">
|
||||
Card expires <span t-field="o.expiration_date"/>
|
||||
Card expires <span t-field="o.expiration_date">2023-12-31</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div style="padding:0; margin:0px; padding-top:10px; padding-bottom:10px; text-align:center;">
|
||||
<img t-att-src="'/report/barcode/Code128/'+o.code" style="width:400px;height:75px" alt="Barcode"/>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="gift_card_report_i18n">
|
||||
<t t-call="web.html_container">
|
||||
<div class="oe_structure"></div>
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-set="o" t-value="o.with_context(lang=o._get_mail_partner().lang or o.env.lang)"/>
|
||||
<t t-call="loyalty.gift_card_report" t-lang="o._get_mail_partner().lang or o.env.lang"/>
|
||||
</t>
|
||||
<div class="oe_structure"></div>
|
||||
</t>
|
||||
</template>
|
||||
</odoo>
|
||||
|
||||
@@ -8,47 +8,47 @@
|
||||
<div class="oe_structure"/>
|
||||
<div class="row">
|
||||
<div class="col-7">
|
||||
<h2><span t-field="o.name"/></h2>
|
||||
<h2><span t-field="o.name">MRP-001</span></h2>
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<span class="text-end">
|
||||
<div t-field="o.name" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:350px;height:60px'}"/>
|
||||
<span t-field="o.name" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:350px;height:60px'}">Package barcode</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mt32 mb32">
|
||||
<div class="col-3" t-if="o.origin">
|
||||
<strong>Source:</strong><br/>
|
||||
<span t-field="o.origin"/>
|
||||
<span t-field="o.origin">Vendor ABC</span>
|
||||
</div>
|
||||
<div class="col-3" t-if="o.user_id">
|
||||
<strong>Responsible:</strong><br/>
|
||||
<span t-field="o.user_id"/>
|
||||
<span t-field="o.user_id">John Doe</span>
|
||||
</div>
|
||||
<div class="col-3" t-if="o.state not in ('done', 'cancel') and o.date_deadline">
|
||||
<strong>Deadline:</strong><br/>
|
||||
<span t-field="o.date_deadline"/>
|
||||
<span t-field="o.date_deadline">2023-09-15</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt32 mb32">
|
||||
<div class="col-3">
|
||||
<strong>Product:</strong><br/>
|
||||
<span t-field="o.product_id"/>
|
||||
<span t-field="o.product_id">Laptop Model X</span>
|
||||
</div>
|
||||
<div class="col-3" t-if="o.product_description_variants">
|
||||
<strong>Description:</strong><br/>
|
||||
<span t-field="o.product_description_variants"/>
|
||||
<span t-field="o.product_description_variants">Laptop with 16GB RAM</span>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<strong>Quantity to Produce:</strong><br/>
|
||||
<span t-field="o.product_qty"/>
|
||||
<span t-field="o.product_uom_id.name" groups="uom.group_uom"/>
|
||||
<span t-field="o.product_qty">100</span>
|
||||
<span t-field="o.product_uom_id.name" groups="uom.group_uom">Units</span>
|
||||
</div>
|
||||
<div class="col-3" t-if="o.qty_producing">
|
||||
<div class="col-3" t-if="o.qty_producing">
|
||||
<strong>Quantity Producing:</strong><br/>
|
||||
<span t-field="o.qty_producing"/>
|
||||
<span t-field="o.product_uom_id.name" groups="uom.group_uom"/>
|
||||
<span t-field="o.qty_producing">50</span>
|
||||
<span t-field="o.product_uom_id.name" groups="uom.group_uom">Units</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -67,24 +67,26 @@
|
||||
<th style="width:30%"><strong>Barcode</strong></th>
|
||||
</tr>
|
||||
<tr t-foreach="o.workorder_ids" t-as="line2">
|
||||
<td><span t-field="line2.name"/></td>
|
||||
<td><span t-field="line2.workcenter_id.name"/></td>
|
||||
<td><span t-field="line2.name">Assembling</span></td>
|
||||
<td><span t-field="line2.workcenter_id.name">Center A</span></td>
|
||||
<td>
|
||||
<span t-if="o.state != 'done'" t-field="line2.duration_expected"/>
|
||||
<span t-if="o.state == 'done'" t-field="line2.duration"/>
|
||||
<span t-if="o.state != 'done'" t-field="line2.duration_expected">60</span>
|
||||
<span t-if="o.state == 'done'" t-field="line2.duration">58</span>
|
||||
</td>
|
||||
<td t-if="o.state in ('progress', 'to_close')">
|
||||
<span t-field="line2.duration"/>
|
||||
<span t-field="line2.duration">58</span>
|
||||
</td>
|
||||
<td>
|
||||
<div t-field="line2.barcode" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:100%;height:35px'}"/>
|
||||
<span t-field="line2.barcode" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:100%;height:35px'}">987654321098</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<t t-call="mrp.report_mrp_production_components" t-if="o.move_raw_ids"/>
|
||||
<div t-if="o.move_raw_ids">
|
||||
<t t-call="mrp.report_mrp_production_components"/>
|
||||
|
||||
</div>
|
||||
<div class="oe_structure"/>
|
||||
</div>
|
||||
</t>
|
||||
@@ -99,6 +101,7 @@
|
||||
</span>
|
||||
</h3>
|
||||
<table class="table table-sm">
|
||||
<div class="oe_structure"></div>
|
||||
<t t-set="has_product_barcode" t-value="any(m.product_id.barcode for m in o.move_raw_ids)"/>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -111,20 +114,21 @@
|
||||
<tbody>
|
||||
<tr t-foreach="o.move_raw_ids" t-as="raw_line">
|
||||
<td>
|
||||
<span t-field="raw_line.product_id"/>
|
||||
<span t-field="raw_line.product_id">8 GB RAM</span>
|
||||
</td>
|
||||
<td t-attf-class="{{ 'text-end' if not has_product_barcode else '' }}" t-if="o.state in ('progress', 'to_close','done')">
|
||||
<div>
|
||||
<span t-field="raw_line.quantity"/>
|
||||
<span t-field="raw_line.quantity">2</span>
|
||||
</div>
|
||||
</td>
|
||||
<td t-else="" class="oe_structure"></td>
|
||||
<td t-attf-class="{{ 'text-end' if not has_product_barcode else '' }}">
|
||||
<span t-field="raw_line.product_uom_qty"/>
|
||||
<span t-field="raw_line.product_uom" groups="uom.group_uom"/>
|
||||
<span t-field="raw_line.product_uom_qty">25</span>
|
||||
<span t-field="raw_line.product_uom" groups="uom.group_uom">Pieces</span>
|
||||
</td>
|
||||
<td t-if="has_product_barcode" width="15%" class="text-center">
|
||||
<t t-if="raw_line.product_id.barcode">
|
||||
<div t-field="raw_line.product_id.barcode" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:100%;height:35px'}"/>
|
||||
<span t-field="raw_line.product_id.barcode" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:100%;height:35px'}">12345678901</span>
|
||||
</t>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -137,6 +141,7 @@
|
||||
<t t-set='nRows' t-value='12'/>
|
||||
<t t-set='nCols' t-value='4'/>
|
||||
<t t-set="uom_categ_unit" t-value="env.ref('uom.product_uom_categ_unit')"/>
|
||||
<div class="oe_structure"></div>
|
||||
<t t-set="move_lines" t-value="docs.move_finished_ids.move_line_ids.filtered(lambda ml: ml.move_id.production_id.state == 'done' and ml.state == 'done' and ml.quantity)"/>
|
||||
<t t-set="move_line_qtys" t-value="[]"/>
|
||||
<t t-foreach="move_lines" t-as="move_line">
|
||||
@@ -150,7 +155,9 @@
|
||||
</t>
|
||||
<t t-set="index_to_qtys" t-value="{i: qty for i, qty in zip(range(0, len(move_line_qtys)), move_line_qtys)}"/>
|
||||
<t t-set="num_pages" t-value="sum(move_line_qtys)// (nRows * nCols) + 1"/>
|
||||
<div class="oe_structure"></div>
|
||||
<div t-foreach="range(num_pages)" t-as="page" class="o_label_sheet" t-att-style="'padding: 20mm 8mm'">
|
||||
<div class="oe_structure"></div>
|
||||
<table class="my-0 table table-sm table-borderless">
|
||||
<t t-foreach="range(nRows)" t-as="row">
|
||||
<tr>
|
||||
@@ -170,20 +177,20 @@
|
||||
<td t-att-style="make_invisible and 'visibility:hidden'">
|
||||
<div t-if="move_line" t-translation="off" t-att-style="'position:relative; width:43mm; height:19mm; border: 1px solid %s;' % (move_line.env.user.company_id.primary_color or 'black')">
|
||||
<div class="o_label_name o_label_4x12 fw-bold">
|
||||
<div t-out="move_line.product_id.display_name"/>
|
||||
<span t-out="move_line.product_id.display_name">Product</span>
|
||||
<div><span>Quantity: </span>
|
||||
<span t-if="move_line.product_uom_id.category_id == uom_categ_unit">1.0</span>
|
||||
<span t-else="" t-out="move_line.quantity"/>
|
||||
<span t-field="move_line.product_uom_id" groups="uom.group_uom"/>
|
||||
<span t-else="" t-out="move_line.quantity">5</span>
|
||||
<span t-field="move_line.product_uom_id" groups="uom.group_uom">UOM id</span>
|
||||
</div>
|
||||
</div>
|
||||
<t t-if="move_line.product_id.tracking != 'none' and (move_line.lot_name or move_line.lot_id)">
|
||||
<div t-field="move_line.lot_name or move_line.lot_id.name" t-options="{'widget': 'barcode', 'img_style': 'width:100%;height:35%'}"/>
|
||||
<div class="o_label_4x12 text-center" t-out="move_line.lot_name or move_line.lot_id.name"/>
|
||||
<div class="o_label_4x12 text-center"><span t-out="move_line.lot_name or move_line.lot_id.name">Demo Barcode</span></div>
|
||||
</t>
|
||||
<t t-elif="move_line.product_id.tracking == 'none' and move_line.product_id.barcode">
|
||||
<div t-field="move_line.product_id.barcode" t-options="{'widget': 'barcode', 'img_style': 'width:100%;height:35%'}"/>
|
||||
<div class="o_label_4x12 text-center" t-out="move_line.product_id.barcode"/>
|
||||
<div class="o_label_4x12 text-center"><span t-out="move_line.product_id.barcode">12345678901</span></div>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<span class="text-muted">No barcode available</span>
|
||||
@@ -194,6 +201,7 @@
|
||||
</tr>
|
||||
</t>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
<div class="oe_structure"/>
|
||||
<div class="row">
|
||||
<div class="col-7">
|
||||
<h2><span t-field="o.name"/></h2>
|
||||
<h2><span t-field="o.name">Laptop model X</span></h2>
|
||||
</div>
|
||||
<div class="col-5">
|
||||
<span class="text-end">
|
||||
<div t-field="o.name" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:350px;height:60px'}"/>
|
||||
<span t-field="o.name" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:350px;height:60px'}">12345678901</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -20,23 +20,23 @@
|
||||
<div class="row mt32 mb32">
|
||||
<div class="col-3">
|
||||
<strong>Responsible:</strong><br/>
|
||||
<span t-field="o.production_id.user_id"/>
|
||||
<span t-field="o.production_id.user_id">Marc Demo</span>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<strong>Manufacturing Order:</strong><br/>
|
||||
<span t-field="o.production_id.name"/>
|
||||
<span t-field="o.production_id.name">RAM</span>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<div class="row mt32 mb32">
|
||||
<div class="col-3">
|
||||
<strong>Finished Product:</strong><br/>
|
||||
<span t-field="o.product_id"/>
|
||||
<span t-field="o.product_id">Laptop</span>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<strong>Quantity to Produce:</strong><br/>
|
||||
<span t-field="o.qty_production"/>
|
||||
<span t-field="o.product_uom_id.name" groups="uom.group_uom"/>
|
||||
<span t-field="o.qty_production">2</span>
|
||||
<span t-field="o.product_uom_id.name" groups="uom.group_uom">Unit</span>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
@@ -9,10 +9,11 @@
|
||||
<div class="row mt8">
|
||||
<div class="col-lg-12">
|
||||
<h2>
|
||||
<span>WIP Report for <t t-out="docs.account_id.name"/></span>
|
||||
<span>WIP Report for <span t-field="docs.account_id.name">Acme Corp.</span></span>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"/>
|
||||
<div class="row mt8">
|
||||
<div class="col-12">
|
||||
<table class="table table-sm">
|
||||
@@ -29,29 +30,29 @@
|
||||
<tbody>
|
||||
<tr t-foreach="docs" t-as="line" t-att-style="'background-color: #F1F1F1;' if line_index % 2 == 0 else ''">
|
||||
<td class="align-middle">
|
||||
<span t-field="line.date"/>
|
||||
<span t-field="line.date">2023-08-15</span>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<span t-field="line.ref"/>
|
||||
<span t-field="line.ref">REF123</span>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<span t-field="line.product_id"/>
|
||||
<span t-field="line.product_id">Laptop</span>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<span t-field="line.unit_amount"/>
|
||||
<span t-field="line.unit_amount">5</span>
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<span t-field="line.product_uom_id"/>
|
||||
<span t-field="line.product_uom_id">Units</span>
|
||||
</td>
|
||||
<td class="text-end align-middle">
|
||||
<span t-field="line.amount"/>
|
||||
<span t-field="line.amount">$1000</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-end" t-attf-colspan="6">
|
||||
<strong>
|
||||
<span style="margin-right: 15px;">Total</span>
|
||||
<t t-esc="sum(docs.mapped('amount'))"/>
|
||||
<span t-out="sum(docs.mapped('amount'))">$5000</span>
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -3,16 +3,18 @@
|
||||
<data>
|
||||
<template id="report_saledetails">
|
||||
<t t-set="company" t-value="env.company"/>
|
||||
<div class="oe_structure"></div>
|
||||
<t t-call="web.html_container">
|
||||
<t t-call="web.internal_layout">
|
||||
<div class="page">
|
||||
<div class="text-center" style="break-inside: avoid;">
|
||||
<t t-if="state == 'multiple'">
|
||||
<h2>Sales Details</h2>
|
||||
<div class="oe_structure"></div>
|
||||
<t t-if="config_names">
|
||||
<strong>Config names</strong>
|
||||
<t t-foreach="config_names" t-as="name">
|
||||
<t t-esc="name" />,
|
||||
<span t-out="name">Sample Config Name</span>,
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
@@ -21,22 +23,24 @@
|
||||
<t t-if="state == 'closed'">Z</t>
|
||||
<t t-else="">X</t>
|
||||
</h2>
|
||||
<div class="oe_structure"></div>
|
||||
<t t-if="session_name">
|
||||
Session ID: <t t-esc="session_name" />
|
||||
Session ID: <span t-out="session_name">987657</span>
|
||||
</t>
|
||||
</t>
|
||||
<br/>
|
||||
<t t-if="date_start and date_stop">
|
||||
<t t-esc="date_start" t-options="{'widget': 'datetime'}"/> - <t t-esc="date_stop" t-options="{'widget': 'datetime'}"/>
|
||||
<span t-out="date_start" t-options="{'widget': 'datetime'}">2-03-2000 9:00 AM</span> - <span t-out="date_stop" t-options="{'widget': 'datetime'}">Demo 3-03-2000 5:00 PM</span>
|
||||
</t>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="oe_structure"></div>
|
||||
|
||||
<!-- Orderlines -->
|
||||
<div t-if="products" id="sales">
|
||||
<h3>Sales</h3>
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-sm">
|
||||
<thead><tr>
|
||||
<th class="text-start">Product Category</th>
|
||||
@@ -46,39 +50,37 @@
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr t-foreach="products" t-as="category">
|
||||
<td style="background-color: #dadada;"><t t-esc="category['name']" /></td>
|
||||
<td style="background-color: #dadada;"><span t-out="category['name']">Technical Stuffs</span></td>
|
||||
<td style="background-color: #dadada;"/>
|
||||
<td class="text-end" style="background-color: #dadada;">
|
||||
<t t-esc="category['qty']"/>
|
||||
</td>
|
||||
<td class="text-end" style="background-color: #dadada;"><span t-out="category['qty']">5</span></td>
|
||||
<td class="text-end" style="background-color: #dadada;">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="category['total']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
<span t-out="category['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">10000.00</span><span t-out='currency["symbol"]'>$</span>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="category['total']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="category['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">10000.00</span>
|
||||
</t>
|
||||
</td>
|
||||
<tr t-foreach="category['products']" t-as="line">
|
||||
<td/>
|
||||
<t t-set="internal_reference" t-value="line['code'] and '[%s] ' % line['code'] or ''" />
|
||||
<td><t t-esc="internal_reference" /><t t-esc="line['product_name']" /></td>
|
||||
<td><span t-out="internal_reference">Ref 876787</span><span t-out="line['product_name']">Laptop model x</span></td>
|
||||
<td class="text-end">
|
||||
<t t-esc="line['quantity']" />
|
||||
<span t-out="line['quantity']">5</span>
|
||||
<t t-if='line["uom"] != "Units"'>
|
||||
<t t-esc='line["uom"]' />
|
||||
<span t-out='line["uom"]'>Unit</span>
|
||||
</t>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc='line["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
<span t-out='line["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}">567789</span><span t-out='currency["symbol"]'>$</span>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc='line["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out='line["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}">567789</span>
|
||||
</t>
|
||||
|
||||
<t t-if='line["discount"] != 0'>
|
||||
Disc: <t t-esc='line["discount"]' />%
|
||||
Disc: <span t-out='line["discount"]'>45</span>%
|
||||
</t>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -86,22 +88,20 @@
|
||||
<tr>
|
||||
<td style="background-color: #b1b1b1;"><strong>Total</strong></td>
|
||||
<td style="background-color: #b1b1b1;"/>
|
||||
<td class="text-end" style="background-color: #b1b1b1;">
|
||||
<strong><t t-esc="products_info['qty']"/></strong>
|
||||
</td>
|
||||
<td class="text-end" style="background-color: #b1b1b1;"><strong><span t-out="products_info['qty']">5</span></strong></td>
|
||||
<td class="text-end" style="background-color: #b1b1b1;">
|
||||
<t t-if="currency['position']">
|
||||
<strong><t t-esc='products_info["total"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' /></strong>
|
||||
<strong><span t-out='products_info["total"]' t-options="{'widget': 'float', 'precision': currency['precision']}">10000</span><span t-out='currency["symbol"]'>$</span></strong>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<strong><t t-esc='currency["symbol"]' /><t t-esc='products_info["total"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/></strong>
|
||||
<strong><span t-out='currency["symbol"]'>$</span><span t-out='products_info["total"]' t-options="{'widget': 'float', 'precision': currency['precision']}">1000</span></strong>
|
||||
</t>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<t t-if="taxes" id="taxe_sales">
|
||||
<h3>Taxes on sales</h3>
|
||||
<table class="table table-sm">
|
||||
@@ -112,22 +112,22 @@
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr t-foreach='taxes' t-as='tax'>
|
||||
<td><t t-esc="tax['name']" /></td>
|
||||
<td><span t-out="tax['name']">Demo Name</span></td>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="tax['tax_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
<span t-out="tax['tax_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span><span t-out='currency["symbol"]'>$</span>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="tax['tax_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="tax['tax_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span>
|
||||
</t>
|
||||
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="tax['base_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
<span t-out="tax['base_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span><span t-out='currency["symbol"]'>$</span>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="tax['base_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="tax['base_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span>
|
||||
</t>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -135,27 +135,26 @@
|
||||
<td style="background-color: #b1b1b1;"><strong>Total</strong></td>
|
||||
<td class="text-end" style="background-color: #b1b1b1;">
|
||||
<t t-if="currency['position']">
|
||||
<strong><t t-esc='taxes_info["tax_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' /></strong>
|
||||
<strong><span t-out='taxes_info["tax_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span><span t-out='currency["symbol"]'>$</span></strong>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<strong><t t-esc='currency["symbol"]' /><t t-esc='taxes_info["tax_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/></strong>
|
||||
<strong><span t-out='currency["symbol"]'>$</span><span t-out='taxes_info["tax_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span></strong>
|
||||
</t>
|
||||
</td>
|
||||
<td class="text-end" style="background-color: #b1b1b1;">
|
||||
<t t-if="currency['position']">
|
||||
<strong><t t-esc='taxes_info["base_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' /></strong>
|
||||
<strong><span t-out='taxes_info["base_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span><span t-out='currency["symbol"]'>$</span></strong>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<strong><t t-esc='currency["symbol"]' /><t t-esc='taxes_info["base_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/></strong>
|
||||
<strong><span t-out='currency["symbol"]'>$</span><span t-out='taxes_info["base_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span></strong>
|
||||
</t>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</t>
|
||||
|
||||
<br/>
|
||||
|
||||
<t t-if="refund_products" id="refunds">
|
||||
<h3>Refunds</h3>
|
||||
<table class="table table-sm">
|
||||
@@ -167,39 +166,42 @@
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr t-foreach="refund_products" t-as="category">
|
||||
<td style="background-color: #dadada;"><t t-esc="category['name']" /></td>
|
||||
<td style="background-color: #dadada;"><span t-out="category['name']">Technical Stuff</span></td>
|
||||
<td style="background-color: #dadada;"/>
|
||||
<td class="text-end" style="background-color: #dadada;">
|
||||
<t t-esc="category['qty']"/>
|
||||
<span t-out="category['qty']">0</span>
|
||||
</td>
|
||||
<td class="text-end" style="background-color: #dadada;">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="category['total']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
<span t-out="category['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span><span t-out='currency["symbol"]'>$</span>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="category['total']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="category['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span>
|
||||
</t>
|
||||
</td>
|
||||
<tr t-foreach="category['products']" t-as="line">
|
||||
<td/>
|
||||
<t t-set="internal_reference" t-value="line['code'] and '[%s] ' % line['code'] or ''" />
|
||||
<td><t t-esc="internal_reference" /><t t-esc="line['product_name']" /></td>
|
||||
<td><span t-out="internal_reference">7897</span><span t-out="line['product_name']">Laptop</span></td>
|
||||
<td>
|
||||
<span t-out="internal_reference">DEMO_REF</span>
|
||||
<span t-out="line['product_name']">DEMO_PRODUCT_NAME</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<t t-esc="line['quantity']" />
|
||||
<td class="text-end"><span t-out="line['quantity']">0</span></td>
|
||||
<t t-if='line["uom"] != "Units"'>
|
||||
<t t-esc='line["uom"]' />
|
||||
<span t-out='line["uom"]'>Unit</span>
|
||||
</t>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc='line["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
<span t-out='line["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span><span t-out='currency["symbol"]'>$</span>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc='line["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out='line["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span>
|
||||
</t>
|
||||
|
||||
<t t-if='line["discount"] != 0'>
|
||||
Disc: <t t-esc='line["discount"]' />%
|
||||
Disc: <span t-out='line["discount"]'>0</span>%
|
||||
</t>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -208,22 +210,22 @@
|
||||
<td style="background-color: #b1b1b1;"><strong>Total</strong></td>
|
||||
<td style="background-color: #b1b1b1;"/>
|
||||
<td class="text-end" style="background-color: #b1b1b1;">
|
||||
<strong><t t-esc="refund_info['qty']"/></strong>
|
||||
<strong><span t-out="refund_info['qty']">0</span></strong>
|
||||
</td>
|
||||
<td class="text-end" style="background-color: #b1b1b1;">
|
||||
<t t-if="currency['position']">
|
||||
<strong><t t-esc='refund_info["total"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' /></strong>
|
||||
<strong><span t-out='refund_info["total"]' t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span><span t-out='currency["symbol"]'>$</span></strong>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<strong><t t-esc='currency["symbol"]' /><t t-esc='refund_info["total"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/></strong>
|
||||
<strong><span t-out='currency["symbol"]'>$</span><span t-out='refund_info["total"]' t-options="{'widget': 'float', 'precision': currency['precision']}">0.00</span></strong>
|
||||
</t>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</t>
|
||||
|
||||
|
||||
<t t-if="refund_taxes" id="taxe_refunds">
|
||||
<h3>Taxes on refunds</h3>
|
||||
<table class="table table-sm">
|
||||
@@ -234,50 +236,49 @@
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr t-foreach='refund_taxes' t-as='tax'>
|
||||
<td><t t-esc="tax['name']" /></td>
|
||||
<td><span t-out="tax['name']">Tax Name</span></td>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="tax['tax_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="tax['tax_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
|
||||
<span t-if="currency['position']">
|
||||
<span t-out="tax['tax_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="tax['tax_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span>
|
||||
</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="tax['base_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="tax['base_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<span t-out="tax['base_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="tax['base_amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="background-color: #b1b1b1;"><strong>Total</strong></td>
|
||||
<td class="text-end" style="background-color: #b1b1b1;">
|
||||
<t t-if="currency['position']">
|
||||
<strong><t t-esc='refund_taxes_info["tax_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' /></strong>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<strong><t t-esc='currency["symbol"]' /><t t-esc='refund_taxes_info["tax_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/></strong>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<strong><span t-out='refund_taxes_info["tax_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span><span t-out='currency["symbol"]'>$</span></strong>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<strong><span t-out='currency["symbol"]'>$</span><span t-out='refund_taxes_info["tax_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span></strong>
|
||||
</span>
|
||||
</td>
|
||||
<td class="text-end" style="background-color: #b1b1b1;">
|
||||
<t t-if="currency['position']">
|
||||
<strong><t t-esc='refund_taxes_info["base_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' /></strong>
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<strong><t t-esc='currency["symbol"]' /><t t-esc='refund_taxes_info["base_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/></strong>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<strong><span t-out='refund_taxes_info["base_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span><span t-out='currency["symbol"]'>$</span></strong>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<strong><span t-out='currency["symbol"]'>$</span><span t-out='refund_taxes_info["base_amount"]' t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span></strong>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</t>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<br/>
|
||||
|
||||
<t t-if="payments" id="payments">
|
||||
<t t-if="payments" id="other_payments">
|
||||
<h3>Payments</h3>
|
||||
@@ -288,21 +289,21 @@
|
||||
</tr></thead>
|
||||
<tbody>
|
||||
<tr t-foreach='payments' t-as='payment'>
|
||||
<td><t t-esc="payment['name']" /></td>
|
||||
<td><span t-out="payment['name']">Payment Name Demo</span></td>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="payment['total']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="payment['total']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<span t-out="payment['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="payment['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<div id="discounts" style="break-inside: avoid;">
|
||||
@@ -310,17 +311,17 @@
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<strong>Number of discounts</strong>:
|
||||
<t t-esc="discount_number"/>
|
||||
<strong>Number of discounts</strong>: <span t-out="discount_number">5</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<strong>Amount of discounts</strong>:
|
||||
<t t-esc="discount_amount"/>
|
||||
<strong>Amount of discounts</strong>: <span t-out="discount_amount">50.00</span>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
|
||||
<t t-if="invoiceTotal" id="invoices">
|
||||
@@ -337,15 +338,15 @@
|
||||
<t t-foreach="invoiceList" t-as="invoiceSession">
|
||||
<t t-if="invoiceSession['invoices']">
|
||||
<tr t-foreach='invoiceSession["invoices"]' t-as='invoice'>
|
||||
<td><t t-esc="invoice['name']" /></td>
|
||||
<td><t t-esc="invoice['order_ref']" /></td>
|
||||
<td><span t-out="invoice['name']">Invoice Name</span></td>
|
||||
<td><span t-out="invoice['order_ref']">Order Ref</span></td>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="invoice['total']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="invoice['total']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<span t-out="invoice['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="invoice['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
@@ -354,37 +355,39 @@
|
||||
<td style="background-color: #b1b1b1;"><strong>Total</strong></td>
|
||||
<td style="background-color: #b1b1b1;"/>
|
||||
<td class="text-end" style="background-color: #b1b1b1;"><strong>
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="invoiceTotal" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="invoiceTotal" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<span t-out="invoice['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="invoice['total']" t-options="{'widget': 'float', 'precision': currency['precision']}">123.45</span>
|
||||
</span>
|
||||
</strong></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</t>
|
||||
|
||||
<div class="oe_structure"></div>
|
||||
<t id="closing_session">
|
||||
<br/>
|
||||
<br/>
|
||||
<h3>Session Control</h3>
|
||||
<br/>
|
||||
<div class="oe_structure"></div>
|
||||
<div style="break-inside: avoid;">
|
||||
<strong>Total:
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc='currency["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc='currency["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<span t-out='currency["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}">99.99</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out='currency["total_paid"]' t-options="{'widget': 'float', 'precision': currency['precision']}">99.99</span>
|
||||
</span>
|
||||
</strong>
|
||||
<br/>
|
||||
<strong>Number of transactions: <t t-esc="nbr_orders" /></strong>
|
||||
<strong>Number of transactions: <span t-out="nbr_orders">10</span></strong>
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-sm">
|
||||
<thead><tr>
|
||||
<th class="text-start">Name</th>
|
||||
@@ -397,43 +400,43 @@
|
||||
<t t-foreach="payments" t-as="method">
|
||||
<t t-if="method['count']">
|
||||
<tr>
|
||||
<td><strong><t t-esc="method['name']"/></strong></td>
|
||||
<td><strong><span t-out="method['name']">Cash</span></strong></td>
|
||||
<td/>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="method['final_count']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="method['final_count']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<span t-out="method['final_count']" t-options="{'widget': 'float', 'precision': currency['precision']}">100.00</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="method['final_count']" t-options="{'widget': 'float', 'precision': currency['precision']}">100.00</span>
|
||||
</span>
|
||||
</td>
|
||||
<td t-if="(state == 'closed' or state == 'multiple') and payments" class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="method['money_counted']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="method['money_counted']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<span t-out="method['money_counted']" t-options="{'widget': 'float', 'precision': currency['precision']}">95.00</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="method['money_counted']" t-options="{'widget': 'float', 'precision': currency['precision']}">95.00</span>
|
||||
</span>
|
||||
</td>
|
||||
<td t-if="(state == 'closed' or state == 'multiple') and payments" class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="method['money_difference']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="method['money_difference']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<span t-out="method['money_difference']" t-options="{'widget': 'float', 'precision': currency['precision']}">5.00</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="method['money_difference']" t-options="{'widget': 'float', 'precision': currency['precision']}">5.00</span>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr t-if="(state == 'closed' or state == 'multiple') and payments" t-foreach="method['cash_moves']" t-as="move">
|
||||
<td/>
|
||||
<td><t t-esc="move['name']"/></td>
|
||||
<td><span t-out="move['name']">Cash Move 1</span></td>
|
||||
<td class="text-end">
|
||||
<t t-if="currency['position']">
|
||||
<t t-esc="move['amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/><t t-esc='currency["symbol"]' />
|
||||
</t>
|
||||
<t t-else="" >
|
||||
<t t-esc='currency["symbol"]' /><t t-esc="move['amount']" t-options="{'widget': 'float', 'precision': currency['precision']}"/>
|
||||
</t>
|
||||
<span t-if="currency['position']">
|
||||
<span t-out="move['amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">50.00</span><span t-out='currency["symbol"]'>$</span>
|
||||
</span>
|
||||
<span t-else="">
|
||||
<span t-out='currency["symbol"]'>$</span><span t-out="move['amount']" t-options="{'widget': 'float', 'precision': currency['precision']}">50.00</span>
|
||||
</span>
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
@@ -442,18 +445,19 @@
|
||||
</t>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
<div t-if="opening_note or closing_note" style="break-inside: avoid;">
|
||||
<br/>
|
||||
<br/>
|
||||
<t t-if="opening_note" id="opening_note">
|
||||
<span t-if="opening_note" id="opening_note">
|
||||
<strong>Opening of session note:</strong>
|
||||
<p t-esc="opening_note" t-options="{'widget': 'text'}"/>
|
||||
</t>
|
||||
<span t-out="opening_note" t-options="{'widget': 'text'}">Sample Opening Note</span>
|
||||
</span>
|
||||
<br/>
|
||||
<t t-if="closing_note" id="closing_note">
|
||||
<span t-if="closing_note" id="closing_note">
|
||||
<strong>End of session note:</strong>
|
||||
<p t-esc="closing_note" t-options="{'widget': 'text'}"/>
|
||||
</t>
|
||||
<span t-out="closing_note" t-options="{'widget': 'text'}">Sample Closing Note</span>
|
||||
</span>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
@@ -3,24 +3,30 @@
|
||||
<template id="report_userlabel">
|
||||
<t t-call="web.basic_layout">
|
||||
<div class="page">
|
||||
<div class="oe_structure"></div>
|
||||
<t t-foreach="docs" t-as="user">
|
||||
<div class="col-6 mb92">
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-4 danger"/>
|
||||
<th class="active"/>
|
||||
<th class="col-4 danger">Badge ID</th>
|
||||
<th class="active">Name</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><div t-if="user.barcode" t-field="user.barcode" t-options="{'widget': 'barcode', 'symbology': 'EAN13', 'width': 300, 'height': 50, 'img_style': 'width:100%;height:35%;'}"/></td>
|
||||
<td><strong t-field="user.name"/></td>
|
||||
<td>
|
||||
<span t-if="user.barcode" t-field="user.barcode" t-options="{'widget': 'barcode', 'symbology': 'EAN13', 'width': 300, 'height': 50, 'img_style': 'width:100%;height:35%;'}">1234567890</span>
|
||||
</td>
|
||||
<td><strong><span t-field="user.name">Marc Demo</span></strong></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
@@ -4,25 +4,27 @@
|
||||
<template id="report_packagingbarcode">
|
||||
<t t-call="web.basic_layout">
|
||||
<div class="page">
|
||||
<div class="oe_structure"></div>
|
||||
<t t-foreach="docs" t-as="packaging">
|
||||
<div class="col-4" style="padding:0;">
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-condensed" style="border-bottom: 0px solid white !important;width: 3in;">
|
||||
<tr>
|
||||
<th style="text-align: left;">
|
||||
<strong t-field="packaging.name"/>
|
||||
<strong><span t-field="packaging.name">Package Type A</span></strong>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<strong t-field="packaging.product_id.display_name"/>
|
||||
<strong><span t-field="packaging.product_id.display_name">Eco-friendly Wooden Chair</span></strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<div class="o_row">
|
||||
<strong>Qty: </strong>
|
||||
<strong t-field="packaging.qty"/>
|
||||
<strong t-field="packaging.product_uom_id" groups="uom.group_uom"/>
|
||||
<strong><span t-field="packaging.qty">10</span></strong>
|
||||
<strong><span t-field="packaging.product_uom_id" groups="uom.group_uom">Units</span></strong>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,13 +32,15 @@
|
||||
<tr>
|
||||
<td style="text-align: center; vertical-align: middle;" class="col-5">
|
||||
<div t-field="packaging.barcode" t-options="{'widget': 'barcode', 'symbology': 'auto', 'width': 600, 'height': 150, 'img_style': 'width:100%;height:20%;'}"/>
|
||||
<span t-field="packaging.barcode"/>
|
||||
<span t-field="packaging.barcode">123456789012</span>
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
@@ -3,19 +3,21 @@
|
||||
|
||||
<template id="report_pricelist_page">
|
||||
<div class="container bg-white p-4 my-4">
|
||||
<div class="oe_structure"></div>
|
||||
<div class="row my-3" t-if="display_pricelist_title">
|
||||
<div class="col-12">
|
||||
<h2 t-if="is_html_type">
|
||||
Pricelist:
|
||||
<a href="#" class="o_action" data-model="product.pricelist" t-att-data-res-id="pricelist.id">
|
||||
<t t-out="pricelist.display_name"/>
|
||||
<span t-field="pricelist.display_name">Gold Member Pricelist</span>
|
||||
</a>
|
||||
</h2>
|
||||
<h2 t-else="">
|
||||
Pricelist: <t t-out="pricelist.display_name"/>
|
||||
Pricelist: <span t-field="pricelist.display_name">Gold Member Pricelist</span>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<table class="table table-sm">
|
||||
@@ -23,9 +25,9 @@
|
||||
<th class="text-end" colspan="100%">Quantities (Price)</th>
|
||||
<tr>
|
||||
<th>Products</th>
|
||||
<th groups="uom.group_uom">UoM</th>
|
||||
<th groups="uom.group_uom">UOM</th>
|
||||
<t t-foreach="quantities" t-as="qty">
|
||||
<th class="text-end"><t t-out="qty"/></th>
|
||||
<th class="text-end"><span t-out="qty">10 Units</span></th>
|
||||
</t>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -34,16 +36,14 @@
|
||||
<tr>
|
||||
<td t-att-class="is_product_tmpl and 'fw-bold' or None">
|
||||
<a t-if="is_html_type" href="#" class="o_action" t-att-data-model="is_product_tmpl and 'product.template' or 'product.product'" t-att-data-res-id="product['id']">
|
||||
<t t-out="product['name']"/>
|
||||
<span t-out="product['name']">Virtual Interior Design</span>
|
||||
</a>
|
||||
<t t-else="">
|
||||
<t t-out="product['name']"/>
|
||||
</t>
|
||||
<span t-else="" t-out="product['name']">Acme Widget</span>
|
||||
</td>
|
||||
<td groups="uom.group_uom" t-out="product['uom']"/>
|
||||
<t t-foreach="quantities" t-as="qty">
|
||||
<td class="text-end">
|
||||
<t t-out="product['price'][qty]" t-options='{"widget": "monetary", "display_currency": pricelist.currency_id}'/>
|
||||
<span t-out="product['price'][qty]" t-options='{"widget": "monetary", "display_currency": pricelist.currency_id}'>$15.00</span>
|
||||
</td>
|
||||
</t>
|
||||
</tr>
|
||||
@@ -51,14 +51,14 @@
|
||||
<tr t-foreach="product['variants']" t-as="variant">
|
||||
<td>
|
||||
<a t-if="is_html_type" href="#" class="o_action ms-4" data-model="product.product" t-att-data-res-id="variant['id']">
|
||||
<t t-out="variant['name']"/>
|
||||
<span t-out="variant['name']">Acme Widget - Blue</span>
|
||||
</a>
|
||||
<span t-else="" class="ms-4" t-out="variant['name']"/>
|
||||
<span t-else="" class="ms-4" t-out="variant['name']">Acme Widget - Blue</span>
|
||||
</td>
|
||||
<td groups="uom.group_uom" t-out="product['uom']"/>
|
||||
<t t-foreach="quantities" t-as="qty">
|
||||
<td class="text-end">
|
||||
<t t-out="variant['price'][qty]" t-options='{"widget": "monetary", "display_currency": pricelist.currency_id}'/>
|
||||
<span t-out="variant['price'][qty]" t-options='{"widget": "monetary", "display_currency": pricelist.currency_id}'>$14.00</span>
|
||||
</td>
|
||||
</t>
|
||||
</tr>
|
||||
@@ -68,6 +68,7 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -77,6 +78,7 @@
|
||||
<t t-call="product.report_pricelist_page"/>
|
||||
</div>
|
||||
<p style="page-break-before:always;"> </p>
|
||||
<div class="oe_structure"></div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<template id="report_lot_label_expiry" inherit_id="stock.report_lot_label">
|
||||
<xpath expr="//div[@name='lot_name']" position="after">
|
||||
<xpath expr="//span[@name='lot_name']" position="after">
|
||||
<t t-if="o.use_expiration_date">
|
||||
<div class="o_label_4x12" t-if="o.use_date">
|
||||
B.b. <t t-out="o.use_date" t-options='{"widget": "date"}'/>
|
||||
|
||||
@@ -5,36 +5,37 @@
|
||||
<t t-set="o" t-value="o.with_context(lang=o.vendor_id.lang)"/>
|
||||
<t t-call="web.external_layout">
|
||||
<t t-set="address">
|
||||
<div t-field="o.vendor_id"
|
||||
t-options='{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True, "phone_icons": True}'/>
|
||||
<p t-if="o.vendor_id.vat"><t t-esc="o.company_id.account_fiscal_country_id.vat_label or 'Tax ID'"/>: <span t-field="o.vendor_id.vat"/></p>
|
||||
<span t-field="o.vendor_id"
|
||||
t-options='{"widget": "contact", "fields": ["address", "name", "phone"], "no_marker": True, "phone_icons": True}'>VAT123</span>
|
||||
<p t-if="o.vendor_id.vat"><t t-out="o.company_id.account_fiscal_country_id.vat_label or 'Tax ID'"/>: <span t-field="o.vendor_id.vat">VAT_DEMO</span></p>
|
||||
</t>
|
||||
<div class="page">
|
||||
<div class="oe_structure"/>
|
||||
|
||||
<h2><span t-out="o.type_id.name"/> <span t-field="o.name"/></h2>
|
||||
<h2><span t-out="o.type_id.name">VAT</span> <span t-field="o.name">Type Demo</span></h2>
|
||||
|
||||
<div class="row my-2">
|
||||
<div class="col-3">
|
||||
<strong><span t-out="o.type_id.name"/> Reference:</strong><br/>
|
||||
<span t-field="o.name"/>
|
||||
<strong><span t-out="o.type_id.name">Reference:</span></strong><br/>
|
||||
<span t-field="o.name">Reference Demo</span>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<strong>Scheduled Ordering Date:</strong><br/>
|
||||
<span t-field="o.ordering_date"/>
|
||||
<span t-field="o.ordering_date">2023-08-20</span>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<strong>Agreement Deadline:</strong><br/>
|
||||
<span t-field="o.date_end"/>
|
||||
<span t-field="o.date_end">2023-09-15</span>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<strong>Source:</strong><br/>
|
||||
<span t-field="o.origin"/>
|
||||
<span t-field="o.origin">Origin Demo</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<t t-if="o.line_ids">
|
||||
<h3>Products</h3>
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -51,27 +52,25 @@
|
||||
<tbody>
|
||||
<tr t-foreach="o.line_ids" t-as="line_ids">
|
||||
<td>
|
||||
<t t-if="line_ids.product_id.code"><!--internal reference exists-->
|
||||
[ <span t-field="line_ids.product_id.code"/> ]
|
||||
</t>
|
||||
<span t-field="line_ids.product_id.name"/>
|
||||
<span t-if="line_ids.product_id.code"><!--internal reference exists-->
|
||||
[ <span t-field="line_ids.product_id.code">Code</span> ]
|
||||
</span>
|
||||
<span t-field="line_ids.product_id.name">Product</span>
|
||||
</td>
|
||||
<td>
|
||||
<span t-field="line_ids.product_description_variants"/>
|
||||
<span t-field="line_ids.product_description_variants">Description Demo</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="line_ids.product_qty"/>
|
||||
<span t-field="line_ids.product_qty">5</span>
|
||||
</td>
|
||||
<td class="text-center" groups="uom.group_uom">
|
||||
<span t-field="line_ids.product_uom_id.name">Unit</span>
|
||||
</td>
|
||||
<t>
|
||||
<td class="text-center" groups="uom.group_uom">
|
||||
<span t-field="line_ids.product_uom_id.name"/>
|
||||
</td>
|
||||
</t>
|
||||
<td t-if="o.type_id == env.ref('purchase_requisition.type_single')">
|
||||
<span t-field="line_ids.price_unit" t-options='{"widget": "monetary", "display_currency": line_ids.requisition_id.currency_id}'/>
|
||||
<span t-field="line_ids.price_unit" t-options='{"widget": "monetary", "display_currency": line_ids.requisition_id.currency_id}'>Price</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="line_ids.schedule_date"/>
|
||||
<span t-field="line_ids.schedule_date">2023-08-11</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -91,13 +90,13 @@
|
||||
<tbody>
|
||||
<tr t-foreach="o.purchase_ids" t-as="purchase_ids">
|
||||
<td>
|
||||
<span t-field="purchase_ids.partner_id.name"/>
|
||||
<span t-field="purchase_ids.partner_id.name">Vendor Name</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="purchase_ids.date_order"/>
|
||||
<span t-field="purchase_ids.date_order">2023-08-15</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="purchase_ids.name"/>
|
||||
<span t-field="purchase_ids.name">Reference Demo</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -6,36 +6,39 @@
|
||||
<t t-call="web.external_layout">
|
||||
<t t-set="o" t-value="o.with_context(lang=o.partner_id.lang)" />
|
||||
<div class="page">
|
||||
<div class="oe_structure"/>
|
||||
<h2>
|
||||
<span>Repair Order #:</span>
|
||||
<span t-field="o.name"/>
|
||||
<span t-field="o.name">RO123456</span>
|
||||
</h2>
|
||||
<div class="oe_structure"/>
|
||||
<div id="informations" class="row mb-3">
|
||||
<div class="col-6">
|
||||
<p t-if="o.partner_id" class="m-0">
|
||||
<strong>Customer:</strong>
|
||||
<span t-field="o.partner_id"/>
|
||||
<span t-field="o.partner_id">John Doe</span>
|
||||
</p>
|
||||
<p t-if="o.product_id" class="m-0">
|
||||
<strong>Product:</strong>
|
||||
<span t-field="o.product_id"/>
|
||||
<span t-field="o.product_id">Laptop</span>
|
||||
</p>
|
||||
<p t-if="o.lot_id" class="m-0" groups="stock.group_production_lot">
|
||||
<strong>Lot/Serial:</strong>
|
||||
<span t-field="o.lot_id"/>
|
||||
<span t-field="o.lot_id">L12345</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p class="m-0">
|
||||
<strong>Status:</strong>
|
||||
<span t-field="o.state"/>
|
||||
<span t-field="o.state">Pending</span>
|
||||
</p>
|
||||
<p t-if="o.user_id" class="m-0">
|
||||
<strong>Responsible:</strong>
|
||||
<span t-field="o.user_id"/>
|
||||
<span t-field="o.user_id">Jane Smith</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"/>
|
||||
<h2 class="mb-3 border-bottom border-2 border-dark">Parts</h2>
|
||||
<table class="table table-sm o_main_table">
|
||||
<thead>
|
||||
@@ -45,24 +48,23 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<t t-if="o.move_ids">
|
||||
<tr t-foreach="o.move_ids" t-as="line">
|
||||
<td>
|
||||
<p t-if="line.repair_line_type == 'add'"><i>(Add)</i> <span t-field="line.product_id" /></p>
|
||||
<p t-if="line.repair_line_type == 'remove'">(<i>Remove</i>) <span t-field="line.product_id"/></p>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="line.product_uom_qty"/>
|
||||
<span groups="uom.group_uom" t-field="line.product_uom.name"/>
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
<tr t-foreach="o.move_ids" t-as="line">
|
||||
<td>
|
||||
<p t-if="line.repair_line_type == 'add'"><i>(Add)</i> <span t-field="line.product_id">Product A</span></p>
|
||||
<p t-if="line.repair_line_type == 'remove'">(<i>Remove</i>) <span t-field="line.product_id">Product B</span></p>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="line.product_uom_qty">5</span>
|
||||
<span groups="uom.group_uom" t-field="line.product_uom.name">Units</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="oe_structure"/>
|
||||
<div t-if="o.internal_notes">
|
||||
<h2 class="mb-3 border-bottom border-2 border-dark">Repair Notes</h2>
|
||||
<p t-field="o.internal_notes"/>
|
||||
<span t-field="o.internal_notes">This is a repair note.</span>
|
||||
</div>
|
||||
<div class="oe_structure"/>
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<template id="report_generic_barcode">
|
||||
<t t-call="web.basic_layout">
|
||||
<t t-call="web.html_container">
|
||||
<div class="oe_structure"></div>
|
||||
<t t-set="nRows" t-value="7"/>
|
||||
<t t-set="nCols" t-value="4"/>
|
||||
<t t-foreach="[docs[x:x + nRows * nCols] for x in range(0, len(docs), nRows * nCols)]" t-as="page_docs">
|
||||
@@ -19,11 +20,11 @@
|
||||
<td>
|
||||
<div class="o_label_full" style="width:47mm;height:37.1mm;border: 1px solid black;">
|
||||
<div class="o_label_name text-center">
|
||||
<strong t-field="o.name"/>
|
||||
<strong><span t-field="o.name">WH/Stock</span></strong>
|
||||
</div>
|
||||
<div class="text-center mt-3">
|
||||
<div t-if="o.barcode" t-field="o.barcode" style="padding:0"
|
||||
t-options="{'widget': 'barcode', 'humanreadable': 1, 'symbology': 'auto', 'img_style': 'width:47mm;height:11mm'}"/>
|
||||
<span t-if="o.barcode" t-field="o.barcode" style="padding:0"
|
||||
t-options="{'widget': 'barcode', 'humanreadable': 1, 'symbology': 'auto', 'img_style': 'width:47mm;height:11mm'}">1234567890</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
@@ -35,6 +36,7 @@
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
<div class="oe_structure"></div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<t t-call="web.basic_layout">
|
||||
<t t-set='nRows' t-value='12'/>
|
||||
<t t-set='nCols' t-value='4'/>
|
||||
<div class="oe_structure"></div>
|
||||
<div t-foreach="[docs[x:x + nRows * nCols] for x in range(0, len(docs), nRows * nCols)]" t-as="page_docs" class="o_label_sheet" t-att-style="'padding: 20mm 8mm'">
|
||||
<table class="my-0 table table-sm table-borderless">
|
||||
<t t-foreach="range(nRows)" t-as="row">
|
||||
@@ -18,21 +19,22 @@
|
||||
<t t-set="o" t-value="page_docs[0]"/>
|
||||
</t>
|
||||
<td t-att-style="barcode_index >= len(page_docs) and 'visibility:hidden'">
|
||||
<div t-att-style="'position:relative; width:43mm; height:19mm; border: 1px solid %s;' % (o.env.user.company_id.primary_color or 'black')">
|
||||
<div t-att-style="'position:relative; width:43mm; height:34mm; border: 1px solid %s;' % (o.env.user.company_id.primary_color or 'black')">
|
||||
<t t-set="final_barcode" t-value="''"/>
|
||||
<t t-if="env.user.has_group('stock.group_stock_lot_print_gs1')">
|
||||
<t t-if="o.product_id.valid_ean" t-set="final_barcode" t-value="'01' + '0' * (14 - len(o.product_id.barcode)) + o.product_id.barcode"/>
|
||||
<t name="gs1_datamatrix_lot" t-if="o.product_id.tracking == 'lot'" t-set="final_barcode" t-value="(final_barcode or '') + '10' + o.name"/>
|
||||
<t t-elif="o.product_id.tracking == 'serial'" t-set="final_barcode" t-value="(final_barcode or '') + '21' + o.name"/>
|
||||
</t>
|
||||
<div class="o_label_4x12" t-if="o.product_id.default_code" t-att-style="'width:22mm' if final_barcode else ''">[<t t-out="o.product_id.default_code"/>]</div>
|
||||
<div class="o_label_4x12" t-field="o.product_id.name" t-att-style="'width:22mm' if final_barcode else ''"/>
|
||||
<div class="o_label_4x12" name="lot_name" t-field="o.name" t-att-style="'width:22mm' if final_barcode else ''"/>
|
||||
<span class="o_label_4x12" t-field="o.product_id.display_name" t-att-style="'width:22mm' if final_barcode else ''">Demo Product</span>
|
||||
<span class="o_label_4x12" name="lot_name" t-field="o.name" t-att-style="'width:22mm' if final_barcode else ''">Demo Name</span>
|
||||
<t t-if="env.user.has_group('stock.group_stock_lot_print_gs1')">
|
||||
<div t-if="final_barcode" t-att-style="'position:absolute; right:.5px; bottom:.5px'" t-out="final_barcode" t-options="{'widget': 'barcode', 'symbology': 'ECC200DataMatrix', 'img_style': 'width:17mm; height:17mm'}"/>
|
||||
<div t-if="final_barcode" t-att-style="'position:absolute; right:.5px; bottom:.5px'">
|
||||
<span t-out="final_barcode" t-options="{'widget': 'barcode', 'symbology': 'ECC200DataMatrix', 'img_style': 'width:17mm; height:17mm'}">12345678901</span>
|
||||
</div>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div t-field="o.name" t-options="{'widget': 'barcode', 'img_style': 'width:100%; height:35%'}"/>
|
||||
<span t-field="o.name" t-options="{'widget': 'barcode', 'img_style': 'width:100%; height:35%'}">Customizable Desk</span>
|
||||
</t>
|
||||
</div>
|
||||
</td>
|
||||
@@ -40,6 +42,7 @@
|
||||
</tr>
|
||||
</t>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
@@ -29,18 +29,18 @@
|
||||
(package barcode)
|
||||
</div>
|
||||
</div>
|
||||
<p t-field="o.name">Package Reference</p>
|
||||
<span t-field="o.name">Package Reference</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
<div class="row mt32 mb32">
|
||||
<div t-if="o.pack_date" class="col-auto">
|
||||
<strong>Pack Date:</strong>
|
||||
<p t-field="o.pack_date">2021-9-01</p>
|
||||
<span t-field="o.pack_date">2021-9-01</span>
|
||||
</div>
|
||||
<div t-if="o.package_type_id" class="o_packaging_type col-auto">
|
||||
<strong>Package Type:</strong>
|
||||
<p t-field="o.package_type_id.name">Pallet</p>
|
||||
<span t-field="o.package_type_id.name">Pallet</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"></div>
|
||||
@@ -59,7 +59,7 @@
|
||||
<tbody>
|
||||
<tr t-foreach="o.quant_ids" t-as="l">
|
||||
<td>
|
||||
<span t-field="l.product_id.name">Customizable Desk</span>
|
||||
<span t-field="l.product_id.name">Customizable Desk</span>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="l.quantity">3.00</span>
|
||||
@@ -114,26 +114,29 @@
|
||||
<div class="row">
|
||||
<t t-set="barcode" t-value="'00' + o.name"/>
|
||||
<t t-if="o.pack_date" t-set="barcode" t-value="barcode + '13' + o.pack_date.strftime('%y%m%d')"/>
|
||||
<div class="col-5 text-end" name="datamatrix_barcode" style="margin: 0px 20px 40px 60px" t-out="barcode" t-options="{'widget': 'barcode', 'symbology': 'ECC200DataMatrix', 'width': 200, 'height': 200}"/>
|
||||
<div class="col-5 text-end" name="datamatrix_barcode" style="margin: 0px 20px 40px 60px">
|
||||
<span t-out="barcode" t-options="{'widget': 'barcode', 'symbology': 'ECC200DataMatrix', 'width': 200, 'height': 200}">Barcode Demo</span>
|
||||
</div>
|
||||
<div class="col-7 text-start" style="font-size:20px;">
|
||||
<div class="row">SSCC: <span t-field="o.name"/></div>
|
||||
<div t-if="o.pack_date" class="row">Pack Date: <span t-field="o.pack_date"/></div>
|
||||
<div t-if="o.package_type_id" class="row" name="datamatrix_pack_type">Package Type: <span t-field="o.package_type_id.name"/></div>
|
||||
<div class="row">SSCC: <span t-field="o.name">SSCC Demo</span></div>
|
||||
<div t-if="o.pack_date" class="row">Pack Date: <span t-field="o.pack_date">Pack Date Demo</span></div>
|
||||
<div t-if="o.package_type_id" class="row" name="datamatrix_pack_type">Package Type: <span t-field="o.package_type_id.name">Package Type Demo</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div class="row">
|
||||
<div class="text-center col-12">
|
||||
<div t-field="o.name" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:600px;height:100px;'}"/>
|
||||
<div t-field="o.name" style="font-size:20px;"/>
|
||||
<span t-field="o.name" t-options="{'widget': 'barcode', 'width': 600, 'height': 100, 'img_style': 'width:600px;height:100px;'}">Name Demo</span>
|
||||
<span t-field="o.name" style="font-size:20px; margin:100px;">Name Demo</span>
|
||||
</div>
|
||||
</div>
|
||||
<div t-if="o.pack_date" class="col-12 text-center" style="font-size:24px; font-weight:bold;">Pack Date: <span t-field="o.pack_date"/></div>
|
||||
<div t-if="o.pack_date" class="col-12 text-center" style="font-size:24px; font-weight:bold;">Pack Date: <span t-field="o.pack_date">2023-01-01</span></div>
|
||||
<div class="row o_packaging_type" t-if="o.package_type_id">
|
||||
<div class="col-12 text-center" style="font-size:24px; font-weight:bold;"><span>Package Type: </span><span t-field="o.package_type_id.name"/></div>
|
||||
<div class="col-12 text-center" style="font-size:24px; font-weight:bold;"><span>Package Type: </span><span t-field="o.package_type_id.name">Package Type Demo</span></div>
|
||||
</div>
|
||||
</t>
|
||||
<div class="oe_structure"/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
@@ -9,26 +9,27 @@
|
||||
<div class="row mt8">
|
||||
<div class="col-8">
|
||||
<h2>
|
||||
<span>RETURN OF <t t-out="o.name"/></span>
|
||||
<span>RETURN OF <span t-out="o.name">Default Return Name</span></span>
|
||||
</h2>
|
||||
<p>
|
||||
Please put this document inside your return parcel.<br/>
|
||||
Your parcel must be sent to this address:
|
||||
</p>
|
||||
<div t-field="o.location_id.warehouse_id.partner_id"
|
||||
t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}'/>
|
||||
<span t-field="o.location_id.warehouse_id.partner_id"
|
||||
t-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": True}'>Demo Address and Name</span>
|
||||
</div>
|
||||
<div class="col-4 text-center mt-4">
|
||||
<div>
|
||||
<div t-field="o.name" t-options="{'widget': 'barcode', 'img_style': 'width:100%;'}"/>
|
||||
<span t-field="o.name"/>
|
||||
<span t-field="o.name" t-options="{'widget': 'barcode', 'img_style': 'width:100%;'}">Default Barcode Name</span>
|
||||
<span t-out="o.name">Default Name</span>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<div t-out="'O-BTN.return'" t-options="{'widget': 'barcode', 'img_style': 'width:100%;'}" />
|
||||
<span t-out="'O-BTN.return'" t-options="{'widget': 'barcode', 'img_style': 'width:100%;'}">Default O-BTN.return Barcode</span>
|
||||
<span>O-BTN.return</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_structure"/>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
<t t-set="source" t-value="move._get_source_document()"/>
|
||||
<t t-foreach="range(qty)" t-as="j">
|
||||
<div class="o_label_page o_label_dymo">
|
||||
<div t-out="move.product_id.display_name"/>
|
||||
<div t-if="source" t-out="source.name"/>
|
||||
<span t-out="move.product_id.display_name">Product Display Name</span> <br/>
|
||||
<span t-if="source" t-out="source.name">Source Name</span>
|
||||
<div class="address"
|
||||
t-if="move.picking_id and move.picking_id.partner_id"
|
||||
t-field="move.picking_id.partner_id"
|
||||
@@ -48,15 +48,15 @@
|
||||
<t t-foreach="docs" t-as="doc">
|
||||
<div class="p-2">
|
||||
<a href="#" t-att-res-model="doc_model" view-type="form" t-att-res-id="doc.id">
|
||||
<t t-esc="doc.display_name"/>
|
||||
<span t-out="doc.display_name">Demo Display Name</span>
|
||||
</a>
|
||||
<span t-field="doc.display_name" t-options="{'widget': 'barcode', 'width': 300, 'height': 50}"/>
|
||||
<span t-field="doc.state" t-attf-class="badge rounded-pill bg-opacity-50 #{'bg-success' if doc.state == 'done' else 'bg-info'}"/>
|
||||
<span t-field="doc.display_name" t-options="{'widget': 'barcode', 'width': 300, 'height': 50}">Display Name</span>
|
||||
<span t-field="doc.state" t-attf-class="badge rounded-pill bg-opacity-50 #{'bg-success' if doc.state == 'done' else 'bg-info'}">Andrwep</span>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<span t-esc="reason"/>
|
||||
<span t-out="reason">Reason</span>
|
||||
</t>
|
||||
</h3>
|
||||
</div>
|
||||
@@ -65,21 +65,22 @@
|
||||
<thead t-if="any(line['is_assigned'] for line in sources_to_lines[source])">
|
||||
<tr class="bg-light">
|
||||
<th>
|
||||
<span t-field="source[0].display_name" t-options="{'widget': 'barcode', 'width': 200, 'height': 30}"/>
|
||||
<span t-field="source[0].display_name" t-options="{'widget': 'barcode', 'width': 200, 'height': 30}">Display Name</span>
|
||||
<i t-if="source[0].priority == '1'" class="o_priority o_priority_star fa fa-star"/>
|
||||
<a name="source_link" href="#" t-att-res-model="source[0]._name" view-type="form" t-att-res-id="source[0].id" t-out="source[0].display_name"/>
|
||||
<a name="source_link" href="#" t-att-res-model="source[0]._name" view-type="form" t-att-res-id="source[0].id">
|
||||
<span t-out="source[0].display_name">DEMO_SOURCE_DISPLAY_NAME</span>
|
||||
</a>
|
||||
<span t-if="len(source) > 1">
|
||||
(<a name="origin_link" href="#" t-att-res-model="source[1]._name" view-type="form" t-att-res-id="source[1].id" t-out="source[1].display_name"/>)
|
||||
(<a name="origin_link" href="#" t-att-res-model="source[1]._name" view-type="form" t-att-res-id="source[1].id">
|
||||
<span t-out="source[1].display_name">DEMO_ORIGIN_DISPLAY_NAME</span></a>)
|
||||
</span>
|
||||
<span t-if="source[0]._name == 'stock.picking' and source[0].partner_id">:
|
||||
<a name="source_link" href="#"
|
||||
t-att-res-model="source[0].partner_id._name"
|
||||
t-att-res-id="source[0].partner_id.id"
|
||||
view-type="form"
|
||||
t-out="source[0].partner_id.name"/>
|
||||
<a name="source_link" href="#" t-att-res-model="source[0].partner_id._name" t-att-res-id="source[0].partner_id.id" view-type="form">
|
||||
<span t-out="source[0].partner_id.name">DEMO_PARTNER_NAME</span>
|
||||
</a>
|
||||
</span>
|
||||
</th>
|
||||
<th>Expected Delivery: <t t-esc="sources_to_formatted_scheduled_date[source]"/></th>
|
||||
<th>Expected Delivery: <span t-out="sources_to_formatted_scheduled_date[source]">DEMO_DATE</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -88,11 +89,11 @@
|
||||
<!-- don't print non-assigned lines when printing pdf -->
|
||||
<tr t-if="line['is_assigned']">
|
||||
<td>
|
||||
<t t-esc="line['product']['display_name']"/>
|
||||
<span t-out="line['product']['display_name']">DEMO_PRODUCT_DISPLAY_NAME</span>
|
||||
</td>
|
||||
<td>
|
||||
<t t-esc="line['quantity']"/>
|
||||
<t groups="uom.group_uom" t-esc="line['uom']"/>
|
||||
<span t-out="line['quantity']">DEMO_QUANTITY</span>
|
||||
<span groups="uom.group_uom" t-out="line['uom']">DEMO_UOM</span>
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
|
||||
@@ -3,11 +3,13 @@
|
||||
<data>
|
||||
<template id="report_inventory">
|
||||
<t t-call="web.html_container">
|
||||
<div class="oe_structure"></div>
|
||||
<t t-call="web.external_layout">
|
||||
<div class="page">
|
||||
<br/>
|
||||
<h2>Inventory Count Sheet</h2>
|
||||
<t t-set="locations" t-value="docs.mapped('location_id')"/>
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -23,28 +25,29 @@
|
||||
<tbody>
|
||||
<t t-foreach="locations" t-as="location">
|
||||
<tr groups="stock.group_stock_multi_locations">
|
||||
<td colspan="2"><strong t-esc="location.display_name"/></td>
|
||||
<td colspan="2"><span t-out="location.display_name">Shelf A</span></td>
|
||||
<td groups="stock.group_production_lot"></td>
|
||||
<td groups="stock.group_tracking_lot"></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr t-foreach="docs.filtered(lambda quant: quant.location_id.id == location.id)" t-as="line">
|
||||
<td groups="stock.group_stock_multi_locations"></td>
|
||||
<td><span t-field="line.product_id"/></td>
|
||||
<td groups="stock.group_production_lot"><span t-field="line.lot_id"/></td>
|
||||
<td groups="stock.group_tracking_lot"><span t-field="line.package_id"/></td>
|
||||
<td class="text-end"><span t-field="line.available_quantity"/> <span t-field="line.product_uom_id" groups="uom.group_uom"/></td>
|
||||
<td class="text-end"><span t-field="line.quantity"/> <span t-field="line.product_uom_id" groups="uom.group_uom"/></td>
|
||||
<td><span t-field="line.product_id">Laptop</span></td>
|
||||
<td groups="stock.group_production_lot"><span t-field="line.lot_id">4</span></td>
|
||||
<td groups="stock.group_tracking_lot"><span t-field="line.package_id">98</span></td>
|
||||
<td class="text-end"><span t-field="line.available_quantity">2</span> <span t-field="line.product_uom_id" groups="uom.group_uom">Units</span></td>
|
||||
<td class="text-end"><span t-field="line.quantity">5</span> <span t-field="line.product_uom_id" groups="uom.group_uom">Units</span></td>
|
||||
<td class="text-end">
|
||||
<!-- If 0, then leave blank so users have space to write a number -->
|
||||
<t t-if="line.inventory_quantity == 0"><span></span></t>
|
||||
<t t-else=""><span t-field="line.inventory_quantity"/></t>
|
||||
<span t-field="line.product_uom_id" groups="uom.group_uom"/>
|
||||
<t t-else=""><span t-field="line.inventory_quantity">7</span></t>
|
||||
<span t-field="line.product_uom_id" groups="uom.group_uom">Units</span>
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="oe_structure"></div>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<data>
|
||||
<template id="stock_picking_batch.report_picking_batch">
|
||||
<t t-call="web.html_container">
|
||||
<div class="oe_structure"></div>
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-set="move_line_ids" t-value="o.picking_ids.mapped('move_line_ids')"/>
|
||||
<t t-set="has_package" t-value="move_line_ids.filtered('result_package_id')" groups="stock.group_tracking_lot"/>
|
||||
@@ -12,15 +13,16 @@
|
||||
<t t-call="web.external_layout">
|
||||
<div class="page">
|
||||
<div class="d-flex">
|
||||
<div><h3>Summary: <span t-field="o.name"/></h3></div>
|
||||
<div><h3>Summary: <span t-field="o.name">Batch Name</span></h3></div>
|
||||
<div class="me-auto">
|
||||
<div t-field="o.name" t-options="{'widget': 'barcode', 'width': 600, 'height': 150, 'img_style': 'width:300px;height:50px;'}"/>
|
||||
<span t-field="o.name" t-options="{'widget': 'barcode', 'width': 600, 'height': 150, 'img_style': 'width:300px;height:50px;'}">Batch</span>
|
||||
</div>
|
||||
</div>
|
||||
<div t-if="o.user_id">
|
||||
<strong>Responsible:</strong>
|
||||
<span t-field="o.user_id"/>
|
||||
<span t-field="o.user_id">John Doe</span>
|
||||
</div><br/>
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -33,26 +35,28 @@
|
||||
<tbody>
|
||||
<tr t-foreach="o.picking_ids" t-as="pick">
|
||||
<td>
|
||||
<span t-field="pick.name"/>
|
||||
<span t-field="pick.name">Transfer Name</span>
|
||||
</td>
|
||||
<td>
|
||||
<div t-field="pick.name" t-options="{'widget': 'barcode', 'quiet': 0, 'width': 400, 'height': 100, 'img_style': 'width:200px;height:50px;'}"/>
|
||||
<span t-field="pick.name" t-options="{'widget': 'barcode', 'quiet': 0, 'width': 400, 'height': 100, 'img_style': 'width:200px;height:50px;'}">Transfer</span>
|
||||
</td>
|
||||
<td>
|
||||
<span t-field="pick.state"/>
|
||||
<span t-field="pick.state">Gujarat</span>
|
||||
</td>
|
||||
<td >
|
||||
<span t-field="pick.scheduled_date"/>
|
||||
<span t-field="pick.scheduled_date">2023-08-20</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p style="page-break-after: always;"/>
|
||||
<h3><span t-field="o.name"/></h3>
|
||||
<div class="oe_structure"></div>
|
||||
<h3><span t-field="o.name">Batch Name</span></h3>
|
||||
<div t-if="o.user_id">
|
||||
<strong>Responsible:</strong>
|
||||
<span t-field="o.user_id"/>
|
||||
<span t-field="o.user_id">John Doe</span>
|
||||
</div><br/>
|
||||
<div class="oe_structure"></div>
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -79,34 +83,32 @@
|
||||
<tr>
|
||||
<td style="background-color:lightgrey" colspan="6" >
|
||||
<p style="margin:0px"><strong>FROM</strong>
|
||||
<span t-esc="move_lines.location_id.display_name"/></p>
|
||||
<span t-out="move_lines.location_id.display_name">Location From Name</span></p>
|
||||
<p style="margin:0px"><strong>TO</strong>
|
||||
<span t-esc="move_lines.location_dest_id.display_name"/></p>
|
||||
<span t-out="move_lines.location_dest_id.display_name">Location To Name</span></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr t-foreach="move_lines" t-as="move_operation">
|
||||
<td>
|
||||
<span t-field="move_operation.display_name"/>
|
||||
<span t-field="move_operation.display_name">Product Name</span>
|
||||
</td>
|
||||
<td>
|
||||
<span t-esc="sum(move_operation.mapped('quantity'))"/>
|
||||
<span t-field="move_operation.uom_id" groups="move_operation.group_uom"/>
|
||||
<span t-esc="sum(move_operation.mapped('quantity'))">Quantity Done</span>
|
||||
<span t-field="move_operation.uom_id" groups="move_operation.group_uom">Unit of Measure</span>
|
||||
</td>
|
||||
<td>
|
||||
<span t-esc="move_operation.picking_id.display_name"/>
|
||||
<span t-out="move_operation.picking_id.display_name">Transfer Display Name</span>
|
||||
</td>
|
||||
<td t-if="has_serial_number" class="text-center h6" width="15%">
|
||||
<div t-if="move_operation.lot_id or move_operation.lot_name" t-field="move_operation.lot_id.name" t-options="{'widget': 'barcode', 'humanreadable': 1, 'width': 600, 'height': 100, 'img_style': 'width:100%;height:35px;'}"/>
|
||||
<span t-if="move_operation.lot_id or move_operation.lot_name" t-field="move_operation.lot_id.name" t-options="{'widget': 'barcode', 'humanreadable': 1, 'width': 600, 'height': 100, 'img_style': 'width:100%;height:35px;'}">Lot Number</span>
|
||||
</td>
|
||||
<td width="15%" class="text-center" t-if="has_barcode">
|
||||
<span t-if="move_operation.product_id and move_operation.product_id.barcode">
|
||||
<div t-field="move_operation.product_id.barcode" t-options="{'widget': 'barcode', 'symbology': 'auto', 'width': 600, 'height': 100, 'img_style': 'width:100%;height:35px;'}"/>
|
||||
</span>
|
||||
<span t-field="move_operation.product_id.barcode" t-options="{'widget': 'barcode', 'symbology': 'auto', 'width': 600, 'height': 100, 'img_style': 'width:100%;height:35px;'}">Product Barcode</span>
|
||||
</td>
|
||||
<td t-if="has_package" width="15%">
|
||||
<span t-field="move_operation.package_id"/>
|
||||
<span t-field="move_operation.package_id">Package ID</span>
|
||||
<t t-if="move_operation.result_package_id">
|
||||
<strong>→</strong> <span t-field="move_operation.result_package_id"/>
|
||||
<strong>→</strong> <span t-field="move_operation.result_package_id">Result Package ID</span>
|
||||
</t>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -35,10 +35,10 @@
|
||||
<t t-set="certif_style" t-value="certif_style + 'font-size: 30px; line-height: 4;'"/>
|
||||
</t>
|
||||
</t>
|
||||
<span t-att-style="certif_style" class="user-name" t-esc="certified_name"/>
|
||||
<span t-att-style="certif_style" class="user-name" t-out="certified_name">DEMO_CERTIFIED_NAME</span>
|
||||
|
||||
<br/> <span>by</span> <span class="certification-company" t-field="user_input.create_uid.company_id.display_name"/> <span>for successfully completing</span>
|
||||
<br/><b><span class="certification-name" t-field="user_input.survey_id.display_name"/></b>
|
||||
<br/> <span>by</span> <span class="certification-company" t-field="user_input.create_uid.company_id.display_name">Odoo</span> <span>for successfully completing</span>
|
||||
<br/><b><span class="certification-name" t-field="user_input.survey_id.display_name">Functional Training</span></b>
|
||||
</p>
|
||||
<div class="oe_structure"/>
|
||||
</div>
|
||||
@@ -52,7 +52,7 @@
|
||||
<div class="certification-bottom">
|
||||
<div class="oe_structure"/>
|
||||
<div class="certification-date-wrapper">
|
||||
<div class="certification-date" t-field="user_input.create_date" t-options='{"widget": "date"}'/>
|
||||
<span class="certification-date" t-field="user_input.create_date" t-options='{"widget": "date"}'>2023-08-18</span>
|
||||
<span>Date</span>
|
||||
</div>
|
||||
<div class="certification-company">
|
||||
@@ -61,7 +61,7 @@
|
||||
</div>
|
||||
<div t-if="user_input.test_entry" class="test-entry"/>
|
||||
<div class="certification-number" t-if="user_input.scoring_success">
|
||||
Certification n°<t t-esc="str(user_input.id).rjust(10, '0')"/>
|
||||
Certification n°<span t-out="str(user_input.id).rjust(10, '0')">0000000010</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user