summaryrefslogtreecommitdiff
path: root/addons/purchase/data
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/purchase/data
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/purchase/data')
-rw-r--r--addons/purchase/data/digest_data.xml28
-rw-r--r--addons/purchase/data/ir_cron_data.xml14
-rw-r--r--addons/purchase/data/mail_template_data.xml136
-rw-r--r--addons/purchase/data/purchase_data.xml54
-rw-r--r--addons/purchase/data/purchase_demo.xml228
5 files changed, 460 insertions, 0 deletions
diff --git a/addons/purchase/data/digest_data.xml b/addons/purchase/data/digest_data.xml
new file mode 100644
index 00000000..20c13ad6
--- /dev/null
+++ b/addons/purchase/data/digest_data.xml
@@ -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="/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>
diff --git a/addons/purchase/data/ir_cron_data.xml b/addons/purchase/data/ir_cron_data.xml
new file mode 100644
index 00000000..75dd75d6
--- /dev/null
+++ b/addons/purchase/data/ir_cron_data.xml
@@ -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>
diff --git a/addons/purchase/data/mail_template_data.xml b/addons/purchase/data/mail_template_data.xml
new file mode 100644
index 00000000..fcc5a903
--- /dev/null
+++ b/addons/purchase/data/mail_template_data.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <data noupdate="1">
+ <record id="email_template_edi_purchase" model="mail.template">
+ <field name="name">Purchase Order: Send RFQ</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="body_html" type="html">
+<div style="margin: 0px; padding: 0px;">
+ <p style="margin: 0px; padding: 0px; font-size: 13px;">
+ Dear ${object.partner_id.name}
+ % if object.partner_id.parent_id:
+ (${object.partner_id.parent_id.name})
+ % endif
+ <br/><br/>
+ Here is in attachment a request for quotation <strong>${object.name}</strong>
+ % if object.partner_ref:
+ with reference: ${object.partner_ref}
+ % endif
+ from ${object.company_id.name}.
+ <br/><br/>
+ If you have any questions, please do not hesitate to contact us.
+ <br/><br/>
+ Best regards,
+ </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 Order: Send PO</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="body_html" type="html">
+<div style="margin: 0px; padding: 0px;">
+ <p style="margin: 0px; padding: 0px; font-size: 13px;">
+ Dear ${object.partner_id.name}
+ % if object.partner_id.parent_id:
+ (${object.partner_id.parent_id.name})
+ % endif
+ <br/><br/>
+ Here is in attachment a purchase order <strong>${object.name}</strong>
+ % if object.partner_ref:
+ with reference: ${object.partner_ref}
+ % endif
+ amounting in <strong>${format_amount(object.amount_total, object.currency_id)}</strong>
+ from ${object.company_id.name}.
+ <br/><br/>
+ % if object.date_planned:
+ The receipt is expected for <strong>${format_date(object.date_planned)}</strong>.
+ <br/><br/>
+ Could you please acknowledge the receipt of this order?
+ % endif
+ </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 Order: 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) |safe}</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="body_html" type="html">
+<div style="margin: 0px; padding: 0px;">
+ <p style="margin: 0px; padding: 0px; font-size: 13px;">
+ Dear ${object.partner_id.name}
+ % if object.partner_id.parent_id:
+ (${object.partner_id.parent_id.name})
+ % endif
+ <br/><br/>
+ Here is a reminder that the delivery of the purchase order <strong>${object.name}</strong>
+ % if object.partner_ref:
+ <strong>(${object.partner_ref})</strong>
+ % endif
+ is expected for
+ % if object.date_planned:
+ <strong>${format_date(object.date_planned)}</strong>.
+ % else:
+ <strong>undefined</strong>.
+ % endif
+ Could you please confirm it will be delivered on time?
+ </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>
+
+ <template id="mail_notification_confirm" inherit_id="mail.mail_notification_paynow" name="Purchase: Confirmation mail notification template">
+ <xpath expr="//t[@t-set='access_name']" position="after">
+ <t t-if="record._name == 'purchase.order'">
+ <t t-if="record.state == 'purchase' and not record.env.context.get('is_reminder')">
+ <t t-set="access_name">Confirm</t>
+ <t t-set="access_url" t-value="record.get_confirm_url(confirm_type='reception')"/>
+ </t>
+ </t>
+ </xpath>
+ <xpath expr="//a[@t-att-href='access_url']" position="replace">
+ <t t-if="record._name == 'purchase.order' and record.env.context.get('is_reminder')">
+ <a t-att-href="record.get_confirm_url(confirm_type='reminder')"
+ style="margin-right: 10px; background-color: #875A7B; padding: 8px 16px 8px 16px; text-decoration: none; color: #fff; border-radius: 5px; font-size:13px;">
+ Yes
+ </a>
+ <a t-att-href="record.get_update_url()"
+ style="margin-left: 10px; background-color: #875A7B; padding: 8px 16px 8px 16px; text-decoration: none; color: #fff; border-radius: 5px; font-size:13px;">
+ No, Update Dates
+ </a>
+ <div>&amp;nbsp;</div>
+ <div style="margin: 0px; padding: 0px; font-size:13px; text-align: left;">
+ If you have any questions, please do not hesitate to contact us.
+ <div>&amp;nbsp;</div>
+ Best regards,
+ </div>
+ </t>
+ <t t-else="">
+ <a t-att-href="access_url"
+ style="margin-left: 10px; background-color: #875A7B; padding: 8px 16px 8px 16px; text-decoration: none; color: #fff; border-radius: 5px; font-size:13px;">
+ <t t-esc="access_name"/>
+ </a>
+ </t>
+ </xpath>
+ </template>
+
+ </data>
+</odoo>
diff --git a/addons/purchase/data/purchase_data.xml b/addons/purchase/data/purchase_data.xml
new file mode 100644
index 00000000..93d6e048
--- /dev/null
+++ b/addons/purchase/data/purchase_data.xml
@@ -0,0 +1,54 @@
+<?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>
+
+ <!-- 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>
diff --git a/addons/purchase/data/purchase_demo.xml b/addons/purchase/data/purchase_demo.xml
new file mode 100644
index 00000000..fa17b083
--- /dev/null
+++ b/addons/purchase/data/purchase_demo.xml
@@ -0,0 +1,228 @@
+<?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': 2868.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': 3297.20,
+ '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>
+
+ <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': 13.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>
+