We would like to automatize lunch as currently all orders are manually ordered and validated, and a cash move has to be manually created each time you want to credit the wallet of some user. In this commit we add a new widget that comes with the kanban view and will allow to take orders in a friendly manner. We also add a lunch.supplier model and an integration with the hr module in order to filter what products you can order depending on your working location, this also allows you to configure an automatic ordering via email. TaskID: 1856876
137 lines
6.2 KiB
XML
137 lines
6.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
<data>
|
|
<record id="lunch_order_line_action_confirm" model="ir.actions.server">
|
|
<field name="name">Lunch: Receive meals</field>
|
|
<field name="model_id" ref="model_lunch_order_line"/>
|
|
<field name="binding_model_id" ref="model_lunch_order_line"/>
|
|
<field name="state">code</field>
|
|
<field name="code">records.action_confirm()</field>
|
|
</record>
|
|
|
|
<record id="lunch_order_line_action_cancel" model="ir.actions.server">
|
|
<field name="name">Lunch: Cancel meals</field>
|
|
<field name="model_id" ref="model_lunch_order_line"/>
|
|
<field name="binding_model_id" ref="model_lunch_order_line"/>
|
|
<field name="state">code</field>
|
|
<field name="code">records.action_cancel()</field>
|
|
</record>
|
|
</data>
|
|
<data noupdate="0">
|
|
<record id="lunch_order_mail_supplier" model="mail.template">
|
|
<field name="name">Lunch: Send by email</field>
|
|
<field name="model_id" ref="lunch.model_lunch_order"/>
|
|
<field name="email_from">${ctx['order']['supplier_email'] |safe}</field>
|
|
<field name="partner_to">${ctx['order']['supplier_id']}</field>
|
|
<field name="subject">Orders for ${ctx['order']['company_name']}</field>
|
|
<field name="body_html" type="html">
|
|
<table border="0" cellpadding="0" cellspacing="0" style="padding-top: 16px; background-color: #F1F1F1; font-family:Verdana, Arial,sans-serif; color: #454748; width: 100%; border-collapse:separate;"><tr><td align="center">
|
|
<table border="0" cellpadding="0" cellspacing="0" width="590" style="padding: 16px; background-color: white; color: #454748; border-collapse:separate;">
|
|
<tbody>
|
|
<!-- HEADER -->
|
|
<tr>
|
|
<td align="center" style="min-width: 590px;">
|
|
<table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
|
|
<tr><td valign="middle">
|
|
<span style="font-size: 10px;">Lunch Order</span><br/>
|
|
</td><td valign="middle" align="right">
|
|
<img src="/logo.png?company=${user.company_id.id}" style="padding: 0px; margin: 0px; height: auto; width: 80px;" t-att-alt="'%s' % company.name"/>
|
|
</td></tr>
|
|
<tr><td colspan="2" style="text-align:center;">
|
|
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin:16px 0px 16px 0px;"/>
|
|
</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<!-- CONTENT -->
|
|
<tr>
|
|
<td align="center" style="min-width: 590px;">
|
|
<table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; padding: 0px 8px 0px 8px; border-collapse:separate;">
|
|
<tr>
|
|
<td valign="top" style="font-size: 13px;">
|
|
<div>
|
|
% set lines = ctx['lines']
|
|
% set order = ctx['order']
|
|
% set supplier = user.env['res.partner'].browse(order['supplier_id'])
|
|
% set currency = user.env['res.currency'].browse(order['currency_id'])
|
|
<p>
|
|
Dear ${order['supplier_name']},
|
|
</p><p>
|
|
Here is, today orders for ${order['company_name']}:
|
|
</p>
|
|
|
|
<ul>
|
|
% for line in lines:
|
|
<li>
|
|
<strong>
|
|
${line['product']}
|
|
(x${line['quantity']})
|
|
</strong>
|
|
% if line['note']:
|
|
<em>(${line['note']})</em>
|
|
% endif
|
|
<div style="display: inline-block; float:right">
|
|
${format_amount(line['price'], currency)}
|
|
</div>
|
|
</li>
|
|
% endfor
|
|
</ul>
|
|
|
|
<p>Amounting in <strong>${format_amount(order['amount_total'], currency)}</strong>.</p>
|
|
<p>Do not hesitate to contact us if you have any question.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="text-align:center;">
|
|
<hr width="100%" style="background-color:rgb(204,204,204);border:medium none;clear:both;display:block;font-size:0px;min-height:1px;line-height:0; margin: 16px 0px 16px 0px;"/>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<!-- FOOTER -->
|
|
<tr>
|
|
<td align="center" style="min-width: 590px;">
|
|
<table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: white; font-size: 11px; padding: 0px 8px 0px 8px; border-collapse:separate;">
|
|
<tr><td valign="middle" align="left">
|
|
${user.company_id.name}
|
|
</td></tr>
|
|
<tr><td valign="middle" align="left" style="opacity: 0.7;">
|
|
${user.company_id.phone}
|
|
% if user.company_id.phone and (user.company_id.email or user.company_id.website)
|
|
|
|
|
% endif
|
|
% if user.company_id.email
|
|
<a href="'mailto:%s' % ${user.company_id.email}" style="text-decoration:none; color: #454748;">${user.company_id.email}</a>
|
|
% endif
|
|
% if user.company_id.email and user.company_id.website
|
|
|
|
|
% endif
|
|
% if user.company_id.website
|
|
<a href="'%s' % ${user.company_id.website}" style="text-decoration:none; color: #454748;">
|
|
${user.company_id.website}
|
|
</a>
|
|
% endif
|
|
</td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</td></tr>
|
|
<!-- POWERED BY -->
|
|
<tr><td align="center" style="min-width: 590px;">
|
|
<table border="0" cellpadding="0" cellspacing="0" width="590" style="min-width: 590px; background-color: #F1F1F1; color: #454748; padding: 8px; border-collapse:separate;">
|
|
<tr><td style="text-align: center; font-size: 13px;">
|
|
Powered by <a target="_blank" href="https://www.odoo.com" style="color: #875A7B;">Odoo</a>
|
|
</td></tr>
|
|
</table>
|
|
</td></tr>
|
|
</table>
|
|
</field>
|
|
</record>
|
|
|
|
</data>
|
|
</odoo>
|