[14.0][MIG] agreement_serviceprofile (Version 12.0 to 14.0)

[MIG] Black

[MIG] Black
This commit is contained in:
Patrick Wilson
2021-05-04 13:49:14 -06:00
committed by Olga Marco
parent 7a4e3df740
commit 2e19f4a2ba
14 changed files with 290 additions and 147 deletions

View File

@@ -14,13 +14,13 @@ Agreement Service Profile
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3 :alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github
:target: https://github.com/OCA/contract/tree/12.0/agreement_serviceprofile :target: https://github.com/OCA/contract/tree/14.0/agreement_serviceprofile
:alt: OCA/contract :alt: OCA/contract
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_serviceprofile :target: https://translation.odoo-community.org/projects/contract-14-0/contract-14-0-agreement_serviceprofile
:alt: Translate me on Weblate :alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/110/12.0 :target: https://runbot.odoo-community.org/runbot/110/14.0
:alt: Try me on Runbot :alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5| |badge1| |badge2| |badge3| |badge4| |badge5|
@@ -42,7 +42,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/contract/issues>`_. Bugs are tracked on `GitHub Issues <https://github.com/OCA/contract/issues>`_.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/contract/issues/new?body=module:%20agreement_serviceprofile%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. `feedback <https://github.com/OCA/contract/issues/new?body=module:%20agreement_serviceprofile%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues. Do not contact contributors directly about support or help with technical issues.
@@ -98,6 +98,6 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-max3903| |maintainer-max3903|
This module is part of the `OCA/contract <https://github.com/OCA/contract/tree/12.0/agreement_serviceprofile>`_ project on GitHub. This module is part of the `OCA/contract <https://github.com/OCA/contract/tree/14.0/agreement_serviceprofile>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -2,26 +2,26 @@
# Copyright (C) 2019 Open Source Integrators # Copyright (C) 2019 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{ {
'name': 'Agreement Service Profile', "name": "Agreement Service Profile",
'summary': "Adds an Agreement Service Profile object", "summary": "Adds an Agreement Service Profile object",
'version': '12.0.1.2.0', "version": "14.0.1.0.0",
'category': 'Contract', "category": "Contract",
'author': 'Pavlov Media, ' "author": "Pavlov Media, "
'Open Source Integrators, ' "Open Source Integrators, "
'Odoo Community Association (OCA)', "Odoo Community Association (OCA)",
'website': 'https://github.com/oca/contract', "website": "https://github.com/OCA/contract",
'license': 'AGPL-3', "license": "AGPL-3",
'depends': ['agreement_legal'], "depends": ["agreement_legal"],
'data': [ "data": [
'data/serviceprofile_stage.xml', "data/serviceprofile_stage.xml",
'security/ir.model.access.csv', "security/ir.model.access.csv",
'views/product.xml', "views/product.xml",
'views/agreement_serviceprofile.xml', "views/agreement_serviceprofile.xml",
'views/agreement.xml', "views/agreement.xml",
], ],
'development_status': 'Beta', "development_status": "Beta",
'maintainers': [ "maintainers": [
'max3903', "max3903",
], ],
'installable': True, "installable": True,
} }

View File

@@ -4,9 +4,9 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Odoo Server 12.0\n" "Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@@ -29,7 +29,6 @@ msgid "Add notes here..."
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: selection:agreement.stage,stage_type:0
#: model:ir.model,name:agreement_serviceprofile.model_agreement #: model:ir.model,name:agreement_serviceprofile.model_agreement
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__agreement_id #: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__agreement_id
#: model_terms:ir.ui.view,arch_db:agreement_serviceprofile.agreement_serviceprofile_search #: model_terms:ir.ui.view,arch_db:agreement_serviceprofile.agreement_serviceprofile_search
@@ -46,6 +45,11 @@ msgstr ""
msgid "Agreement Stages" msgid "Agreement Stages"
msgstr "" msgstr ""
#. module: agreement_serviceprofile
#: model_terms:ir.ui.view,arch_db:agreement_serviceprofile.agreement_serviceprofile_form
msgid "Archived"
msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__message_attachment_count #: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__message_attachment_count
msgid "Attachment Count" msgid "Attachment Count"
@@ -68,7 +72,11 @@ msgid "Created on"
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement__display_name
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__display_name #: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__display_name
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_stage__display_name
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_product_product__display_name
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_product_template__display_name
msgid "Display Name" msgid "Display Name"
msgstr "" msgstr ""
@@ -88,35 +96,39 @@ msgid "Followers (Partners)"
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement__id
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__id #: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__id
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_stage__id
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_product_product__id
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_product_template__id
msgid "ID" msgid "ID"
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model:ir.model.fields,help:agreement_serviceprofile.field_product_product__is_serviceprofile #: model:ir.model.fields,help:agreement_serviceprofile.field_product_product__is_serviceprofile
#: model:ir.model.fields,help:agreement_serviceprofile.field_product_template__is_serviceprofile #: model:ir.model.fields,help:agreement_serviceprofile.field_product_template__is_serviceprofile
msgid "If True, this product will create a service profile on the\n" msgid ""
"If True, this product will create a service profile on the\n"
" agreement when the sales order is confirmed." " agreement when the sales order is confirmed."
msgstr "" msgstr ""
#. module: agreement_serviceprofile
#: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__message_unread
msgid "If checked new messages require your attention."
msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__message_needaction #: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__message_needaction
#: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__message_unread
msgid "If checked, new messages require your attention." msgid "If checked, new messages require your attention."
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__message_has_error #: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__message_has_error
#: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__message_has_sms_error
msgid "If checked, some messages have a delivery error." msgid "If checked, some messages have a delivery error."
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__active #: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__active
msgid "If unchecked, it will allow you to hide this service profile without removing it." msgid ""
"If unchecked, it will allow you to hide this service profile without "
"removing it."
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
@@ -125,7 +137,11 @@ msgid "Is Follower"
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement____last_update
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile____last_update #: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile____last_update
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_stage____last_update
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_product_product____last_update
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_product_template____last_update
msgid "Last Modified on" msgid "Last Modified on"
msgstr "" msgstr ""
@@ -173,7 +189,7 @@ msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__message_has_error_counter #: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__message_has_error_counter
msgid "Number of error" msgid "Number of errors"
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
@@ -212,6 +228,11 @@ msgstr ""
msgid "Product Variant" msgid "Product Variant"
msgstr "" msgstr ""
#. module: agreement_serviceprofile
#: model:ir.model.fields,field_description:agreement_serviceprofile.field_agreement_serviceprofile__message_has_sms_error
msgid "SMS Delivery error"
msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: model_terms:ir.ui.view,arch_db:agreement_serviceprofile.product_product_form_view #: model_terms:ir.ui.view,arch_db:agreement_serviceprofile.product_product_form_view
#: model_terms:ir.ui.view,arch_db:agreement_serviceprofile.product_template_form_view #: model_terms:ir.ui.view,arch_db:agreement_serviceprofile.product_template_form_view
@@ -229,7 +250,7 @@ msgid "Service Product Variant"
msgstr "" msgstr ""
#. module: agreement_serviceprofile #. module: agreement_serviceprofile
#: selection:agreement.stage,stage_type:0 #: model:ir.model.fields.selection,name:agreement_serviceprofile.selection__agreement_stage__stage_type__serviceprofile
#: model_terms:ir.ui.view,arch_db:agreement_serviceprofile.agreement_serviceprofile_form #: model_terms:ir.ui.view,arch_db:agreement_serviceprofile.agreement_serviceprofile_form
msgid "Service Profile" msgid "Service Profile"
msgstr "" msgstr ""
@@ -284,4 +305,3 @@ msgstr ""
#: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__website_message_ids #: model:ir.model.fields,help:agreement_serviceprofile.field_agreement_serviceprofile__website_message_ids
msgid "Website communication history" msgid "Website communication history"
msgstr "" msgstr ""

View File

@@ -5,9 +5,8 @@ from odoo import fields, models
class Agreement(models.Model): class Agreement(models.Model):
_inherit = 'agreement' _inherit = "agreement"
serviceprofile_ids = fields.One2many('agreement.serviceprofile', serviceprofile_ids = fields.One2many(
'agreement_id', "agreement.serviceprofile", "agreement_id", string="Service Profiles", copy=True
string="Service Profiles", )
copy=True)

View File

@@ -2,43 +2,51 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models, api from odoo import api, fields, models
class AgreementServiceProfile(models.Model): class AgreementServiceProfile(models.Model):
_name = 'agreement.serviceprofile' _name = "agreement.serviceprofile"
_inherit = 'mail.thread' _inherit = "mail.thread"
_description = 'Agreement Service Profiles' _description = "Agreement Service Profiles"
def _default_stage_id(self): def _default_stage_id(self):
return self.env.ref('agreement_serviceprofile.servpro_stage_draft') return self.env.ref("agreement_serviceprofile.servpro_stage_draft")
name = fields.Char(string="Name", required=True) name = fields.Char(string="Name", required=True)
stage_id = fields.Many2one('agreement.stage', string="Stage", stage_id = fields.Many2one(
default=_default_stage_id, copy=False, "agreement.stage",
group_expand='_read_group_stage_ids',) string="Stage",
agreement_id = fields.Many2one('agreement', string="Agreement", default=_default_stage_id,
ondelete="cascade") copy=False,
active = fields.Boolean(string="Active", group_expand="_read_group_stage_ids",
)
agreement_id = fields.Many2one("agreement", string="Agreement", ondelete="cascade")
active = fields.Boolean(
string="Active",
default=True, default=True,
help="If unchecked, it will allow you " + help="If unchecked, it will allow you to hide this service profile "
"to hide this service profile" "without removing it.",
" without removing it.") )
notes = fields.Text(string="Notes") notes = fields.Text(string="Notes")
product_id = fields.Many2one('product.template', 'Service Product', product_id = fields.Many2one(
domain="[('is_serviceprofile', '=', True), " "product.template",
"('type', '=', 'service')]") "Service Product",
product_variant_id = fields.Many2one('product.product', 'Service Product Variant', domain="[('is_serviceprofile', '=', True), ('type', '=', 'service')]",
domain="[('is_serviceprofile', '=', True), " )
"('type', '=', 'service')]") product_variant_id = fields.Many2one(
use_product_variant = fields.Boolean('Use Product Variant', default=False) "product.product",
partner_id = fields.Many2one(related='agreement_id.partner_id', "Service Product Variant",
string='Partner') domain="[('is_serviceprofile', '=', True), ('type', '=', 'service')]",
)
use_product_variant = fields.Boolean("Use Product Variant", default=False)
partner_id = fields.Many2one(related="agreement_id.partner_id", string="Partner")
# Used for Kanban grouped_by view # Used for Kanban grouped_by view
@api.model @api.model
def _read_group_stage_ids(self, stages, domain, order): def _read_group_stage_ids(self, stages, domain, order):
stage_ids = self.env["agreement.stage"].search( stage_ids = self.env["agreement.stage"].search(
[('stage_type', '=', 'serviceprofile')]) [("stage_type", "=", "serviceprofile")]
)
return stage_ids return stage_ids

View File

@@ -5,8 +5,9 @@ from odoo import fields, models
class AgreementStage(models.Model): class AgreementStage(models.Model):
_inherit = 'agreement.stage' _inherit = "agreement.stage"
stage_type = fields.Selection( stage_type = fields.Selection(
selection_add=[('serviceprofile', 'Service Profile')] selection_add=[("serviceprofile", "Service Profile")],
ondelete={"serviceprofile": "cascade"},
) )

View File

@@ -5,28 +5,30 @@ from odoo import api, fields, models
class ProductTemplate(models.Model): class ProductTemplate(models.Model):
_inherit = 'product.template' _inherit = "product.template"
is_serviceprofile = fields.Boolean( is_serviceprofile = fields.Boolean(
string="Create Service Profiles", string="Create Service Profiles",
help="""If True, this product will create a service profile on the help="""If True, this product will create a service profile on the
agreement when the sales order is confirmed.""") agreement when the sales order is confirmed.""",
)
@api.onchange('is_serviceprofile') @api.onchange("is_serviceprofile")
def onchange_type(self): def onchange_type(self):
if self.is_serviceprofile: if self.is_serviceprofile:
self.type = 'service' self.type = "service"
class ProductProduct(models.Model): class ProductProduct(models.Model):
_inherit = 'product.product' _inherit = "product.product"
is_serviceprofile = fields.Boolean( is_serviceprofile = fields.Boolean(
string="Create Service Profiles", string="Create Service Profiles",
help="""If True, this product will create a service profile on the help="""If True, this product will create a service profile on the
agreement when the sales order is confirmed.""") agreement when the sales order is confirmed.""",
)
@api.onchange('is_serviceprofile') @api.onchange("is_serviceprofile")
def onchange_type(self): def onchange_type(self):
if self.is_serviceprofile: if self.is_serviceprofile:
self.type = 'service' self.type = "service"

View File

@@ -367,7 +367,7 @@ ul.auto-toc {
!! This file is generated by oca-gen-addon-readme !! !! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !! !! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/contract/tree/12.0/agreement_serviceprofile"><img alt="OCA/contract" src="https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/contract-12-0/contract-12-0-agreement_serviceprofile"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/110/12.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p> <p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/contract/tree/14.0/agreement_serviceprofile"><img alt="OCA/contract" src="https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/contract-14-0/contract-14-0-agreement_serviceprofile"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/110/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module adds an <em>Agreement Service Profile</em> object with the following properties:</p> <p>This module adds an <em>Agreement Service Profile</em> object with the following properties:</p>
<ul class="simple"> <ul class="simple">
<li>name,</li> <li>name,</li>
@@ -391,7 +391,7 @@ ul.auto-toc {
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/contract/issues">GitHub Issues</a>. <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/contract/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported. In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed If you spotted it first, help us smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/contract/issues/new?body=module:%20agreement_serviceprofile%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p> <a class="reference external" href="https://github.com/OCA/contract/issues/new?body=module:%20agreement_serviceprofile%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p> <p>Do not contact contributors directly about support or help with technical issues.</p>
</div> </div>
<div class="section" id="credits"> <div class="section" id="credits">
@@ -436,7 +436,7 @@ mission is to support the collaborative development of Odoo features and
promote its widespread use.</p> promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p> <p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external" href="https://github.com/max3903"><img alt="max3903" src="https://github.com/max3903.png?size=40px" /></a></p> <p><a class="reference external" href="https://github.com/max3903"><img alt="max3903" src="https://github.com/max3903.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/contract/tree/12.0/agreement_serviceprofile">OCA/contract</a> project on GitHub.</p> <p>This module is part of the <a class="reference external" href="https://github.com/OCA/contract/tree/14.0/agreement_serviceprofile">OCA/contract</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p> <p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,4 @@
# License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html).
from . import test_product
from . import test_agreement_serviceprofile

View File

@@ -0,0 +1,50 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
from datetime import timedelta
from odoo import fields
from odoo.tests.common import TransactionCase
class TestAgreementServiceProfile(TransactionCase):
def setUp(self):
super().setUp()
self.test_customer = self.env["res.partner"].create({"name": "TestCustomer"})
self.agreement_type = self.env["agreement.type"].create(
{
"name": "Test Agreement Type",
"domain": "sale",
}
)
self.test_agreement = self.env["agreement"].create(
{
"name": "TestAgreement",
"description": "Test",
"special_terms": "Test",
"partner_id": self.test_customer.id,
"start_date": fields.Date.today(),
"end_date": fields.Date.today() + timedelta(days=365),
}
)
self.test_serviceprofile = self.env["agreement.serviceprofile"].create(
{
"name": "TestServiceProfile",
"agreement_id": self.test_agreement.id,
}
)
# TEST 01: Check Default Stage
def test_default_stage_id(self):
sp_01 = self.test_serviceprofile
self.assertEqual(sp_01.stage_id.name, "Draft")
# TEST 02: Check Read Stages
def test_read_group_stage_ids(self):
sp_01 = self.test_serviceprofile
self.assertEqual(
sp_01._read_group_stage_ids(self.env["agreement.stage"], [], "id"),
self.env["agreement.stage"].search(
[("stage_type", "=", "serviceprofile")],
order="id",
),
)

View File

@@ -0,0 +1,26 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
from odoo.tests.common import TransactionCase
class TestProduct(TransactionCase):
def setUp(self):
super().setUp()
self.test_product1 = self.env["product.template"].create(
{"name": "TestProduct"}
)
self.test_product2 = self.env["product.product"].create({"name": "TestProduct"})
# TEST 01: Test onchange_type product.template
def test_product_template_onchange_type(self):
product_01 = self.test_product1
product_01.is_serviceprofile = True
product_01.onchange_type()
self.assertEqual(product_01.type, "service")
# TEST 02: Test onchange_type product.product
def test_product_product_onchange_type(self):
product_02 = self.test_product2
product_02.is_serviceprofile = True
product_02.onchange_type()
self.assertEqual(product_02.type, "service")

View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<!-- Agreement Form View --> <!-- Agreement Form View -->
<record id="agreement_fsm_order_form_view" model="ir.ui.view"> <record id="agreement_fsm_order_form_view" model="ir.ui.view">
@@ -21,13 +20,24 @@
</group> </group>
<group> <group>
<field name="use_product_variant" /> <field name="use_product_variant" />
<field name="product_variant_id" context="{'default_is_serviceprofile': True, 'default_type': 'service'}" attrs="{'invisible': [('use_product_variant', '=', False)], 'required': [('use_product_variant','!=', False)]}"/> <field
<field name="product_id" context="{'default_is_serviceprofile': True, 'default_type': 'service'}" attrs="{'invisible': [('use_product_variant', '!=', False)], 'required': [('use_product_variant','=', False)]}"/> name="product_variant_id"
context="{'default_is_serviceprofile': True, 'default_type': 'service'}"
attrs="{'invisible': [('use_product_variant', '=', False)], 'required': [('use_product_variant','!=', False)]}"
/>
<field
name="product_id"
context="{'default_is_serviceprofile': True, 'default_type': 'service'}"
attrs="{'invisible': [('use_product_variant', '!=', False)], 'required': [('use_product_variant','=', False)]}"
/>
</group> </group>
</group> </group>
<group string="Notes"> <group string="Notes">
<field name="notes" nolabel="1" <field
placeholder="Add notes here..."/> name="notes"
nolabel="1"
placeholder="Add notes here..."
/>
</group> </group>
</form> </form>
</field> </field>

View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<!-- Agreement Service Profile List View--> <!-- Agreement Service Profile List View-->
@@ -24,19 +23,23 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Service Profile"> <form string="Service Profile">
<header> <header>
<field name="stage_id" widget="statusbar" <field
name="stage_id"
widget="statusbar"
clickable="True" clickable="True"
options="{'fold_field': 'fold'}" options="{'fold_field': 'fold'}"
domain="[('stage_type', '=', 'serviceprofile')]"/> domain="[('stage_type', '=', 'serviceprofile')]"
/>
</header> </header>
<sheet> <sheet>
<div class="oe_button_box" name="button_box"> <div class="oe_button_box" name="button_box" />
<button name="toggle_active" type="object" <widget
class="oe_stat_button" icon="fa-archive"> name="web_ribbon"
<field name="active" widget="boolean_button" title="Archived"
options="{'terminology': 'archive'}"/> bg_color="bg-danger"
</button> attrs="{'invisible': [('active', '=', True)]}"
</div> />
<field name="active" invisible="1" />
<div class="oe_title"> <div class="oe_title">
<label for="name" class="oe_edit_only" /> <label for="name" class="oe_edit_only" />
<h1> <h1>
@@ -48,8 +51,16 @@
<field name="agreement_id" /> <field name="agreement_id" />
</group> </group>
<group> <group>
<field name="product_id" context="{'default_is_serviceprofile': True, 'default_type': 'service'}" attrs="{'invisible': [('use_product_variant', '!=', False)], 'required': [('use_product_variant','=', False)]}"/> <field
<field name="product_variant_id" context="{'default_is_serviceprofile': True, 'default_type': 'service'}" attrs="{'invisible': [('use_product_variant', '=', False)], 'required': [('use_product_variant','!=', False)]}"/> name="product_id"
context="{'default_is_serviceprofile': True, 'default_type': 'service'}"
attrs="{'invisible': [('use_product_variant', '!=', False)], 'required': [('use_product_variant','=', False)]}"
/>
<field
name="product_variant_id"
context="{'default_is_serviceprofile': True, 'default_type': 'service'}"
attrs="{'invisible': [('use_product_variant', '=', False)], 'required': [('use_product_variant','!=', False)]}"
/>
<field name="use_product_variant" /> <field name="use_product_variant" />
</group> </group>
</group> </group>
@@ -93,15 +104,25 @@
<field name="model">agreement.serviceprofile</field> <field name="model">agreement.serviceprofile</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<search> <search>
<filter string="Agreement" name="group_agreement" <field name="name" />
<filter
string="Agreement"
name="group_agreement"
icon="terp-partner" icon="terp-partner"
context="{'group_by': 'agreement_id'}"/> context="{'group_by': 'agreement_id'}"
<filter string="Product" name="group_product" />
<filter
string="Product"
name="group_product"
icon="terp-product" icon="terp-product"
context="{'group_by': 'product_id'}"/> context="{'group_by': 'product_id'}"
<filter string="Product Variant" name="group_product" />
<filter
string="Product Variant"
name="group_product"
icon="terp-product" icon="terp-product"
context="{'group_by': 'product_variant_id'}"/> context="{'group_by': 'product_variant_id'}"
/>
</search> </search>
</field> </field>
</record> </record>
@@ -124,13 +145,15 @@
id="agreement_serviceprofiles" id="agreement_serviceprofiles"
parent="agreement_legal.agreement_masterdata" parent="agreement_legal.agreement_masterdata"
sequence="50" sequence="50"
action="agreement_serviceprofile_action"/> action="agreement_serviceprofile_action"
/>
<menuitem <menuitem
name="Service Profiles" name="Service Profiles"
id="dashboard_serviceprofiles" id="dashboard_serviceprofiles"
parent="agreement_legal.agreement_dashboard" parent="agreement_legal.agreement_dashboard"
sequence="20" sequence="20"
action="agreement_serviceprofile_dashboard"/> action="agreement_serviceprofile_dashboard"
/>
</odoo> </odoo>