mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
[IMP] - Add contract tags
This commit is contained in:
committed by
Francisco Ivan Anton Prieto
parent
86d5439aad
commit
f9167d81e8
@@ -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',
|
||||||
|
|||||||
10
contract/data/ir_ui_menu.xml
Normal file
10
contract/data/ir_ui_menu.xml
Normal 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>
|
||||||
17
contract/models/contract_tag.py
Normal file
17
contract/models/contract_tag.py
Normal 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,
|
||||||
|
)
|
||||||
23
contract/security/contract_tag.xml
Normal file
23
contract/security/contract_tag.xml
Normal 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>
|
||||||
@@ -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="{"terminology": "archive"}"/>
|
options="{"terminology": "archive"}"/>
|
||||||
</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', '>=', context_today().strftime('%Y-%m-%d')), '&', ('date_end', '=', False), ('recurring_next_date', '!=', False)]"
|
domain="['|', ('date_end', '>=', context_today().strftime('%Y-%m-%d')), '&', ('date_end', '=', False), ('recurring_next_date', '!=', False)]"
|
||||||
/>
|
/>
|
||||||
<filter name="finished"
|
<filter name="finished"
|
||||||
string="Finished"
|
string="Finished"
|
||||||
domain="[('date_end', '<', context_today().strftime('%Y-%m-%d')), ('recurring_next_date', '=', False)]"
|
domain="[('date_end', '<', 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>
|
||||||
|
|||||||
45
contract/views/contract_tag.xml
Normal file
45
contract/views/contract_tag.xml
Normal 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>
|
||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user