Initial commit: Core packages

This commit is contained in:
Ernad Husremovic 2025-08-29 15:20:45 +02:00
commit 12c29a983b
9512 changed files with 8379910 additions and 0 deletions

View file

@ -0,0 +1,28 @@
<?xml version='1.0' encoding='utf-8'?>
<odoo>
<data>
<record id="digest_tip_purchase_0" model="digest.tip">
<field name="name">Tip: How to keep late receipts under control?</field>
<field name="sequence">100</field>
<field name="group_id" ref="purchase.group_purchase_user" />
<field name="tip_description" type="html">
<div>
<p class="tip_title">Tip: How to keep late receipts under control?</p>
<p class="tip_content">When creating a purchase order, have a look at the vendor's <i>On Time Delivery</i> rate: the percentage of products shipped on time. If it is too low, activate the <i>automated reminders</i>. A few days before the due shipment, Odoo will send the vendor an email to ask confirmation of shipment dates and keep you informed in case of any delays. To get the vendor's performance statistics, click on the OTD rate.</p>
<img src="https://download.odoocdn.com/digests/purchase/static/src/img/OTDPurchase.gif" class="illustration_border" />
</div>
</field>
</record>
<record id="digest_tip_purchase_1" model="digest.tip">
<field name="name">Tip: Never miss a purchase order</field>
<field name="sequence">2000</field>
<field name="group_id" ref="purchase.group_purchase_user" />
<field name="tip_description" type="html">
<div>
<p class="tip_title">Tip: Never miss a purchase order</p>
<p class="tip_content">When sending a purchase order by email, Odoo asks the vendor to acknowledge the reception of the order. When the vendor acknowledges the order by clicking on a button in the email, the information is added on the purchase order. Use filters to track orders that have not been acknowledged.</p>
</div>
</field>
</record>
</data>
</odoo>

View file

@ -0,0 +1,14 @@
<?xml version='1.0' encoding='utf-8'?>
<odoo noupdate="1">
<record forcecreate="True" id="purchase_send_reminder_mail" model="ir.cron">
<field name="name">Purchase reminder</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall">1</field>
<field name="model_id" ref="model_purchase_order"/>
<field name="state">code</field>
<field name="code">model._send_reminder_mail()</field>
</record>
</odoo>

View file

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="email_template_edi_purchase" model="mail.template">
<field name="name">Purchase: Request For Quotation</field>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field name="subject">{{ object.company_id.name }} Order (Ref {{ object.name or 'n/a' }})</field>
<field name="partner_to">{{ object.partner_id.id }}</field>
<field name="description">Sent manually to vendor to request a quotation</field>
<field name="body_html" type="html">
<div style="margin: 0px; padding: 0px;">
<p style="margin: 0px; padding: 0px; font-size: 13px;">
Dear <t t-out="object.partner_id.name or ''">Brandon Freeman</t>
<t t-if="object.partner_id.parent_id">
(<t t-out="object.partner_id.parent_id.name or ''">Azure Interior</t>)
</t>
<br/><br/>
Here is in attachment a request for quotation <span style="font-weight:bold;" t-out="object.name or ''">P00015</span>
<t t-if="object.partner_ref">
with reference: <t t-out="object.partner_ref or ''">REF_XXX</t>
</t>
from <t t-out="object.company_id.name or ''">YourCompany</t>.
<br/><br/>
If you have any questions, please do not hesitate to contact us.
<br/><br/>
Best regards,
<t t-if="not is_html_empty(object.user_id.signature)">
<br/><br/>
<t t-out="object.user_id.signature or ''">--<br/>Mitchell Admin</t>
</t>
</p>
</div></field>
<field name="report_template" ref="report_purchase_quotation"/>
<field name="report_name">RFQ_{{ (object.name or '').replace('/','_') }}</field>
<field name="lang">{{ object.partner_id.lang }}</field>
<field name="auto_delete" eval="True"/>
</record>
<record id="email_template_edi_purchase_done" model="mail.template">
<field name="name">Purchase: Purchase Order</field>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field name="subject">{{ object.company_id.name }} Order (Ref {{ object.name or 'n/a' }})</field>
<field name="partner_to">{{ object.partner_id.id }}</field>
<field name="description">Sent to vendor with the purchase order in attachment</field>
<field name="body_html" type="html">
<div style="margin: 0px; padding: 0px;">
<p style="margin: 0px; padding: 0px; font-size: 13px;">
Dear <t t-out="object.partner_id.name or ''">Brandon Freeman</t>
<t t-if="object.partner_id.parent_id">
(<t t-out="object.partner_id.parent_id.name or ''">Azure Interior</t>)
</t>
<br/><br/>
Here is in attachment a purchase order <span style="font-weight:bold;" t-out="object.name or ''">P00015</span>
<t t-if="object.partner_ref">
with reference: <t t-out="object.partner_ref or ''">REF_XXX</t>
</t>
amounting in <span style="font-weight:bold;" t-out="format_amount(object.amount_total, object.currency_id) or ''">$ 10.00</span>
from <t t-out="object.company_id.name or ''">YourCompany</t>.
<br/><br/>
<t t-if="object.date_planned">
The receipt is expected for <span style="font-weight:bold;" t-out="format_date(object.get_localized_date_planned()) or ''">05/05/2021</span>.
<br/><br/>
Could you please acknowledge the receipt of this order?
</t>
<t t-if="not is_html_empty(object.user_id.signature)">
<br/><br/>
<t t-out="object.user_id.signature or ''">--<br/>Mitchell Admin</t>
</t>
<br/><br/>
</p>
</div></field>
<field name="report_template" ref="action_report_purchase_order"/>
<field name="report_name">PO_{{ (object.name or '').replace('/','_') }}</field>
<field name="lang">{{ object.partner_id.lang }}</field>
<field name="auto_delete" eval="True"/>
</record>
<record id="email_template_edi_purchase_reminder" model="mail.template">
<field name="name">Purchase: Vendor Reminder</field>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field name="email_from">{{ (object.user_id.email_formatted or user.email_formatted) }}</field>
<field name="subject">{{ object.company_id.name }} Order (Ref {{ object.name or 'n/a' }})</field>
<field name="partner_to">{{ object.partner_id.id }}</field>
<field name="description">Sent to vendors before expected arrival, based on the purchase order setting</field>
<field name="body_html" type="html">
<div style="margin: 0px; padding: 0px;">
<p style="margin: 0px; padding: 0px; font-size: 13px;">
Dear <t t-out="object.partner_id.name or ''">Brandon Freeman</t>
<t t-if="object.partner_id.parent_id">
(<t t-out="object.partner_id.parent_id.name or ''">Azure Interior</t>)
</t>
<br/><br/>
Here is a reminder that the delivery of the purchase order <span style="font-weight:bold;" t-out="object.name or ''">P00015</span>
<t t-if="object.partner_ref">
<span style="font-weight:bold;">(<t t-out="object.partner_ref or ''">REF_XXX</t>)</span>
</t>
is expected for
<t t-if="object.date_planned">
<span style="font-weight:bold;" t-out="format_date(object.get_localized_date_planned()) or ''">05/05/2021</span>.
</t>
<t t-else="">
<span style="font-weight:bold;">undefined</span>.
</t>
Could you please confirm it will be delivered on time?
<t t-if="not is_html_empty(object.user_id.signature)">
<br/><br/>
<t t-out="object.user_id.signature or ''">--<br/>Mitchell Admin</t>
</t>
<br/><br/>
</p>
</div></field>
<field name="report_template" ref="action_report_purchase_order"/>
<field name="report_name">PO_{{ (object.name or '').replace('/','_') }}</field>
<field name="lang">{{ object.partner_id.lang }}</field>
<field name="auto_delete" eval="True"/>
</record>
</data>
</odoo>

View file

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo><data noupdate="1">
<template id="track_po_line_template">
<div>
<strong>The ordered quantity has been updated.</strong>
<ul>
<li><t t-esc="line.product_id.display_name"/>:</li>
Ordered Quantity: <t t-esc="line.product_qty" /> -&gt; <t t-esc="float(product_qty)"/><br/>
<t t-if='line.order_id.product_id.type in ("consu", "product")'>
Received Quantity: <t t-esc="line.qty_received" /><br/>
</t>
Billed Quantity: <t t-esc="line.qty_invoiced"/>
</ul>
</div>
</template>
<template id="track_po_line_qty_received_template">
<div>
<strong>The received quantity has been updated.</strong>
<ul>
<li><t t-esc="line.product_id.display_name"/>:</li>
Received Quantity: <t t-esc="line.qty_received" /> -&gt; <t t-esc="float(qty_received)"/><br/>
</ul>
</div>
</template>
</data></odoo>

View file

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!-- Purchase-related subtypes for messaging / Chatter -->
<record id="mt_rfq_confirmed" model="mail.message.subtype">
<field name="name">RFQ Confirmed</field>
<field name="default" eval="False"/>
<field name="res_model">purchase.order</field>
</record>
<record id="mt_rfq_approved" model="mail.message.subtype">
<field name="name">RFQ Approved</field>
<field name="default" eval="False"/>
<field name="res_model">purchase.order</field>
</record>
<record id="mt_rfq_done" model="mail.message.subtype">
<field name="name">RFQ Done</field>
<field name="default" eval="False"/>
<field name="res_model">purchase.order</field>
</record>
<record id="mt_rfq_sent" model="mail.message.subtype">
<field name="name">RFQ Sent</field>
<field name="default" eval="False"/>
<field name="res_model">purchase.order</field>
</record>
<!-- Sequences for purchase.order -->
<record id="seq_purchase_order" model="ir.sequence">
<field name="name">Purchase Order</field>
<field name="code">purchase.order</field>
<field name="prefix">P</field>
<field name="padding">5</field>
<field name="company_id" eval="False"/>
</record>
<!-- Share Button in action menu -->
<record id="model_purchase_order_action_share" model="ir.actions.server">
<field name="name">Share</field>
<field name="model_id" ref="purchase.model_purchase_order"/>
<field name="binding_model_id" ref="purchase.model_purchase_order"/>
<field name="binding_view_types">form</field>
<field name="state">code</field>
<field name="code">action = records.action_share()</field>
</record>
<!-- Default value for company_dependant field -->
<record forcecreate="True" id="receipt_reminder_email" model="ir.property">
<field name="name">receipt_reminder_email</field>
<field name="type" eval="'boolean'"/>
<field name="fields_id" search="[('model','=','res.partner'),('name','=','receipt_reminder_email')]"/>
<field eval="False" name="value"/>
</record>
<record forcecreate="True" id="reminder_date_before_receipt" model="ir.property">
<field name="name">reminder_date_before_receipt</field>
<field name="type" eval="'integer'"/>
<field name="fields_id" search="[('model','=','res.partner'),('name','=','reminder_date_before_receipt')]"/>
<field eval="1" name="value"/>
</record>
</data>
</odoo>

View file

@ -0,0 +1,232 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="base.user_demo" model="res.users">
<field eval="[(4, ref('group_purchase_user'))]" name="groups_id"/>
</record>
<record id="base.res_partner_1" model="res.partner">
<field name="receipt_reminder_email">True</field>
</record>
<record id="base.res_partner_2" model="res.partner">
<field name="receipt_reminder_email">True</field>
</record>
<record id="base.res_partner_12" model="res.partner">
<field name="receipt_reminder_email">True</field>
</record>
<record id="purchase_order_1" model="purchase.order">
<field name="partner_id" ref="base.res_partner_1"/>
<field name="user_id" ref="base.user_admin"/>
<field name="state">draft</field>
<field name="order_line" model="purchase.order.line" eval="[(5, 0, 0),
(0, 0, {
'product_id': ref('product.product_delivery_01'),
'name': obj().env.ref('product.product_delivery_01').partner_ref,
'price_unit': 79.80,
'product_qty': 15.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today() + relativedelta(days=3)}),
(0, 0, {
'product_id': ref('product.product_product_25'),
'name': obj().env.ref('product.product_product_25').partner_ref,
'price_unit': 286.70,
'product_qty': 5.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today() + relativedelta(days=3)}),
(0, 0, {
'product_id': ref('product.product_product_27'),
'name': obj().env.ref('product.product_product_27').partner_ref,
'price_unit': 99.00,
'product_qty': 4.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today() + relativedelta(days=3)})
]"/>
</record>
<record id="purchase_order_2" model="purchase.order">
<field name="partner_id" ref="base.res_partner_3"/>
<field name="user_id" ref="base.user_admin"/>
<field name="state">draft</field>
<field name="order_line" model="purchase.order.line" eval="[(5, 0, 0),
(0, 0, {
'product_id': ref('product.product_delivery_02'),
'name': obj().env.ref('product.product_delivery_02').partner_ref,
'price_unit': 132.50,
'product_qty': 20.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today() + relativedelta(days=1)}),
(0, 0, {
'product_id': ref('product.product_delivery_01'),
'name': obj().env.ref('product.product_delivery_01').partner_ref,
'price_unit': 89.0,
'product_qty': 5.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today() + relativedelta(days=1)}),
]"/>
</record>
<record id="purchase_order_3" model="purchase.order">
<field name="partner_id" ref="base.res_partner_12"/>
<field name="user_id" ref="base.user_admin"/>
<field name="state">draft</field>
<field name="order_line" model="purchase.order.line" eval="[(5, 0, 0),
(0, 0, {
'product_id': ref('product.product_product_2'),
'name': obj().env.ref('product.product_product_2').partner_ref,
'price_unit': 25.50,
'product_qty': 10.0,
'product_uom': ref('uom.product_uom_hour'),
'date_planned': DateTime.today() + relativedelta(days=1)}),
]"/>
</record>
<record id="purchase_order_4" model="purchase.order">
<field name="partner_id" ref="base.res_partner_4"/>
<field name="user_id" ref="base.user_admin"/>
<field name="state">draft</field>
<field name="order_line" model="purchase.order.line" eval="[(5, 0, 0),
(0, 0, {
'product_id': ref('product.product_delivery_02'),
'name': obj().env.ref('product.product_delivery_02').partner_ref,
'price_unit': 85.50,
'product_qty': 6.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today() + relativedelta(days=5)}),
(0, 0, {
'product_id': ref('product.product_product_20'),
'name': obj().env.ref('product.product_product_20').partner_ref,
'price_unit': 1690.0,
'product_qty': 5.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today() + relativedelta(days=5)}),
(0, 0, {
'product_id': ref('product.product_product_6'),
'name': obj().env.ref('product.product_product_6').partner_ref,
'price_unit': 800.0,
'product_qty': 7.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today() + relativedelta(days=5)})
]"/>
</record>
<function model="purchase.order" name="write">
<value eval="[ref('purchase_order_4')]"/>
<value eval="{'state': 'sent'}"/>
</function>
<record id="purchase_order_5" model="purchase.order">
<field name="partner_id" ref="base.res_partner_2"/>
<field name="user_id" ref="base.user_admin"/>
<field name="state">draft</field>
<field name="order_line" model="purchase.order.line" eval="[(5, 0, 0),
(0, 0, {
'product_id': ref('product.product_product_22'),
'name': obj().env.ref('product.product_product_22').partner_ref,
'price_unit': 2010.0,
'product_qty': 3.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today()}),
(0, 0, {
'product_id': ref('product.product_product_24'),
'name': obj().env.ref('product.product_product_24').partner_ref,
'price_unit': 876.0,
'product_qty': 3.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today()}),
]"/>
</record>
<record id="purchase_order_6" model="purchase.order">
<field name="partner_id" ref="base.res_partner_1"/>
<field name="user_id" ref="base.user_admin"/>
<field name="state">draft</field>
<field name="order_line" model="purchase.order.line" eval="[(5, 0, 0),
(0, 0, {
'product_id': ref('product.product_delivery_02'),
'name': obj().env.ref('product.product_delivery_02').partner_ref,
'price_unit': 58.0,
'product_qty': 9.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today()}),
(0, 0, {
'product_id': ref('product.product_delivery_01'),
'name': obj().env.ref('product.product_delivery_01').partner_ref,
'price_unit': 65.0,
'product_qty': 3.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today()}),
(0, 0, {
'product_id': ref('product.consu_delivery_01'),
'name': obj().env.ref('product.consu_delivery_01').partner_ref,
'price_unit': 154.5,
'product_qty': 4.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today()}),
]"/>
</record>
<record id="purchase_order_7" model="purchase.order">
<field name="partner_id" ref="base.res_partner_4"/>
<field name="user_id" ref="base.user_admin"/>
<field name="state">draft</field>
<field name="order_line" model="purchase.order.line" eval="[(5, 0, 0),
(0, 0, {
'product_id': ref('product.product_product_12'),
'name': obj().env.ref('product.product_product_12').partner_ref,
'price_unit': 130.5,
'product_qty': 5.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today()}),
(0, 0, {
'product_id': ref('product.product_delivery_02'),
'name': obj().env.ref('product.product_delivery_02').partner_ref,
'price_unit': 38.0,
'product_qty': 15.0,
'product_uom': ref('uom.product_uom_unit'),
'date_planned': DateTime.today()}),
]"/>
</record>
<record id="purchase_activity_1" model="mail.activity">
<field name="res_id" ref="purchase.purchase_order_2"/>
<field name="res_model_id" ref="purchase.model_purchase_order"/>
<field name="activity_type_id" ref="mail.mail_activity_data_email"/>
<field name="date_deadline" eval="DateTime.today().strftime('%Y-%m-%d %H:%M')"/>
<field name="summary">Send specifications</field>
<field name="create_uid" ref="base.user_admin"/>
<field name="user_id" ref="base.user_admin"/>
</record>
<record id="purchase_activity_2" model="mail.activity">
<field name="res_id" ref="purchase.purchase_order_5"/>
<field name="res_model_id" ref="purchase.model_purchase_order"/>
<field name="activity_type_id" ref="mail.mail_activity_data_todo"/>
<field name="date_deadline" eval="DateTime.today().strftime('%Y-%m-%d %H:%M')"/>
<field name="summary">Get approval</field>
<field name="create_uid" ref="base.user_admin"/>
<field name="user_id" ref="base.user_admin"/>
</record>
<record id="purchase_activity_3" model="mail.activity">
<field name="res_id" ref="purchase.purchase_order_6"/>
<field name="res_model_id" ref="purchase.model_purchase_order"/>
<field name="activity_type_id" ref="mail.mail_activity_data_todo"/>
<field name="date_deadline" eval="(DateTime.today() - relativedelta(days=5)).strftime('%Y-%m-%d %H:%M')"/>
<field name="summary">Check optional products</field>
<field name="create_uid" ref="base.user_admin"/>
<field name="user_id" ref="base.user_admin"/>
</record>
<record id="purchase_activity_4" model="mail.activity">
<field name="res_id" ref="purchase.purchase_order_7"/>
<field name="res_model_id" ref="purchase.model_purchase_order"/>
<field name="activity_type_id" ref="mail.mail_activity_data_todo"/>
<field name="date_deadline" eval="(DateTime.today() + relativedelta(days=5)).strftime('%Y-%m-%d %H:%M')"/>
<field name="summary">Check competitors</field>
<field name="create_uid" ref="base.user_admin"/>
<field name="user_id" ref="base.user_admin"/>
</record>
</data>
</odoo>