diff --git a/__manifest__.py b/__manifest__.py index 45491c2..ccb55d5 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -14,6 +14,7 @@ "data": [ "security/ir.model.access.csv", "views/res_partner_contract.xml", + "views/res_partner_contract_annex.xml", "views/res_partner.xml", "wizard/res_partner_contract_wizard.xml", "data/fields_default.xml", diff --git a/models/__init__.py b/models/__init__.py index f92506b..9be2ae2 100644 --- a/models/__init__.py +++ b/models/__init__.py @@ -1,5 +1,6 @@ from . import res_partner from . import res_partner_contract +from . import res_partner_contract_annex from . import res_partner_contract_field from . import res_partner_contract_field_transient from . import sale_order diff --git a/models/res_partner_contract.py b/models/res_partner_contract.py index 09c8a7d..d551758 100644 --- a/models/res_partner_contract.py +++ b/models/res_partner_contract.py @@ -14,8 +14,11 @@ class PartnerContract(models.Model): help="Field for manual edit when contract is signed or closed", default=lambda self: self.date_conclusion, ) - order_ids = fields.One2many( - "sale.order", "contract_id", string="Annexes", help="Annexes to this contract" + contract_annex_ids = fields.One2many( + "res.partner.contract.annex", + "contract_id", + string="Annexes", + help="Annexes to this contract", ) partner_id = fields.Many2one( "res.partner", @@ -70,15 +73,19 @@ class PartnerContract(models.Model): return "{}-{}".format(date_part, last_contract_number) -class AnnexType(models.Model): - _name = "res.partner.contract.annex.type" - - name = fields.Char(string="Annex template name") - description = fields.Text(string="Annex template description") - - -class ContractTemplate(models.Model): - _name = "res.partner.contract.template" +class PrintTemplateContract(models.Model): + _name = "res.partner.template.print.contract" + _description = "Print Template Contract" + + attachment_id = fields.Many2one( + "ir.attachment", string="Template Attachment", required=True, + ) + is_default = fields.Boolean(string="Default Template", default=False,) + + +class PrintTemplateAnnex(models.Model): + _name = "res.partner.template.print.annex" + _description = "Print Template Contract Annex" attachment_id = fields.Many2one( "ir.attachment", string="Template Attachment", required=True, diff --git a/models/res_partner_contract_annex.py b/models/res_partner_contract_annex.py new file mode 100644 index 0000000..345bfe3 --- /dev/null +++ b/models/res_partner_contract_annex.py @@ -0,0 +1,27 @@ +from odoo import api, fields, models + + +class ContractOrderAnnex(models.Model): + _name = "res.partner.contract.annex" + _description = "Contract Order Annex" + + name = fields.Char(string="Name", help="The Number of Annex") + order_ids = fields.One2many("sale.order", "contract_annex_id", string="Order") + contract_id = fields.Many2one( + "res.partner.contract", string="Contract", readonly=True + ) + + @api.model + def create(self, values): + record = super().create(values) + + # Compute name if there is no custom name + if not record.name: + contract_number = record.contract_id.name + annex_number = len(record.contract_id.contract_annex_ids.ids) + + record.name = "{contract}--{annex}".format( + contract=contract_number, annex=annex_number + ) + + return record diff --git a/models/sale_order.py b/models/sale_order.py index 6237a89..d62f5c7 100644 --- a/models/sale_order.py +++ b/models/sale_order.py @@ -4,8 +4,6 @@ from odoo import fields, models class SaleOrder(models.Model): _inherit = "sale.order" - contract_id = fields.Many2one( - "res.partner.contract", - string="Contract", - help="Contract, assigned to this order", + contract_annex_id = fields.Many2one( + "res.partner.contract.annex", string="Contract Annex", readonly=True ) diff --git a/views/res_partner_contract.xml b/views/res_partner_contract.xml index 959e1f9..747c6dc 100644 --- a/views/res_partner_contract.xml +++ b/views/res_partner_contract.xml @@ -36,7 +36,9 @@ - + + + diff --git a/views/res_partner_contract_annex.xml b/views/res_partner_contract_annex.xml new file mode 100644 index 0000000..78a5d87 --- /dev/null +++ b/views/res_partner_contract_annex.xml @@ -0,0 +1,25 @@ + + + + + + + res.partner.contract.annex.view.form + res.partner.contract.annex + + +
+ + + + + + + +
+ +
+
+ +
+
\ No newline at end of file diff --git a/wizard/res_partner_contract_wizard.py b/wizard/res_partner_contract_wizard.py index c9f6831..8ed99bd 100644 --- a/wizard/res_partner_contract_wizard.py +++ b/wizard/res_partner_contract_wizard.py @@ -28,9 +28,6 @@ class ContractWizard(models.TransientModel): current_id = self.env.context.get("active_ids") return self.env["res.partner.contract"].browse([current_id[0]]).partner_id.id - annex_lines = fields.One2many( - "res.partner.contract.annex.line", "id", auto_join=True, copy=True - ) company_id = fields.Many2one( "res.partner", string="Company", @@ -150,13 +147,3 @@ class ContractWizard(models.TransientModel): """ return math.modf(arg) - -class AnnexLine(models.TransientModel): - _name = "res.partner.contract.annex.line" - - @api.onchange("annex_type") - def _get_default_description(self): - self.description = self.annex_type.description - - annex_type = fields.Many2one("res.partner.contract.annex.type") - description = fields.Text()