[IMP] - Add contract tags

This commit is contained in:
sbejaoui
2019-10-24 16:43:39 +02:00
committed by Francisco Ivan Anton Prieto
parent 86d5439aad
commit f9167d81e8
7 changed files with 200 additions and 93 deletions

View File

@@ -9,7 +9,7 @@
{ {
'name': 'Recurring - Contracts Management', 'name': 'Recurring - Contracts Management',
'version': '12.0.6.0.0', 'version': '12.0.6.0.1',
'category': 'Contract Management', 'category': 'Contract Management',
'license': 'AGPL-3', 'license': 'AGPL-3',
'author': "OpenERP SA, " 'author': "OpenERP SA, "
@@ -30,9 +30,11 @@
'data/contract_cron.xml', 'data/contract_cron.xml',
'data/contract_renew_cron.xml', 'data/contract_renew_cron.xml',
'data/mail_template.xml', 'data/mail_template.xml',
'data/ir_ui_menu.xml',
'wizards/contract_line_wizard.xml', 'wizards/contract_line_wizard.xml',
'wizards/contract_manually_create_invoice.xml', 'wizards/contract_manually_create_invoice.xml',
'wizards/contract_contract_terminate.xml', 'wizards/contract_contract_terminate.xml',
'views/contract_tag.xml',
'views/abstract_contract_line.xml', 'views/abstract_contract_line.xml',
'views/contract.xml', 'views/contract.xml',
'views/contract_line.xml', 'views/contract_line.xml',

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<menuitem id="menu_config_contract"
name="Contracts"
sequence="1"
parent="account.menu_finance_configuration"
/>
</odoo>

View File

@@ -0,0 +1,17 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ContractTag(models.Model):
_name = 'contract.tag'
_description = 'Contract Tag'
name = fields.Char(requirment=True)
company_id = fields.Many2one(
'res.company',
string='Company',
default=lambda self: self.env.user.company_id,
)

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2019 ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.model.access" id="contract_tag_access">
<field name="name">contract.tag access</field>
<field name="model_id" ref="model_contract_tag"/>
<field name="group_id" ref="account.group_account_invoice"/>
<field name="perm_read" eval="1"/>
<field name="perm_create" eval="1"/>
<field name="perm_write" eval="1"/>
<field name="perm_unlink" eval="1"/>
</record>
<record id="contract_tag_multi_company_rule" model="ir.rule">
<field name="name">Contract tag multi-company</field>
<field name="model_id" ref="model_contract_tag"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]</field>
</record>
</odoo>

View File

@@ -9,59 +9,69 @@
<form> <form>
<field name="is_terminated" invisible="1"/> <field name="is_terminated" invisible="1"/>
<div class="alert alert-danger" role="alert" style="margin-bottom:0px;" attrs="{'invisible': [('is_terminated','=',False)]}"> <div class="alert alert-danger" role="alert" style="margin-bottom:0px;" attrs="{'invisible': [('is_terminated','=',False)]}">
<p>This contract was terminated for the reason <strong><field name="terminate_reason_id" options="{'no_open':True}"/></strong> on <field name="terminate_date"/>.</p> <p>
<p><field name="terminate_comment"/></p> This contract was terminated for the reason
<strong>
<field name="terminate_reason_id" options="{'no_open':True}"/>
</strong>
on
<field name="terminate_date"/>
.
</p>
<p>
<field name="terminate_comment"/>
</p>
</div> </div>
<header> <header>
<button name="action_contract_send" <button name="action_contract_send"
type="object" type="object"
string="Send by Email" string="Send by Email"
attrs="{'invisible': [('is_terminated','=',True)]}" attrs="{'invisible': [('is_terminated','=',True)]}"
groups="base.group_user"/> groups="base.group_user"/>
<button name="recurring_create_invoice" <button name="recurring_create_invoice"
type="object" type="object"
attrs="{'invisible': ['|', ('create_invoice_visibility', '=', False)]}" attrs="{'invisible': ['|', ('create_invoice_visibility', '=', False)]}"
string="Create invoices" string="Create invoices"
groups="base.group_no_one"/> groups="base.group_no_one"/>
<button name="action_terminate_contract" <button name="action_terminate_contract"
type="object" type="object"
string="Terminate Contract" string="Terminate Contract"
attrs="{'invisible': [('is_terminated','=',True)]}" attrs="{'invisible': [('is_terminated','=',True)]}"
groups="contract.can_terminate_contract"/> groups="contract.can_terminate_contract"/>
<button name="action_terminate_contract" <button name="action_terminate_contract"
type="object" type="object"
string="Update Termination Details" string="Update Termination Details"
attrs="{'invisible': [('is_terminated','=',False)]}" attrs="{'invisible': [('is_terminated','=',False)]}"
groups="contract.can_terminate_contract"/> groups="contract.can_terminate_contract"/>
<button name="action_cancel_contract_termination" <button name="action_cancel_contract_termination"
type="object" type="object"
confirm="Are you sure you want to re-activate this contract?" confirm="Are you sure you want to re-activate this contract?"
string="Cancel Contract Termination" string="Cancel Contract Termination"
attrs="{'invisible': [('is_terminated','=',False)]}" attrs="{'invisible': [('is_terminated','=',False)]}"
groups="contract.can_terminate_contract"/> groups="contract.can_terminate_contract"/>
</header> </header>
<sheet string="Contract"> <sheet string="Contract">
<div class="oe_button_box" name="button_box"> <div class="oe_button_box" name="button_box">
<button class="oe_stat_button" type="object" <button class="oe_stat_button" type="object"
name="toggle_active" icon="fa-archive"> name="toggle_active" icon="fa-archive">
<field name="active" widget="boolean_button" <field name="active" widget="boolean_button"
options="{&quot;terminology&quot;: &quot;archive&quot;}"/> options="{&quot;terminology&quot;: &quot;archive&quot;}"/>
</button> </button>
<button name="action_show_invoices" <button name="action_show_invoices"
type="object" icon="fa-list" type="object" icon="fa-list"
class="oe_stat_button"> class="oe_stat_button">
<field string="Invoices" <field string="Invoices"
name="invoice_count" name="invoice_count"
widget="statinfo"/> widget="statinfo"/>
</button> </button>
</div> </div>
<div class="oe_title"> <div class="oe_title">
<label for="name" string="Contract Name" <label for="name" string="Contract Name"
class="oe_edit_only"/> class="oe_edit_only"/>
<h3> <h3>
<field name="name" class="oe_inline" <field name="name" class="oe_inline"
attrs="{'readonly': [('is_terminated','=',True)]}" attrs="{'readonly': [('is_terminated','=',True)]}"
placeholder="e.g. Contract XYZ"/> placeholder="e.g. Contract XYZ"/>
</h3> </h3>
</div> </div>
<group name="main"> <group name="main">
@@ -73,11 +83,11 @@
</group> </group>
<group> <group>
<field name="contract_template_id" <field name="contract_template_id"
attrs="{'readonly': [('is_terminated','=',True)]}" attrs="{'readonly': [('is_terminated','=',True)]}"
domain="['|', ('contract_type', '=', contract_type), ('contract_type', '=', False)]" domain="['|', ('contract_type', '=', contract_type), ('contract_type', '=', False)]"
context="{'default_contract_type': contract_type}"/> context="{'default_contract_type': contract_type}"/>
<field name="contract_type" invisible="1" <field name="contract_type" invisible="1"
required="1"/> required="1"/>
<field name="fiscal_position_id" attrs="{'readonly': [('is_terminated','=',True)]}"/> <field name="fiscal_position_id" attrs="{'readonly': [('is_terminated','=',True)]}"/>
<field name="tag_ids" widget="many2many_tags"/> <field name="tag_ids" widget="many2many_tags"/>
</group> </group>
@@ -95,37 +105,41 @@
</group> </group>
<notebook> <notebook>
<page name="recurring_invoice_line" <page name="recurring_invoice_line"
string="Recurring Invoices"> string="Recurring Invoices">
<field name="contract_line_ids" attrs="{'readonly': [('is_terminated','=',True)]}" <field name="contract_line_ids" attrs="{'readonly': [('is_terminated','=',True)]}"
context="{'default_contract_type': contract_type}"/> context="{'default_contract_type': contract_type}"/>
<field name="note"/> <field name="note"/>
</page> </page>
<page name="info" string="Other Information"> <page name="info" string="Other Information">
<field name="create_invoice_visibility" <field name="create_invoice_visibility"
invisible="1"/> invisible="1"/>
<group> <group>
<field name="code" attrs="{'readonly': [('is_terminated','=',True)]}"/> <field name="code" attrs="{'readonly': [('is_terminated','=',True)]}"/>
<field name="group_id" attrs="{'readonly': [('is_terminated','=',True)]}"/> <field name="group_id" attrs="{'readonly': [('is_terminated','=',True)]}"/>
<field name="company_id" <field name="company_id"
attrs="{'readonly': [('is_terminated','=',True)]}" attrs="{'readonly': [('is_terminated','=',True)]}"
options="{'no_create': True}" options="{'no_create': True}"
groups="base.group_multi_company"/> groups="base.group_multi_company"/>
<field name="currency_id" <field name="currency_id"
attrs="{'readonly': [('is_terminated','=',True)]}" attrs="{'readonly': [('is_terminated','=',True)]}"
options="{'no_create': True}" options="{'no_create': True}"
groups="base.group_multi_currency"/> groups="base.group_multi_currency"/>
<field name="invoice_partner_id" <field name="invoice_partner_id"
attrs="{'readonly': [('is_terminated','=',True)]}" attrs="{'readonly': [('is_terminated','=',True)]}"
required="1"/> required="1"/>
</group> </group>
<group string="Legend (for the markers inside invoice lines description)" <group string="Legend (for the markers inside invoice lines description)"
name="group_legend"> name="group_legend">
<p colspan="2"><strong>#START#</strong>: Start <p colspan="2">
<strong>#START#</strong>
: Start
date date
of the of the
invoiced period invoiced period
</p> </p>
<p colspan="2"><strong>#END#</strong>: End date <p colspan="2">
<strong>#END#</strong>
: End date
of of
the the
invoiced period invoiced period
@@ -205,42 +219,42 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<search> <search>
<field name="name" <field name="name"
filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]"/> filter_domain="['|', ('name','ilike',self), ('code','ilike',self)]"/>
<field name="journal_id"/> <field name="journal_id"/>
<field name="pricelist_id"/> <field name="pricelist_id"/>
<separator/> <separator/>
<separator/> <separator/>
<filter name="not_finished" <filter name="not_finished"
string="In progress" string="In progress"
domain="['|', ('date_end', '&gt;=', context_today().strftime('%Y-%m-%d')), '&amp;', ('date_end', '=', False), ('recurring_next_date', '!=', False)]" domain="['|', ('date_end', '&gt;=', context_today().strftime('%Y-%m-%d')), '&amp;', ('date_end', '=', False), ('recurring_next_date', '!=', False)]"
/> />
<filter name="finished" <filter name="finished"
string="Finished" string="Finished"
domain="[('date_end', '&lt;', context_today().strftime('%Y-%m-%d')), ('recurring_next_date', '=', False)]" domain="[('date_end', '&lt;', context_today().strftime('%Y-%m-%d')), ('recurring_next_date', '=', False)]"
/> />
<field name="partner_id"/> <field name="partner_id"/>
<field name="commercial_partner_id"/> <field name="commercial_partner_id"/>
<filter string="Archived" <filter string="Archived"
domain="[('active', '=', False)]" domain="[('active', '=', False)]"
name="inactive"/> name="inactive"/>
<group expand="0" string="Group By..."> <group expand="0" string="Group By...">
<filter string="Associated Partner" <filter string="Associated Partner"
name="group_by_partner" name="group_by_partner"
domain="[]" domain="[]"
context="{'group_by':'partner_id'}"/> context="{'group_by':'partner_id'}"/>
<filter name="commercial_partner_groupby" <filter name="commercial_partner_groupby"
string="Commercial Entity" string="Commercial Entity"
context="{'group_by': 'commercial_partner_id'}"/> context="{'group_by': 'commercial_partner_id'}"/>
<filter name="group_by_next_invoice" <filter name="group_by_next_invoice"
string="Next Invoice" string="Next Invoice"
domain="[('recurring_next_date', '!=', False)]" domain="[('recurring_next_date', '!=', False)]"
context="{'group_by':'recurring_next_date'}" context="{'group_by':'recurring_next_date'}"
/> />
<filter name="group_by_date_end" <filter name="group_by_date_end"
string="Date End" string="Date End"
domain="[]" domain="[]"
context="{'group_by':'date_end'}" context="{'group_by':'date_end'}"
/> />
</group> </group>
</search> </search>
</field> </field>
@@ -253,9 +267,10 @@
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="domain">[('contract_type', '=', 'sale')]</field> <field name="domain">[('contract_type', '=', 'sale')]</field>
<field name="context">{'is_contract':1, <field name="context">
'search_default_not_finished':1, {'is_contract':1,
'default_contract_type': 'sale'} 'search_default_not_finished':1,
'default_contract_type': 'sale'}
</field> </field>
<field name="search_view_id" ref="contract_contract_search_view"/> <field name="search_view_id" ref="contract_contract_search_view"/>
<field name="help" type="html"> <field name="help" type="html">
@@ -280,10 +295,10 @@
</record> </record>
<menuitem id="menu_contract_contract_customer" <menuitem id="menu_contract_contract_customer"
parent="account.menu_finance_receivables" parent="account.menu_finance_receivables"
action="action_customer_contract" action="action_customer_contract"
sequence="99" sequence="99"
/> />
<!--ACTION supplier contracts--> <!--ACTION supplier contracts-->
<record id="action_supplier_contract" model="ir.actions.act_window"> <record id="action_supplier_contract" model="ir.actions.act_window">
@@ -292,9 +307,10 @@
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="domain">[('contract_type', '=', 'purchase')]</field> <field name="domain">[('contract_type', '=', 'purchase')]</field>
<field name="context">{'is_contract':1, <field name="context">
'search_default_not_finished':1, {'is_contract':1,
'default_contract_type': 'purchase'} 'search_default_not_finished':1,
'default_contract_type': 'purchase'}
</field> </field>
<field name="search_view_id" ref="contract_contract_search_view"/> <field name="search_view_id" ref="contract_contract_search_view"/>
<field name="help" type="html"> <field name="help" type="html">
@@ -319,9 +335,9 @@
</record> </record>
<menuitem id="menu_contract_contract_supplier" <menuitem id="menu_contract_contract_supplier"
parent="account.menu_finance_payables" parent="account.menu_finance_payables"
action="action_supplier_contract" action="action_supplier_contract"
sequence="99" sequence="99"
/> />
</odoo> </odoo>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2020 ACSONE SA/NV
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="contract_tag_form_view">
<field name="model">contract.tag</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="company_id" options="{'no_create': True}"
groups="base.group_multi_company"/>
</group>
</form>
</field>
</record>
<record model="ir.ui.view" id="contract_tag_tree_view">
<field name="model">contract.tag</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="company_id" options="{'no_create': True}"
groups="base.group_multi_company"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="contract_tag_act_window">
<field name="name">Contract Tags</field>
<field name="res_model">contract.tag</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.ui.menu" id="contract_tag_menu">
<field name="name">Contract Tag</field>
<field name="parent_id" ref="menu_config_contract"/>
<field name="action" ref="contract_tag_act_window"/>
<field name="sequence" eval="16"/>
</record>
</odoo>

View File

@@ -100,12 +100,6 @@
</field> </field>
</record> </record>
<menuitem id="menu_config_contract"
name="Contracts"
sequence="1"
parent="account.menu_finance_configuration"
/>
<menuitem id="contract_template_menu" <menuitem id="contract_template_menu"
parent="menu_config_contract" parent="menu_config_contract"
action="contract_template_action" action="contract_template_action"