mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
Update automated tests and demo data
Add on_change on field 'type' of payment.mode for easier configuration
This commit is contained in:
committed by
Pedro M. Baeza
parent
27d3b46389
commit
9ebcbd4bcb
@@ -86,6 +86,7 @@
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="type" ref="account_banking_payment_export.manual_bank_tranfer"/>
|
||||
<field name="sale_ok" eval="False"/>
|
||||
<field name="default_journal_ids" search="[('type', 'in', ('purchase', 'purchase_refund'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="payment_mode_3" model="payment.mode">
|
||||
@@ -95,6 +96,7 @@
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="type" ref="account_banking_payment_export.manual_bank_tranfer"/>
|
||||
<field name="sale_ok" eval="False"/>
|
||||
<field name="default_journal_ids" search="[('type', 'in', ('purchase', 'purchase_refund'))]"/>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
@@ -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)]
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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'
|
||||
- state == 'paid'
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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'
|
||||
- state == 'done'
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="type" ref="export_sdd_008_001_02"/>
|
||||
<field name="purchase_ok" eval="False"/>
|
||||
<field name="default_journal_ids" search="[('type', 'in', ('sale', 'sale_refund'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="base.main_company" model="res.company">
|
||||
|
||||
Reference in New Issue
Block a user