diff --git a/account_payment_order/__manifest__.py b/account_payment_order/__manifest__.py
index b32f0fa071c..6aadb4cc8e6 100644
--- a/account_payment_order/__manifest__.py
+++ b/account_payment_order/__manifest__.py
@@ -9,7 +9,7 @@
{
'name': 'Account Payment Order',
- 'version': '10.0.1.1.1',
+ 'version': '10.0.1.2.0',
'license': 'AGPL-3',
'author': "ACSONE SA/NV, "
"Therp BV, "
diff --git a/account_payment_order/models/account_invoice.py b/account_payment_order/models/account_invoice.py
index 9da340809cb..847df3604e6 100644
--- a/account_payment_order/models/account_invoice.py
+++ b/account_payment_order/models/account_invoice.py
@@ -34,6 +34,8 @@ def line_get_convert(self, line, part):
def _prepare_new_payment_order(self):
self.ensure_one()
vals = {'payment_mode_id': self.payment_mode_id.id}
+ # other important fields are set by the inherit of create
+ # in account_payment_order.py
return vals
@api.multi
diff --git a/account_payment_order/models/account_payment_mode.py b/account_payment_order/models/account_payment_mode.py
index b41e46e3710..df34540b854 100644
--- a/account_payment_order/models/account_payment_mode.py
+++ b/account_payment_order/models/account_payment_mode.py
@@ -40,6 +40,12 @@ class AccountPaymentMode(models.Model):
('due', 'Due'),
('move', 'Move'),
], default='due', string="Type of Date Filter")
+ # default option for account.payment.order
+ default_date_prefered = fields.Selection([
+ ('now', 'Immediately'),
+ ('due', 'Due Date'),
+ ('fixed', 'Fixed Date'),
+ ], string='Default Payment Execution Date')
group_lines = fields.Boolean(
string="Group Transactions in Payment Orders", default=True,
help="If this mark is checked, the transaction lines of the "
@@ -73,6 +79,7 @@ class AccountPaymentMode(models.Model):
('date', 'One move per payment date'),
('line', 'One move per payment line'),
], string='Move Option', default='date')
+ post_move = fields.Boolean(string='Post Move', default=True)
@api.multi
@api.constrains(
diff --git a/account_payment_order/models/account_payment_order.py b/account_payment_order/models/account_payment_order.py
index 3e1013be7da..3b1263607a4 100644
--- a/account_payment_order/models/account_payment_order.py
+++ b/account_payment_order/models/account_payment_order.py
@@ -39,9 +39,6 @@ class AccountPaymentOrder(models.Model):
'account.journal', string='Bank Journal', ondelete='restrict',
readonly=True, states={'draft': [('readonly', False)]},
track_visibility='onchange')
- allowed_journal_ids = fields.Many2many(
- 'account.journal', compute='_compute_allowed_journals', readonly=True,
- string='Selectable Bank Journals')
# The journal_id field is only required at confirm step, to
# allow auto-creation of payment order from invoice
company_partner_bank_id = fields.Many2one(
@@ -133,19 +130,6 @@ def _bank_line_count(self):
for order in self:
order.bank_line_count = len(order.bank_line_ids)
- @api.multi
- @api.depends('payment_mode_id')
- def _compute_allowed_journals(self):
- for order in self:
- allowed_journal_ids = False
- if order.payment_mode_id:
- mode = order.payment_mode_id
- if mode.bank_account_link == 'fixed':
- allowed_journal_ids = mode.fixed_journal_id
- else:
- allowed_journal_ids = mode.variable_journal_ids
- order.allowed_journal_ids = allowed_journal_ids
-
@api.model
def create(self, vals):
if vals.get('name', 'New') == 'New':
@@ -157,15 +141,29 @@ def create(self, vals):
vals['payment_type'] = payment_mode.payment_type
if payment_mode.bank_account_link == 'fixed':
vals['journal_id'] = payment_mode.fixed_journal_id.id
+ if (
+ not vals.get('date_prefered') and
+ payment_mode.default_date_prefered):
+ vals['date_prefered'] = payment_mode.default_date_prefered
return super(AccountPaymentOrder, self).create(vals)
@api.onchange('payment_mode_id')
def payment_mode_id_change(self):
journal_id = False
+ res = {'domain': {
+ 'journal_id': "[('id', '=', False)]",
+ }}
if self.payment_mode_id:
if self.payment_mode_id.bank_account_link == 'fixed':
- journal_id = self.payment_mode_id.fixed_journal_id
+ journal_id = self.payment_mode_id.fixed_journal_id.id
+ res['domain']['journal_id'] = "[('id', '=', %d)]" % journal_id
+ elif self.payment_mode_id.bank_account_link == 'variable':
+ jrl_ids = self.payment_mode_id.variable_journal_ids.ids
+ res['domain']['journal_id'] = "[('id', 'in', %s)]" % jrl_ids
self.journal_id = journal_id
+ if self.payment_mode_id.default_date_prefered:
+ self.date_prefered = self.payment_mode_id.default_date_prefered
+ return res
@api.multi
def action_done(self):
@@ -210,6 +208,12 @@ def draft2open(self):
if not order.journal_id:
raise UserError(_(
'Missing Bank Journal on payment order %s.') % order.name)
+ if (
+ order.payment_method_id.bank_account_required and
+ not order.journal_id.bank_account_id):
+ raise UserError(_(
+ "Missing bank account on bank journal '%s'.")
+ % order.journal_id.display_name)
if not order.payment_line_ids:
raise UserError(_(
'There are no transactions on payment order %s.')
@@ -433,6 +437,7 @@ def generate_move(self):
"""
self.ensure_one()
am_obj = self.env['account.move']
+ post_move = self.payment_mode_id.post_move
# prepare a dict "trfmoves" that can be used when
# self.payment_mode_id.move_option = date or line
# key = unique identifier (date or True or line.id)
@@ -459,4 +464,5 @@ def generate_move(self):
mvals['line_ids'].append((0, 0, trf_ml_vals))
move = am_obj.create(mvals)
blines.reconcile_payment_lines()
- move.post()
+ if post_move:
+ move.post()
diff --git a/account_payment_order/views/account_payment_mode.xml b/account_payment_order/views/account_payment_mode.xml
index c8f3b628cd8..5be3a602571 100644
--- a/account_payment_order/views/account_payment_mode.xml
+++ b/account_payment_order/views/account_payment_mode.xml
@@ -16,6 +16,7 @@
attrs="{'invisible': [('payment_order_ok', '=', False)]}">
+
+
diff --git a/account_payment_order/views/account_payment_order.xml b/account_payment_order/views/account_payment_order.xml
index b65fad9c1f6..2318237c37a 100644
--- a/account_payment_order/views/account_payment_order.xml
+++ b/account_payment_order/views/account_payment_order.xml
@@ -33,9 +33,7 @@
-
-
+