[IMP] compute partner_id and company_id in annex model

This commit is contained in:
Stepan Savelyev 2020-01-20 19:03:22 +05:00
parent f12ac74014
commit 405884ba9e
3 changed files with 17 additions and 28 deletions

View File

@ -151,8 +151,8 @@ action = ctx
# Aliases # Aliases
self = record self = record
seller = self.contract_id.company_id seller = self.company_id
partner = self.contract_id.partner_id partner = self.partner_id
seller_bank = seller.bank_ids and seller.bank_ids[0] seller_bank = seller.bank_ids and seller.bank_ids[0]
seller_bank_name = seller_bank.bank_id.name + (" г. {city}".format(city=seller_bank.bank_id.city) if seller_bank.bank_id.city else "") seller_bank_name = seller_bank.bank_id.name + (" г. {city}".format(city=seller_bank.bank_id.city) if seller_bank.bank_id.city else "")

View File

@ -17,7 +17,8 @@ class ContractOrderAnnex(models.Model, IDocument, Extension):
contract_id = fields.Many2one( contract_id = fields.Many2one(
"res.partner.contract", string="Contract", readonly=True, "res.partner.contract", string="Contract", readonly=True,
) )
partner_id = fields.Many2one(related="contract_id.partner_id") company_id = fields.Many2one("res.partner", related="contract_id.company_id",)
partner_id = fields.Many2one("res.partner", related="contract_id.partner_id",)
order_id = fields.Many2one( order_id = fields.Many2one(
"sale.order", "sale.order",
string="Order", string="Order",

View File

@ -13,18 +13,12 @@ _logger = logging.getLogger(__name__)
class ContractWizard(models.TransientModel): class ContractWizard(models.TransientModel):
_name = "res.partner.contract.wizard" _name = "res.partner.contract.wizard"
def _get_default_partner(self):
current_id = self.env.context.get("active_id")
partner_id = self.env[self.active_model].browse(current_id).partner_id
return partner_id
def _get_default_template(self): def _get_default_template(self):
partner_id = self._get_default_partner()
template_type = { template_type = {
"res.partner.contract": "contract", "res.partner.contract": "contract",
"res.partner.contract.annex": "annex", "res.partner.contract.annex": "annex",
}.get(self.active_model, False) }.get(self.active_model, False)
company_type = partner_id.company_form if partner_id.is_company else "person" company_type = self.partner_id.company_form if self.partner_id.is_company else "person"
document_template_domain = [ document_template_domain = [
("template_type", "=", template_type), ("template_type", "=", template_type),
@ -42,10 +36,8 @@ class ContractWizard(models.TransientModel):
], ],
string="Target", string="Target",
) )
company_id = fields.Many2one("res.partner", string="Company") company_id = fields.Many2one("res.partner", string="Company", compute="_compute_company_id",)
partner_id = fields.Many2one( partner_id = fields.Many2one("res.partner", string="Partner", compute="_compute_partner_id",)
"res.partner", string="Partner", default=_get_default_partner
)
document_template = fields.Many2one( document_template = fields.Many2one(
"res.partner.document.template", "res.partner.document.template",
string="Document Template", string="Document Template",
@ -68,6 +60,16 @@ class ContractWizard(models.TransientModel):
if not self.document_template: if not self.document_template:
raise ValidationError("You did not set up the template...") raise ValidationError("You did not set up the template...")
@api.depends("company_id", "target")
def _compute_company_id(self):
if self.target:
self.company_id = self.target.company_id
@api.depends("partner_id", "target")
def _compute_partner_id(self):
if self.target:
self.partner_id = self.target.partner_id
@api.depends("document_name", "document_template", "target") @api.depends("document_name", "document_template", "target")
def _compute_document_name(self): def _compute_document_name(self):
self.document_name = self.target.get_name_by_document_template( self.document_name = self.target.get_name_by_document_template(
@ -90,20 +92,6 @@ class ContractWizard(models.TransientModel):
model=self.active_model, target_id=int(self.env.context.get("self_id")) model=self.active_model, target_id=int(self.env.context.get("self_id"))
) )
# Check for model and get this meta fields
company_id = (
self.target.company_id
if hasattr(self.target, "company_id")
else self.target.contract_id.company_id
)
partner_id = (
self.target.partner_id
if hasattr(self.target, "partner_id")
else self.target.contract_id.partner_id
)
self.company_id = company_id
self.partner_id = partner_id
model_to_action = { model_to_action = {
"res.partner.contract": "action_get_contract_context", "res.partner.contract": "action_get_contract_context",
"res.partner.contract.annex": "action_get_annex_context", "res.partner.contract.annex": "action_get_annex_context",