diff --git a/account_banking_payment_export/demo/banking_demo.xml b/account_banking_payment_export/demo/banking_demo.xml
index c33d538c0..be9cd471b 100644
--- a/account_banking_payment_export/demo/banking_demo.xml
+++ b/account_banking_payment_export/demo/banking_demo.xml
@@ -86,6 +86,7 @@
+
@@ -95,6 +96,7 @@
+
diff --git a/account_banking_payment_export/models/payment_mode.py b/account_banking_payment_export/models/payment_mode.py
index dff0071e1..034973cdd 100644
--- a/account_banking_payment_export/models/payment_mode.py
+++ b/account_banking_payment_export/models/payment_mode.py
@@ -86,20 +86,11 @@ class PaymentMode(models.Model):
res = [t.code for t in payment_mode.type.suitable_bank_types]
return res
- @api.model
- def _default_type(self):
- return self.env.ref(
- 'account_banking_payment_export.'
- 'manual_bank_tranfer', raise_if_not_found=False)\
- or self.env['payment.mode.type']
-
type = fields.Many2one(
'payment.mode.type', string='Export type', required=True,
- help='Select the Export Payment Type for the Payment Mode.',
- default=_default_type)
+ help='Select the Export Payment Type for the Payment Mode.')
payment_order_type = fields.Selection(
related='type.payment_order_type', readonly=True, string="Order Type",
- selection=[('payment', 'Payment'), ('debit', 'Debit')],
help="This field, that comes from export type, determines if this "
"mode can be selected for customers or suppliers.")
active = fields.Boolean(string='Active', default=True)
@@ -119,3 +110,16 @@ class PaymentMode(models.Model):
], default='due', string="Type of Date Filter")
default_populate_results = fields.Boolean(
string='Populate Results Directly')
+
+ @api.onchange('type')
+ def type_on_change(self):
+ if self.type:
+ ajo = self.env['account.journal']
+ aj_ids = []
+ if self.type.payment_order_type == 'payment':
+ aj_ids = ajo.search([
+ ('type', 'in', ('purchase_refund', 'purchase'))]).ids
+ elif self.type.payment_order_type == 'debit':
+ aj_ids = ajo.search([
+ ('type', 'in', ('sale_refund', 'sale'))]).ids
+ self.default_journal_ids = [(6, 0, aj_ids)]
diff --git a/account_banking_payment_transfer/model/bank_payment_line.py b/account_banking_payment_transfer/model/bank_payment_line.py
index d46fa8d59..9b523c0cb 100644
--- a/account_banking_payment_transfer/model/bank_payment_line.py
+++ b/account_banking_payment_transfer/model/bank_payment_line.py
@@ -94,12 +94,6 @@ class BankPaymentLine(models.Model):
"been reconciled") % (
payment_line.move_line_id.name,
payment_line.partner_id.name))
- if payment_line.move_line_id.reconcile_partial_id:
- raise UserError(_(
- "Move line '%s' of partner '%s' has already "
- "been partially reconciled") % (
- payment_line.move_line_id.name,
- payment_line.partner_id.name))
if (
payment_line.move_line_id.account_id !=
transit_move_line.account_id):
diff --git a/account_banking_payment_transfer/test/test_partial_payment_refunded.yml b/account_banking_payment_transfer/test/test_partial_payment_refunded.yml
index cf476f155..529a04e88 100644
--- a/account_banking_payment_transfer/test/test_partial_payment_refunded.yml
+++ b/account_banking_payment_transfer/test/test_partial_payment_refunded.yml
@@ -42,7 +42,7 @@
quantity: 1.0
journal_id: account.expenses_journal
-
- Make sure that the type is in_invoice
+ Make sure that the type is in_refund
-
!python {model: account.invoice}: |
self.write(cr, uid, ref("account_refund_supplier_refunded"), {'type': 'in_refund'})
@@ -51,67 +51,38 @@
-
!workflow {model: account.invoice, action: invoice_open, ref: account_refund_supplier_refunded}
-
- I reconcile the invoice and the refund
--
- !record {model: account.move.line.reconcile, id: account_move_line_reconcile0}:
- trans_nbr: 2
- credit: 600.0
- debit: 200.0
- writeoff: -400.0
--
- Then I click on the 'Partial Reconcile' button
--
- !python {model: account.move.line.reconcile}: |
- move_line_obj = self.pool.get('account.move.line')
- inv_obj = self.pool.get('account.invoice')
- invoice_move_id = inv_obj.browse(cr, uid, ref("account_invoice_supplier_refunded")).move_id.id
- refund_move_id = inv_obj.browse(cr, uid, ref("account_refund_supplier_refunded")).move_id.id
- debit_line_id = move_line_obj.search(cr, uid, [('move_id', '=', refund_move_id),('debit', '=', 200)])[0]
- credit_line_id = move_line_obj.search(cr, uid, [('move_id', '=', invoice_move_id),('credit', '=', 600)])[0]
- ids = [debit_line_id, credit_line_id]
- partial_reconcile = self.trans_rec_reconcile_partial_reconcile(cr, uid, [ref('account_move_line_reconcile0')], {
- 'active_model': 'account.move.line', 'active_ids': ids, 'tz': False, 'active_id': ids[1]})
- move_line = move_line_obj.browse(cr, uid, ids)
- assert move_line[0].reconcile_partial_id, "Partial reconcilation is not done"
--
- I check that the invoice balance (residual) is now 400
--
- !assert {model: account.invoice, id: account_invoice_supplier_refunded, severity: error, string: Invoice residual should be 400.}:
- - residual == 400
- - amount_total == 600
--
- I create a payment order on which I will select the invoice I created
+ I create a payment order
-
!record {model: payment.order, id: partial_payment_order_1}:
mode: account_banking_payment_transfer.payment_mode0
- date_prefered: 'due'
+ date_prefered: 'now'
-
- !record {model: payment.order.create, id: payment_order_create_1}:
- duedate: !eval time.strftime('%Y-%m-%d')
--
- I search for the invoice entries to make the payment.
--
- !python {model: payment.order.create}: |
- self.search_entries(cr, uid, [ref("payment_order_create_1")], {
- "active_model": "payment.order", "active_ids": [ref("partial_payment_order_1")],
- "active_id": ref("partial_payment_order_1"), })
--
- I create payment lines entries.
+ I run the select move line to pay wizard
-
!python {model: payment.order.create}: |
+ context = {
+ "active_model": "payment.order",
+ "active_ids": [ref("partial_payment_order_1")],
+ "active_id": ref("partial_payment_order_1"),
+ }
+ wiz_id = self.create(cr, uid, {}, context=context)
+ self.search_entries(cr, uid, [wiz_id], context=context)
+ mline_ids = []
invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier_refunded"))
for l in invoice.move_id.line_id:
if not l.debit and l.credit:
- move_line = l
+ mline_ids.append(l.id)
break
- self.write(cr, uid, [ref("payment_order_create_1")], {'entries': [(6,0,[move_line.id])]})
- self.create_payment(cr, uid, [ref("payment_order_create_1")], {
- "active_model": "payment.order", "active_ids": [ref("partial_payment_order_1")],
- "active_id": ref("partial_payment_order_1")})
+ refund = self.pool.get('account.invoice').browse(cr, uid, ref("account_refund_supplier_refunded"))
+ for l in refund.move_id.line_id:
+ if not l.credit and l.debit:
+ mline_ids.append(l.id)
+ break
+ self.write(cr, uid, [wiz_id], {'entries': [(6, 0, mline_ids)]})
+ self.create_payment(cr, uid, [wiz_id], context=context)
pay_obj = self.pool.get('payment.order')
pay = pay_obj.browse(cr, uid, ref('partial_payment_order_1'))
- assert pay.line_ids[0].amount_currency == 400
- assert pay.total == 400
+ assert len(pay.line_ids) == 2
-
I confirm the payment order.
-
@@ -121,6 +92,7 @@
-
!assert {model: payment.order, id: partial_payment_order_1, severity: error, string: Payment Order should be 'Confirmed'.}:
- state == 'open'
+ - total == 400.0
-
I create the wizard for paying the payment
-
@@ -159,4 +131,4 @@
!assert {model: account.invoice, id: account_invoice_supplier_refunded, severity: error, string: Invoice residual should be 0.}:
- residual == 0
- amount_total == 600
- - state == 'paid'
\ No newline at end of file
+ - state == 'paid'
diff --git a/account_banking_payment_transfer/test/test_partial_payment_transfer.yml b/account_banking_payment_transfer/test/test_partial_payment_transfer.yml
index f32b9a84d..2e7a05a7c 100644
--- a/account_banking_payment_transfer/test/test_partial_payment_transfer.yml
+++ b/account_banking_payment_transfer/test/test_partial_payment_transfer.yml
@@ -25,31 +25,26 @@
-
!workflow {model: account.invoice, action: invoice_open, ref: account_invoice_supplier_partial}
-
- I create a payment order on which I will select the invoice I created
+ I create a payment order
-
!record {model: payment.order, id: partial_payment_order_2}:
mode: account_banking_payment_transfer.payment_mode0
date_prefered: 'due'
-
- !record {model: payment.order.create, id: payment_order_create_2}:
- duedate: !eval time.strftime('%Y-%m-%d')
--
- I search for the invoice entries to make the payment.
--
- !python {model: payment.order.create}: |
- self.search_entries(cr, uid, [ref("payment_order_create_2")], {
- "active_model": "payment.order", "active_ids": [ref("partial_payment_order_2")],
- "active_id": ref("partial_payment_order_2"), })
--
- I create payment lines entries.
+ I run the select move line to pay wizard
-
!python {model: payment.order.create}: |
+ context = {
+ "active_model": "payment.order",
+ "active_ids": [ref("partial_payment_order_2")],
+ "active_id": ref("partial_payment_order_2"),
+ }
+ wiz_id = self.create(cr, uid, {}, context=context)
+ self.search_entries(cr, uid, [wiz_id], context=context)
invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier_partial"))
move_line = invoice.move_id.line_id[0]
- self.write(cr, uid, [ref("payment_order_create_2")], {'entries': [(6,0,[move_line.id])]})
- self.create_payment(cr, uid, [ref("payment_order_create_2")], {
- "active_model": "payment.order", "active_ids": [ref("partial_payment_order_2")],
- "active_id": ref("partial_payment_order_2")})
+ self.write(cr, uid, [wiz_id], {'entries': [(6, 0, [move_line.id])]})
+ self.create_payment(cr, uid, [wiz_id], context=context)
pay_obj = self.pool.get('payment.order')
pay = pay_obj.browse(cr, uid, ref('partial_payment_order_2'))
assert pay.line_ids
@@ -118,29 +113,24 @@
!record {model: payment.order, id: partial_partial_payment_order_2}:
mode: account_banking_payment_transfer.payment_mode0
date_prefered: 'due'
--
- !record {model: payment.order.create, id: partial_payment_order_create_2}:
- duedate: !eval time.strftime('%Y-%m-%d')
-
I search for the invoice entries to make the payment.
-
!python {model: payment.order.create}: |
- self.search_entries(cr, uid, [ref("partial_payment_order_create_2")], {
- "active_model": "payment.order", "active_ids": [ref("partial_partial_payment_order_2")],
- "active_id": ref("partial_partial_payment_order_2"), })
--
- I create payment lines entries.
--
- !python {model: payment.order.create}: |
+ context = {
+ "active_model": "payment.order",
+ "active_ids": [ref("partial_partial_payment_order_2")],
+ "active_id": ref("partial_partial_payment_order_2"),
+ }
+ wiz_id = self.create(cr, uid, {}, context=context)
+ self.search_entries(cr, uid, [wiz_id], context=context)
invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier_partial"))
for l in invoice.move_id.line_id:
if not l.debit and l.credit:
move_line = l
break
- self.write(cr, uid, [ref("partial_payment_order_create_2")], {'entries': [(6,0,[move_line.id])]})
- self.create_payment(cr, uid, [ref("partial_payment_order_create_2")], {
- "active_model": "payment.order", "active_ids": [ref("partial_partial_payment_order_2")],
- "active_id": ref("partial_partial_payment_order_2")})
+ self.write(cr, uid, [wiz_id], {'entries': [(6,0,[move_line.id])]})
+ self.create_payment(cr, uid, [wiz_id], context=context)
pay_obj = self.pool.get('payment.order')
pay = pay_obj.browse(cr, uid, ref('partial_partial_payment_order_2'))
assert len(pay.line_ids) == 1
@@ -198,29 +188,24 @@
!record {model: payment.order, id: partial_partial_payment_order_3}:
mode: account_banking_payment_transfer.payment_mode0
date_prefered: 'due'
--
- !record {model: payment.order.create, id: partial_payment_order_create_3}:
- duedate: !eval time.strftime('%Y-%m-%d')
-
I search for the invoice entries to make the payment.
-
!python {model: payment.order.create}: |
- self.search_entries(cr, uid, [ref("partial_payment_order_create_3")], {
- "active_model": "payment.order", "active_ids": [ref("partial_partial_payment_order_3")],
- "active_id": ref("partial_partial_payment_order_3"), })
--
- I create payment lines entries.
--
- !python {model: payment.order.create}: |
+ context = {
+ "active_model": "payment.order",
+ "active_ids": [ref("partial_partial_payment_order_3")],
+ "active_id": ref("partial_partial_payment_order_3"),
+ }
+ wiz_id = self.create(cr, uid, {}, context=context)
+ self.search_entries(cr, uid, [wiz_id], context=context)
invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier_partial"))
for l in invoice.move_id.line_id:
if not l.debit and l.credit:
move_line = l
break
- self.write(cr, uid, [ref("partial_payment_order_create_3")], {'entries': [(6,0,[move_line.id])]})
- self.create_payment(cr, uid, [ref("partial_payment_order_create_3")], {
- "active_model": "payment.order", "active_ids": [ref("partial_partial_payment_order_3")],
- "active_id": ref("partial_partial_payment_order_3")})
+ self.write(cr, uid, [wiz_id], {'entries': [(6, 0, [move_line.id])]})
+ self.create_payment(cr, uid, [wiz_id], context=context)
pay_obj = self.pool.get('payment.order')
pay = pay_obj.browse(cr, uid, ref('partial_partial_payment_order_3'))
assert len(pay.line_ids) == 1
@@ -265,12 +250,3 @@
assert sum_credit == 0
assert inv.residual == 0
assert inv.state == 'paid'
-
-
-
-
-
-
-
-
-
diff --git a/account_banking_payment_transfer/test/test_payment_method.yml b/account_banking_payment_transfer/test/test_payment_method.yml
index a20db04d4..4a74dd895 100644
--- a/account_banking_payment_transfer/test/test_payment_method.yml
+++ b/account_banking_payment_transfer/test/test_payment_method.yml
@@ -2,7 +2,7 @@
I create a supplier invoice
-
!record {model: account.invoice, id: account_invoice_supplier0, view: account.invoice_supplier_form}:
- check_total: 450.0
+ check_total: 1005.55
partner_id: base.res_partner_4
reference_type: none
type: in_invoice
@@ -35,34 +35,29 @@
- state == 'open'
- type == 'in_invoice'
-
- I create a payment order on which I will select the invoice I created
+ I create a payment order
-
!record {model: payment.order, id: payment_order_0}:
mode: account_banking_payment_transfer.payment_mode0
date_prefered: 'due'
-
- !record {model: payment.order.create, id: payment_order_create_0}:
- duedate: !eval time.strftime('%Y-%m-%d')
--
- I search for the invoice entries to make the payment.
--
- !python {model: payment.order.create}: |
- self.search_entries(cr, uid, [ref("payment_order_create_0")], {
- "active_model": "payment.order", "active_ids": [ref("payment_order_0")],
- "active_id": ref("payment_order_0"), })
--
- I create payment lines entries.
+ I run the select move line to pay wizard
-
!python {model: payment.order.create}: |
+ context = {
+ "active_model": "payment.order",
+ "active_ids": [ref("payment_order_0")],
+ "active_id": ref("payment_order_0"),
+ }
+ wiz_id = self.create(cr, uid, {}, context=context)
+ self.search_entries(cr, uid, [wiz_id], context=context)
invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account_invoice_supplier0"))
entries = []
for move_line in invoice.move_id.line_id:
if move_line.credit and not move_line.debit:
entries.append((6, 0, [move_line.id]))
- self.write(cr, uid, [ref("payment_order_create_0")], {'entries': entries})
- self.create_payment(cr, uid, [ref("payment_order_create_0")], {
- "active_model": "payment.order", "active_ids": [ref("payment_order_0")],
- "active_id": ref("payment_order_0")})
+ self.write(cr, uid, [wiz_id], {'entries': entries})
+ self.create_payment(cr, uid, [wiz_id], context=context)
pay_obj = self.pool.get('payment.order')
pay = pay_obj.browse(cr, uid, ref('payment_order_0'))
for line in pay.line_ids:
@@ -161,4 +156,4 @@
I check that the payment is done
-
!assert {model: payment.order, id: payment_order_0, severity: error, string: Payment Order should be done}:
- - state == 'done'
\ No newline at end of file
+ - state == 'done'
diff --git a/account_banking_sepa_direct_debit/demo/sepa_direct_debit_demo.xml b/account_banking_sepa_direct_debit/demo/sepa_direct_debit_demo.xml
index 51a24bad1..07b347f6c 100644
--- a/account_banking_sepa_direct_debit/demo/sepa_direct_debit_demo.xml
+++ b/account_banking_sepa_direct_debit/demo/sepa_direct_debit_demo.xml
@@ -10,6 +10,7 @@
+