You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.9 KiB
52 lines
1.9 KiB
# Copyright (C) 2017 Creu Blanca
|
|
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
|
|
|
|
from odoo import api, models, _
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class CashInvoiceOut(models.TransientModel):
|
|
_inherit = 'cash.invoice.out'
|
|
|
|
def default_company(self, active_model, active_ids):
|
|
if active_model == 'pos.session':
|
|
active = self.env[active_model].browse(active_ids)
|
|
return active[0].config_id.company_id
|
|
return super(CashInvoiceOut, self).default_company(
|
|
active_model, active_ids
|
|
)
|
|
|
|
def default_currency(self, active_model, active_ids):
|
|
if active_model == 'pos.session':
|
|
journal = self._default_journal()
|
|
if journal.currency_id:
|
|
return journal.currency_id
|
|
return super(CashInvoiceOut, self).default_currency(
|
|
active_model, active_ids
|
|
)
|
|
|
|
def default_journals(self, active_model, active_ids):
|
|
if active_model == 'pos.session':
|
|
active = self.env[active_model].browse(active_ids)
|
|
return self.env['account.journal'].browse(
|
|
[r.journal_id.id for r in active.statement_ids])
|
|
return super(CashInvoiceOut, self).default_journals(
|
|
active_model, active_ids
|
|
)
|
|
|
|
@api.multi
|
|
def run(self):
|
|
active_model = self.env.context.get('active_model', False)
|
|
active_ids = self.env.context.get('active_ids', False)
|
|
if active_model == 'pos.session':
|
|
bank_statements = [
|
|
session.statement_ids.filtered(
|
|
lambda r: r.journal_id.id == self.journal_id.id
|
|
)
|
|
for session in self.env[active_model].browse(active_ids)
|
|
]
|
|
if not bank_statements:
|
|
raise UserError(_('Bank Statement was not found'))
|
|
return self._run(bank_statements)
|
|
else:
|
|
return super(CashInvoiceOut, self).run()
|