[REF] *: BS5: migration

Automated change made by a lot of RegEx to change all think that is
possible to automate.

https://getbootstrap.com/docs/5.1/migration

Task ID: 2766483

Part-of: odoo/odoo#95450
This commit is contained in:
Romeo Fragomeli
2022-07-07 13:30:24 +02:00
parent 9b5c9484fe
commit 1fcd098af5
868 changed files with 4895 additions and 4876 deletions
@@ -35,15 +35,15 @@
font-weight: 500;
.o_account_dashboard_index {
color: gray('900');
color: map-get($grays, '900');
}
&.o_action_done {
color: gray('900');
background-color: gray('200');
color: map-get($grays, '900');
background-color: map-get($grays, '200');
&:after {
border-left-color: gray('200');
border-left-color: map-get($grays, '200');
}
.fa-check {
@@ -54,7 +54,7 @@
&:last-of-type {
margin-left: $o-horizontal-padding;
padding-left: $o-horizontal-padding*.5;
border-left: 1px solid gray('300');
border-left: 1px solid map-get($grays, '300');
}
}
}
@@ -113,7 +113,7 @@
.cell_action {
width: 15px;
color: gray('700');
color: map-get($grays, '700');
background: #fff;
border: 0;
text-align: center;
@@ -10,7 +10,7 @@
<t t-esc="activity.name"/>
</a>
</div>
<div class="col-4 text-right">
<div class="col-4 text-end">
<span><t t-esc="activity.date"/></span>
</div>
</div>
@@ -6,7 +6,7 @@
<div>
<t t-if="outstanding">
<div>
<strong class="float-left" id="outstanding" t-esc="title"/>
<strong class="float-start" id="outstanding" t-esc="title"/>
</div>
</t>
<table style="width:100%;">
@@ -20,7 +20,7 @@
t-att-data-id="line.id"
style="margin-right: 0px; padding-left: 5px; padding-right: 5px;"
href="#"
data-toggle="tooltip">Add</a>
data-bs-toggle="tooltip">Add</a>
</td>
<td style="max-width: 11em;">
<a t-att-title="line.date"
@@ -28,21 +28,21 @@
class="oe_form_field btn btn-link open_account_move"
t-att-move-id="line.move_id"
style="margin-right: 5px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; padding-left: 0px; width:100%; text-align:left;"
data-toggle="tooltip"
data-bs-toggle="tooltip"
t-att-payment-id="account_payment_id"
t-esc="line.journal_name"/>
</td>
</t>
<t t-if="!outstanding">
<td>
<a role="button" tabindex="0" class="js_payment_info fa fa-info-circle" t-att-index="line.index" style="margin-right:5px;" aria-label="Info" title="Journal Entry Info" data-toggle="tooltip"></a>
<a role="button" tabindex="0" class="js_payment_info fa fa-info-circle" t-att-index="line.index" style="margin-right:5px;" aria-label="Info" title="Journal Entry Info" data-bs-toggle="tooltip"></a>
</td>
<td t-if="!line.is_exchange">
<i class="o_field_widget text-left o_payment_label">Paid on <t t-esc="line.date"></t></i>
<i class="o_field_widget text-start o_payment_label">Paid on <t t-esc="line.date"></t></i>
</td>
<td t-if="line.is_exchange" colspan="2">
<i class="o_field_widget text-left text-muted text-left">
<span class="oe_form_field oe_form_field_float oe_form_field_monetary font-weight-bold">
<i class="o_field_widget text-start text-muted text-start">
<span class="oe_form_field oe_form_field_float oe_form_field_monetary fw-bold">
<t t-if="line.position === 'before'">
<t t-esc="line.currency"/>
</t>
@@ -102,8 +102,8 @@
</tr>
</table>
</div>
<button class="btn btn-sm btn-primary js_unreconcile_payment float-left" t-att-partial-id="partial_id" t-att-payment-id="payment_id" t-att-move-id="move_id" style="margin-top:5px; margin-bottom:5px;" groups="account.group_account_invoice">Unreconcile</button>
<button class="btn btn-sm btn-secondary js_open_payment float-right" t-att-payment-id="account_payment_id" t-att-move-id="move_id" style="margin-top:5px; margin-bottom:5px;">View</button>
<button class="btn btn-sm btn-primary js_unreconcile_payment float-start" t-att-partial-id="partial_id" t-att-payment-id="payment_id" t-att-move-id="move_id" style="margin-top:5px; margin-bottom:5px;" groups="account.group_account_invoice">Unreconcile</button>
<button class="btn btn-sm btn-secondary js_open_payment float-end" t-att-payment-id="account_payment_id" t-att-move-id="move_id" style="margin-top:5px; margin-bottom:5px;">View</button>
</t>
</templates>
@@ -103,7 +103,7 @@
<field name="allowed_journal_ids" optional="hide" widget="many2many_tags"/>
<field name="currency_id" options="{'no_create': True}" groups="base.group_multi_currency"/>
<field name="company_id" options="{'no_create': True}" groups="base.group_multi_company"/>
<button name="action_read_account" type="object" string="Setup" class="float-right btn-secondary"/>
<button name="action_read_account" type="object" string="Setup" class="float-end btn-secondary"/>
</tree>
</field>
</record>
@@ -123,8 +123,8 @@
<div class="col-6">
<strong><field name="name"/></strong>
</div>
<div class="col-6 text-right">
<span class="badge badge-pill"><t t-esc="record.code.value"/></span>
<div class="col-6 text-end">
<span class="badge rounded-pill"><t t-esc="record.code.value"/></span>
</div>
</div>
<div>
@@ -63,7 +63,7 @@
<div t-if="record.date_start.value"><i class="fa fa-calendar"></i> From <field name="date_start"/> <t t-if="record.date_stop.value">to <field name="date_stop"/></t></div>
<div t-if="record.product_id.value"><strong>Product</strong> <field name="product_id"/> </div>
<div t-if="record.partner_id.value"><strong>Customer</strong> <field name="partner_id"/> </div>
<div class="float-right">
<div class="float-end">
<field name="user_id" widget="many2one_avatar_user"/>
</div>
</div>
@@ -221,7 +221,7 @@
<div class="col-6 position-relative">
<field name="show_on_dashboard" widget="boolean_favorite" />
</div>
<div class="col-6 text-right mt-1">
<div class="col-6 text-end mt-1">
<a class="dropdown-item" t-if="widget.editable" type="edit">Configuration</a>
</div>
</div>
@@ -237,10 +237,10 @@
<field name="json_activity_data" widget="kanban_vat_activity"/>
<t t-if="dashboard.number_to_check > 0">
<div class="row">
<div class="col overflow-hidden text-left">
<div class="col overflow-hidden text-start">
<a type="object" name="open_action" context="{'action_name': 'action_move_journal_line', 'search_default_to_check': True}"><t t-esc="dashboard.number_to_check"/> to check</a>
</div>
<div class="col-auto text-right">
<div class="col-auto text-end">
<span><t t-esc="dashboard.to_check_balance"/></span>
</div>
</div>
@@ -272,27 +272,27 @@
<!-- On the right, show other common informations/actions -->
<div id="dashboard_bank_cash_right" class="col-12 col-sm-7 o_kanban_primary_right">
<div class="row" t-if="dashboard.nb_lines_bank_account_balance > 0">
<div id="dashboard_bank_cash_balance" class="col overflow-hidden text-left">
<div id="dashboard_bank_cash_balance" class="col overflow-hidden text-start">
<span title="Balance in General Ledger">Balance in GL</span>
</div>
<div class="col-auto text-right">
<div class="col-auto text-end">
<span><t t-esc="dashboard.account_balance"/></span>
</div>
</div>
<div class="row" t-if="dashboard.nb_lines_outstanding_pay_account_balance > 0">
<div id="dashboard_bank_cash_outstanding_balance" class="col overflow-hidden text-left">
<div id="dashboard_bank_cash_outstanding_balance" class="col overflow-hidden text-start">
<span title="Outstanding Payments/Receipts">Outstanding Payments/Receipts</span>
</div>
<div class="col-auto text-right">
<div class="col-auto text-end">
<span><t t-esc="dashboard.outstanding_pay_account_balance"/></span>
</div>
</div>
<t t-if="dashboard.has_at_least_one_statement and dashboard.account_balance != dashboard.last_balance">
<div class="row" name="latest_statement">
<div class="col overflow-hidden text-left">
<div class="col overflow-hidden text-start">
<span title="Latest Statement">Latest Statement</span>
</div>
<div class="col-auto text-right">
<div class="col-auto text-end">
<span><t t-esc="dashboard.last_balance"/></span>
</div>
</div>
@@ -323,18 +323,18 @@
</div>
<div class="col-12 col-sm-7 o_kanban_primary_right">
<div class="row" t-if="dashboard.number_draft">
<div class="col overflow-hidden text-left">
<div class="col overflow-hidden text-start">
<a type="object" name="open_action" context="{'search_default_draft': '1'}">
<span t-if="journal_type == 'sale'" title="Invoices to Validate"><t t-esc="dashboard.number_draft"/> Invoices to Validate</span>
<span t-if="journal_type == 'purchase'" title="Bills to Validate"><t t-esc="dashboard.number_draft"/> Bills to Validate</span>
</a>
</div>
<div class="col-auto text-right">
<div class="col-auto text-end">
<span><t t-esc="dashboard.sum_draft"/></span>
</div>
</div>
<div class="row" t-if="dashboard.number_waiting">
<div class="col overflow-hidden text-left">
<div class="col overflow-hidden text-start">
<a type="object" t-if="journal_type == 'sale'" name="open_action"
context="{'search_default_open':1, 'search_default_posted':1, 'search_default_partial': 1}" id="account_dashboard_sale_pay_link">
<t t-esc="dashboard.number_waiting"/> Unpaid Invoices
@@ -345,27 +345,27 @@
<t t-esc="dashboard.number_waiting"/> Bills to Pay
</a>
</div>
<div class="col-auto text-right">
<div class="col-auto text-end">
<span><t t-esc="dashboard.sum_waiting"/></span>
</div>
</div>
<div class="row" t-if="dashboard.number_late">
<div class="col overflow-hidden text-left">
<div class="col overflow-hidden text-start">
<a type="object" name="open_action" context="{'search_default_late': '1'}">
<span t-if="journal_type == 'sale'" title="Late Invoices"><t t-esc="dashboard.number_late"/> Late Invoices</span>
<span t-if="journal_type == 'purchase'" title="Late Bills"><t t-esc="dashboard.number_late"/> Late Bills</span>
</a>
</div>
<div class="col-auto text-right">
<div class="col-auto text-end">
<span><t t-esc="dashboard.sum_late"/></span>
</div>
</div>
<t t-if="dashboard.number_to_check > 0">
<div class="row">
<div class="col overflow-hidden text-left">
<div class="col overflow-hidden text-start">
<a type="object" name="open_action" context="{'search_default_to_check': True}"><t t-esc="dashboard.number_to_check"/> to check</a>
</div>
<div class="col-auto text-right">
<div class="col-auto text-end">
<span><t t-esc="dashboard.to_check_balance"/></span>
</div>
</div>
@@ -184,7 +184,7 @@
<strong><field name="name"/></strong>
</div>
<div class="col-6">
<span class="float-right"><field name="type"/></span>
<span class="float-end"><field name="type"/></span>
</div>
</div>
</div>
+10 -10
View File
@@ -101,7 +101,7 @@
<div class="col-8">
<field name="account_id"/>
</div>
<strong t-if="record.date_maturity.raw_value" class="col-4 pl-0 text-right">
<strong t-if="record.date_maturity.raw_value" class="col-4 ps-0 text-end">
<i class="fa fa-clock-o" aria-label="Date" role="img" title="Date"/> <field name="date_maturity"/>
</strong>
</div>
@@ -109,7 +109,7 @@
<em class="col-10">
<field name="name"/>
</em>
<div class="col-2 text-right">
<div class="col-2 text-end">
<img t-att-src="kanban_image('res.partner', 'avatar_128', record.partner_id.raw_value)" t-att-title="record.partner_id.value" t-att-alt="record.partner_id.value" class="oe_kanban_avatar o_image_24_cover"/>
</div>
</div>
@@ -117,7 +117,7 @@
<div class="col-6">
<field name="tax_ids" widget="many2many_tags"/>
</div>
<div class="col-6 text-right">
<div class="col-6 text-end">
<t t-if="record.debit.raw_value > 0">
<field name="debit"/><span> (DR)</span>
</t>
@@ -530,7 +530,7 @@
</span>
</strong>
</div>
<div class="col-6 text-right">
<div class="col-6 text-end">
<strong><i class="fa fa-clock-o" aria-label="Date" role="img" title="Date"/> <t t-esc="record.date.value"/></strong>
</div>
</div>
@@ -545,7 +545,7 @@
<span><field name="currency_id" invisible="1"/></span>
</div>
<div class="col-6">
<span class="float-right">
<span class="float-end">
<field name="state" widget="label_selection" options="{'classes': {'draft': 'default', 'posted': 'success'}}"/>
</span>
</div>
@@ -922,10 +922,10 @@
<field name="price_unit"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_card oe_kanban_global_click pl-0 pr-0 {{ record.display_type.raw_value ? 'o_is_' + record.display_type.raw_value : '' }}">
<div t-attf-class="oe_kanban_card oe_kanban_global_click ps-0 pe-0 {{ record.display_type.raw_value ? 'o_is_' + record.display_type.raw_value : '' }}">
<t t-if="!record.display_type.raw_value">
<div class="row no-gutters">
<div class="col-2 pr-3">
<div class="row g-0">
<div class="col-2 pe-3">
<img t-att-src="kanban_image('product.product', 'image_128', record.product_id.raw_value)" t-att-title="record.product_id.value" t-att-alt="record.product_id.value" style="max-width: 100%;"/>
</div>
<div class="col-10">
@@ -934,7 +934,7 @@
<strong t-esc="record.product_id.value"/>
</div>
<div class="col-auto">
<strong class="float-right text-right">
<strong class="float-end text-end">
<t t-esc="record.price_subtotal.value" groups="account.group_show_line_subtotals_tax_excluded"/>
<t t-esc="record.price_total.value" groups="account.group_show_line_subtotals_tax_included"/>
</strong>
@@ -1121,7 +1121,7 @@
icon="fa-calendar"
string="Cut-Off"
aria-label="Change Period"
class="float-right"
class="float-end"
attrs="{'invisible': [('account_internal_group', 'not in', ('income', 'expense'))], 'column_invisible': ['|', ('parent.move_type', '=', 'entry'), ('parent.state', '!=', 'posted')]}"
context="{'hide_automatic_options': 1, 'default_action': 'change_period'}"/>
@@ -66,7 +66,7 @@
<div class="col-6">
<strong><span><field name="name"/></span></strong>
</div>
<div class="col-6 text-right">
<div class="col-6 text-end">
<strong><i class="fa fa-clock-o" role="img" aria-label="Date" title="Date"/> <t t-esc="record.date.value"/></strong>
</div>
</div>
@@ -81,7 +81,7 @@
<field name="currency_id" invisible="1"/>
</div>
<div class="col-6">
<span class="float-right">
<span class="float-end">
<field name="state" widget="label_selection" options="{'classes': {'draft': 'secondary', 'sent': 'success'}}"/>
</span>
</div>
@@ -39,7 +39,7 @@
<th>Invoice Date</th>
<th class='d-none d-md-table-cell'>Due Date</th>
<th class="text-center">Status</th>
<th class="text-right">Amount Due</th>
<th class="text-end">Amount Due</th>
</tr>
</thead>
<tbody>
@@ -55,19 +55,19 @@
<td class='d-none d-md-table-cell'><span t-field="invoice.invoice_date_due"/></td>
<td class="tx_status text-center">
<t t-if="invoice.state == 'posted' and invoice.payment_state not in ('in_payment', 'paid', 'reversed')">
<span class="badge badge-pill badge-info"><i class="fa fa-fw fa-clock-o" aria-label="Opened" title="Opened" role="img"></i><span class="d-none d-md-inline"> Waiting for Payment</span></span>
<span class="badge rounded-pill text-bg-info"><i class="fa fa-fw fa-clock-o" aria-label="Opened" title="Opened" role="img"></i><span class="d-none d-md-inline"> Waiting for Payment</span></span>
</t>
<t t-if="invoice.state == 'posted' and invoice.payment_state in ('paid', 'in_payment')">
<span class="badge badge-pill badge-success"><i class="fa fa-fw fa-check" aria-label="Paid" title="Paid" role="img"></i><span class="d-none d-md-inline"> Paid</span></span>
<span class="badge rounded-pill text-bg-success"><i class="fa fa-fw fa-check" aria-label="Paid" title="Paid" role="img"></i><span class="d-none d-md-inline"> Paid</span></span>
</t>
<t t-if="invoice.state == 'posted' and invoice.payment_state == 'reversed'">
<span class="badge badge-pill badge-success"><i class="fa fa-fw fa-check" aria-label="Reversed" title="Reversed" role="img"></i><span class="d-none d-md-inline"> Reversed</span></span>
<span class="badge rounded-pill text-bg-success"><i class="fa fa-fw fa-check" aria-label="Reversed" title="Reversed" role="img"></i><span class="d-none d-md-inline"> Reversed</span></span>
</t>
<t t-if="invoice.state == 'cancel'">
<span class="badge badge-pill badge-warning"><i class="fa fa-fw fa-remove" aria-label="Cancelled" title="Cancelled" role="img"></i><span class="d-none d-md-inline"> Cancelled</span></span>
<span class="badge rounded-pill text-bg-warning"><i class="fa fa-fw fa-remove" aria-label="Cancelled" title="Cancelled" role="img"></i><span class="d-none d-md-inline"> Cancelled</span></span>
</t>
</td>
<td class="text-right"><span t-esc="-invoice.amount_residual if invoice.move_type == 'out_refund' else invoice.amount_residual" t-options='{"widget": "monetary", "display_currency": invoice.currency_id}'/></td>
<td class="text-end"><span t-esc="-invoice.amount_residual if invoice.move_type == 'out_refund' else invoice.amount_residual" t-options='{"widget": "monetary", "display_currency": invoice.currency_id}'/></td>
</tr>
</t>
</tbody>
@@ -99,7 +99,7 @@
<ul class="list-group list-group-flush flex-wrap flex-row flex-lg-column">
<li class="list-group-item flex-grow-1">
<div class="o_download_pdf btn-toolbar flex-sm-nowrap">
<div class="btn-group flex-grow-1 mr-1 mb-1">
<div class="btn-group flex-grow-1 me-1 mb-1">
<a class="btn btn-secondary btn-block o_download_btn" t-att-href="invoice.get_portal_url(report_type='pdf', download=True)" title="Download"><i class="fa fa-download"/> Download</a>
</div>
<div class="btn-group flex-grow-1 mb-1">
@@ -117,10 +117,10 @@
</t>
</strong></div>
<div class="row">
<div class="col flex-grow-0 pr-2">
<div class="col flex-grow-0 pe-2">
<img class="rounded-circle mt-1 o_portal_contact_img" t-att-src="image_data_uri(invoice.invoice_user_id.avatar_1024)" alt="Contact"/>
</div>
<div class="col pl-0">
<div class="col ps-0">
<span t-field="invoice.invoice_user_id" t-options='{"widget": "contact", "fields": ["name", "phone"], "no_marker": True}'/>
<a href="#discussion" class="small"><i class="fa fa-fw fa-comments"/><b>Send message</b></a>
</div>
@@ -154,7 +154,7 @@
<template id="portal_invoice_error" name="Invoice error/warning display">
<div class="row mr16">
<div t-attf-class="'col-lg-12 mr16 ml16 alert alert-dismissable' #{'alert-danger' if error else 'alert-warning'}" role="alert">
<a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a>
<a href="#" class="close" data-bs-dismiss="alert" aria-label="close" title="close">×</a>
<t t-if="error == 'generic'" name="generic">
There was an error processing this page.
</t>
@@ -165,7 +165,7 @@
<template id="portal_invoice_success" name="Invoice success display">
<div class="row mr16">
<div class="col-lg-12 mr16 ml16 alert alert-dismissable alert-success" role="status">
<a href="#" class="close" data-dismiss="alert" aria-label="close" title="close">×</a>
<a href="#" class="close" data-bs-dismiss="alert" aria-label="close" title="close">×</a>
</div>
</div>
</template>
+3 -3
View File
@@ -75,9 +75,9 @@
<div class="col-6">
<strong><span><t t-esc="record.name.value"/></span></strong>
</div>
<div class="col-6 text-right">
<span class="badge badge-pill"><t t-esc="record.type_tax_use.value"/></span>
<span class="badge badge-pill"><t t-esc="record.tax_scope.value"/></span>
<div class="col-6 text-end">
<span class="badge rounded-pill"><t t-esc="record.type_tax_use.value"/></span>
<span class="badge rounded-pill"><t t-esc="record.tax_scope.value"/></span>
</div>
</div>
</div>
+15 -15
View File
@@ -62,11 +62,11 @@
<table class="table table-sm o_main_table" name="invoice_line_table" style="width: 100%;">
<thead>
<tr>
<th name="th_description" class="text-left"><span>Description</span></th>
<th name="th_quantity" class="text-right"><span>Quantity</span></th>
<th name="th_priceunit" class="text-right d-md-table-cell"><span>Unit Price</span></th>
<th name="th_taxes" class="text-left d-md-table-cell"><span>Taxes</span></th>
<th name="th_subtotal" class="text-right"><span>Amount</span></th>
<th name="th_description" class="text-start"><span>Description</span></th>
<th name="th_quantity" class="text-end"><span>Quantity</span></th>
<th name="th_priceunit" class="text-end d-md-table-cell"><span>Unit Price</span></th>
<th name="th_taxes" class="text-start d-md-table-cell"><span>Taxes</span></th>
<th name="th_subtotal" class="text-end"><span>Amount</span></th>
</tr>
</thead>
<tbody class="invoice_tbody">
@@ -74,16 +74,16 @@
<td name="account_invoice_line_name">
[FURN_8999] Three-Seat Sofa
</td>
<td class="text-right">
<td class="text-end">
<span>5.00</span>
</td>
<td class="text-right d-md-table-cell">
<td class="text-end d-md-table-cell">
<span class="text-nowrap">1,500.00</span>
</td>
<td class="text-left d-md-table-cell">
<td class="text-start d-md-table-cell">
<span>Tax 0%</span>
</td>
<td class="text-right o_price_total">
<td class="text-end o_price_total">
<span class="text-nowrap">$ <span class="oe_currency_value">7,500.00</span></span>
</td>
</tr>
@@ -91,16 +91,16 @@
<td name="account_invoice_line_name">
[FURN_8220] Four Person Desk
</td>
<td class="text-right">
<td class="text-end">
<span>5.00</span>
</td>
<td class="text-right d-md-table-cell">
<td class="text-end d-md-table-cell">
<span class="text-nowrap">2,350.00</span>
</td>
<td class="text-left d-md-table-cell">
<td class="text-start d-md-table-cell">
<span>Tax 0%</span>
</td>
<td class="text-right o_price_total">
<td class="text-end o_price_total">
<span class="text-nowrap">$ <span class="oe_currency_value">11,750.00</span></span>
</td>
</tr>
@@ -112,13 +112,13 @@
<table class="table table-sm" style="page-break-inside: avoid; width:100%">
<tbody><tr class="border-black o_subtotal" style="">
<td><strong>Subtotal</strong></td>
<td class="text-right">
<td class="text-end">
<span>$ <span class="oe_currency_value">19,250.00</span></span>
</td>
</tr>
<tr class="border-black o_total">
<td><strong>Total</strong></td>
<td class="text-right">
<td class="text-end">
<span class="text-nowrap">$ <span class="oe_currency_value">19,250.00</span></span>
</td>
</tr>
+1 -1
View File
@@ -73,7 +73,7 @@
<field name="taxes_id" widget="many2many_tags" context="{'default_type_tax_use':'sale', 'search_default_sale': 1, 'search_default_service': type == 'service', 'search_default_goods': type == 'consu'}"/>
</xpath>
<xpath expr="//div[@name='pricing']" position="inside">
<span class="ml-2"/><field name="tax_string"/>
<span class="ms-2"/><field name="tax_string"/>
</xpath>
<group name="bill" position="inside">
<field name="supplier_taxes_id" widget="many2many_tags" context="{'default_type_tax_use':'purchase', 'search_default_purchase': 1, 'search_default_service': type == 'service', 'search_default_goods': type == 'consu'}"/>
+21 -21
View File
@@ -88,14 +88,14 @@
<table class="table table-sm o_main_table" name="invoice_line_table">
<thead>
<tr>
<th name="th_description" class="text-left"><span>Description</span></th>
<th name="th_quantity" class="text-right"><span>Quantity</span></th>
<th name="th_priceunit" t-attf-class="text-right {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}"><span>Unit Price</span></th>
<th name="th_price_unit" t-if="display_discount" t-attf-class="text-right {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<th name="th_description" class="text-start"><span>Description</span></th>
<th name="th_quantity" class="text-end"><span>Quantity</span></th>
<th name="th_priceunit" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}"><span>Unit Price</span></th>
<th name="th_price_unit" t-if="display_discount" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<span>Disc.%</span>
</th>
<th name="th_taxes" t-attf-class="text-left {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}"><span>Taxes</span></th>
<th name="th_subtotal" class="text-right">
<th name="th_taxes" t-attf-class="text-start {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}"><span>Taxes</span></th>
<th name="th_subtotal" class="text-end">
<span groups="account.group_show_line_subtotals_tax_excluded">Amount</span>
<span groups="account.group_show_line_subtotals_tax_included">Total Price</span>
</th>
@@ -109,23 +109,23 @@
<t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal" groups="account.group_show_line_subtotals_tax_excluded"/>
<t t-set="current_subtotal" t-value="current_subtotal + line.price_total" groups="account.group_show_line_subtotals_tax_included"/>
<tr t-att-class="'bg-200 font-weight-bold o_line_section' if line.display_type == 'line_section' else 'font-italic o_line_note' if line.display_type == 'line_note' else ''">
<tr t-att-class="'bg-200 fw-bold o_line_section' if line.display_type == 'line_section' else 'fst-italic o_line_note' if line.display_type == 'line_note' else ''">
<t t-if="not line.display_type" name="account_invoice_line_accountable">
<td name="account_invoice_line_name"><span t-field="line.name" t-options="{'widget': 'text'}"/></td>
<td class="text-right">
<td class="text-end">
<span t-field="line.quantity"/>
<span t-field="line.product_uom_id" groups="uom.group_uom"/>
</td>
<td t-attf-class="text-right {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<td t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<span class="text-nowrap" t-field="line.price_unit"/>
</td>
<td t-if="display_discount" t-attf-class="text-right {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<td t-if="display_discount" t-attf-class="text-end {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<span class="text-nowrap" t-field="line.discount"/>
</td>
<td t-attf-class="text-left {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<td t-attf-class="text-start {{ 'd-none d-md-table-cell' if report_type == 'html' else '' }}">
<span t-esc="', '.join(map(lambda x: (x.description or x.name), line.tax_ids))" id="line_tax_ids"/>
</td>
<td class="text-right o_price_total">
<td class="text-end o_price_total">
<span class="text-nowrap" t-field="line.price_subtotal" groups="account.group_show_line_subtotals_tax_excluded"/>
<span class="text-nowrap" t-field="line.price_total" groups="account.group_show_line_subtotals_tax_included"/>
</td>
@@ -145,7 +145,7 @@
</tr>
<t t-if="current_section and (line_last or lines[line_index+1].display_type == 'line_section')">
<tr class="is-subtotal text-right">
<tr class="is-subtotal text-end">
<td colspan="99">
<strong class="mr16">Subtotal</strong>
<span
@@ -161,7 +161,7 @@
<div class="clearfix mb-4">
<div id="total" class="row">
<div t-attf-class="#{'col-6' if report_type != 'html' else 'col-sm-7 col-md-6'} ml-auto">
<div t-attf-class="#{'col-6' if report_type != 'html' else 'col-sm-7 col-md-6'} ms-auto">
<table class="table table-sm" style="page-break-inside: avoid;">
<!--Tax totals-->
@@ -175,9 +175,9 @@
<t t-foreach="payments_vals" t-as="payment_vals">
<tr t-if="payment_vals['is_exchange'] == 0">
<td>
<i class="oe_form_field text-right oe_payment_label">Paid on <t t-esc="payment_vals['date']" t-options='{"widget": "date"}'/></i>
<i class="oe_form_field text-end oe_payment_label">Paid on <t t-esc="payment_vals['date']" t-options='{"widget": "date"}'/></i>
</td>
<td class="text-right">
<td class="text-end">
<span t-esc="payment_vals['amount']" t-options='{"widget": "monetary", "display_currency": o.currency_id}'/>
</td>
</tr>
@@ -185,7 +185,7 @@
<t t-if="len(payments_vals) > 0">
<tr class="border-black">
<td><strong>Amount Due</strong></td>
<td class="text-right">
<td class="text-end">
<span t-field="o.amount_residual"/>
</td>
</tr>
@@ -252,7 +252,7 @@
<tr class="border-black o_subtotal">
<td><strong t-esc="subtotal['name']"/></td>
<td class="text-right">
<td class="text-end">
<span
t-att-class="oe_subtotal_footer_separator"
t-esc="subtotal['formatted_amount']"
@@ -267,7 +267,7 @@
<!--Total amount with all taxes-->
<tr class="border-black o_total">
<td><strong>Total</strong></td>
<td class="text-right">
<td class="text-end">
<span t-esc="tax_totals['formatted_amount_total']"/>
</td>
</tr>
@@ -290,13 +290,13 @@
<t t-esc="amount_by_group['formatted_tax_group_base_amount']"/>
</span>
</td>
<td class="text-right o_price_total">
<td class="text-end o_price_total">
<span class="text-nowrap" t-esc="amount_by_group['formatted_tax_group_amount']"/>
</td>
</t>
<t t-else="">
<td><span class="text-nowrap" t-esc="amount_by_group['tax_group_name']"/></td>
<td class="text-right o_price_total">
<td class="text-end o_price_total">
<span class="text-nowrap" t-esc="amount_by_group['formatted_tax_group_amount']" />
</td>
</t>
@@ -39,7 +39,7 @@
<th><span>Invoice Date</span></th>
<th><span>Invoice Number</span></th>
<th><span>Reference</span></th>
<th class="text-right"><span>Amount</span></th>
<th class="text-end"><span>Amount</span></th>
</tr>
</thead>
<tbody>
@@ -51,7 +51,7 @@
<td><span t-field="inv.invoice_date"/></td>
<td><span t-field="inv.name"/></td>
<td><span t-field="inv.ref"/></td>
<td class="text-right"><span t-field="inv.amount_total"/></td>
<td class="text-end"><span t-field="inv.amount_total"/></td>
</tr>
<!-- PAYMENTS/REVERSALS -->
<tr t-foreach="inv._get_reconciled_invoices_partials()[0]" t-as="par">
@@ -60,14 +60,14 @@
<td><span t-field="payment.date"/></td>
<td><span t-field="payment.name"/></td>
<td><span t-field="payment.ref"/></td>
<td class="text-right">-<span t-esc="amount" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/></td>
<td class="text-end">-<span t-esc="amount" t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/></td>
</tr>
<!-- BALANCE -->
<tr>
<td/>
<td><strong>Due Amount for <span t-field="inv.name"/></strong></td>
<td/>
<td class="text-right"><strong><span t-field="inv.amount_residual"/></strong></td>
<td class="text-end"><strong><span t-field="inv.amount_residual"/></strong></td>
</tr>
</t>
</t>
+11 -11
View File
@@ -6,10 +6,10 @@
<t t-foreach="docs" t-as="o">
<t t-call="web.internal_layout">
<div class="page">
<div class="border border-top-0 border-right-0 border-left-0 border-info">
<div class="border border-top-0 border-end-0 border-start-0 border-info">
<div class="row">
<div class="col-12">
<h4 class="text-right w-100">
<h4 class="text-end w-100">
<strong>
<span t-if="o.journal_id.type == 'bank'">Bank Statement</span>
<span t-else="">Cash Statement</span>
@@ -49,10 +49,10 @@
</div>
</div>
<table class="table table-lg m-0 table-borderless border border-right-0 border-left-0 border-info">
<table class="table table-lg m-0 table-borderless border border-end-0 border-start-0 border-info">
<tbody>
<tr>
<td class="pt-2 pb-2 pl-0 pr-0">
<td class="pt-2 pb-2 ps-0 pe-0">
<table class="table table-borderless m-0">
<tr>
<td class="p-0 w-25">
@@ -63,7 +63,7 @@
<span t-esc="o.line_ids and o.line_ids.sorted(lambda line: line.date)[0].date" t-options='{"widget": "date"}'/>
</strong>
</td>
<td class="text-right p-0">
<td class="text-end p-0">
<strong>
<span t-field="o.balance_start"/>
</strong>
@@ -78,7 +78,7 @@
<span t-esc="o.line_ids and o.line_ids.sorted(lambda line: line.date)[-1].date" t-options='{"widget": "date"}'/>
</strong>
</td>
<td class="text-right p-0">
<td class="text-end p-0">
<strong>
<span t-field="o.balance_end_real"/>
</strong>
@@ -93,20 +93,20 @@
<table class="table table-borderless m-0">
<tbody>
<tr t-foreach="o.line_ids" t-as="line" class="pb-2">
<td class="pl-0 pr-0">
<td class="ps-0 pe-0">
<table class="table table-borderless">
<tr>
<td class="p-0 w-25">
<span class="d-block font-weight-bold" t-field="line.date"/>
<span class="d-block fw-bold" t-field="line.date"/>
</td>
<td class="p-0">
<span class="d-block font-weight-bold" t-if="line.partner_id" t-field="line.partner_id"/>
<span class="d-block fw-bold" t-if="line.partner_id" t-field="line.partner_id"/>
<span class="d-block" t-if="line.partner_bank_id" t-field="line.partner_bank_id"/>
<span class="d-block" t-if="line.payment_ref" t-field="line.payment_ref"/>
<span class="d-block" t-if=" not is_html_empty(line.narration)" t-field="line.narration"/>
</td>
<td class="text-right p-0">
<span class="d-block font-weight-bold" t-field="line.amount"/>
<td class="text-end p-0">
<span class="d-block fw-bold" t-field="line.amount"/>
</td>
</tr>
</table>
@@ -329,7 +329,7 @@
<button name="action_update_terms" icon="fa-arrow-right" type="object" string="Update Terms" class="btn-link"/>
</div>
<field name="preview_ready" invisible="1"/>
<div class="mt4 ml-1" attrs="{'invisible': [('preview_ready', '=', False)]}">
<div class="mt4 ms-1" attrs="{'invisible': [('preview_ready', '=', False)]}">
<a class="btn-link" href="/terms" role="button">
<i class="fa fa-arrow-right"></i>
Preview
+2 -2
View File
@@ -3,9 +3,9 @@
<template id="account.account_terms_conditions_setting_banner" name="Account Terms and Conditions Setting Banner">
<div id="terms_conditions" t-ignore="true" class="text-center">
<span>This is a preview of your Terms &amp; Conditions.</span>
<a t-att-href="backend_url"><i class="fa fa-arrow-right mr-1"/>Back to settings</a>
<a t-att-href="backend_url"><i class="fa fa-arrow-right me-1"/>Back to settings</a>
</div>
<button type="button" class="close" data-dismiss="alert" aria-label="Close"> &#215; </button>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</template>
<template id="account_terms_conditions_page" name="Terms &amp; Conditions">
@@ -29,7 +29,7 @@
<field name="is_email" />
<b><label for="is_email"/></b>
</div>
<div class="text-left d-inline-block mr8" attrs="{'invisible': ['|', ('is_email','=', False), ('invoice_without_email', '=', False)]}">
<div class="text-start d-inline-block mr8" attrs="{'invisible': ['|', ('is_email','=', False), ('invoice_without_email', '=', False)]}">
<field name="invoice_without_email" class="mr4"/>
</div>
<div name="mail_form" attrs="{'invisible': [('is_email', '=', False)]}">
+1 -1
View File
@@ -81,7 +81,7 @@
<field name="tax_ids" optional="hide" widget="many2many_tags"/>
<field name="tag_ids" optional="hide" widget="many2many_tags"/>
<field name="allowed_journal_ids" optional="hide" widget="many2many_tags"/>
<button name="action_read_account" type="object" string="Setup" class="float-right btn-secondary"/>
<button name="action_read_account" type="object" string="Setup" class="float-end btn-secondary"/>
</tree>
</field>
</record>
@@ -17,22 +17,22 @@
<t t-set="last_tx" t-value="invoice.get_portal_last_transaction()"/>
<td class="tx_status text-center">
<t t-if="invoice.state == 'posted' and invoice.payment_state in ('not_paid', 'partial') and (last_tx.state not in ['pending', 'authorized', 'done', 'cancel'] or (last_tx.state == 'pending' and last_tx.provider in ('none', 'transfer')))">
<span class="badge badge-pill badge-info"><i class="fa fa-fw fa-clock-o"></i><span class="d-none d-md-inline"> Waiting for Payment</span></span>
<span class="badge rounded-pill text-bg-info"><i class="fa fa-fw fa-clock-o"></i><span class="d-none d-md-inline"> Waiting for Payment</span></span>
</t>
<t t-if="invoice.state == 'posted' and last_tx.state == 'authorized'">
<span class="badge badge-pill badge-primary"><i class="fa fa-fw fa-check"/><span class="d-none d-md-inline"> Authorized</span></span>
<span class="badge rounded-pill text-bg-primary"><i class="fa fa-fw fa-check"/><span class="d-none d-md-inline"> Authorized</span></span>
</t>
<t t-if="invoice.state == 'posted' and last_tx.state == 'pending' and last_tx.provider not in ('none', 'transfer')">
<span class="badge badge-pill badge-warning"><span class="d-none d-md-inline"> Pending</span></span>
<span class="badge rounded-pill text-bg-warning"><span class="d-none d-md-inline"> Pending</span></span>
</t>
<t t-if="invoice.state == 'posted' and invoice.payment_state in ('paid', 'in_payment') or last_tx.state == 'done'">
<span class="badge badge-pill badge-success"><i class="fa fa-fw fa-check"></i><span class="d-none d-md-inline"> Paid</span></span>
<span class="badge rounded-pill text-bg-success"><i class="fa fa-fw fa-check"></i><span class="d-none d-md-inline"> Paid</span></span>
</t>
<t t-if="invoice.state == 'posted' and invoice.payment_state == 'reversed'">
<span class="badge badge-pill badge-success"><i class="fa fa-fw fa-check"></i><span class="d-none d-md-inline"> Reversed</span></span>
<span class="badge rounded-pill text-bg-success"><i class="fa fa-fw fa-check"></i><span class="d-none d-md-inline"> Reversed</span></span>
</t>
<t t-if="invoice.state == 'cancel'">
<span class="badge badge-pill badge-danger"><i class="fa fa-fw fa-remove"></i><span class="d-none d-md-inline"> Cancelled</span></span>
<span class="badge rounded-pill text-bg-danger"><i class="fa fa-fw fa-remove"></i><span class="d-none d-md-inline"> Cancelled</span></span>
</t>
</td>
</xpath>
@@ -45,10 +45,10 @@
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title">Pay with</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">×</button>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div t-if="acquirers or tokens" id="payment_method" class="text-left col-md-13">
<div t-if="acquirers or tokens" id="payment_method" class="text-start col-md-13">
<t t-call="payment.checkout"/>
</div>
<div t-else="" class="alert alert-warning">
@@ -69,7 +69,7 @@
<div class="d-grid">
<a href="#" t-if="invoice.state == 'posted' and invoice.payment_state in ('not_paid', 'partial') and invoice.amount_total and invoice.move_type == 'out_invoice' and (pending_manual_txs or not tx_ids or invoice.amount_paid &lt; invoice.amount_total)"
class="btn btn-primary mb-2" data-toggle="modal" data-target="#pay_with">
class="btn btn-primary mb-2" data-bs-toggle="modal" data-bs-target="#pay_with">
<i class="fa fa-fw fa-arrow-circle-right"/> Pay Now
</a>
<div t-if="tx_ids and not pending_manual_txs and not invoice.amount_residual and invoice.payment_state not in ('paid', 'in_payment')" class="alert alert-info py-1 mb-2" >
@@ -375,7 +375,7 @@
<div class="col-6">
<strong><span><t t-esc="record.name.value"/></span></strong>
</div>
<div class="col-6 text-right">
<div class="col-6 text-end">
<strong><t t-esc="record.date.value"/></strong>
</div>
</div>
@@ -384,7 +384,7 @@
<span><t t-esc="record.account_id.value"/></span>
</div>
<div class="col-6">
<span class="float-right text-right">
<span class="float-end text-end">
<field name="amount" widget="monetary"/>
</span>
</div>
@@ -9,7 +9,8 @@
.o_custom_icon {
margin: 0 0.15em;
@include size(1em);
width: 1em;
height: 1em;
border: 3px solid #875A7B;
border-radius: 100%;
transform: translateY(2px);
@@ -3,7 +3,7 @@
<template id="providers" name="OAuth Providers">
<t t-if="len(providers) &gt; 0">
<em t-attf-class="d-block text-center text-muted small my-#{len(providers) if len(providers) &lt; 3 else 3}">- or -</em>
<div class="o_auth_oauth_providers list-group mt-1 mb-1 text-left">
<div class="o_auth_oauth_providers list-group mt-1 mb-1 text-start">
<a t-foreach="providers" t-as="p" class="list-group-item list-group-item-action py-2" t-att-href="p['auth_link']">
<i t-att-class="p['css_class']"/>
<t t-esc="p['body']"/>
@@ -65,7 +65,7 @@
<p class="alert alert-success" t-if="message" role="status">
<t t-esc="message"/>
</p>
<a href="/web/login" class="btn btn-link btn-sm float-left" role="button">Back to Login</a>
<a href="/web/login" class="btn btn-link btn-sm float-start" role="button">Back to Login</a>
</div>
<form class="oe_reset_password_form" role="form" method="post" t-if="not message">
+1 -1
View File
@@ -19,7 +19,7 @@
<xpath expr="//sheet" position="before">
<div class="alert alert-success text-center o_form_header" attrs="{'invisible': [('signup_valid', '!=', True)]}" role="status">
<a class="close" data-dismiss="alert" href="#" aria-label="Close"><i title="Close" class="small fa fa-times"/></a>
<a class="close" data-bs-dismiss="alert" href="#" aria-label="Close"><i title="Close" class="small fa fa-times"/></a>
<div attrs="{'invisible': [('state', '!=', 'active')]}">
<strong>A password reset has been requested for this user. An email containing the following link has been sent:</strong>
</div>
+1 -1
View File
@@ -15,7 +15,7 @@
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<input type="hidden" name="redirect" t-att-value="redirect"/>
<div class="form-group">
<label class="font-weight-bold" for="totp_token">Authentication Code</label>
<label class="fw-bold" for="totp_token">Authentication Code</label>
<input id="totp_token" name="totp_token" class="form-control mb-2"
autocomplete="off" inputmode="numeric" autofocus="autofocus" required="required" placeholder="e.g. 123456"/>
</div>
@@ -8,7 +8,7 @@
<sheet>
<div class="o_auth_totp_enable_2FA container">
<div class="mb-3 w-100">
<h3 class="font-weight-bold">Authenticator App Setup</h3>
<h3 class="fw-bold">Authenticator App Setup</h3>
<ul>
<div class="d-md-none d-block">
<li>
@@ -42,24 +42,24 @@
<div class="text-center d-none d-md-block">
<field name="qrcode" readonly="True" widget="image"/>
<h3 class="font-weight-bold"><a data-toggle="collapse"
<h3 class="fw-bold"><a data-bs-toggle="collapse"
href="#collapseTotpSecret" role="button" aria-expanded="false"
aria-controls="collapseTotpSecret">Cannot scan it?</a></h3>
<div class="collapse" id="collapseTotpSecret">
<field name="secret" widget="CopyClipboardChar" readonly="1" class="mb-3 pl-3"/>
<field name="secret" widget="CopyClipboardChar" readonly="1" class="mb-3 ps-3"/>
</div>
</div>
<!-- Mobile Version -->
<div class="text-center d-block d-md-none">
<field name="secret" widget="CopyClipboardChar" readonly="1" class="mb-3 pl-3"/>
<field name="secret" widget="CopyClipboardChar" readonly="1" class="mb-3 ps-3"/>
</div>
<h3 class="font-weight-bold">Enter your six-digit code below</h3>
<h3 class="fw-bold">Enter your six-digit code below</h3>
<div class="mt-2">
<label for="code" class="px-0">Verification Code</label>
<div class="d-flex align-items-center">
<field required="True" name="code" autocomplete="off" class="px-0 mr-2" placeholder="e.g. 123456"/>
<field required="True" name="code" autocomplete="off" class="px-0 me-2" placeholder="e.g. 123456"/>
</div>
</div>
</div>
@@ -608,7 +608,7 @@ var DataImport = AbstractAction.extend({
},
// For each choice, if field is required, make it bold in the list
formatResultCssClass: function (object) {
if (object.required) { return "font-weight-bold text-decoration-underline"; }
if (object.required) { return "fw-bold text-decoration-underline"; }
return "";
},
placeholder: _t('To import, select a field...'),
+1 -1
View File
@@ -49,7 +49,7 @@
overflow: auto;
label {
font-weight: normal;
&.custom-control-label {
&.form-check-label {
left: 20px;
}
}
@@ -61,11 +61,11 @@
<t t-name="ImportView.preview">
<thead>
<tr class="oe_import_grid-header">
<td class="oe_import_grid-cell border-0 font-weight-bold" style="width: 20%;">
<td class="oe_import_grid-cell border-0 fw-bold" style="width: 20%;">
<span class="o_single_line_text" title="File Column">File Column</span></td>
<td class="oe_import_grid-cell border-0 font-weight-bold" style="width: 15%;" >
<td class="oe_import_grid-cell border-0 fw-bold" style="width: 15%;" >
<span class="o_single_line_text" title="File Column">Odoo Field</span></td>
<td class="oe_import_grid-cell border-0 font-weight-bold">
<td class="oe_import_grid-cell border-0 fw-bold">
<span class="o_single_line_text" title="File Column">Comments</span></td>
</tr>
</thead>
@@ -73,11 +73,11 @@
<t t-set="columns" t-value="headers || preview"/>
<tr t-if="columns" t-foreach="columns" t-as="column" class="oe_import_grid-row">
<td class="oe_import_grid-cell oe_import_name_cell">
<span class="o_import_header_name o_single_line_text font-weight-bold" t-att-title="column">
<span class="o_import_header_name o_single_line_text fw-bold" t-att-title="column">
<span t-if="column" t-esc="column"/>
<span t-else="">Untitled</span>
</span>
<span t-if="options['has_headers']" class="font-italic small o_import_preview">
<span t-if="options['has_headers']" class="fst-italic small o_import_preview">
<t t-esc="preview[column_index][0]"/>
</span>
</td>
@@ -220,7 +220,7 @@
field corresponding to the column. This makes imports
simpler especially when the file has many columns.</p>
</div>
<div class="o_import_partial_alert alert alert-warning d-none mx-2 my-2 font-weight-bold">
<div class="o_import_partial_alert alert alert-warning d-none mx-2 my-2 fw-bold">
Click 'Resume' to proceed with the import, resuming at line
<span class="o_import_partial_count">0</span>.<br/>
You can test or reload your file before resuming the import.
@@ -239,9 +239,9 @@
<div class="oe_import_with_file">
<h4>Imported file</h4>
<div class="mb-2 d-flex align-items-center">
<i class="fa fa-file white mr-2"></i>
<div id="oe_imported_file" class="font-italic truncate"></div>
<span id="oe_imported_file_extension" class="font-italic"></span>
<i class="fa fa-file white me-2"></i>
<div id="oe_imported_file" class="fst-italic truncate"></div>
<span id="oe_imported_file_extension" class="fst-italic"></span>
</div>
<div class="oe_import_has_multiple_sheets flex-column mt-2">
@@ -249,9 +249,9 @@
<input class="oe_import_sheet oe_import_dropdown" id="oe_import_sheet"/>
</div>
<input type="checkbox" class="oe_import_has_header custom-control-input"
<input type="checkbox" class="oe_import_has_header form-check-input"
id="oe_import_has_header" checked="checked"/>
<label class="custom-control-label" for="oe_import_has_header">Use first row as header</label>
<label class="form-check-label" for="oe_import_has_header">Use first row as header</label>
<div class="o_import_formatting">
<h4 class="mt-3">Formatting</h4>
@@ -270,15 +270,15 @@
<div class="o_import_batch">
<h4 class="mt-3">Batch Import</h4>
<div class="o_import_batch_alert font-weight-bold d-none pb-2">
<div class="o_import_batch_alert fw-bold d-none pb-2">
The file will be imported by batches
</div>
<div class="d-flex">
<div class="oe_import_options oe_import_batch_limit w-50 pr-1">
<div class="oe_import_options oe_import_batch_limit w-50 pe-1">
<label class="mb-1" for="oe_import_batch_limit">Batch limit</label>
<input class="w-100" id="oe_import_batch_limit" value="2000"/>
</div>
<div class="oe_import_options w-50 pl-1" title="Warning: ignores the labels line, empty lines and
<div class="oe_import_options w-50 ps-1" title="Warning: ignores the labels line, empty lines and
lines composed only of empty cells">
<label class="mb-1" for="oe_import_row_start">Start at line</label>
<input class="w-100" id="oe_import_row_start" value="1"/>
@@ -299,16 +299,16 @@ lines composed only of empty cells">
<div class="oe_import_debug_option">
<h4 class="mt-3">Advanced</h4>
<div title="If the model uses openchatter, history tracking will set up subscriptions and send notifications during the import, but lead to a slower import.">
<input type="checkbox" id="oe_import_tracking" class="custom-control-input"/>
<label class="custom-control-label" for="oe_import_tracking">
<input type="checkbox" id="oe_import_tracking" class="form-check-input"/>
<label class="form-check-label" for="oe_import_tracking">
Track history during import
</label>
</div>
<div>
<input type="checkbox" class="oe_import_advanced_mode custom-control-input" checked="checked"
<input type="checkbox" class="oe_import_advanced_mode form-check-input" checked="checked"
id="oe_import_advanced_mode"/>
<label class="custom-control-label" for="oe_import_advanced_mode">Allow matching with subfields</label>
<label class="form-check-label" for="oe_import_advanced_mode">Allow matching with subfields</label>
</div>
</div>
@@ -337,7 +337,7 @@ lines composed only of empty cells">
<span>0%</span>
</div>
</div>
<a class="o_progress_stop_import ml-2" role="button"><i class="fa fa-close" aria-label="Stop Import"/></a>
<a class="o_progress_stop_import ms-2" role="button"><i class="fa fa-close" aria-label="Stop Import"/></a>
</div>
</div>
<div t-else="">
@@ -10,7 +10,7 @@
<t t-if="widget.pending_users.length">
<p class="o_form_label pt-3">Pending Invitations:</p>
<span t-foreach="widget.pending_users" t-as="pending">
<a href="#" class="badge badge-pill text-primary o_web_settings_user" t-att-data-user-id="pending[0]"> <t t-esc="pending[1]"/> </a>
<a href="#" class="badge rounded-pill text-primary o_web_settings_user" t-att-data-user-id="pending[0]"> <t t-esc="pending[1]"/> </a>
</span>
<t t-if="widget.pending_users.length &lt; widget.pending_count">
<br/>
@@ -20,7 +20,7 @@
<div class="col-12 col-lg-6 o_setting_box" id="active_user_setting">
<div class="o_setting_right_pane">
<span class="fa fa-lg fa-users" aria-label="Number of active users"/>
<field name='active_user_count' class="w-auto pl-3 font-weight-bold"/>
<field name='active_user_count' class="w-auto ps-3 fw-bold"/>
<span class='o_form_label' attrs="{'invisible':[('active_user_count', '&gt;', '1')]}">
Active User
</span>
@@ -42,7 +42,7 @@
<div class='o_setting_right_pane'>
<!-- TODO This is not an ideal solution but it looks ok on the interface -->
<div class="w-50">
<field name="language_count" class="w-auto pl-1 font-weight-bold"/>
<field name="language_count" class="w-auto ps-1 fw-bold"/>
<span class='o_form_label' attrs="{'invisible':[('language_count', '&gt;', '1')]}">
Language
</span>
@@ -67,7 +67,7 @@
<div class="col-12 col-lg-6 o_setting_box" id="company_details_settings">
<field name="company_id" invisible="1"/>
<div class="o_setting_right_pane">
<field name="company_name" class="font-weight-bold"/>
<field name="company_name" class="fw-bold"/>
<br/>
<field name="company_informations" class="text-muted" style="width: 90%;"/>
<br/>
@@ -95,7 +95,7 @@
</div>
<div class="col-12 col-lg-6 o_setting_box" id="companies_setting">
<div class="o_setting_right_pane">
<field name='company_count' class="w-auto pl-1 font-weight-bold"/>
<field name='company_count' class="w-auto ps-1 fw-bold"/>
<span class='o_form_label' attrs="{'invisible':[('company_count', '&gt;', '1')]}">
Company
</span>
@@ -136,7 +136,7 @@
<div class="o_setting_right_pane" id="sms_settings">
<div class="o_form_label">
Send SMS
<a href="https://www.odoo.com/documentation/master/applications/marketing/sms_marketing/pricing/pricing_and_faq.html" title="Documentation" class="ml-1 o_doc_link" target="_blank"></a>
<a href="https://www.odoo.com/documentation/master/applications/marketing/sms_marketing/pricing/pricing_and_faq.html" title="Documentation" class="ms-1 o_doc_link" target="_blank"></a>
</div>
<div class="text-muted">
Send texts to your contacts
+3 -3
View File
@@ -35,9 +35,9 @@
<div class="o-dashboard-action mx-3 my-1" t-att-data-idx="action_index">
<h3 t-attf-class="o-dashboard-action-header {{action.title ? '' : 'oe_header_empty'}} p-2 m-2">
<span> <t t-esc="action.title"/> </span>
<span class="btn float-right p-1 text-muted" t-on-click="() => this.closeAction(column, action)"><i class="fa fa-close"/></span>
<span class="btn float-right p-1 text-muted" t-if="!action.isFolded" t-on-click="() => this.toggleAction(action)"><i class="fa fa-window-minimize"/></span>
<span class="btn float-right p-1 text-muted" t-if="action.isFolded" t-on-click="() => this.toggleAction(action)"><i class="fa fa-window-maximize"/></span>
<span class="btn float-end p-1 text-muted" t-on-click="() => this.closeAction(column, action)"><i class="fa fa-close"/></span>
<span class="btn float-end p-1 text-muted" t-if="!action.isFolded" t-on-click="() => this.toggleAction(action)"><i class="fa fa-window-minimize"/></span>
<span class="btn float-end p-1 text-muted" t-if="action.isFolded" t-on-click="() => this.toggleAction(action)"><i class="fa fa-window-maximize"/></span>
</h3>
<BoardAction t-if="!action.isFolded" action="action" />
</div>
+8 -8
View File
@@ -55,7 +55,7 @@
</div>
<table border="0" cellpadding="0" cellspacing="0"><tr>
<td width="130px;">
<div style="border-top-left-radius: 3px; border-top-right-radius: 3px; font-size: 12px; border-collapse: separate; text-align: center; font-weight: bold; color: #ffffff; min-height: 18px; background-color: #875A7B; border: 1px solid #875A7B;">
<div style="border-top-start-radius: 3px; border-top-end-radius: 3px; font-size: 12px; border-collapse: separate; text-align: center; font-weight: bold; color: #ffffff; min-height: 18px; background-color: #875A7B; border: 1px solid #875A7B;">
<t t-out="format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format='EEEE', lang_code=object.env.lang) or ''">Tuesday</t>
</div>
<div style="font-size: 48px; min-height: auto; font-weight: bold; text-align: center; color: #5F5F5F; background-color: #F8F8F8; border: 1px solid #875A7B;">
@@ -64,7 +64,7 @@
<div style='font-size: 12px; text-align: center; font-weight: bold; color: #ffffff; background-color: #875A7B;'>
<t t-out="format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format='MMMM y', lang_code=object.env.lang) or ''">May 2021</t>
</div>
<div style="border-collapse: separate; color: #5F5F5F; text-align: center; font-size: 12px; border-bottom-right-radius: 3px; font-weight: bold ; border: 1px solid #875A7B; border-bottom-left-radius: 3px;">
<div style="border-collapse: separate; color: #5F5F5F; text-align: center; font-size: 12px; border-bottom-end-radius: 3px; font-weight: bold ; border: 1px solid #875A7B; border-bottom-start-radius: 3px;">
<t t-if="not object.event_id.allday">
<div>
<t t-out="format_time(time=object.event_id.start, tz=object.mail_tz, time_format='short', lang_code=object.env.lang) or ''">11:00 AM</t>
@@ -183,7 +183,7 @@
</div>
<table border="0" cellpadding="0" cellspacing="0"><tr>
<td width="130px;">
<div style="border-top-left-radius: 3px; border-top-right-radius: 3px; font-size: 12px; border-collapse: separate; text-align: center; font-weight: bold; color: #ffffff; min-height: 18px; background-color: #875A7B; border: 1px solid #875A7B;">
<div style="border-top-start-radius: 3px; border-top-end-radius: 3px; font-size: 12px; border-collapse: separate; text-align: center; font-weight: bold; color: #ffffff; min-height: 18px; background-color: #875A7B; border: 1px solid #875A7B;">
<t t-out='format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format="EEEE", lang_code=object.env.lang) or ""'>Tuesday</t>
</div>
<div style="font-size: 48px; min-height: auto; font-weight: bold; text-align: center; color: #5F5F5F; background-color: #F8F8F8; border: 1px solid #875A7B;">
@@ -192,7 +192,7 @@
<div style='font-size: 12px; text-align: center; font-weight: bold; color: #ffffff; background-color: #875A7B;'>
<t t-out='format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format="MMMM y", lang_code=object.env.lang) or ""'>May 2021</t>
</div>
<div style="border-collapse: separate; color: #5F5F5F; text-align: center; font-size: 12px; border-bottom-right-radius: 3px; font-weight: bold; border: 1px solid #875A7B; border-bottom-left-radius: 3px;">
<div style="border-collapse: separate; color: #5F5F5F; text-align: center; font-size: 12px; border-bottom-end-radius: 3px; font-weight: bold; border: 1px solid #875A7B; border-bottom-start-radius: 3px;">
<t t-if="not object.event_id.allday">
<div>
<t t-out='format_time(time=object.event_id.start, tz=object.mail_tz, time_format="short", lang_code=object.env.lang) or ""'>11:00 AM</t>
@@ -284,7 +284,7 @@
</div>
<table border="0" cellpadding="0" cellspacing="0"><tr>
<td width="130px;">
<div style="border-top-left-radius: 3px; border-top-right-radius: 3px; font-size: 12px; border-collapse: separate; text-align: center; font-weight: bold; color: #ffffff; min-height: 18px; background-color: #875A7B; border: 1px solid #875A7B;">
<div style="border-top-start-radius: 3px; border-top-end-radius: 3px; font-size: 12px; border-collapse: separate; text-align: center; font-weight: bold; color: #ffffff; min-height: 18px; background-color: #875A7B; border: 1px solid #875A7B;">
<t t-out='format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format="EEEE", lang_code=object.env.lang) or ""'>Tuesday</t>
</div>
<div style="font-size: 48px; min-height: auto; font-weight: bold; text-align: center; color: #5F5F5F; background-color: #F8F8F8; border: 1px solid #875A7B;">
@@ -293,7 +293,7 @@
<div style='font-size: 12px; text-align: center; font-weight: bold; color: #ffffff; background-color: #875A7B;'>
<t t-out='format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format="MMMM y", lang_code=object.env.lang) or ""'>May 2021</t>
</div>
<div style="border-collapse: separate; color: #5F5F5F; text-align: center; font-size: 12px; border-bottom-right-radius: 3px; font-weight: bold; border: 1px solid #875A7B; border-bottom-left-radius: 3px;">
<div style="border-collapse: separate; color: #5F5F5F; text-align: center; font-size: 12px; border-bottom-end-radius: 3px; font-weight: bold; border: 1px solid #875A7B; border-bottom-start-radius: 3px;">
<t t-if="not object.event_id.allday">
<div>
<t t-out='format_time(time=object.event_id.start, tz=object.mail_tz, time_format="short", lang_code=object.env.lang) or ""'>11:00 AM</t>
@@ -374,7 +374,7 @@
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="130px;">
<div style="border-top-left-radius: 3px; border-top-right-radius: 3px; font-size: 12px; border-collapse: separate; text-align: center; font-weight: bold; color: #ffffff; min-height: 18px; background-color: #875A7B; border: 1px solid #875A7B;">
<div style="border-top-start-radius: 3px; border-top-end-radius: 3px; font-size: 12px; border-collapse: separate; text-align: center; font-weight: bold; color: #ffffff; min-height: 18px; background-color: #875A7B; border: 1px solid #875A7B;">
<t t-out="format_datetime(dt=object.start, tz=mail_tz if not object.allday else None, dt_format='EEEE', lang_code=object.env.lang) "></t>
</div>
<div style="font-size: 48px; min-height: auto; font-weight: bold; text-align: center; color: #5F5F5F; background-color: #F8F8F8; border: 1px solid #875A7B;">
@@ -383,7 +383,7 @@
<div style='font-size: 12px; text-align: center; font-weight: bold; color: #ffffff; background-color: #875A7B;'>
<t t-out="format_datetime(dt=object.start, tz=mail_tz if not object.allday else None, dt_format='MMMM y', lang_code=object.env.lang)"></t>
</div>
<div style="border-collapse: separate; color: #5F5F5F; text-align: center; font-size: 12px; border-bottom-right-radius: 3px; font-weight: bold; border: 1px solid #875A7B; border-bottom-left-radius: 3px;">
<div style="border-collapse: separate; color: #5F5F5F; text-align: center; font-size: 12px; border-bottom-end-radius: 3px; font-weight: bold; border: 1px solid #875A7B; border-bottom-start-radius: 3px;">
<t t-if="not object.allday">
<div>
<t t-out="format_time(time=object.start, tz=mail_tz, time_format='short', lang_code=object.env.lang)"></t>
@@ -2,7 +2,7 @@
@extend .o_status;
&.accepted {
background-color: theme-color('success');
background-color: map-get($theme-colors, 'success');
}
&.tentative {
@@ -10,7 +10,7 @@
}
&.declined {
background-color: theme-color('danger');
background-color: map-get($theme-colors, 'danger');
}
}
@@ -84,11 +84,11 @@
}
.o_attendee_border_accepted {
border-color: theme-color('success');
border-color: map-get($theme-colors, 'success');
}
.o_attendee_border_declined {
border-color: theme-color('danger');
border-color: map-get($theme-colors, 'danger');
}
.o_attendee_border_tentative {
border-color: theme-color('light');
border-color: map-get($theme-colors, 'light');
}
@@ -34,7 +34,7 @@
<span t-att-class="!meeting.allday and is_next_meeting ? 'o_meeting_filter o_meeting_bold' : 'o_meeting_filter'" t-att-data-res_model="activity.model" t-att-data-res_id="meeting.id" t-att-data-model_name="activity.name" t-att-title="meeting.name">
<span><t t-esc="meeting.name"/></span>
</span>
<span t-if="meeting.start" class="float-right">
<span t-if="meeting.start" class="float-end">
<t t-if="meeting.allday">All Day</t>
<t t-else=''>
<t t-set="is_next_meeting" t-value="false"/>
@@ -49,8 +49,8 @@
<t t-name="Calendar.attendee.status.popover" t-extend="CalendarView.event.popover">
<t t-jquery=".o_cw_popover_delete" t-operation="after">
<div t-if="widget.displayAttendeeAnswerChoice()" class="btn-group o-calendar-attendee-status ml-2">
<a href="#" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<div t-if="widget.displayAttendeeAnswerChoice()" class="btn-group o-calendar-attendee-status ms-2">
<a href="#" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i t-attf-class="fa fa-circle o-calendar-attendee-status-icon #{widget.selectedStatusInfo.color}"/> <span class="o-calendar-attendee-status-text" t-esc="widget.selectedStatusInfo.text"></span>
</a>
<div class="dropdown-menu overflow-hidden">
@@ -70,7 +70,7 @@
<t t-name="Calendar.calendar-box">
<div t-attf-class="#{record.is_highlighted ? 'o_event_hightlight' : ''} #{typeof color === 'number' ? _.str.sprintf('o_calendar_color_%s', color) : 'o_calendar_color_1'} fc-event o_event o_attendee_status_#{record.is_alone ? 'alone' : record.attendee_status} py-0" >
<div t-attf-class="#{record.attendee_status != 'accepted' ? 'font-weight-normal' : ''} o_event_title mr-2">
<div t-attf-class="#{record.attendee_status != 'accepted' ? 'fw-normal' : ''} o_event_title me-2">
<span t-if="record.is_alone" class="fa fa-exclamation-circle"/>
<t t-esc="record.display_name"/>
</div>
+1 -1
View File
@@ -19,7 +19,7 @@
</div>
<div class="card-body">
<div class="clearfix mb16" t-if="attendee.state != 'needsAction'">
<span class="float-right badge badge-info">
<span class="float-end badge text-bg-info">
<t t-if="attendee.state == 'accepted'">Yes I'm going.</t>
<t t-if="attendee.state == 'declined'">No I'm not going.</t>
<t t-if="attendee.state == 'tentative'">Tentative</t>
+1 -1
View File
@@ -253,7 +253,7 @@
<field name="email" widget="email"/>
<span>Status: <field name="state" /></span>
<div class="text-right">
<div class="text-end">
<button name="do_tentative" states="needsAction,declined,accepted" string="Uncertain" type="object" class="btn fa fa-asterisk"/>
<button name="do_accept" states="needsAction,tentative,declined" string="Accept" type="object" class="btn fa fa-check text-success"/>
<button name="do_decline" states="needsAction,tentative,accepted" string="Decline" type="object" class="btn fa fa-times-circle text-danger"/>
+2 -2
View File
@@ -13,8 +13,8 @@
</field>
<xpath expr="//div[hasclass('oe_kanban_bottom_left')]" position="inside">
<a t-if="record.meeting_count.value>0" data-type="object" data-name="schedule_meeting"
href="#" class="oe_kanban_action oe_kanban_action_a mr-1">
<span class="badge badge-pill">
href="#" class="oe_kanban_action oe_kanban_action_a me-1">
<span class="badge rounded-pill">
<i class="fa fa-fw fa-calendar" aria-label="Meetings" role="img" title="Meetings"/>
<t t-out="record.meeting_count.value"/>
</span>
+8 -8
View File
@@ -6,10 +6,10 @@
<t t-foreach="opportunities" t-as="lead">
<div>
<span>Merged the Lead/Opportunity</span>
<span class="font-weight-bold" t-field="lead.name"/>
<span class="fw-bold" t-field="lead.name"/>
<span>into this one.</span>
</div>
<blockquote class="border-left" data-o-mail-quote="1">
<blockquote class="border-start" data-o-mail-quote="1">
<div t-if="lead.expected_revenue">
<span>Expected Revenues:</span>
<span t-if="lead.expected_revenue">
@@ -66,9 +66,9 @@
</div>
<div t-if="lead.tag_ids" name="tag_ids" class="d-flex flex-row">
Tags:
<div class="ml-2 d-flex flex-row">
<div class="ms-2 d-flex flex-row">
<div t-foreach="lead.tag_ids" t-as="tag" t-esc="tag.name"
t-attf-class="badge badge-pill o_tag_color_#{tag.color} d-inline-block"/>
t-attf-class="badge rounded-pill o_tag_color_#{tag.color} d-inline-block"/>
</div>
</div>
<div t-if="lead.user_id" class="mt-3">
@@ -83,7 +83,7 @@
<div>
<div class="mt-3"
t-if="lead.contact_name or lead.partner_name or lead.phone or lead.mobile or lead.email_from or lead.website">
<div class="font-weight-bold">
<div class="fw-bold">
Contact Details:
</div>
<div t-if="lead.contact_name">
@@ -115,7 +115,7 @@
<div class="mt-3"
t-if="lead.street or lead.street2 or lead.zip or lead.city or lead.state_id or lead.country_id"
name="address">
<div class="font-weight-bold">
<div class="fw-bold">
Address:
</div>
<div t-if="lead.street" t-field="lead.street"/>
@@ -127,7 +127,7 @@
</div>
<div class="mt-3" name="marketing"
t-if="lead.campaign_id or lead.medium_id or lead.source_id">
<div class="font-weight-bold">
<div class="fw-bold">
Marketing:
</div>
<div t-if="lead.campaign_id">
@@ -145,7 +145,7 @@
<div>
The contacts below have been added as followers of this lead
because they have been contacted less than 30 days ago on
<span class="font-weight-bold" t-esc="lead.name"/>.
<span class="fw-bold" t-esc="lead.name"/>.
</div>
<ul>
<li t-foreach="lead_followers" t-as="follower">
+5 -5
View File
@@ -49,7 +49,7 @@
<widget name="web_ribbon" title="Won" attrs="{'invisible': [('probability', '&lt;', 100)]}" />
<div class="oe_title">
<h1><field class="o_text_overflow" name="name" placeholder="e.g. Product Pricing"/></h1>
<h2 class="o_row no-gutters align-items-end">
<h2 class="o_row g-0 align-items-end">
<div class="col" attrs="{'invisible': [('type', '=', 'lead')]}">
<label for="expected_revenue" class="oe_edit_only" />
<div class="o_row">
@@ -61,7 +61,7 @@
</div>
<div class="col" attrs="{'invisible': [('type', '=', 'lead')]}" groups="crm.group_use_recurring_revenues">
<div class="o_row">
<field name="recurring_revenue" class="pr-2 oe_inline" widget="monetary" options="{'currency_field': 'company_currency'}"/>
<field name="recurring_revenue" class="pe-2 oe_inline" widget="monetary" options="{'currency_field': 'company_currency'}"/>
</div>
</div>
<div class="col" attrs="{'invisible': [('type', '=', 'lead')]}" groups="crm.group_use_recurring_revenues">
@@ -470,11 +470,11 @@
<field name="phone" string="Phone" />
<label for="expected_revenue"/>
<div class="o_row">
<field name="expected_revenue" class="oe_inline mr-5" widget="monetary" options="{'currency_field': 'company_currency'}"/>
<field name="expected_revenue" class="oe_inline me-5" widget="monetary" options="{'currency_field': 'company_currency'}"/>
<field name="priority" class="oe_inline" nolabel="1" widget="priority"/>
</div>
<div class="o_row" groups="crm.group_use_recurring_revenues">
<field name="recurring_revenue" class="oe_inline pr-4" widget="monetary" options="{'currency_field': 'company_currency'}"/>
<field name="recurring_revenue" class="oe_inline pe-4" widget="monetary" options="{'currency_field': 'company_currency'}"/>
<field name="recurring_plan" class="oe_inline" placeholder="E.g. Monthly"
attrs="{'required': [('recurring_revenue', '!=', 0)]}" options="{'no_create': True, 'no_open': True}"/>
</div>
@@ -556,7 +556,7 @@
</div>
<div class="o_dropdown_kanban dropdown">
<a class="dropdown-toggle o-no-caret btn" role="button" data-toggle="dropdown" data-display="static" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<a class="dropdown-toggle o-no-caret btn" role="button" data-bs-toggle="dropdown" data-bs-display="static" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<span class="fa fa-ellipsis-v"/>
</a>
<div class="dropdown-menu" role="menu">
+2 -2
View File
@@ -277,7 +277,7 @@
<t t-else="">Open Opportunities</t>
</a>
</div>
<div class="col-4 text-right text-truncate">
<div class="col-4 text-end text-truncate">
<field name="opportunities_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
</div>
</div>
@@ -289,7 +289,7 @@
<t t-else="">Overdue Opportunities</t>
</a>
</div>
<div class="col-4 text-right text-truncate">
<div class="col-4 text-end text-truncate">
<field name="opportunities_overdue_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
</div>
</div>
@@ -103,7 +103,7 @@
<div class="row mt16" attrs="{'invisible': ['|', ('crm_use_auto_assignment', '=', False), ('crm_auto_assignment_action', '=', 'manual')]}">
<label string="Repeat every" for="crm_auto_assignment_interval_type" class="col-lg-3 o_light_label"/>
<field name="crm_auto_assignment_interval_number"
class="oe_inline mr-2"
class="oe_inline me-2"
attrs="{'required': [('crm_use_auto_assignment', '=', True), ('crm_auto_assignment_action', '=', 'auto')]}"/>
<field name="crm_auto_assignment_interval_type"
class="oe_inline"
+2 -2
View File
@@ -15,8 +15,8 @@
<xpath expr="//div[hasclass('oe_kanban_bottom_left')]" position="inside">
<a t-if="record.opportunity_count.value>0" href="#"
data-type="object" data-name="action_view_opportunity"
class="oe_kanban_action oe_kanban_action_a mr-1">
<span class="badge badge-pill">
class="oe_kanban_action oe_kanban_action_a me-1">
<span class="badge rounded-pill">
<i class="fa fa-fw fa-star" aria-label="Opportunities"
role="img" title="Opportunities"/>
<t t-out="record.opportunity_count.value"/>
+2 -2
View File
@@ -9,11 +9,11 @@
<field name="use_leads"/>
</xpath>
<xpath expr="//div[@id='utm_statistics']" position="inside">
<div class="mr-3"
<div class="me-3"
groups="sales_team.group_sale_salesman"
t-att-title="record.use_leads.raw_value ? 'Leads' : 'Opportunities'">
<i class="fa fa-star text-muted"></i>
<small class="font-weight-bold"><field name="crm_lead_count"/></small>
<small class="fw-bold"><field name="crm_lead_count"/></small>
</div>
</xpath>
</field>
@@ -51,7 +51,7 @@
<group name="requests">
<group>
<div class="o_row">
<field name="lead_number" attrs="{'readonly': [('state', '=', 'done')]}" nolabel="1" class="oe_inline col-md-2 pl-0"/>
<field name="lead_number" attrs="{'readonly': [('state', '=', 'done')]}" nolabel="1" class="oe_inline col-md-2 ps-0"/>
<field name="search_type" widget="selection" attrs="{'readonly': [('state', '=', 'done')]}" nolabel="1" class="oe_inline col-md-6"/>
</div>
</group>
+2 -2
View File
@@ -11,8 +11,8 @@
<table style="width:100%;
border-top-style: solid;border-top-color: #eeeeee;border-top-width: 1px;
border-bottom-style: solid;border-bottom-color: #eeeeee;border-bottom-width: 1px;
border-left-style: solid;border-left-color: #eeeeee;border-left-width: 1px;
border-right-style: solid;border-right-color: #eeeeee;border-right-width: 1px;" t-if="people_data">
border-start-style: solid;border-start-color: #eeeeee;border-start-width: 1px;
border-end-style: solid;border-end-color: #eeeeee;border-end-width: 1px;" t-if="people_data">
<thead>
<tr style="background-color: #eeeeee">
<th t-attf-style="padding: 5px; width: {{hasPhoneNumbers and '30%;' or '50%;'}}">
@@ -51,7 +51,7 @@
<label for="notify_frequency" invisible="1" />
<div class="o_row" attrs="{'invisible': ['|', ('recycle_mode', '=', 'automatic'), ('notify_user_ids', '=', [])]}">
<span class="mr-1">Every</span>
<span class="me-1">Every</span>
<field name="notify_frequency" attrs="{'required': [('notify_user_ids', '!=', [])]}" />
<field name="notify_frequency_period" attrs="{'required': [('notify_user_ids', '!=', [])]}" />
</div>
@@ -24,7 +24,7 @@
</t>
</div>
<div t-if="picking.carrier_id.get_return_label_from_portal and picking.return_label_ids">
<a class="ml-3" t-attf-href="/web/content/#{picking.return_label_ids[:1].id}" target="_blank">
<a class="ms-3" t-attf-href="/web/content/#{picking.return_label_ids[:1].id}" target="_blank">
Print Return Label
</a>
</div>
@@ -17,7 +17,7 @@
<div class="o_row">
<field name='display_price' widget="monetary" options="{'currency_field': 'currency_id'}" attrs="{'invisible': [('carrier_id','=', False)]}"/>
<button name="update_price" type="object" attrs="{'invisible': [('delivery_type','in', ('fixed', 'base_on_rule'))]}">
<i class="fa fa-arrow-right mr-1"/>Get rate
<i class="fa fa-arrow-right me-1"/>Get rate
</button>
</div>
</group>
+2 -2
View File
@@ -260,8 +260,8 @@
}
#header {
padding: 20px 30px 25px 30px;
border-left: 1px solid #875a7b;
border-right: 1px solid #875a7b;
border-start: 1px solid #875a7b;
border-end: 1px solid #875a7b;
}
.global_layout {
padding: 25px 30px 30px 30px;
@@ -17,7 +17,7 @@
</div>
<div class="o_setting_right_pane">
<label string="Digest Email" for="digest_emails"/>
<a href="https://www.odoo.com/documentation/master/applications/general/digest_emails.html" title="Documentation" class="ml-1 o_doc_link" target="_blank"></a>
<a href="https://www.odoo.com/documentation/master/applications/general/digest_emails.html" title="Documentation" class="ms-1 o_doc_link" target="_blank"></a>
<div class="text-muted" id="msg_module_digest">
Add new users as recipient of a periodic email with key metrics
</div>
+2 -2
View File
@@ -15,7 +15,7 @@
<field name="stage_id" ref="event_stage_booked"/>
<field name="tag_ids" eval="[(4, ref('event.event_tag_category_1_tag_1')), (4, ref('event.event_tag_category_2_tag_1'))]"/>
<field name="ticket_instructions" type="html">
<div class="text-center font-weight-bold py-3">Important ticket information</div>
<div class="text-center fw-bold py-3">Important ticket information</div>
<ul>
<li>Please come <b>at least</b> 30 minutes before the beginning of the event.</li>
<li>Tickets can be printed or scanned directly from your phone.</li>
@@ -243,7 +243,7 @@
<p>And this time, we go fully ONLINE! Meet us in our live streams from the comfort of your house.<br/>
Special discount codes will be handed out during the various streams, make sure to be there on time.</p>
<p class="mb-3">For any additional information, please contact us at <a href="mailto:events@idea.com">events@idea.com</a>.</p>
<div class="bg-light rounded-right border-left border-secondary p-3 mb-5" style="border-left-width: 3px !important;">
<div class="bg-light rounded-end border-start border-secondary p-3 mb-5" style="border-start-width: 3px !important;">
<p class="mb-1">This event is fully online and FREE, if you have paid for tickets, you should get a refund.<br/>
It will require a good Internet connection to get the best video quality.</p>
</div>
+19 -19
View File
@@ -15,19 +15,19 @@
<div class="oe_structure"/>
<div class="o_event_foldable_badge_ticket_wrapper p-2">
<div class="o_event_foldable_badge_ticket_wrapper_top page">
<h5 class="o_event_foldable_badge_event_name text-odoo font-weight-bold text-center" t-field="event.name"/>
<h5 class="o_event_foldable_badge_event_name text-odoo fw-bold text-center" t-field="event.name"/>
<div class="text-center o_event_foldable_badge_font_small">
<span itemprop="startDate" t-out="event.date_begin.date()"
class="font-weight-bold"/>
class="fw-bold"/>
<span itemprop="startDateTime" t-out="event.date_begin"
class="font-weight-bold"
class="fw-bold"
t-options='{"widget": "datetime", "time_only": True, "tz_name": event.date_tz, "hide_seconds": True}'/>
<span class="fa fa-arrow-right o_event_foldable_badge_font_faded"/>
<span t-if="not event.is_one_day"
itemprop="endDate" t-out="event.date_end.date()"
class="font-weight-bold"/>
class="fw-bold"/>
<span itemprop="endDateTime" t-out="event.date_end"
class="font-weight-bold"
class="fw-bold"
t-options='{"widget": "datetime", "time_only": True, "tz_name": event.date_tz, "hide_seconds": True}'/>
</div>
<div class="o_event_foldable_badge_font_faded o_event_foldable_badge_font_small text-center">
@@ -63,21 +63,21 @@
<div class="oe_structure"/>
<div class="h-50 col-12 row m-0">
<div class="col-6 h-100 p-0">
<div class="o_event_foldable_badge_step font-weight-bold">1</div>
<div class="o_event_foldable_badge_step fw-bold">1</div>
<img src="/event/static/src/img/how_to_fold_1.png" class="w-100 h-100" alt="How to Fold (1)"/>
</div>
<div class="col-6 h-100 p-0">
<div class="o_event_foldable_badge_step font-weight-bold">2</div>
<div class="o_event_foldable_badge_step fw-bold">2</div>
<img src="/event/static/src/img/how_to_fold_2.png" class="w-100 h-100" alt="How to Fold (2)"/>
</div>
</div>
<div class="h-50 col-12 row m-0">
<div class="col-6 h-100 p-0">
<div class="o_event_foldable_badge_step font-weight-bold">3</div>
<div class="o_event_foldable_badge_step fw-bold">3</div>
<img src="/event/static/src/img/how_to_fold_3.png" class="w-100 h-100" alt="How to Fold (3)"/>
</div>
<div class="col-6 h-100 p-0">
<div class="o_event_foldable_badge_step font-weight-bold">4</div>
<div class="o_event_foldable_badge_step fw-bold">4</div>
<img src="/event/static/src/img/how_to_fold_4.png" class="w-100 h-100" alt="How to Fold (4)"/>
</div>
</div>
@@ -117,18 +117,18 @@
<div class="o_event_full_page_ticket_font_faded">
Event Ticket For
</div>
<h5 class="o_event_full_page_ticket_event_name text-odoo font-weight-bold py-0 my-0" t-field="event.name"/>
<h5 class="o_event_full_page_ticket_event_name text-odoo fw-bold py-0 my-0" t-field="event.name"/>
<span itemprop="startDate" t-out="event.date_begin.date()"
class="font-weight-bold"/>
class="fw-bold"/>
<span itemprop="startDateTime" t-out="event.date_begin"
class="font-weight-bold"
class="fw-bold"
t-options='{"widget": "datetime", "time_only": True, "hide_seconds": True, "tz_name": event.date_tz}'/>
<span class="fa fa-arrow-right o_event_full_page_ticket_font_faded"/>
<span t-if="not event.is_one_day"
itemprop="endDate" t-out="event.date_end.date()"
class="font-weight-bold"/>
class="fw-bold"/>
<span itemprop="endDateTime" t-out="event.date_end"
class="font-weight-bold"
class="fw-bold"
t-options='{"widget": "datetime", "time_only": True, "hide_seconds": True, "tz_name": event.date_tz}'/>
<span itemprop="timeZone" class="o_event_full_page_ticket_font_faded small">(<t t-out="event.date_tz"/>)</span>
<div t-if="event.address_id" class="o_event_full_page_ticket_font_faded">
@@ -147,7 +147,7 @@
<img t-att-src="image_data_uri(event.organizer_id.image_128)" class="o_event_full_page_ticket_event_logo mb-2"/>
</span>
<div t-if="attendee and attendee.partner_id" class="mb-2 o_event_full_page_ticket_side_info_booked_by">
<div class="o_event_full_page_ticket_font_faded o_event_full_page_ticket_small_caps font-weight-bold">Booked By</div>
<div class="o_event_full_page_ticket_font_faded o_event_full_page_ticket_small_caps fw-bold">Booked By</div>
<div class="o_event_full_page_ticket_small" t-field="attendee.partner_id"/>
</div>
</div>
@@ -179,12 +179,12 @@
<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="font-weight-bold" t-field="event.organizer_id.name"></span>
<span t-if="event.organizer_id.phone" class="pl-3 fa fa-phone"/>
<span class="fw-bold" t-field="event.organizer_id.name"></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.email_normalized" class="pl-3 fa fa-envelope"/>
<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.website" class="pl-3 fa fa-globe"/>
<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>
<t t-else="">
+4 -4
View File
@@ -31,7 +31,7 @@
<field name="legend_normal" invisible="1"/>
<field name="legend_done" invisible="1"/>
<widget name="web_ribbon" text="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<field name="kanban_state" widget="state_selection" class="ml-auto float-right"/>
<field name="kanban_state" widget="state_selection" class="ms-auto float-end"/>
<div class="oe_title">
<label for="name" string="Event Name"/>
<h1><field class="o_text_overflow" name="name" placeholder="e.g. Conference for Architects"/></h1>
@@ -191,7 +191,7 @@
</div>
<div><t t-esc="luxon.DateTime.fromJSDate(record.date_begin.raw_value).toFormat('t')"/></div>
<div t-if="luxon.DateTime.fromJSDate(record.date_begin.raw_value).toFormat('DDMMYYYY') !== luxon.DateTime.fromJSDate(record.date_end.raw_value).toFormat('DDMMYYYY')">
<i class="fa fa-arrow-right mr-2 o_event_fontsize_09" title="End date"/>
<i class="fa fa-arrow-right me-2 o_event_fontsize_09" title="End date"/>
<t t-esc="luxon.DateTime.fromJSDate(record.date_end.raw_value).toFormat('d MMM')"/>
</div>
</div>
@@ -210,8 +210,8 @@
</a>
<t t-set="total_seats" t-value="record.seats_reserved.raw_value + record.seats_used.raw_value"/>
<div class="pt-2 pt-md-0" t-if="total_seats > 0 and ! record.auto_confirm.raw_value"><br/>
<a class="pl-2" name="%(event_registration_action_stats_from_event)d" type="action" context="{'search_default_confirmed': True}">
<i class="fa fa-level-up fa-rotate-90" title="Confirmed"/><span class="pl-2"><t t-esc="total_seats"/> Confirmed</span>
<a class="ps-2" name="%(event_registration_action_stats_from_event)d" type="action" context="{'search_default_confirmed': True}">
<i class="fa fa-level-up fa-rotate-90" title="Confirmed"/><span class="ps-2"><t t-esc="total_seats"/> Confirmed</span>
</a>
</div>
</h5>
@@ -106,7 +106,7 @@
<templates>
<t t-name="event_attendees_kanban_icons_desktop">
<div class="d-none d-md-block h-100">
<div id="event_attendees_kanban_icons_desktop" class="h-100 float-right p-2 d-flex align-items-end flex-column">
<div id="event_attendees_kanban_icons_desktop" class="h-100 float-end p-2 d-flex align-items-end flex-column">
<t t-if="record.active.raw_value">
<a class="btn btn-md btn-primary" string="Confirm Registration" name="action_confirm" type="object" states="draft" role="button">
<i class="fa fa-check" role="img" aria-label="Confirm button" title="Confirm Registration"/>
@@ -121,7 +121,7 @@
</div>
</t>
<t t-name="event_attendees_kanban_icons_mobile">
<div id="event_attendees_kanban_icons_mobile" class="d-md-none h-100 pl-4">
<div id="event_attendees_kanban_icons_mobile" class="d-md-none h-100 ps-4">
<t t-if="record.active.raw_value">
<a class="btn btn-primary d-flex justify-content-center align-items-center h-100 w-100"
string="Confirm Registration" name="action_confirm" type="object" states="draft" role="button">
@@ -144,15 +144,15 @@
<span class="bg-danger">Archived</span>
</div>
<div class="row h-100">
<div class="col-9 pr-0">
<div class="col-9 pe-0">
<div class="oe_kanban_content h-100">
<div class="o_kanban_record_body pt-1 pl-2 h-100 d-flex flex-column">
<div class="o_kanban_record_body pt-1 ps-2 h-100 d-flex flex-column">
<b class="o_kanban_record_title"><field name="name"/></b>
<field class="o_text_overflow" name="event_id" invisible="context.get('default_event_id')" />
<span class="o_text_overflow" attrs="{'invisible': [('partner_id', '=', False)]}">Booked by <field name="partner_id" /></span>
<div id="event_ticket_id" class="o_field_many2manytags o_field_widget d-flex mt-auto">
<t t-if="record.event_ticket_id.raw_value">
<div t-attf-class="badge badge-pill o_tag_color_#{(record.event_ticket_id.raw_value % 11) + 1}" >
<div t-attf-class="badge rounded-pill o_tag_color_#{(record.event_ticket_id.raw_value % 11) + 1}" >
<b><span class="o_badge_text o_text_overflow"><t t-out="record.event_ticket_id.value"/></span></b>
</div>
</t>
@@ -160,7 +160,7 @@
</div>
</div>
</div>
<div id="event_attendees_kanban_icons" class="col-3 pl-0">
<div id="event_attendees_kanban_icons" class="col-3 ps-0">
<t t-call="event_attendees_kanban_icons_desktop"/>
<t t-call="event_attendees_kanban_icons_mobile"/>
</div>
@@ -4,7 +4,7 @@
<template id="crm_lead_merge_summary_inherit_event_crm" inherit_id="crm.crm_lead_merge_summary">
<xpath expr="//div[@name='marketing']" position="after">
<div class="mt-3 mb-3" name="event" t-if="lead.event_lead_rule_id or lead.event_id">
<div class="font-weight-bold">
<div class="fw-bold">
Event:
</div>
<div t-if="lead.event_id">
@@ -3,17 +3,17 @@
<template id="event_report_template_full_page_ticket_inherit_sale" inherit_id="event.event_report_template_full_page_ticket">
<xpath expr="//div[hasclass('o_event_full_page_ticket_side_info_booked_by')]" position="before">
<div t-if="attendee and attendee.sale_order_id" class="mb-2">
<div class="o_event_full_page_ticket_font_faded o_event_full_page_ticket_small_caps font-weight-bold">Order Ref</div>
<div class="o_event_full_page_ticket_font_faded o_event_full_page_ticket_small_caps fw-bold">Order Ref</div>
<div class="o_event_full_page_ticket_small" t-field="attendee.sale_order_id"/>
</div>
</xpath>
<xpath expr="//div[hasclass('o_event_full_page_ticket_side_info')]" position="inside">
<div t-if="attendee and attendee.sale_order_id" class="mb-2">
<div class="o_event_full_page_ticket_font_faded o_event_full_page_ticket_small_caps font-weight-bold">Order Date</div>
<div class="o_event_full_page_ticket_font_faded o_event_full_page_ticket_small_caps fw-bold">Order Date</div>
<div class="o_event_full_page_ticket_small" t-out="attendee.sale_order_id.date_order.date()"/>
</div>
<div t-if="attendee and attendee.sale_order_line_id.price_total">
<div class="o_event_full_page_ticket_font_faded o_event_full_page_ticket_small_caps font-weight-bold">Price</div>
<div class="o_event_full_page_ticket_font_faded o_event_full_page_ticket_small_caps fw-bold">Price</div>
<div class="o_event_full_page_ticket_small" t-field="attendee.sale_order_line_id.price_total"
t-options="{'widget': 'monetary', 'display_currency': attendee.sale_order_line_id.currency_id}"/>
</div>
@@ -75,7 +75,7 @@
<field name="price"/>
</field>
<xpath expr="//div[hasclass('col-8')]" position="after">
<div class="col-4 text-right"><strong> <t t-out="record.price.value"/></strong></div>
<div class="col-4 text-end"><strong> <t t-out="record.price.value"/></strong></div>
</xpath>
<xpath expr="//div[hasclass('row')]" position="after">
<div t-out="record.product_id.value"/>
@@ -12,7 +12,7 @@
<div></div>
<div attrs="{'invisible': [('server_type', '!=', 'gmail')]}">
<span attrs="{'invisible': ['|', ('server_type', '!=', 'gmail'), ('google_gmail_refresh_token', '=', False)]}"
class="badge badge-success">
class="badge text-bg-success">
Gmail Token Valid
</span>
<button type="object"
@@ -18,7 +18,7 @@
<div></div>
<div attrs="{'invisible': [('use_microsoft_outlook_service', '=', False)]}">
<span attrs="{'invisible': ['|', ('use_microsoft_outlook_service', '=', False), ('microsoft_outlook_refresh_token', '=', False)]}"
class="badge badge-success">
class="badge text-bg-success">
Outlook Token Valid
</span>
<button type="object"
@@ -75,7 +75,7 @@
sample="1">
<field name="active" invisible="1"/>
<field name="expires_today" invisible="1"/>
<field name="name" class="font-weight-bold" />
<field name="name" class="fw-bold" />
<field name="start_date" />
<field name="expiration_date" widget="remaining_days"/>
<field name="days_left" invisible="1"/>
@@ -104,7 +104,7 @@
<div>
<strong>
<field name="vehicle_id" widget="res_partner_many2one"/>
<span class="float-right badge badge-secondary">
<span class="float-end badge text-bg-secondary">
<field name="state"/>
</span>
</strong>
@@ -238,7 +238,7 @@
<label for="odometer"/>
<div class="o_row">
<field name="odometer" class="oe_inline"/>
<field name="odometer_unit" class="pl-1 pl-sm-0"/>
<field name="odometer_unit" class="ps-1 ps-sm-0"/>
</div>
</group>
</group>
@@ -292,12 +292,12 @@
<div t-attf-class="oe_kanban_global_click container" class="o_kanban_record_has_image_fill">
<div class="oe_kanban_details">
<div class="o_kanban_record_top">
<img t-att-src="kanban_image('fleet.vehicle', 'image_128', record.vehicle_id.raw_value)" t-att-alt="record.vehicle_id.value" class="o_image_24_cover float-left"/>
<div class="o_kanban_record_headings pl-2 pr-2">
<img t-att-src="kanban_image('fleet.vehicle', 'image_128', record.vehicle_id.raw_value)" t-att-alt="record.vehicle_id.value" class="o_image_24_cover float-start"/>
<div class="o_kanban_record_headings ps-2 pe-2">
<div class="text-truncate o_kanban_record_title">
<strong>
<field name="vehicle_id"/>
<span t-attf-class="float-right badge #{['todo', 'running'].indexOf(record.state.raw_value) > -1 ? 'badge-secondary' : ['cancelled'].indexOf(record.state.raw_value) > -1 ? 'badge-danger' : 'badge-success'}">
<span t-attf-class="float-end badge #{['todo', 'running'].indexOf(record.state.raw_value) > -1 ? 'text-bg-secondary' : ['cancelled'].indexOf(record.state.raw_value) > -1 ? 'text-bg-danger' : 'text-bg-success'}">
<field name="state"/>
</span>
</strong>
@@ -309,7 +309,7 @@
</div>
<div class="text-truncate">
<field name="purchaser_id"/>
<span class="float-right"><field name="date"/></span>
<span class="float-end"><field name="date"/></span>
</div>
<div class="text-truncate">
<field name="vendor_id"/>
@@ -77,7 +77,7 @@
<div>
<div class="o_kanban_record_title">
<field name="name"/>
<div class="o_kanban_details float-right">
<div class="o_kanban_details float-end">
<span class="text-muted">
<t t-if="record.phone.raw_value"><field name="phone"/><br/></t>
<t t-if="record.email.raw_value"><field name="email"/></t>
@@ -206,7 +206,7 @@
<t t-name="kanban-box">
<div class="oe_kanban_vignette oe_semantic_html_override oe_kanban_global_click">
<div class="o_dropdown_kanban dropdown">
<a class="dropdown-toggle o-no-caret btn" role="button" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<a class="dropdown-toggle o-no-caret btn" role="button" data-bs-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<span class="fa fa-ellipsis-v"/>
</a>
<div class="dropdown-menu" role="menu">
+3 -3
View File
@@ -370,7 +370,7 @@
<label for="value"/>
<div class="o_row">
<field name="value" class="oe_inline"/>
<field name="unit" class="ml-2"/>
<field name="unit" class="ms-2"/>
</div>
<field name="date"/>
</group>
@@ -405,12 +405,12 @@
<div>
<strong>
<field name="vehicle_id"/>
<span class="float-right"><field name="date"/></span>
<span class="float-end"><field name="date"/></span>
</strong>
</div>
<div>
<span><field name="driver_id"/></span>
<span class="float-right"><field name="value"/> Km</span>
<span class="float-end"><field name="value"/> Km</span>
</div>
</div>
</t>
@@ -15,7 +15,7 @@
<field name="description_motivational" type="html">
<div class="d-flex align-items-center">
<div class="flex-grow-1">Earn your first points and join the adventure !</div>
<img class="ml-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_newbie_badge.svg"/>
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_newbie_badge.svg"/>
</div>
</field>
<field name="karma_min">1</field>
@@ -28,7 +28,7 @@
<field name="description_motivational" type="html">
<div class="d-flex align-items-center">
<div class="flex-grow-1">Reach the next rank to show the rest of the world you exist.</div>
<img class="ml-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_student_badge.svg"/>
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_student_badge.svg"/>
</div>
</field>
<field name="karma_min">100</field>
@@ -41,7 +41,7 @@
<field name="description_motivational" type="html">
<div class="d-flex align-items-center">
<div class="flex-grow-1">Reach the next rank to improve your status!</div>
<img class="ml-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_bachelor_badge.svg"/>
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_bachelor_badge.svg"/>
</div>
</field>
<field name="karma_min">500</field>
@@ -54,7 +54,7 @@
<field name="description_motivational" type="html">
<div class="d-flex align-items-center">
<div class="flex-grow-1">Reach the next rank and become a Master!</div>
<img class="ml-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_master_badge.svg"/>
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_master_badge.svg"/>
</div>
</field>
<field name="karma_min">2000</field>
@@ -67,7 +67,7 @@
<field name="description_motivational" type="html">
<div class="d-flex align-items-center">
<div class="flex-grow-1">Reach the next rank and become a powerful user!</div>
<img class="ml-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_doctor_badge.svg"/>
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_doctor_badge.svg"/>
</div>
</field>
<field name="karma_min">10000</field>
@@ -5,7 +5,7 @@
<field name="description_motivational" type="html">
<div class="d-flex align-items-center">
<div class="flex-grow-1">Reach the next rank and gain a very nice mug !</div>
<img class="ml-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_mug.png"/>
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_mug.png"/>
</div>
</field>
</record>
@@ -14,7 +14,7 @@
<field name="description_motivational" type="html">
<div class="d-flex align-items-center">
<div class="flex-grow-1">Reach the next rank and gain a very magic wand !</div>
<img class="ml-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_wand.png"/>
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_wand.png"/>
</div>
</field>
</record>
@@ -23,7 +23,7 @@
<field name="description_motivational" type="html">
<div class="d-flex align-items-center">
<div class="flex-grow-1">Reach the next rank and gain a very nice hat !</div>
<img class="ml-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_hat.png"/>
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_hat.png"/>
</div>
</field>
</record>
@@ -32,7 +32,7 @@
<field name="description_motivational" type="html">
<div class="d-flex align-items-center">
<div class="flex-grow-1">Reach the next rank and gain a very nice unicorn !</div>
<img class="ml-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_unicorn.png"/>
<img class="ms-3 img img-fluid" style="max-height: 72px;" src="/gamification/static/img/rank_misc_unicorn.png"/>
</div>
</field>
</record>
@@ -169,7 +169,7 @@
<div t-attf-class="oe_kanban_card oe_kanban_global_click o_kanban_gamification #{record.end_date.raw_value &lt; record.last_update.raw_value and record.state.raw_value == 'failed' ? 'oe_kanban_color_2' : ''} #{record.end_date.raw_value &lt; record.last_update.raw_value and record.state.raw_value == 'reached' ? 'oe_kanban_color_5' : ''}">
<div class="o_kanban_content">
<p><strong><h4 class="oe_goal_name text-center" tooltip="kanban-tooltip"><field name="definition_id" /></h4></strong></p>
<div class="float-left">
<div class="float-start">
<img class="o_image_24_cover" t-att-src="kanban_image('res.users', 'avatar_128', record.user_id.raw_value)" t-att-title="record.user_id.value" t-att-alt="record.user_id.value"/>
</div>
<field name="user_id" />
@@ -5,7 +5,7 @@
<button type="button" id="google_sync_pending" class="o_google_sync_button o_google_sync_pending btn btn-secondary btn">
<b><i class='fa fa-refresh'/> Google</b>
</button>
<button type="button" id="google_sync_configured" class="mr-1 o_google_sync_button o_google_sync_button_configured btn badge-primary">
<button type="button" id="google_sync_configured" class="me-1 o_google_sync_button o_google_sync_button_configured btn text-bg-primary">
<b>
<i id="google_check" class='fa fa-check'/>
<i id="google_stop" class='fa fa-times' style="display: none"/>&amp;nbsp;Google
@@ -11,7 +11,7 @@
<div></div>
<div attrs="{'invisible': [('smtp_authentication', '!=', 'gmail')]}">
<span attrs="{'invisible': ['|', ('smtp_authentication', '!=', 'gmail'), ('google_gmail_refresh_token', '=', False)]}"
class="badge badge-success">
class="badge text-bg-success">
Gmail Token Valid
</span>
<button type="object"
@@ -9,11 +9,11 @@
<div id="msg_module_google_gmail" position="replace">
<div class="row mt16" id="gmail_client_identifier">
<label string="Client ID" for="google_gmail_client_identifier" class="col-lg-3 o_light_label"/>
<field name="google_gmail_client_identifier" class="ml-2"/>
<field name="google_gmail_client_identifier" class="ms-2"/>
</div>
<div class="row mt16" id="gmail_client_secret">
<label string="Client Secret" for="google_gmail_client_secret" class="col-lg-3 o_light_label"/>
<field name="google_gmail_client_secret" class="ml-2"/>
<field name="google_gmail_client_secret" class="ms-2"/>
</div>
</div>
</field>
+5 -5
View File
@@ -134,21 +134,21 @@
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title">
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_present'">
<!-- Employee is present/connected and it is normal according to his work schedule -->
<span class="fa fa-circle text-success" role="img" aria-label="Present"
title="Present" name="presence_present">
</span>
</div>
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_absent'">
<!-- Employee is absent and it is normal according to his work schedule -->
<span class="fa fa-circle-o text-muted" role="img" aria-label="Absent"
title="Absent" name="presence_absent">
</span>
</div>
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_absent_active'">
<!-- Employee is connected but according to his work schedule, he should not work for now -->
<span class="fa fa-circle-o text-success" role="img"
@@ -157,7 +157,7 @@
</span>
</div>
<!-- Employee is not here but according to his work schedule, he should be connected -->
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_to_define'">
<span class="fa fa-circle text-warning" role="img"
aria-label="To define" title="To define"
@@ -174,7 +174,7 @@
<li t-if="record.work_email.raw_value"><field name="work_email" /></li>
<li t-if="record.work_phone.raw_value" class="o_force_ltr"><field name="work_phone" /></li>
</ul>
<div class="oe_kanban_content position-absolute fixed-bottom mr-2">
<div class="oe_kanban_content position-absolute fixed-bottom me-2">
<div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left"/>
<div class="oe_kanban_bottom_right">
+6 -6
View File
@@ -272,7 +272,7 @@
<div class="o_kanban_record_top">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title">
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_present'"
name="presence_present">
<!-- Employee is present/connected and it is normal according to his work schedule -->
@@ -280,7 +280,7 @@
title="Present" name="presence_present">
</span>
</div>
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_absent'"
name="presence_absent">
<!-- Employee is not present and it is normal according to his work schedule -->
@@ -288,7 +288,7 @@
title="Absent" name="presence_absent">
</span>
</div>
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_absent_active'"
name="presence_absent_active">
<!-- Employee is connected but according to his work schedule,
@@ -299,7 +299,7 @@
name="presence_absent_active">
</span>
</div>
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_to_define'"
name="presence_to_define">
<!-- Employee is not here but according to his work schedule, he should be connected -->
@@ -320,10 +320,10 @@
<li t-if="record.work_phone.raw_value" class="o_force_ltr"><field name="work_phone" /></li>
</ul>
</div>
<div class="oe_kanban_content position-absolute fixed-bottom mr-2 o_hr_employee_kanban_bottom">
<div class="oe_kanban_content position-absolute fixed-bottom me-2 o_hr_employee_kanban_bottom">
<div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left"/>
<div class="oe_kanban_bottom_right float-right">
<div class="oe_kanban_bottom_right float-end">
<a title="Chat" icon="fa-comments" href="#" class="ml8 o_employee_chat_btn" attrs="{'invisible': [('user_id','=', False)]}" role="button"><i class="fa fa-comments"/></a>
<div class="hr_activity_container">
<field name="activity_ids" widget="kanban_activity"/>
+2 -2
View File
@@ -24,8 +24,8 @@
<group>
<label for="no_of_recruitment"/>
<div class="o_row" name="recruitment_target">
<field name="no_of_recruitment" class="col-3 pl-0"/>
<span class="pl-1">new Employees</span>
<field name="no_of_recruitment" class="col-3 ps-0"/>
<span class="ps-1">new Employees</span>
</div>
</group>
</group>
@@ -43,16 +43,16 @@
<label for="hr_presence_control_email" class="o_light_label"/>
</div>
<div class="d-flex ml32" attrs="{'invisible': ['|', ('module_hr_presence', '=', False), ('hr_presence_control_email', '=', False)]}">
<span class="flex-shrink-0 ml8 mr-2">Minimum number of emails to sent </span>
<field name="hr_presence_control_email_amount" class="ml-2 oe_inline"/>
<span class="flex-shrink-0 ml8 me-2">Minimum number of emails to sent </span>
<field name="hr_presence_control_email_amount" class="ms-2 oe_inline"/>
</div>
<div class="d-flex" attrs="{'invisible': [('module_hr_presence', '=', False)]}">
<field name="hr_presence_control_ip" class="ml16"/>
<label for="hr_presence_control_ip" class="o_light_label"/>
</div>
<div class="d-flex ml32" attrs="{'invisible': ['|', ('module_hr_presence', '=', False), ('hr_presence_control_ip', '=', False)]}">
<span class="flex-shrink-0 ml8 mr-2">IP Addresses (comma-separated)</span>
<field name="hr_presence_control_ip_list" class="ml-2 oe_inline"/>
<span class="flex-shrink-0 ml8 me-2">IP Addresses (comma-separated)</span>
<field name="hr_presence_control_ip_list" class="ms-2 oe_inline"/>
</div>
</div>
</div>
+1 -1
View File
@@ -92,7 +92,7 @@
</h1>
</div>
<div class="row">
<h2 class="col-6 pl-0">
<h2 class="col-6 ps-0">
<field name="job_title" placeholder="Job Position" attrs="{'readonly': [('can_edit', '=', False)]}"/>
</h2>
</div>
@@ -8,7 +8,7 @@
<t t-name="HrAttendanceCardLayout">
<div class="o_hr_attendance_kiosk_mode_container o_home_menu_background d-flex flex-column align-items-center justify-content-center h-100 text-center">
<span class="o_hr_attendance_kiosk_backdrop position-absolute top-0 start-0 end-0 bottom-0 bg-black-25"/>
<div class="o_hr_attendance_clock bg-black-50 p-3 py-md-2 m-0 mt-md-5 mr-md-5 h2 text-white text-monospace"/>
<div class="o_hr_attendance_clock bg-black-50 p-3 py-md-2 m-0 mt-md-5 me-md-5 h2 text-white font-monospace"/>
<div t-attf-class="o_hr_attendance_kiosk_mode flex-grow-1 flex-md-grow-0 card pb-3 px-0 px-lg-5 {{kioskModeClasses ? kioskModeClasses : '' }}">
<div class="card-body d-flex flex-column p-0 p-md-4">
<t t-out="bodyContent"></t>
@@ -112,12 +112,12 @@
<h3 class="mt-4 mb0 text-muted">Please enter your PIN to <b t-if="checked_in">check out</b><b t-else="">check in</b></h3>
<div class="row">
<div class="col-md-8 offset-md-2 o_hr_attendance_pin_pad">
<div class="row no-gutters" >
<div class="row g-0" >
<div class="col-12 mb8 mt8">
<input class="o_hr_attendance_PINbox border-0 bg-white fs-1 text-center" type="password" disabled="true"/>
</div>
</div>
<div class="row no-gutters">
<div class="row g-0">
<t t-foreach="['1', '2', '3', '4', '5', '6', '7', '8', '9', ['C', 'btn-warning'], '0', ['ok', 'btn-primary']]" t-as="btn_name">
<div class="col-4 p-1">
<a href="#" t-attf-class="o_hr_attendance_PINbox_button btn {{btn_name[1]? btn_name[1] : 'btn-secondary border'}} btn-block btn-lg {{ 'o_hr_attendance_pin_pad_button_' + btn_name[0] }} d-flex align-items-center justify-content-center">
@@ -164,7 +164,7 @@
<t t-if="widget.total_overtime_float &gt; 0">
Total extra hours: <span t-esc="widget.total_overtime"/>
</t>
<h3 class="o_hr_attendance_random_message font-italic mb24"/>
<h3 class="o_hr_attendance_random_message fst-italic mb24"/>
<div class="o_hr_attendance_warning_message mt24 alert alert-warning" style="display:none" role="alert"/>
</div>
<div t-else="" class="flex-grow-1">
@@ -143,10 +143,10 @@
</div>
<div class="oe_kanban_details">
<div id="textbox">
<div class="float-right" t-if="record.attendance_state.raw_value == 'checked_in'">
<div class="float-end" t-if="record.attendance_state.raw_value == 'checked_in'">
<span id="oe_hr_attendance_status" class="fa fa-circle text-success me-1" role="img" aria-label="Available" title="Available"></span>
</div>
<div class="float-right" t-if="record.attendance_state.raw_value == 'checked_out'">
<div class="float-end" t-if="record.attendance_state.raw_value == 'checked_out'">
<span id="oe_hr_attendance_status" class="fa fa-circle text-warning me-1"
role="img" aria-label="Not available" title="Not available">
</span>
@@ -52,7 +52,7 @@
<div>
<field name="display_name"/>
</div>
<div class="pl-3">
<div class="ps-3">
<field name="under_contract_state" widget="state_selection" readonly="1"/>
</div>
</div>
@@ -186,7 +186,7 @@
<field name="job_id"/>
</div>
<div class="oe_kanban_bottom_right">
<span class="float-right">
<span class="float-end">
<field name="employee_id" widget="many2one_avatar_employee"/>
</span>
</div>
@@ -52,7 +52,7 @@
<div>
<field name="resource_calendar_id" required="1" nolabel="1"/>
<span attrs="{'invisible': [('calendar_mismatch', '=', False)]}"
class="fa fa-exclamation-triangle text-danger o_calendar_warning ml-3"
class="fa fa-exclamation-triangle text-danger o_calendar_warning ms-3"
data-tooltip-template="hr_contract.CalendarMismatch"
data-tooltip-info='{
"text":"Calendar Mismatch : The employee&apos;s calendar does not match this contract&apos;s calendar. This could lead to unexpected behaviors."
@@ -141,7 +141,7 @@
<sheet>
<div class="oe_button_box" name="button_box"/>
<widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible': [('active', '=', True)]}"/>
<div class="oe_title pr-0" name="title">
<div class="oe_title pe-0" name="title">
<h1 class="d-flex flex-row justify-content-between">
<field name="name" class="text-truncate" placeholder="Contract Reference"/>
<field name="kanban_state" widget="state_selection" readonly="1"/>
@@ -164,7 +164,7 @@
<div id="resource_calendar_warning">
<field name="resource_calendar_id" required="1" nolabel="1" options="{'no_open': True, 'no_create': True}"/>
<span attrs="{'invisible': ['|', ('calendar_mismatch', '=', False), ('state', '!=', 'open')]}"
class="fa fa-exclamation-triangle text-danger o_calendar_warning ml-3"
class="fa fa-exclamation-triangle text-danger o_calendar_warning ms-3"
data-tooltip-template="hr_contract.CalendarMismatch"
data-tooltip-info='{
"text":"Calendar Mismatch : The employee&apos;s calendar does not match this contract&apos;s calendar. This could lead to unexpected behaviors."
@@ -272,7 +272,7 @@
<t t-name="kanban-box">
<div class="oe_kanban_card oe_kanban_global_click">
<div class="o_dropdown_kanban dropdown" t-if="!selection_mode" groups="hr_contract.group_hr_contract_manager">
<a class="dropdown-toggle o-no-caret btn" role="button" data-toggle="dropdown" data-display="static" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<a class="dropdown-toggle o-no-caret btn" role="button" data-bs-toggle="dropdown" data-bs-display="static" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<span class="fa fa-ellipsis-v"/>
</a>
<div class="dropdown-menu" role="menu">
@@ -290,10 +290,10 @@
<field name="job_id"/>
</div>
<div class="oe_kanban_bottom_right">
<span class="float-right">
<span class="float-end">
<field name="employee_id" widget="many2one_avatar_employee"/>
</span>
<span class="float-right mr4">
<span class="float-end mr4">
<field name="kanban_state" widget="state_selection"/>
</span>
</div>
@@ -39,8 +39,8 @@
<th>Unit Price</th>
<th>Taxes</th>
<th class="text-center">Qty</th>
<th class="text-right">Price</th>
<th t-if="o.is_multiple_currency" class="text-right">Price in Company Currency</th>
<th class="text-end">Price</th>
<th t-if="o.is_multiple_currency" class="text-end">Price in Company Currency</th>
</tr>
</thead>
<tbody>
@@ -70,11 +70,11 @@
<td class="text-center">
<span t-field="line.quantity"/>
</td>
<td class="text-right">
<td class="text-end">
<span t-field="line.total_amount"
t-options='{"widget": "monetary", "display_currency": line.currency_id}'/>
</td>
<td t-if="o.is_multiple_currency" class="text-right">
<td t-if="o.is_multiple_currency" class="text-end">
<span t-field="line.total_amount_company"/>
</td>
</tr>
@@ -86,7 +86,7 @@
<table class="table table-sm">
<tr class="border-black">
<td><strong>Total</strong></td>
<td class="text-right">
<td class="text-end">
<span t-field="o.total_amount"
t-options='{"widget": "monetary", "display_currency": o.currency_id}'/>
</td>
@@ -10,7 +10,8 @@
.o_view_nocontent_expense_receipt:before {
@extend %o-nocontent-init-image;
@include size(300px, 230px);
width: 300px;
height: 230px;
background: transparent url(/hr_expense/static/img/nocontent.png) no-repeat center;
background-size: 300px 230px;
margin-bottom: 0.75rem;
@@ -8,12 +8,12 @@
<field name="arch" type="xml">
<xpath expr="//t[@id='account.JournalBodySalePurchase']//div[hasclass('o_kanban_primary_right')]" position="inside">
<div class="row" t-if="dashboard.number_expenses_to_pay">
<div class="col overflow-hidden text-left">
<div class="col overflow-hidden text-start">
<a type="object" t-if="journal_type == 'purchase'" name="open_expenses_action">
<t t-esc="dashboard.number_expenses_to_pay"/> Expenses to Process
</a>
</div>
<div class="col-auto text-right">
<div class="col-auto text-end">
<span t-if="journal_type == 'purchase'"><t t-esc="dashboard.sum_expenses_to_pay"/></span>
</div>
</div>
+11 -11
View File
@@ -67,7 +67,7 @@
<field name="quantity" optional="hide"/>
<field name="tax_ids" optional="hide" widget="many2many_tags" groups="account.group_account_invoice,account.group_account_readonly"/>
<field name="amount_tax_company" optional="hide" groups="account.group_account_invoice,account.group_account_readonly"/>
<field name="attachment_number" nolabel="1" class='fa fa-paperclip pr-0' attrs="{'invisible': [('attachment_number', '=', 0)]}"/>
<field name="attachment_number" nolabel="1" class='fa fa-paperclip pe-0' attrs="{'invisible': [('attachment_number', '=', 0)]}"/>
<field name="total_amount_company" optional="show" sum="Total Company Currency" widget='monetary' options="{'currency_field': 'company_currency_id'}" decoration-bf="True"/>
<field name="total_amount" optional="hide" decoration-bf="True" groups="base.group_multi_currency"/>
<field name="currency_id" optional="hide" groups="base.group_multi_currency"/>
@@ -142,7 +142,7 @@
<field name="product_id" required="1" attrs="{'readonly': [('sheet_is_editable', '=', False)]}" context="{'default_can_be_expensed': 1, 'tree_view_ref': 'hr_expense.product_product_expense_tree_view', 'form_view_ref': 'hr_expense.product_product_expense_form_view'}"/>
<label for="product_description" string="" attrs="{'invisible': ['|', ('product_description', '=', False), ('product_id', '=', False)]}"/>
<div class="o_row" attrs="{'invisible': ['|', ('product_description', '=', False), ('product_id', '=', False)]}">
<field name ="product_description" class="font-italic"/>
<field name ="product_description" class="fst-italic"/>
</div>
<field name="unit_amount" required="1" force_save="1" widget="monetary" options="{'currency_field': 'currency_id', 'field_digits': True}" attrs="{'invisible': [('product_has_cost', '=', False)], 'readonly': ['|', ('sheet_is_editable', '=', False), ('product_has_cost', '=', True)]}"/>
<field name="product_uom_category_id" invisible="1"/>
@@ -173,11 +173,11 @@
options="{'no_create': True}"/>
</div>
<div class="d-flex pt-2">
<span attrs="{'invisible': [('product_has_tax', '=', False)]}" class="oe_inline o_form_label ml-1 mr-1"> ( </span>
<span attrs="{'invisible': [('product_has_tax', '=', False)]}" class="oe_inline o_form_label ms-1 me-1"> ( </span>
<field name="amount_tax"
class="pl-0"
class="ps-0"
attrs="{'invisible': [('product_has_tax', '=', False)]}"/>
<span attrs="{'invisible': [('product_has_tax', '=', False)]}" class="oe_inline o_form_label ml-1 mr-3"> ) </span>
<span attrs="{'invisible': [('product_has_tax', '=', False)]}" class="oe_inline o_form_label ms-1 me-3"> ) </span>
</div>
</div>
</group><group>
@@ -248,7 +248,7 @@
<div class="row">
<div class="col-12">
<strong class="o_kanban_record_title"><span><t t-esc="record.name.value"/></span></strong>
<strong class="o_kanban_record_subtitle float-right"><span class="text-right"><field name="total_amount" widget="monetary"/></span></strong>
<strong class="o_kanban_record_subtitle float-end"><span class="text-end"><field name="total_amount" widget="monetary"/></span></strong>
</div>
</div>
<div class="row mt8">
@@ -256,7 +256,7 @@
<span><t t-esc="record.employee_id.value"/> <t t-esc="record.date.value"/></span>
</div>
<div class="col-6">
<span class="float-right text-right">
<span class="float-end text-end">
<field name="state" widget="label_selection" options="{'classes': {'draft': 'default', 'reported': 'primary', 'refused': 'danger', 'done': 'warning',
'approved': 'success'}}"/>
</span>
@@ -765,8 +765,8 @@
<field name="analytic_account_id" optional="show" domain="['|', ('company_id', '=', parent.company_id), ('company_id', '=', False)]" groups="analytic.group_analytic_accounting"/>
<field name="analytic_tag_ids" optional="hide" widget="many2many_tags" groups="analytic.group_analytic_tags"/>
<field name="account_id" optional="hide" readonly="True"/>
<button name="action_get_attachment_view" type="object" icon="fa-paperclip" aria-label="View Attachments" title="View Attachments" class="float-right pr-0" readonly="True"/>
<field name="attachment_number" class="text-right pl-0 pr-4" width="1" nolabel="1"/>
<button name="action_get_attachment_view" type="object" icon="fa-paperclip" aria-label="View Attachments" title="View Attachments" class="float-end pe-0" readonly="True"/>
<field name="attachment_number" class="text-end ps-0 pe-4" width="1" nolabel="1"/>
<field name="product_has_cost" invisible="True"/>
<field name="unit_amount" optional="hide" widget="monetary" attrs="{'readonly': [('product_has_cost', '=', False)]}" options="{'currency_field': 'currency_id'}"/>
<field name="currency_id" optional="hide" readonly="True"/>
@@ -826,7 +826,7 @@
<div class="row">
<div class="col-12">
<strong class="o_kanban_record_title"><span><t t-esc="record.name.value"/></span></strong>
<strong class="o_kanban_record_subtitle float-right"><span class="text-right"><field name="total_amount" widget="monetary"/></span></strong>
<strong class="o_kanban_record_subtitle float-end"><span class="text-end"><field name="total_amount" widget="monetary"/></span></strong>
</div>
</div>
<div class="row mt8">
@@ -834,7 +834,7 @@
<span><t t-esc="record.employee_id.value"/> <t t-esc="record.accounting_date.value"/></span>
</div>
<div class="col-6">
<span class="float-right text-right">
<span class="float-end text-end">
<field name="state" widget="label_selection" options="{'classes': {'draft': 'default', 'submit': 'default', 'cancel': 'danger', 'post': 'warning',
'done': 'success'}}"/>
</span>
@@ -21,7 +21,7 @@
<div t-if="state.departmentLeaves.length === 0">
None
</div>
<div t-foreach="state.departmentLeaves" t-as="leave" t-key="leave_index" t-attf-class="d-flex flex-row justify-content-between {{leave.sameEmployee ? 'font-weight-bold': ''}}">
<div t-foreach="state.departmentLeaves" t-as="leave" t-key="leave_index" t-attf-class="d-flex flex-row justify-content-between {{leave.sameEmployee ? 'fw-bold': ''}}">
<span><t t-esc="leave.employee_id[1]"/>: <t t-esc="leave.number_of_days"/> day(s)</span>
<span><t t-esc="leave.dateFrom"/> - <t t-esc="leave.dateTo"/></span>
</div>
@@ -1,4 +1,4 @@
$o-hr-holidays-border-color: gray('300');
$o-hr-holidays-border-color: map-get($grays, '300');
.o_hr_holidays_hierarchy {
margin-left: -$o-horizontal-padding;
@@ -137,7 +137,7 @@
padding: 16px;
}
.col_right {
background-color: gray('200');
background-color: map-get($grays, '200');
padding-top: 28px;
}
.o_hr_leave_date {
@@ -13,11 +13,11 @@
<t t-name="hr_holidays.calendar.popover.placeholder">
<div t-attf-class="o_cw_popover popover card shadow #{typeof color === 'number' ? _.str.sprintf('o_calendar_color_%s', color) : ''}" role="tooltip">
<div class="arrow"/>
<div class="card-header d-flex justify-content-between py-2 pr-2">
<div class="card-header d-flex justify-content-between py-2 pe-2">
<h4 class="popover-header border-0 p-0 pt-1"/>
<div class="ml-4">
<div class="ms-4">
<i t-if="calendarIcon" t-attf-class="fa {{calendarIcon}}"></i>
<span class="o_cw_popover_close ml-1"><i class="fa fa-close small"/></span>
<span class="o_cw_popover_close ms-1"><i class="fa fa-close small"/></span>
</div>
</div>
<div class="o_cw_body">
@@ -42,16 +42,16 @@
</ul>
<div class="card-footer border-top" t-if="widget.canEdit or widget.canDelete">
<a t-if="widget.canEdit" href="#" class="btn btn-primary o_cw_popover_edit">Edit</a>
<a t-if="widget.canDelete" href="#" class="btn btn-secondary o_cw_popover_delete ml-2">Delete</a>
<a t-if="widget.canDelete" href="#" class="btn btn-secondary o_cw_popover_delete ms-2">Delete</a>
</div>
</div>
</t>
<t t-name="FieldRadioIcon.button">
<div t-if="mode === 'edit'" class="custom-control custom-radio o_radio_item" aria-atomic="true">
<input type="radio" class="custom-control-input o_radio_input" t-att-checked="checked ? true : undefined" t-att-disabled="disabled ? true : undefined"
<div t-if="mode === 'edit'" class="custom-control form-check o_radio_item" aria-atomic="true">
<input type="radio" class="form-check-input o_radio_input" t-att-checked="checked ? true : undefined" t-att-disabled="disabled ? true : undefined"
t-att-name="name" t-att-data-value="value[0]" t-att-data-index="index" t-att-id="id"/>
<label class="custom-control-label o_form_label" t-att-for="id"><img t-attf-src="/hr_holidays/static/src/img/icons/{{value[1]}}" width="48" height="48" /></label>
<label class="form-check-label o_form_label" t-att-for="id"><img t-attf-src="/hr_holidays/static/src/img/icons/{{value[1]}}" width="48" height="48" /></label>
</div>
<div t-else="">
<img t-attf-src="/hr_holidays/static/src/img/icons/{{value[1]}}" width="48" height="48"/>
@@ -256,7 +256,7 @@
<tree string="Allocation Requests" sample="1" decoration-info="state == 'draft'">
<field name="employee_id" decoration-muted="not active_employee"/>
<field name="department_id" optional="hide"/>
<field name="holiday_status_id" class="font-weight-bold"/>
<field name="holiday_status_id" class="fw-bold"/>
<field name="name"/>
<field name="duration_display" string="Duration"/>
<field name="date_from" string="Validity Start" optional="hide"/>
@@ -355,21 +355,21 @@
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_global_click container">
<div class="row no-gutters">
<div class="row g-0">
<div class="col-3">
<img t-att-src="kanban_image('hr.employee', 'avatar_128', record.employee_id.raw_value)"
t-att-title="record.employee_id.value"
t-att-alt="record.employee_id.value"
class="o_image_64_cover float-left mr4"/>
class="o_image_64_cover float-start mr4"/>
</div>
<div class="col-9">
<span class="badge badge-pill float-right mt4 mr16"><t t-esc="record.number_of_days.value"/> days</span>
<span class="badge rounded-pill float-end mt4 mr16"><t t-esc="record.number_of_days.value"/> days</span>
<strong class="o_kanban_record_title"><t t-esc="record.employee_id.value"/></strong>
<div class="text-muted o_kanban_record_subtitle">
<t t-esc="record.holiday_status_id.value"/>
</div>
<div class="o_dropdown_kanban dropdown" groups="base.group_user">
<a role="button" class="dropdown-toggle o-no-caret btn" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<a role="button" class="dropdown-toggle o-no-caret btn" data-bs-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<span class="fa fa-ellipsis-v"/>
</a>
<div class="dropdown-menu" role="menu">
@@ -380,14 +380,14 @@
<div t-if="['validate', 'refuse'].includes(record.state.raw_value)">
<span t-if="record.state.raw_value === 'validate'" class="fa fa-check text-muted" aria-label="validated"/>
<span t-else="" class="fa fa-ban text-muted" aria-label="refused"/>
<t t-set="classname" t-value="{'validate': 'badge-success', 'refuse': 'badge-danger'}[record.state.raw_value] || 'badge-light'"/>
<span t-attf-class="badge badge-pill {{ classname }}"><t t-esc="record.state.value"/></span>
<t t-set="classname" t-value="{'validate': 'text-bg-success', 'refuse': 'text-bg-danger'}[record.state.raw_value] || 'text-bg-light'"/>
<span t-attf-class="badge rounded-pill {{ classname }}"><t t-esc="record.state.value"/></span>
</div>
<div t-if="record.can_approve.raw_value">
<button t-if="record.state.raw_value === 'confirm'" name="action_validate" type="object" class="btn btn-link btn-sm pl-0">
<button t-if="record.state.raw_value === 'confirm'" name="action_validate" type="object" class="btn btn-link btn-sm ps-0">
<i class="fa fa-check"/> Validate
</button>
<button t-if="record.state.raw_value === 'confirm'" name="action_refuse" type="object" class="btn btn-link btn-sm pl-0">
<button t-if="record.state.raw_value === 'confirm'" name="action_refuse" type="object" class="btn btn-link btn-sm ps-0">
<i class="fa fa-times"/> Refuse
</button>
</div>
@@ -411,7 +411,7 @@
<img t-att-src="activity_image('hr.employee', 'avatar_128', record.employee_id.raw_value)" t-att-title="record.employee_id.value" t-att-alt="record.employee_id.value"/>
<div>
<field name="employee_id"/>
<span class="ml-3 text-muted">
<span class="ms-3 text-muted">
<field name="number_of_days"/> days
</span>
<field name="holiday_status_id" muted="1" display="full"/>
@@ -111,7 +111,7 @@
</div>
<div>
<span>Max Time Off: <field name="max_leaves"/></span>
<span class="float-right">Time Off Taken: <field name="leaves_taken"/></span>
<span class="float-end">Time Off Taken: <field name="leaves_taken"/></span>
</div>
</div>
</t>
+18 -18
View File
@@ -109,15 +109,15 @@
<templates>
<t t-name="kanban-box">
<div class="d-flex flex-column justify-content-between oe_kanban_global_click container">
<div class="row no-gutters">
<div class="row g-0">
<div class="o_leave_kanban_info col-12">
<span class="badge badge-pill float-right mt4 mr16"><t t-esc="record.number_of_days.value"/> days</span>
<span class="badge rounded-pill float-end mt4 mr16"><t t-esc="record.number_of_days.value"/> days</span>
<strong class="o_kanban_record_title"><t t-esc="record.employee_id.value"/></strong>
<div class="text-muted o_kanban_record_subtitle">
<t t-esc="record.holiday_status_id.value"/>
</div>
<div class="o_dropdown_kanban dropdown" groups="base.group_user">
<a role="button" class="dropdown-toggle o-no-caret btn" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<a role="button" class="dropdown-toggle o-no-caret btn" data-bs-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu">
<span class="fa fa-ellipsis-v"/>
</a>
<div class="dropdown-menu" role="menu">
@@ -137,25 +137,25 @@
</div>
</div>
<div class="d-flex justify-content-end">
<div class="mr-2 d-flex align-items-center" t-if="['validate', 'refuse'].includes(record.state.raw_value)">
<span t-if="record.state.raw_value === 'validate'" class="fa fa-check text-muted mr-1" aria-label="validated"/>
<span t-else="" class="fa fa-ban text-muted mr-1" aria-label="refused"/>
<t t-set="classname" t-value="{'validate': 'badge-success', 'refuse': 'badge-danger'}[record.state.raw_value] || 'badge-light'"/>
<span t-attf-class="badge badge-pill {{ classname }}"><t t-esc="record.state.value"/></span>
<div class="me-2 d-flex align-items-center" t-if="['validate', 'refuse'].includes(record.state.raw_value)">
<span t-if="record.state.raw_value === 'validate'" class="fa fa-check text-muted me-1" aria-label="validated"/>
<span t-else="" class="fa fa-ban text-muted me-1" aria-label="refused"/>
<t t-set="classname" t-value="{'validate': 'text-bg-success', 'refuse': 'text-bg-danger'}[record.state.raw_value] || 'text-bg-light'"/>
<span t-attf-class="badge rounded-pill {{ classname }}"><t t-esc="record.state.value"/></span>
</div>
<div class="mr-2 align-items-center" t-if="['confirm', 'validate1'].includes(record.state.raw_value)">
<button t-if="record.state.raw_value === 'confirm'" name="action_approve" type="object" class="btn btn-link btn-sm pl-0">
<div class="me-2 align-items-center" t-if="['confirm', 'validate1'].includes(record.state.raw_value)">
<button t-if="record.state.raw_value === 'confirm'" name="action_approve" type="object" class="btn btn-link btn-sm ps-0">
<i class="fa fa-thumbs-up"/> Approve
</button>
<button t-if="record.state.raw_value === 'validate1'" name="action_validate" type="object" class="btn btn-link btn-sm pl-0" groups="hr_holidays.group_hr_holidays_manager">
<button t-if="record.state.raw_value === 'validate1'" name="action_validate" type="object" class="btn btn-link btn-sm ps-0" groups="hr_holidays.group_hr_holidays_manager">
<i class="fa fa-check"/> Validate
</button>
<button t-if="['confirm', 'validate1'].includes(record.state.raw_value)" name="action_refuse" type="object" class="btn btn-link btn-sm pl-0">
<button t-if="['confirm', 'validate1'].includes(record.state.raw_value)" name="action_refuse" type="object" class="btn btn-link btn-sm ps-0">
<i class="fa fa-times"/> Refuse
</button>
</div>
<div class="text-right">
<button t-if="record.supported_attachment_ids_count.raw_value > 0" name="action_documents" type="object" class="btn btn-link btn-sm pl-0">
<div class="text-end">
<button t-if="record.supported_attachment_ids_count.raw_value > 0" name="action_documents" type="object" class="btn btn-link btn-sm ps-0">
<i class="fa fa-paperclip"> <field name="supported_attachment_ids_count" nolabel="1"/></i>
</button>
</div>
@@ -178,7 +178,7 @@
<img t-att-src="kanban_image('hr.employee', 'avatar_128', record.employee_id.raw_value)"
t-att-title="record.employee_id.value"
t-att-alt="record.employee_id.value"
class="o_image_64_cover float-left mr4"/>
class="o_image_64_cover float-start mr4"/>
</div>
</xpath>
<xpath expr="//div[hasclass('o_leave_kanban_info')]" position="attributes">
@@ -202,7 +202,7 @@
<img t-att-src="activity_image('hr.employee', 'avatar_128', record.employee_id.raw_value)" t-att-title="record.employee_id.value" t-att-alt="record.employee_id.value" width="50" height="50"/>
<div>
<field name="name"/>
<span class="ml-3 text-muted">
<span class="ms-3 text-muted">
<field name="number_of_days"/> days
</span>
<div class="text-muted">
@@ -312,7 +312,7 @@
<field name="request_unit_hours" attrs="{
'readonly': [('state', 'not in', ('draft', 'confirm'))],
'invisible': [('leave_type_request_unit', '!=', 'hour')]
}" class="ml-5"/>
}" class="ms-5"/>
<label for="request_unit_hours" attrs="{
'invisible': [('leave_type_request_unit', '!=', 'hour')]
}"/>
@@ -522,7 +522,7 @@
<field name="all_employee_ids" widget="many2many_avatar_employee" decoration-muted="not active_employee" string="Employees" />
<field name="department_id" optional="hidden"/>
<field name="holiday_type" string="Mode" groups="base.group_no_one"/>
<field name="holiday_status_id" class="font-weight-bold"/>
<field name="holiday_status_id" class="fw-bold"/>
<field name="name"/>
<field name="date_from"/>
<field name="date_to"/>
+4 -4
View File
@@ -88,14 +88,14 @@
</xpath>
<xpath expr="//strong[hasclass('o_kanban_record_title')]" position="inside">
<!-- Employee is absent, in holiday but he is connected -->
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_holiday_present'">
<span class="fa fa-plane text-success" role="img" aria-label="Present but on leave"
title="Present but on leave" name="presence_absent_active">
</span>
</div>
<!-- Employee is on holiday, not present and not connected -->
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_holiday_absent'"
name="presence_absent">
<span class="fa fa-plane text-warning" role="img" aria-label="To define" title="On Leave"/>
@@ -119,7 +119,7 @@
<xpath expr="//div[@name='presence_absent_active']" position="after">
<!-- Employee is absent, in holiday but he is connected -->
<!-- green plane -->
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_holiday_present'">
<span class="fa fa-plane text-success" role="img" aria-label="Present but on leave"
title="Present but on leave" name="presence_absent_active">
@@ -127,7 +127,7 @@
</div>
<!-- Employee is on holiday, not present and not connected -->
<!-- orange plane -->
<div class="float-right"
<div class="float-end"
t-if="record.hr_icon_display.raw_value == 'presence_holiday_absent'"
name="presence_absent">
<span class="fa fa-plane text-warning" role="img" aria-label="To define" title="On Leave"/>
@@ -91,7 +91,7 @@ var FieldOrgChart = AbstractField.extend({
}
orgData.view_employee_id = self.recordData.id;
self.$el.html(QWeb.render("hr_org_chart", orgData));
self.$('[data-toggle="popover"]').each(function () {
self.$('[data-bs-toggle="popover"]').each(function () {
$(this).popover({
html: true,
title: function () {
@@ -25,7 +25,7 @@
border-left: 1px solid $o-hr-org-chart-border-color;
.o_org_chart_title {
color: gray('600')
color: map-get($grays, '600')
}
}
}
@@ -67,7 +67,8 @@
&:before {
@include o-hr-org-chart-line;
border-width: 0 0 $o-hr-org-chart-entry-line-w $o-hr-org-chart-entry-line-w;
@include size(($o-hr-org-chart-entry-pic-size*0.5) - ($o-hr-org-chart-entry-v-gap*2), $o-hr-org-chart-entry-pic-size*0.5 + $o-hr-org-chart-entry-v-gap*2 );
width: ($o-hr-org-chart-entry-pic-size*0.5) - ($o-hr-org-chart-entry-v-gap*2);
height: $o-hr-org-chart-entry-pic-size*0.5 + $o-hr-org-chart-entry-v-gap*2 ;
@include o-position-absolute(
$left: $o-hr-org-chart-entry-pic-size*0.5 - $o-hr-org-chart-entry-line-w*0.5,
$top: 100%
@@ -105,7 +106,8 @@
&:before {
@include o-hr-org-chart-line;
border-top-width: $o-hr-org-chart-entry-line-w;
@include size($tmp-gap-base, 0);
width: $tmp-gap-base;
height: 0;
@include o-position-absolute(
$left: $tmp-gap-base*-0.5 + $o-hr-org-chart-entry-pic-size*0.1 + $o-hr-org-chart-entry-line-w*0.5,
$top: $o-hr-org-chart-entry-pic-size*0.5
@@ -150,9 +152,9 @@
float: right;
cursor: pointer;
margin-right: 5px;
color: gray('600');
color: map-get($grays, '600');
background: $o-hr-org-chart-bg;
border: 1px solid gray('600');
border: 1px solid map-get($grays, '600');
&:hover {
color: $o-brand-primary;
border-color: $o-brand-primary;
@@ -166,7 +168,7 @@
display: block;
line-height: 1.2;
font-size: 11px;
color: lighten(gray('600'), 15%);
color: lighten(map-get($grays, '600'), 15%);
}
}
@@ -209,7 +211,7 @@
display: block;
.o_media_heading {
color: lighten(gray('600'), 5%);
color: lighten(map-get($grays, '600'), 5%);
font-size: 13px;
}
}
@@ -223,7 +225,7 @@
color: $o-brand-primary;
}
strong {
color: lighten(gray('600'), 5%);
color: lighten(map-get($grays, '600'), 5%);
}
}
}
@@ -267,7 +269,8 @@
}
span {
@include size(30px, 30px);
width: 30px;
height: 30px;
margin-right: 10px;
border-radius: 100%;
background-position: center;
@@ -22,14 +22,14 @@
<div class="flex-grow-1">
<span
t-if="employee.indirect_sub_count &gt; 0"
class="badge badge-pill"
class="badge rounded-pill"
tabindex="0"
data-trigger="focus"
t-att-data-emp-name="employee.name"
t-att-data-emp-id="employee.id"
t-att-data-emp-dir-subs="employee.direct_sub_count"
t-att-data-emp-ind-subs="employee.indirect_sub_count"
data-toggle="popover">
data-bs-toggle="popover">
<t t-esc="employee.indirect_sub_count"/>
</span>
@@ -113,13 +113,13 @@
</t>
<t t-name="hr_orgchart_emp_popover">
<div class="popover o_org_chart_popup" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>
<div class="popover o_org_chart_popup" role="tooltip"><div class="tooltip-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>
</t>
<t t-name="hr_orgchart_emp_popover_content">
<table class="table table-sm">
<thead>
<td class="text-right"><t t-esc="employee.direct_sub_count"/></td>
<td class="text-end"><t t-esc="employee.direct_sub_count"/></td>
<td>
<a href="#" class="o_employee_sub_redirect" data-type='direct'
t-att-data-employee-name="employee.name" t-att-data-employee-id="employee.id">
@@ -128,7 +128,7 @@
</thead>
<tbody>
<tr>
<td class="text-right">
<td class="text-end">
<t t-esc="employee.indirect_sub_count - employee.direct_sub_count"/>
</td>
<td>
@@ -138,7 +138,7 @@
</td>
</tr>
<tr>
<td class="text-right"><t t-esc="employee.indirect_sub_count"/></td>
<td class="text-end"><t t-esc="employee.indirect_sub_count"/></td>
<td>
<a href="#" class="o_employee_sub_redirect" data-type='total'
t-att-data-employee-name="employee.name" t-att-data-employee-id="employee.id">
@@ -153,7 +153,7 @@
<div class="d-flex align-items-center">
<span class="flex-shrink-0" t-att-style='"background-image:url(\"/web/image/hr.employee.public/" + employee.id + "/avatar_1024/\")"'/>
<b class="flew-grow-1"><t t-esc="employee.name"/></b>
<a href="#" class="ml-auto o_employee_redirect" t-att-data-employee-id="employee.id"><i class="fa fa-external-link" role="img" aria-label='Redirect' title="Redirect"></i></a>
<a href="#" class="ms-auto o_employee_redirect" t-att-data-employee-id="employee.id"><i class="fa fa-external-link" role="img" aria-label='Redirect' title="Redirect"></i></a>
</div>
</t>
@@ -34,7 +34,7 @@
<field name="name" readonly="1"/>
<field name="stage_id"/>
<field name="priority" widget="priority" optional="show"/>
<field name="partner_mobile" widget="phone" readonly="1" optional="show" class="text-right"/>
<field name="partner_mobile" widget="phone" readonly="1" optional="show" class="text-end"/>
<field name="categ_ids" widget="many2many_tags" options="{'color_field': 'color'}" optional="show"/>
<field name="user_id" widget="many2one_avatar_user" optional="show"/>
<field name="interviewer_id" widget="many2one_avatar_user" optional="hide"/>
@@ -344,9 +344,9 @@
<div class="ribbon ribbon-top-right" attrs="{'invisible': [('date_closed', '=', False)]}">
<span class="bg-success">Hired</span>
</div>
<span class="badge badge-pill badge-danger float-end mr-4" attrs="{'invisible': ['|', ('active', '=', True), ('refuse_reason_id', '=', False)]}">Refused</span>
<span class="badge rounded-pill text-bg-danger float-end me-4" attrs="{'invisible': ['|', ('active', '=', True), ('refuse_reason_id', '=', False)]}">Refused</span>
<div class="o_dropdown_kanban dropdown">
<a class="dropdown-toggle o-no-caret btn" role="button" data-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu" data-display="static">
<a class="dropdown-toggle o-no-caret btn" role="button" data-bs-toggle="dropdown" href="#" aria-label="Dropdown menu" title="Dropdown menu" data-bs-display="static">
<span class="fa fa-ellipsis-v"/>
</a>
<div class="dropdown-menu" role="menu">
@@ -373,7 +373,7 @@
<t t-if="record.partner_mobile.raw_value"><i class="fa fa-mobile mr4" role="img" aria-label="Mobile" title="Mobile"/><field name="partner_mobile" widget="phone"/><br/></t>
<div class="o_kanban_record_bottom mt4">
<div class="oe_kanban_bottom_left">
<div class="float-left mr4" groups="base.group_user">
<div class="float-start mr4" groups="base.group_user">
<field name="priority" widget="priority"/>
</div>
<div class="o_kanban_inline_block mr8">
@@ -386,7 +386,7 @@
<t t-esc="record.attachment_number.raw_value"/>
</span>
</a>
<div class="o_kanban_state_with_padding ml-1 mr-2" >
<div class="o_kanban_state_with_padding ms-1 me-2" >
<field name="kanban_state" widget="kanban_state_selection"/>
<field name="legend_normal" invisible="1"/>
<field name="legend_blocked" invisible="1"/>
@@ -811,7 +811,7 @@
<field name="is_warning_visible" invisible="1"/>
<span attrs="{'invisible': [('is_warning_visible', '=', False)]}">
<span
class="fa fa-exclamation-triangle text-danger pl-3">
class="fa fa-exclamation-triangle text-danger ps-3">
</span>
<span class="text-danger">
All applications will lose their hired date and hired status.
@@ -967,13 +967,13 @@
<div class="col-4">
<h3 class="o_kanban_record_title"><field name="source_id"/></h3>
</div>
<div class="col-8 text-right">
<div class="col-8 text-end">
<div><field name="job_id"/></div>
</div>
</div>
</div>
<div class="o_kanban_record_body mt-3">
<div class="text-right">
<div class="text-end">
<field name="email" attrs="{'invisible': [('has_domain', '=', False)]}" widget="email"/>
<button name="create_alias" class="btn btn-primary mb-2" type="object" attrs="{'invisible': ['|', ('has_domain', '=', False), ('email', '!=', False)]}">Generate Email</button>
</div>
@@ -45,7 +45,7 @@
<div class="o_setting_right_pane" id="sms_settings">
<div class="o_form_label">
Send SMS
<a href="https://www.odoo.com/documentation/master/applications/marketing/sms_marketing/pricing/pricing_and_faq.html" title="Documentation" class="ml-1 o_doc_link" target="_blank"></a>
<a href="https://www.odoo.com/documentation/master/applications/marketing/sms_marketing/pricing/pricing_and_faq.html" title="Documentation" class="ms-1 o_doc_link" target="_blank"></a>
</div>
<div class="text-muted">
Send texts to your contacts
@@ -20,7 +20,7 @@
attrs="{'invisible': ['|', ('skill_id', '=', False), ('skill_type_id', '=', False)]}"/>
<div class="o_row"
attrs="{'invisible': ['|', ('skill_id', '=', False), ('skill_type_id', '=', False)]}">
<span class="col-4 pl-0">
<span class="col-4 ps-0">
<field name="skill_level_id"
attrs="{'readonly': [('skill_id', '=', False)]}"
context="{'from_skill_level_dropdown': True}" />
@@ -43,12 +43,14 @@
&.o_resume_timeline_cell {
div {
@include size($o-hrs-timeline-dot-size);
width: $o-hrs-timeline-dot-size;
height: $o-hrs-timeline-dot-size;
}
&:before {
@include o-position-absolute(0, $left: ($o-hrs-timeline-dot-size * .5 + $o-hrs-timeline-entry-padding));
@include size(1px, 100%);
width: 1px;
height: 100%;
margin-left: -.01rem;
background-color: $border-color;
content: "";
@@ -126,7 +128,7 @@
.o_form_view.o_form_editable {
.o_form_sheet .o_hr_skills_group {
.o_group_name {
background-color: gray('200');
background-color: map-get($grays, '200');
}
.o_resume_group_header .btn {
@@ -144,7 +146,7 @@
}
&.o_group_skills .o_group_name > b, .o_horizontal_separator {
color: color-contrast(gray('200'));
color: color-contrast(map-get($grays, '200'));
font-style: italic;
}
}

Some files were not shown because too many files have changed in this diff Show More