diff --git a/account_import_line_multicurrency_extension/models/account_statement_from_invoice.py b/account_import_line_multicurrency_extension/models/account_statement_from_invoice.py
index b7ea1a23b..0862b8884 100644
--- a/account_import_line_multicurrency_extension/models/account_statement_from_invoice.py
+++ b/account_import_line_multicurrency_extension/models/account_statement_from_invoice.py
@@ -20,57 +20,59 @@
##############################################################################
import time
-from openerp.osv import fields, osv
+from openerp import fields, models, api, _
-class account_statement_from_invoice_lines(osv.osv_memory):
+class account_statement_from_invoice_lines(models.TransientModel):
"""
Generate Entries by Statement from Invoices
"""
_inherit = "account.statement.from.invoice.lines"
-
-
- def populate_statement(self, cr, uid, ids, context=None):
- context = dict(context or {})
- statement_id = context.get('statement_id', False)
+
+ @api.multi
+ def populate_statement(self):
+ statement_id = self.env.context.get('statement_id', False)
if not statement_id:
return {'type': 'ir.actions.act_window_close'}
- data = self.read(cr, uid, ids, context=context)[0]
- line_ids = data['line_ids']
- if not line_ids:
+ if not self.line_ids:
return {'type': 'ir.actions.act_window_close'}
- line_obj = self.pool.get('account.move.line')
- statement_obj = self.pool.get('account.bank.statement')
- statement_line_obj = self.pool.get('account.bank.statement.line')
- currency_obj = self.pool.get('res.currency')
- statement = statement_obj.browse(cr, uid, statement_id, context=context)
+ line_obj = self.env['account.move.line']
+ statement_obj = self.env['account.bank.statement']
+ statement_line_obj = self.env['account.bank.statement.line']
+ currency_obj = self.env['res.currency']
+ statement = statement_obj.browse(statement_id)
line_date = statement.date
+ # Get the currency on the company if not set on the journal
+ if statement.journal_id.currency:
+ from_currency_id = statement.journal_id.currency
+ else:
+ from_currency_id = self.env.user.company_id.currency_id
# for each selected move lines
- for line in line_obj.browse(cr, uid, line_ids, context=context):
- ctx = context.copy()
- # take the date for computation of currency => use payment date
- ctx['date'] = line_date
- amount = 0.0
- amount_currency = 0.0
- if line.invoice and line.invoice.currency_id == statement.currency_id:
+ for line in self.line_ids:
+ if line.invoice and line.invoice.currency_id == from_currency_id:
amount = line.amount_residual_currency
amount_currency = 0.0
else:
- amount = 0.0
+ if statement.journal_id.currency:
+ from_currency_id = statement.journal_id.currency
+ else:
+ from_currency_id = self.env.user.company_id.currency_id
+ amount = from_currency_id.with_context(date=line_date).compute(line.amount_residual_currency,
+ line.invoice.currency_id)
amount_currency = line.amount_residual_currency
-
- context.update({'move_line_ids': [line.id],
+ ctx = {}
+ ctx.update({'move_line_ids': [line.id],
'invoice_id': line.invoice.id})
- statement_line_obj.create(cr, uid, {
- 'name': line.name or '?',
+ statement_line_obj.with_context(ctx).create({
+ 'name': line.ref or '?',
'amount': amount,
'partner_id': line.partner_id.id,
'statement_id': statement_id,
- 'ref': line.ref,
+ 'ref': line.name,
'date': statement.date,
'amount_currency': amount_currency,
'currency_id': line.currency_id.id,
- }, context=context)
+ })
return {'type': 'ir.actions.act_window_close'}
diff --git a/account_import_line_multicurrency_extension/models/bank_statement.py b/account_import_line_multicurrency_extension/models/bank_statement.py
index 20ecd12c8..bc03c4f4a 100644
--- a/account_import_line_multicurrency_extension/models/bank_statement.py
+++ b/account_import_line_multicurrency_extension/models/bank_statement.py
@@ -18,11 +18,38 @@
# along with this program. If not, see .
#
##############################################################################
-from openerp import models, fields
+from openerp import models, fields, api, exceptions, _
class AccountBankStatementLine(models.Model):
_inherit = "account.bank.statement.line"
currency_symbol = fields.Char(
+ string='Journal Currency',
related='statement_id.currency.symbol', readonly=True)
+
+
+class AccountBankStatement(models.Model):
+ _inherit = "account.bank.statement"
+
+ @api.multi
+ def check_line_amount_zero(self):
+ self.ensure_one()
+ msg = ''
+ for line in self.line_ids:
+ if not line.amount:
+ msg += 'Amount on line %s is not set. \n' % (line.name)
+ if msg:
+ raise exceptions.Warning(
+ _("Error on bank statement: \n %s") % msg)
+ # dispatch to reconciliation interface
+ action = self.env.ref(
+ 'account.action_bank_reconcile_bank_statements')
+ return {
+ 'name': action.name,
+ 'tag': action.tag,
+ 'context': {
+ 'statement_ids': self.ids,
+ },
+ 'type': 'ir.actions.client',
+ }
diff --git a/account_import_line_multicurrency_extension/view/account_statement_from_invoice_view.xml b/account_import_line_multicurrency_extension/view/account_statement_from_invoice_view.xml
index 1382d8776..21f6c10fc 100644
--- a/account_import_line_multicurrency_extension/view/account_statement_from_invoice_view.xml
+++ b/account_import_line_multicurrency_extension/view/account_statement_from_invoice_view.xml
@@ -28,7 +28,7 @@
+ domain="[('account_id.type','in',['receivable','payable']),('journal_id.type','in',['sale','purchase','sale_refund','purchase_refund']), ('reconcile_id','=',False), ('state', '=', 'valid')]">
diff --git a/account_import_line_multicurrency_extension/view/bank_statement_view.xml b/account_import_line_multicurrency_extension/view/bank_statement_view.xml
index e57765805..8397cdc84 100644
--- a/account_import_line_multicurrency_extension/view/bank_statement_view.xml
+++ b/account_import_line_multicurrency_extension/view/bank_statement_view.xml
@@ -11,6 +11,9 @@
+
+
+