mirror of
https://github.com/bringout/oca-ocb-project.git
synced 2026-04-19 01:22:03 +02:00
Initial commit: Project packages
This commit is contained in:
commit
89613c97b0
753 changed files with 496325 additions and 0 deletions
41
odoo-bringout-oca-ocb-project/project/data/digest_data.xml
Normal file
41
odoo-bringout-oca-ocb-project/project/data/digest_data.xml
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="digest.digest_digest_default" model="digest.digest">
|
||||
<field name="kpi_project_task_opened">True</field>
|
||||
</record>
|
||||
</data>
|
||||
|
||||
<data>
|
||||
<record id="digest_tip_project_0" model="digest.tip">
|
||||
<field name="name">Tip: Customize tasks and stages according to the project</field>
|
||||
<field name="sequence">1200</field>
|
||||
<field name="group_id" ref="project.group_project_manager"/>
|
||||
<field name="tip_description" type="html">
|
||||
<div>
|
||||
<p class="tip_title">Tip: Customize tasks and stages according to the project</p>
|
||||
<p class="tip_content">Customize how tasks are named according to the project and create tailor made status messages for each step of the workflow. It helps to document your workflow: what should be done at which step.</p>
|
||||
<img src="https://download.odoocdn.com/digests/project/static/src/img/project-custom-tasks.gif" class="illustration_border" />
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="digest_tip_project_1" model="digest.tip">
|
||||
<field name="name">Tip: Create tasks from incoming emails</field>
|
||||
<field name="sequence">1300</field>
|
||||
<field name="group_id" ref="project.group_project_user"/>
|
||||
<field name="tip_description" type="html">
|
||||
<div>
|
||||
<t t-set="project_record" t-value="object.env['project.project'].search([('alias_name', '!=', False)], limit=1, order='sequence asc')"/>
|
||||
<p class="tip_title">Tip: Create tasks from incoming emails</p>
|
||||
<t t-if="project_record and project_record.alias_domain">
|
||||
<p class="tip_content">Emails sent to <a t-attf-href="mailto:{{project_record.alias_value}}" target="_blank" style="color: #875a7b; text-decoration: none;"><t t-out="project_record.alias_value" /></a> will generate tasks in your <t t-out="project_record.name"></t> project.</p>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<p class="tip_content">Create tasks by sending an email to the email address of your project.</p>
|
||||
</t>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
21
odoo-bringout-oca-ocb-project/project/data/ir_cron_data.xml
Normal file
21
odoo-bringout-oca-ocb-project/project/data/ir_cron_data.xml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
<record id="ir_cron_rating_project" model="ir.cron">
|
||||
<field name="name">Project: Send rating</field>
|
||||
<field name="model_id" ref="project.model_project_project"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._send_rating_all()</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="numbercall">-1</field>
|
||||
</record>
|
||||
|
||||
<record id="ir_cron_recurring_tasks" model="ir.cron">
|
||||
<field name="name">Project: Create Recurring Tasks</field>
|
||||
<field name="model_id" ref="project.model_project_task_recurrence"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">model._cron_create_recurring_tasks()</field>
|
||||
<field name="interval_type">days</field>
|
||||
<field name="numbercall">-1</field>
|
||||
<field name="nextcall" eval="(DateTime.now().replace(hour=3, minute=0) + timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')" />
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo noupdate="1">
|
||||
<!-- Task-related subtypes for messaging / Chatter -->
|
||||
<record id="mt_task_new" model="mail.message.subtype">
|
||||
<field name="name">Task Created</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="hidden" eval="True"/>
|
||||
<field name="description">Task Created</field>
|
||||
</record>
|
||||
<record id="mt_task_stage" model="mail.message.subtype">
|
||||
<field name="name">Stage Changed</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="description">Stage changed</field>
|
||||
</record>
|
||||
<record id="mt_task_blocked" model="mail.message.subtype">
|
||||
<field name="name">Task Blocked</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="description">Task blocked</field>
|
||||
</record>
|
||||
<record id="mt_task_ready" model="mail.message.subtype">
|
||||
<field name="name">Task Ready</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="description">Task ready for Next Stage</field>
|
||||
</record>
|
||||
<record id="mt_task_progress" model="mail.message.subtype">
|
||||
<field name="name">Task in Progress</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="default" eval="False"/>
|
||||
</record>
|
||||
<record id="mt_task_rating" model="mail.message.subtype">
|
||||
<field name="name">Task Rating</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="default" eval="False"/>
|
||||
</record>
|
||||
<record id="mt_task_dependency_change" model="mail.message.subtype">
|
||||
<field name="name">Task Dependency Changes</field>
|
||||
<field name="res_model">project.task</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="hidden" eval="True"/>
|
||||
</record>
|
||||
<!-- Update-related subtypes for messaging / Chatter -->
|
||||
<record id="mt_update_create" model="mail.message.subtype">
|
||||
<field name="name">Update Created</field>
|
||||
<field name="res_model">project.update</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="description">Update Created</field>
|
||||
<field name="hidden" eval="True"/>
|
||||
</record>
|
||||
<!-- Project-related subtypes for messaging / Chatter -->
|
||||
<record id="mt_project_stage_change" model="mail.message.subtype">
|
||||
<field name="name">Project Stage Changed</field>
|
||||
<field name="sequence">9</field>
|
||||
<field name="res_model">project.project</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="hidden" eval="True"/>
|
||||
</record>
|
||||
<record id="mt_project_task_new" model="mail.message.subtype">
|
||||
<field name="name">Task Created</field>
|
||||
<field name="sequence">10</field>
|
||||
<field name="res_model">project.project</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="parent_id" ref="mt_task_new"/>
|
||||
<field name="relation_field">project_id</field>
|
||||
</record>
|
||||
<record id="mt_project_task_blocked" model="mail.message.subtype">
|
||||
<field name="name">Task Blocked</field>
|
||||
<field name="sequence">11</field>
|
||||
<field name="res_model">project.project</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="parent_id" ref="mt_task_blocked"/>
|
||||
<field name="relation_field">project_id</field>
|
||||
</record>
|
||||
<record id="mt_project_task_ready" model="mail.message.subtype">
|
||||
<field name="name">Task Ready</field>
|
||||
<field name="sequence">12</field>
|
||||
<field name="res_model">project.project</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="parent_id" ref="mt_task_ready"/>
|
||||
<field name="relation_field">project_id</field>
|
||||
</record>
|
||||
<record id="mt_project_task_stage" model="mail.message.subtype">
|
||||
<field name="name">Task Stage Changed</field>
|
||||
<field name="sequence">13</field>
|
||||
<field name="res_model">project.project</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="parent_id" ref="mt_task_stage"/>
|
||||
<field name="relation_field">project_id</field>
|
||||
</record>
|
||||
<record id="mt_project_task_rating" model="mail.message.subtype">
|
||||
<field name="name">Task Rating</field>
|
||||
<field name="sequence">14</field>
|
||||
<field name="res_model">project.project</field>
|
||||
<field name="default" eval="True"/>
|
||||
<field name="parent_id" ref="mt_task_rating"/>
|
||||
<field name="relation_field">project_id</field>
|
||||
</record>
|
||||
<record id="mt_project_task_dependency_change" model="mail.message.subtype">
|
||||
<field name="name">Task Dependency Changes</field>
|
||||
<field name="sequence">15</field>
|
||||
<field name="res_model">project.project</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="parent_id" ref="mt_task_dependency_change"/>
|
||||
<field name="relation_field">project_id</field>
|
||||
<field name="hidden" eval="True"/>
|
||||
</record>
|
||||
<record id="mt_project_update_create" model="mail.message.subtype">
|
||||
<field name="name">Update Created</field>
|
||||
<field name="sequence">16</field>
|
||||
<field name="res_model">project.project</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="parent_id" ref="mt_update_create"/>
|
||||
<field name="relation_field">project_id</field>
|
||||
<field name="hidden" eval="True"/>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,111 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<!-- Sample stage-related template -->
|
||||
<record id="mail_template_data_project_task" model="mail.template">
|
||||
<field name="name">Project: Request Acknowledgment</field>
|
||||
<field name="model_id" ref="project.model_project_task"/>
|
||||
<field name="subject">Reception of {{ object.name }}</field>
|
||||
<field name="use_default_to" eval="True"/>
|
||||
<field name="description">Set this template on a project's stage to automate email when tasks reach stages</field>
|
||||
<field name="body_html" type="html">
|
||||
<div>
|
||||
Dear <t t-out="object.partner_id.name or 'customer'">Brandon Freeman</t>,<br/>
|
||||
Thank you for your enquiry.<br />
|
||||
If you have any questions, please let us know.
|
||||
<br/><br/>
|
||||
Thank you,
|
||||
<t t-if="user.signature">
|
||||
<br />
|
||||
<t t-out="user.signature or ''">--<br/>Mitchell Admin</t>
|
||||
</t>
|
||||
</div>
|
||||
</field>
|
||||
<field name="lang">{{ object.partner_id.lang }}</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- Mail sent to request a rating for a task -->
|
||||
<record id="rating_project_request_email_template" model="mail.template">
|
||||
<field name="name">Project: Task Rating Request</field>
|
||||
<field name="model_id" ref="project.model_project_task"/>
|
||||
<field name="subject">{{ object.project_id.company_id.name }}: Satisfaction Survey</field>
|
||||
<field name="email_from">{{ (object._rating_get_operator().email_formatted if object._rating_get_operator() else user.email_formatted) }}</field>
|
||||
<field name="partner_to" >{{ object._rating_get_partner().id }}</field>
|
||||
<field name="description">Set this template on a project stage to request feedback from your customers. Enable the "customer ratings" feature on the project</field>
|
||||
<field name="body_html" type="html">
|
||||
<div>
|
||||
<t t-set="access_token" t-value="object._rating_get_access_token()"/>
|
||||
<t t-set="partner" t-value="object._rating_get_partner()"/>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="590" style="width:100%; margin:0px auto;">
|
||||
<tbody>
|
||||
<tr><td valign="top" style="font-size: 13px;">
|
||||
<t t-if="partner.name">
|
||||
Hello <t t-out="partner.name or ''">Brandon Freeman</t>,<br/><br/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
Hello,<br/><br/>
|
||||
</t>
|
||||
Please take a moment to rate our services related to the task "<strong t-out="object.name or ''">Planning and budget</strong>"
|
||||
<t t-if="object._rating_get_operator().name">
|
||||
assigned to <strong t-out="object._rating_get_operator().name or ''">Mitchell Admin</strong>.<br/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
.<br/>
|
||||
</t>
|
||||
</td></tr>
|
||||
<tr><td style="text-align: center;">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="590" summary="o_mail_notification" style="width:100%; margin: 32px 0px 32px 0px;">
|
||||
<tr><td style="font-size: 13px;">
|
||||
<strong>Tell us how you feel about our service</strong><br/>
|
||||
<span style="font-size: 12px; opacity: 0.5; color: #454748;">(click on one of these smileys)</span>
|
||||
</td></tr>
|
||||
<tr><td style="font-size: 13px;">
|
||||
<table style="width:100%;text-align:center;margin-top:2rem;">
|
||||
<tr>
|
||||
<td>
|
||||
<a t-attf-href="/rate/{{ access_token }}/5">
|
||||
<img alt="Satisfied" src="/rating/static/src/img/rating_5.png" title="Satisfied"/>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a t-attf-href="/rate/{{ access_token }}/3">
|
||||
<img alt="Okay" src="/rating/static/src/img/rating_3.png" title="Okay"/>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a t-attf-href="/rate/{{ access_token }}/1">
|
||||
<img alt="Dissatisfied" src="/rating/static/src/img/rating_1.png" title="Dissatisfied"/>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td valign="top" style="font-size: 13px;">
|
||||
We appreciate your feedback. It helps us to improve continuously.
|
||||
<t t-if="object.project_id.rating_status == 'stage'">
|
||||
<br/><br/><span style="margin: 0px 0px 0px 0px; font-size: 12px; opacity: 0.5; color: #454748;">This customer survey has been sent because your task has been moved to the stage <b t-out="object.stage_id.name or ''">In progress</b></span>
|
||||
</t>
|
||||
<t t-if="object.project_id.rating_status == 'periodic'">
|
||||
<br/><span style="margin: 0px 0px 0px 0px; font-size: 12px; opacity: 0.5; color: #454748;">This customer survey is sent <b t-out="object.project_id.rating_status_period or ''">Weekly</b> as long as the task is in the <b t-out="object.stage_id.name or ''">In progress</b> stage.</span>
|
||||
</t>
|
||||
</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</field>
|
||||
<field name="lang">{{ object._rating_get_partner().lang }}</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
</record>
|
||||
|
||||
<!-- You have been assigned email -->
|
||||
<template id="project_message_user_assigned">
|
||||
<span>Dear <t t-esc="assignee_name"/>,</span>
|
||||
<br/><br/>
|
||||
<span style="margin-top: 8px;">You have been assigned to the <t t-esc="model_description or 'document'"/> <t t-esc="object.display_name"/>.</span>
|
||||
<br/>
|
||||
</template>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<odoo>
|
||||
<data>
|
||||
<record id="project_done_email_template" model="mail.template">
|
||||
<field name="name">Project: Project Completed</field>
|
||||
<field name="model_id" ref="project.model_project_project"/>
|
||||
<field name="subject">Project status - {{ object.name }}</field>
|
||||
<field name="email_from">{{ (object.partner_id.email_formatted if object.partner_id else user.email_formatted) }}</field>
|
||||
<field name="partner_to" >{{ object.partner_id.id }}</field>
|
||||
<field name="description">Set on project's stages to inform customers when a project reaches that stage</field>
|
||||
<field name="body_html" type="html">
|
||||
<div>
|
||||
Dear <t t-out="object.partner_id.name or 'customer'">Brandon Freeman</t>,<br/>
|
||||
It is my pleasure to let you know that we have successfully completed the project "<strong t-out="object.name or ''">Renovations</strong>".
|
||||
<t t-if="user.signature">
|
||||
<br />
|
||||
<t t-out="user.signature or ''">--<br/>Mitchell Admin</t>
|
||||
</t>
|
||||
</div>
|
||||
<br/><span style="margin: 0px 0px 0px 0px; font-size: 12px; opacity: 0.5; color: #454748;" groups="project.group_project_stages">You are receiving this email because your project has been moved to the stage <b t-out="object.stage_id.name or ''">Done</b></span>
|
||||
</field>
|
||||
<field name="lang">{{ object.partner_id.lang }}</field>
|
||||
<field name="auto_delete" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
25
odoo-bringout-oca-ocb-project/project/data/project_data.xml
Normal file
25
odoo-bringout-oca-ocb-project/project/data/project_data.xml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<!-- Project Stages -->
|
||||
<record id="project_project_stage_0" model="project.project.stage">
|
||||
<field name="sequence">10</field>
|
||||
<field name="name">To Do</field>
|
||||
</record>
|
||||
|
||||
<record id="project_project_stage_1" model="project.project.stage">
|
||||
<field name="sequence">15</field>
|
||||
<field name="name">In Progress</field>
|
||||
</record>
|
||||
|
||||
<record id="project_project_stage_2" model="project.project.stage">
|
||||
<field name="sequence">20</field>
|
||||
<field name="name">Done</field>
|
||||
<field name="fold" eval="True"/>
|
||||
</record>
|
||||
|
||||
<record id="project_project_stage_3" model="project.project.stage">
|
||||
<field name="sequence">25</field>
|
||||
<field name="name">Canceled</field>
|
||||
<field name="fold" eval="True"/>
|
||||
</record>
|
||||
</odoo>
|
||||
1336
odoo-bringout-oca-ocb-project/project/data/project_demo.xml
Normal file
1336
odoo-bringout-oca-ocb-project/project/data/project_demo.xml
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue