Update automated tests and demo data

Add on_change on field 'type' of payment.mode for easier configuration
This commit is contained in:
Alexis de Lattre
2015-12-02 00:17:17 +01:00
committed by Pedro M. Baeza
parent 27d3b46389
commit 9ebcbd4bcb
7 changed files with 82 additions and 138 deletions

View File

@@ -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>

View File

@@ -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)]

View File

@@ -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):

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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">