mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
Add wizard to select several invoices at once and add them to payment order
Fix bug in groupby on bank payment lines
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# © 2013-2014 ACSONE SA (<http://acsone.eu>).
|
||||
# © 2014 Serv. Tecnol. Avanzados - Pedro M. Baeza
|
||||
# © 2016 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from openerp import models, fields, api, _
|
||||
@@ -39,14 +40,22 @@ class AccountInvoice(models.Model):
|
||||
def create_account_payment_line(self):
|
||||
apoo = self.env['account.payment.order']
|
||||
aplo = self.env['account.payment.line']
|
||||
action = {}
|
||||
result_payorder_ids = []
|
||||
action_payment_type = 'debit'
|
||||
for inv in self:
|
||||
if inv.state != 'open':
|
||||
raise UserError(_(
|
||||
"The invoice %s is not in Open state") % inv.number)
|
||||
if not inv.payment_mode_id:
|
||||
raise UserError(_(
|
||||
"No Payment Mode on invoice %s") % inv.number)
|
||||
if not inv.move_id:
|
||||
raise UserError(_(
|
||||
"No Journal Entry on invoice %s") % inv.number)
|
||||
if not inv.payment_order_ok:
|
||||
raise UserError(_(
|
||||
"The invoice %s has a payment mode '%s' "
|
||||
"which is not selectable in payment orders."))
|
||||
payorders = apoo.search([
|
||||
('payment_mode_id', '=', inv.payment_mode_id.id),
|
||||
('state', '=', 'draft')])
|
||||
@@ -56,16 +65,17 @@ class AccountInvoice(models.Model):
|
||||
else:
|
||||
payorder = apoo.create(inv._prepare_new_payment_order())
|
||||
new_payorder = True
|
||||
result_payorder_ids.append(payorder.id)
|
||||
action_payment_type = payorder.payment_type
|
||||
count = 0
|
||||
for line in inv.move_id.line_ids:
|
||||
if line.account_id == inv.account_id and not line.reconciled:
|
||||
paylines = aplo.search([
|
||||
('move_line_id', '=', line.id),
|
||||
('state', '!=', 'cancel')])
|
||||
if paylines:
|
||||
continue
|
||||
line.create_payment_line_from_move_line(payorder)
|
||||
count += 1
|
||||
if not paylines:
|
||||
line.create_payment_line_from_move_line(payorder)
|
||||
count += 1
|
||||
if count:
|
||||
if new_payorder:
|
||||
inv.message_post(_(
|
||||
@@ -82,12 +92,19 @@ class AccountInvoice(models.Model):
|
||||
'No Payment Line created for invoice %s because '
|
||||
'it already exists or because this invoice is '
|
||||
'already paid.') % inv.number)
|
||||
action = self.env['ir.actions.act_window'].for_xml_id(
|
||||
'account_payment_order',
|
||||
'account_payment_order_%s_action' % payorder.payment_type)
|
||||
action = self.env['ir.actions.act_window'].for_xml_id(
|
||||
'account_payment_order',
|
||||
'account_payment_order_%s_action' % action_payment_type)
|
||||
if len(result_payorder_ids) == 1:
|
||||
action.update({
|
||||
'view_mode': 'form,tree,pivot,graph',
|
||||
'res_id': payorder.id,
|
||||
'views': False,
|
||||
})
|
||||
else:
|
||||
action.update({
|
||||
'view_mode': 'tree,form,pivot,graph',
|
||||
'domain': "[('id', 'in', %s)]" % result_payorder_ids,
|
||||
'views': False,
|
||||
})
|
||||
return action
|
||||
|
||||
@@ -27,7 +27,7 @@ class BankPaymentLine(models.Model):
|
||||
readonly=True)
|
||||
partner_id = fields.Many2one(
|
||||
'res.partner', related='payment_line_ids.partner_id',
|
||||
readonly=True)
|
||||
readonly=True, store=True) # store=True for groupby
|
||||
# Function Float fields are sometimes badly displayed in tree view,
|
||||
# see bug report https://github.com/odoo/odoo/issues/8632
|
||||
# But is it still true in v9 ?
|
||||
|
||||
Reference in New Issue
Block a user