From 3cd78e91fc2f1db2815bc2b1e37f8eaa681a3c95 Mon Sep 17 00:00:00 2001 From: "alexandr.uritskiy" Date: Fri, 7 May 2021 19:44:03 +0500 Subject: [PATCH] some debug and clearance --- data/fields_default.xml | 4 +- models/res_partner_contract.py | 4 +- models/res_partner_contract_annex.py | 10 ++--- models/sale_order.py | 30 ++++++++++---- views/sale_order.xml | 2 +- wizard/res_partner_contract_wizard.py | 56 +++++++------------------- wizard/res_partner_contract_wizard.xml | 3 +- 7 files changed, 48 insertions(+), 61 deletions(-) diff --git a/data/fields_default.xml b/data/fields_default.xml index 86755f6..4181c58 100755 --- a/data/fields_default.xml +++ b/data/fields_default.xml @@ -14,7 +14,7 @@ self = record # res.partner.contract partner = self.partner_id # res.partner -seller = self.company_id +seller = self.company_id.partner_id # Functions _ = self._ @@ -164,7 +164,7 @@ action = ctx # Aliases self = record # res.partner.contract.annex -seller = self.company_id +seller = self.company_id.partner_id partner = self.partner_id # Functions diff --git a/models/res_partner_contract.py b/models/res_partner_contract.py index c6211d7..6320247 100755 --- a/models/res_partner_contract.py +++ b/models/res_partner_contract.py @@ -48,9 +48,9 @@ class PartnerContract(models.Model): # , IDocument, Extension): required=True, ) company_id = fields.Many2one( - "res.partner", + "res.company", string="Company", - default=lambda self: self.env.company.partner_id, + default=lambda self: self.env.company, ) create_date_ts = fields.Char(default=_get_default_create_date_ts) res_model = fields.Char(default=lambda self: self._name) diff --git a/models/res_partner_contract_annex.py b/models/res_partner_contract_annex.py index 7ebb87d..96d768b 100755 --- a/models/res_partner_contract_annex.py +++ b/models/res_partner_contract_annex.py @@ -30,17 +30,17 @@ class ContractOrderAnnex(models.Model): # , IDocument, Extension): readonly=True, ) company_id = fields.Many2one( - "res.partner", + comodel_name="res.company", related="contract_id.company_id", ) partner_id = fields.Many2one( - "res.partner", + comodel_name="res.partner", related="contract_id.partner_id", ) order_id = fields.Many2one( - "sale.order", - string="Order", - help="This partner's orders which are not used in annexes yet", + comodel_name="sale.order", + string="Sale order", + help="Sale order for this annex.", required=True, ) date_conclusion = fields.Date( diff --git a/models/sale_order.py b/models/sale_order.py index 3c2ea5c..ad01266 100755 --- a/models/sale_order.py +++ b/models/sale_order.py @@ -12,25 +12,39 @@ class SaleOrder(models.Model): default=45, ) contract_annex_id = fields.Many2one( - "res.partner.contract.annex", + comodel_name="res.partner.contract.annex", string="Contract Annex", - readonly=True, + compute="get_contract_annex_id", ) + contract_annex_ids = fields.One2many( + comodel_name="res.partner.contract.annex", + inverse_name="order_id", + string="Annex for this Sale order", + help="Technical field for binding with contract annex\n" + "In form this link showed in 'contract_annex_id' field.", + ) + # Extend default field for showing payment terms created by this module only. payment_term_id = fields.Many2one( - "account.payment.term", + comodel_name="account.payment.term", domain=lambda self: [("id", "in", self._get_payment_terms())], ) def _get_payment_terms(self): - ref = self.env.ref - terms = ( - ref("{}.{}".format(MODULE_NAME, external_id)).id + terms = [ + self.env.ref("{}.{}".format(MODULE_NAME, external_id)).id for external_id in ( "payment_term_prepaid", "payment_term_postpayment", "payment_term_partial_2", "payment_term_partial_3", ) - ) - return list(terms) + ] + return terms + + @api.onchange("contract_annex_ids") + def get_contract_annex_id(self): + if self.contract_annex_ids: + self.contract_annex_id = self.contract_annex_ids[0].id + else: + self.contract_annex_id = False diff --git a/views/sale_order.xml b/views/sale_order.xml index 628e31e..c6a8535 100755 --- a/views/sale_order.xml +++ b/views/sale_order.xml @@ -10,7 +10,7 @@ - + diff --git a/wizard/res_partner_contract_wizard.py b/wizard/res_partner_contract_wizard.py index 744a9b4..10cd356 100755 --- a/wizard/res_partner_contract_wizard.py +++ b/wizard/res_partner_contract_wizard.py @@ -10,7 +10,7 @@ from ..utils.docxtpl import get_document_from_values_stream _logger = logging.getLogger(__name__) -class ContractWizard(models.TransientModel): # , Extension): +class ContractWizard(models.TransientModel): _name = "res.partner.contract.wizard" _inherit = ["client_contracts.utils"] @@ -31,7 +31,6 @@ class ContractWizard(models.TransientModel): # , Extension): "res.partner.contract.annex": "annex", }.get(self.active_model, False) company_type = self.env.context.get("company_form", False) - document_template_domain = [ ("template_type", "=", template_type), ("company_type", "=", company_type), @@ -45,14 +44,15 @@ class ContractWizard(models.TransientModel): # , Extension): ], string="Target", default=_default_target, + help="Record of contract or annex entity, from where wizard has been called", ) company_id = fields.Many2one( - "res.partner", + comodel_name="res.partner", string="Company", compute="_compute_company_id", ) partner_id = fields.Many2one( - "res.partner", + comodel_name="res.partner", string="Partner", compute="_compute_partner_id", ) @@ -60,7 +60,7 @@ class ContractWizard(models.TransientModel): # , Extension): string="Document Name", compute="_compute_document_name" ) document_template = fields.Many2one( - "res.partner.document.template", + comodel_name="res.partner.document.template", string="Document Template", default=_default_document_template, domain=lambda self: self._get_template_domain(), @@ -78,8 +78,10 @@ class ContractWizard(models.TransientModel): # , Extension): @api.depends("target") def _compute_company_id(self): - if self.target: - self.company_id = self.target.company_id + if self.target and self.target.company_id: + self.company_id = self.target.company_id.id + else: + self.company_id = self.env.company.id @api.depends("target") def _compute_partner_id(self): @@ -176,37 +178,7 @@ class ContractWizard(models.TransientModel): # , Extension): ) ] - """ - self.transient_field_ids = [ # one2many - ( - 4, - self.env["res.partner.contract.field.transient"] - .create( - { - "contract_field_id": get_contract_field(field).id, - "value": value, - } - ) - .id, - 0, - ) - for field, value in sorted( - contract_context_values.items(), - key=lambda tpl: self.env.ref( - "{}.contract_field_{}".format(MODULE_NAME, tpl[0]) - ).sequence, - ) - ] - self.transient_field_ids_hidden = ( - self.transient_field_ids - self.transient_field_ids.filtered("visible") - ) - self.transient_field_ids = ( - self.transient_field_ids - self.transient_field_ids_hidden - ) - """ - # Other - def get_docx_contract(self): template = self.document_template.attachment_id template_path = template._full_path(template.store_fname) @@ -297,11 +269,14 @@ class ContractWizard(models.TransientModel): # , Extension): "attachment_ids": [(4, result.id, False)], } ) - return result - def middleware_fields(self, kv): - + @staticmethod + def middleware_fields(kv): + """ + Removes items without values from dictionary. + :kv: dict. + """ # Debug False values empty = [] for k, v in list(kv.items()): @@ -309,7 +284,6 @@ class ContractWizard(models.TransientModel): # , Extension): empty.append(k) kv.pop(k) _logger.debug("Empty fields: {}".format(empty)) - return kv @property diff --git a/wizard/res_partner_contract_wizard.xml b/wizard/res_partner_contract_wizard.xml index febf2be..2890da8 100755 --- a/wizard/res_partner_contract_wizard.xml +++ b/wizard/res_partner_contract_wizard.xml @@ -10,12 +10,11 @@ - - +