diff --git a/mcfix_account/models/account_payment.py b/mcfix_account/models/account_payment.py index 08b9cf24..feca60fe 100644 --- a/mcfix_account/models/account_payment.py +++ b/mcfix_account/models/account_payment.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from odoo import models, api, _ +from odoo import models, fields, api, _ from odoo.exceptions import ValidationError @@ -64,6 +64,15 @@ def _check_company_id(self): class AccountAbstractPayment(models.AbstractModel): _inherit = 'account.abstract.payment' + @api.multi + def _get_default_company(self): + if self.env.context.get('default_invoice_ids'): + inv = self.env['account.invoice'].browse(self.env.context['default_invoice_ids'][0][1]) + return inv.company_id.id + return self.env.user.company_id.id + + create_company_id = fields.Many2one('res.company', string='Company', default=_get_default_company) + @api.multi @api.depends('company_id') def name_get(self): @@ -79,10 +88,12 @@ def name_get(self): res += [(rec.id, name)] return res - @api.onchange('company_id') - def onchange_company_id(self): - self.journal_id = False +# @api.onchange('create_company_id') +# def onchange_company_id(self): +# if self.create_company_id and self.journal_id.company_id != self.create_company_id: +# self.journal_id = False + # Company is related from journal_id cannot be different!!!!! @api.multi @api.constrains('journal_id', 'company_id') def _check_company_journal_id(self): @@ -96,6 +107,27 @@ def _check_company_journal_id(self): return True +class AccountRegisterPayment(models.TransientModel): + _inherit = 'account.register.payments' + + @api.model + def default_get(self, fields): + rec = super(AccountRegisterPayment, self).default_get(fields) + context = dict(self._context or {}) + active_model = context.get('active_model') + active_ids = context.get('active_ids') + invoices = self.env[active_model].browse(active_ids) + if invoices: + rec['create_company_id'] = invoices[0].company_id.id + return rec + + @api.onchange('create_company_id') + def onchange_company_id(self): + if self.create_company_id and \ + self.journal_id.company_id != self.create_company_id: + self.journal_id = False + + class AccountPayment(models.Model): _inherit = "account.payment" @@ -131,17 +163,26 @@ def _compute_destination_account_id(self): force_company=rec.company_id.id).\ property_account_payable_id.id - @api.onchange('payment_type', 'company_id') + @api.onchange('create_company_id') + def onchange_company_id(self): + if self.create_company_id and \ + self.journal_id.company_id != self.create_company_id: + self.journal_id = False + if self.create_company_id: + return self._onchange_payment_type() + + @api.onchange('payment_type') def _onchange_payment_type(self): res = super(AccountPayment, self)._onchange_payment_type() res['domain']['journal_id'].append(('company_id', '=', - self.company_id.id)) + self.create_company_id.id)) return res - @api.model - def create(self, vals): - if 'company_id' not in vals: - journal_id = vals.get('journal_id') - journal = self.env['account.journal'].browse(journal_id) - vals['company_id'] = journal.company_id.id - return super(AccountPayment, self).create(vals) + # is related!!! +# @api.model +# def create(self, vals): +# if 'company_id' not in vals: +# journal_id = vals.get('journal_id') +# journal = self.env['account.journal'].browse(journal_id) +# vals['company_id'] = journal.company_id.id +# return super(AccountPayment, self).create(vals) diff --git a/mcfix_account/views/account_payment_view.xml b/mcfix_account/views/account_payment_view.xml index 93d0b09e..a6de214c 100644 --- a/mcfix_account/views/account_payment_view.xml +++ b/mcfix_account/views/account_payment_view.xml @@ -6,10 +6,18 @@ - + + + + + + [('type', 'in', ('bank', 'cash')), ('company_id','=', create_company_id)] + + {'no_create': True} + - [('company_id','=', company_id)] + [('type', 'in', ('bank', 'cash')), ('company_id','=', company_id)] @@ -20,8 +28,24 @@ + + + + account.register.payments.wizard + account.register.payments + + + + + + + + [('type', 'in', ('bank', 'cash')), ('company_id', '=', create_company_id)] + + +