|
@ -48,7 +48,9 @@ class Agreement(models.Model): |
|
|
help="When the agreement starts.", |
|
|
help="When the agreement starts.", |
|
|
) |
|
|
) |
|
|
end_date = fields.Date( |
|
|
end_date = fields.Date( |
|
|
string="End Date", track_visibility="onchange", help="When the agreement ends." |
|
|
|
|
|
|
|
|
string="End Date", |
|
|
|
|
|
track_visibility="onchange", |
|
|
|
|
|
help="When the agreement ends." |
|
|
) |
|
|
) |
|
|
color = fields.Integer() |
|
|
color = fields.Integer() |
|
|
active = fields.Boolean( |
|
|
active = fields.Boolean( |
|
@ -118,15 +120,25 @@ class Agreement(models.Model): |
|
|
track_visibility="onchange", |
|
|
track_visibility="onchange", |
|
|
help="Date that the contract was terminated.", |
|
|
help="Date that the contract was terminated.", |
|
|
) |
|
|
) |
|
|
reviewed_date = fields.Date(string="Reviewed Date", track_visibility="onchange") |
|
|
|
|
|
|
|
|
reviewed_date = fields.Date( |
|
|
|
|
|
string="Reviewed Date", |
|
|
|
|
|
track_visibility="onchange") |
|
|
reviewed_user_id = fields.Many2one( |
|
|
reviewed_user_id = fields.Many2one( |
|
|
"res.users", string="Reviewed By", track_visibility="onchange" |
|
|
|
|
|
|
|
|
"res.users", |
|
|
|
|
|
string="Reviewed By", |
|
|
|
|
|
track_visibility="onchange" |
|
|
) |
|
|
) |
|
|
approved_date = fields.Date(string="Approved Date", track_visibility="onchange") |
|
|
|
|
|
|
|
|
approved_date = fields.Date( |
|
|
|
|
|
string="Approved Date", |
|
|
|
|
|
track_visibility="onchange") |
|
|
approved_user_id = fields.Many2one( |
|
|
approved_user_id = fields.Many2one( |
|
|
"res.users", string="Approved By", track_visibility="onchange" |
|
|
|
|
|
|
|
|
"res.users", |
|
|
|
|
|
string="Approved By", |
|
|
|
|
|
track_visibility="onchange" |
|
|
) |
|
|
) |
|
|
currency_id = fields.Many2one("res.currency", string="Currency") |
|
|
|
|
|
|
|
|
currency_id = fields.Many2one( |
|
|
|
|
|
"res.currency", |
|
|
|
|
|
string="Currency") |
|
|
partner_id = fields.Many2one( |
|
|
partner_id = fields.Many2one( |
|
|
"res.partner", |
|
|
"res.partner", |
|
|
string="Partner", |
|
|
string="Partner", |
|
@ -146,10 +158,12 @@ class Agreement(models.Model): |
|
|
help="The primary partner contact (If Applicable).", |
|
|
help="The primary partner contact (If Applicable).", |
|
|
) |
|
|
) |
|
|
partner_contact_phone = fields.Char( |
|
|
partner_contact_phone = fields.Char( |
|
|
related="partner_contact_id.phone", string="Phone" |
|
|
|
|
|
|
|
|
related="partner_contact_id.phone", |
|
|
|
|
|
string="Phone" |
|
|
) |
|
|
) |
|
|
partner_contact_email = fields.Char( |
|
|
partner_contact_email = fields.Char( |
|
|
related="partner_contact_id.email", string="Email" |
|
|
|
|
|
|
|
|
related="partner_contact_id.email", |
|
|
|
|
|
string="Email" |
|
|
) |
|
|
) |
|
|
company_contact_id = fields.Many2one( |
|
|
company_contact_id = fields.Many2one( |
|
|
"res.partner", |
|
|
"res.partner", |
|
@ -158,10 +172,12 @@ class Agreement(models.Model): |
|
|
help="The primary contact in the company.", |
|
|
help="The primary contact in the company.", |
|
|
) |
|
|
) |
|
|
company_contact_phone = fields.Char( |
|
|
company_contact_phone = fields.Char( |
|
|
related="company_contact_id.phone", string="Phone" |
|
|
|
|
|
|
|
|
related="company_contact_id.phone", |
|
|
|
|
|
string="Phone" |
|
|
) |
|
|
) |
|
|
company_contact_email = fields.Char( |
|
|
company_contact_email = fields.Char( |
|
|
related="company_contact_id.email", string="Email" |
|
|
|
|
|
|
|
|
related="company_contact_id.email", |
|
|
|
|
|
string="Email" |
|
|
) |
|
|
) |
|
|
agreement_type_id = fields.Many2one( |
|
|
agreement_type_id = fields.Many2one( |
|
|
"agreement.type", |
|
|
"agreement.type", |
|
@ -176,7 +192,9 @@ class Agreement(models.Model): |
|
|
help="Select the sub-type of this agreement. Sub-Types are related to " |
|
|
help="Select the sub-type of this agreement. Sub-Types are related to " |
|
|
"agreement types.", |
|
|
"agreement types.", |
|
|
) |
|
|
) |
|
|
product_ids = fields.Many2many("product.template", string="Products & Services") |
|
|
|
|
|
|
|
|
product_ids = fields.Many2many( |
|
|
|
|
|
"product.template", |
|
|
|
|
|
string="Products & Services") |
|
|
payment_term_id = fields.Many2one( |
|
|
payment_term_id = fields.Many2one( |
|
|
"account.payment.term", |
|
|
"account.payment.term", |
|
|
string="Payment Term", |
|
|
string="Payment Term", |
|
@ -216,16 +234,28 @@ class Agreement(models.Model): |
|
|
help="Describes what happens after the contract expires.", |
|
|
help="Describes what happens after the contract expires.", |
|
|
) |
|
|
) |
|
|
recital_ids = fields.One2many( |
|
|
recital_ids = fields.One2many( |
|
|
"agreement.recital", "agreement_id", string="Recitals", copy=True |
|
|
|
|
|
|
|
|
"agreement.recital", |
|
|
|
|
|
"agreement_id", |
|
|
|
|
|
string="Recitals", |
|
|
|
|
|
copy=True |
|
|
) |
|
|
) |
|
|
sections_ids = fields.One2many( |
|
|
sections_ids = fields.One2many( |
|
|
"agreement.section", "agreement_id", string="Sections", copy=True |
|
|
|
|
|
|
|
|
"agreement.section", |
|
|
|
|
|
"agreement_id", |
|
|
|
|
|
string="Sections", |
|
|
|
|
|
copy=True |
|
|
) |
|
|
) |
|
|
clauses_ids = fields.One2many( |
|
|
clauses_ids = fields.One2many( |
|
|
"agreement.clause", "agreement_id", string="Clauses", copy=True |
|
|
|
|
|
|
|
|
"agreement.clause", |
|
|
|
|
|
"agreement_id", |
|
|
|
|
|
string="Clauses", |
|
|
|
|
|
copy=True |
|
|
) |
|
|
) |
|
|
appendix_ids = fields.One2many( |
|
|
appendix_ids = fields.One2many( |
|
|
"agreement.appendix", "agreement_id", string="Appendices", copy=True |
|
|
|
|
|
|
|
|
"agreement.appendix", |
|
|
|
|
|
"agreement_id", |
|
|
|
|
|
string="Appendices", |
|
|
|
|
|
copy=True |
|
|
) |
|
|
) |
|
|
previous_version_agreements_ids = fields.One2many( |
|
|
previous_version_agreements_ids = fields.One2many( |
|
|
"agreement", |
|
|
"agreement", |
|
@ -242,10 +272,15 @@ class Agreement(models.Model): |
|
|
domain=[("active", "=", True)], |
|
|
domain=[("active", "=", True)], |
|
|
) |
|
|
) |
|
|
line_ids = fields.One2many( |
|
|
line_ids = fields.One2many( |
|
|
"agreement.line", "agreement_id", string="Products/Services", copy=False |
|
|
|
|
|
|
|
|
"agreement.line", |
|
|
|
|
|
"agreement_id", |
|
|
|
|
|
string="Products/Services", |
|
|
|
|
|
copy=False |
|
|
) |
|
|
) |
|
|
state = fields.Selection( |
|
|
state = fields.Selection( |
|
|
[("draft", "Draft"), ("active", "Active"), ("inactive", "Inactive")], |
|
|
|
|
|
|
|
|
[("draft", "Draft"), |
|
|
|
|
|
("active", "Active"), |
|
|
|
|
|
("inactive", "Inactive")], |
|
|
default="draft", |
|
|
default="draft", |
|
|
track_visibility="always", |
|
|
track_visibility="always", |
|
|
) |
|
|
) |
|
@ -256,7 +291,9 @@ class Agreement(models.Model): |
|
|
"customer address.(Address Type = Other)", |
|
|
"customer address.(Address Type = Other)", |
|
|
) |
|
|
) |
|
|
signed_contract_filename = fields.Char(string="Filename") |
|
|
signed_contract_filename = fields.Char(string="Filename") |
|
|
signed_contract = fields.Binary(string="Signed Document", track_visibility="always") |
|
|
|
|
|
|
|
|
signed_contract = fields.Binary( |
|
|
|
|
|
string="Signed Document", |
|
|
|
|
|
track_visibility="always") |
|
|
field_id = fields.Many2one( |
|
|
field_id = fields.Many2one( |
|
|
"ir.model.fields", |
|
|
"ir.model.fields", |
|
|
string="Field", |
|
|
string="Field", |
|
@ -293,7 +330,8 @@ class Agreement(models.Model): |
|
|
MailTemplates = self.env["mail.template"] |
|
|
MailTemplates = self.env["mail.template"] |
|
|
for agreement in self: |
|
|
for agreement in self: |
|
|
lang = agreement.partner_id.lang or "en_US" |
|
|
lang = agreement.partner_id.lang or "en_US" |
|
|
description = MailTemplates.with_context(lang=lang)._render_template( |
|
|
|
|
|
|
|
|
description = MailTemplates.with_context( |
|
|
|
|
|
lang=lang)._render_template( |
|
|
agreement.description, "agreement", agreement.id |
|
|
agreement.description, "agreement", agreement.id |
|
|
) |
|
|
) |
|
|
agreement.dynamic_description = description |
|
|
agreement.dynamic_description = description |
|
@ -303,7 +341,8 @@ class Agreement(models.Model): |
|
|
MailTemplates = self.env["mail.template"] |
|
|
MailTemplates = self.env["mail.template"] |
|
|
for agreement in self: |
|
|
for agreement in self: |
|
|
lang = agreement.partner_id.lang or "en_US" |
|
|
lang = agreement.partner_id.lang or "en_US" |
|
|
special_terms = MailTemplates.with_context(lang=lang)._render_template( |
|
|
|
|
|
|
|
|
special_terms = MailTemplates.with_context( |
|
|
|
|
|
lang=lang)._render_template( |
|
|
agreement.special_terms, "agreement", agreement.id |
|
|
agreement.special_terms, "agreement", agreement.id |
|
|
) |
|
|
) |
|
|
agreement.dynamic_special_terms = special_terms |
|
|
agreement.dynamic_special_terms = special_terms |
|
@ -386,7 +425,8 @@ class Agreement(models.Model): |
|
|
@api.model |
|
|
@api.model |
|
|
def create(self, vals): |
|
|
def create(self, vals): |
|
|
if vals.get("reference", _("New")) == _("New"): |
|
|
if vals.get("reference", _("New")) == _("New"): |
|
|
vals["reference"] = self.env["ir.sequence"].next_by_code("agreement") or _( |
|
|
|
|
|
|
|
|
vals["reference"] = self.env[ |
|
|
|
|
|
"ir.sequence"].next_by_code("agreement") or _( |
|
|
"New" |
|
|
"New" |
|
|
) |
|
|
) |
|
|
return super(Agreement, self).create(vals) |
|
|
return super(Agreement, self).create(vals) |
|
|