diff --git a/addons/account_payment/__openerp__.py b/addons/account_payment/__openerp__.py index 1912dfa5198..c547dc92715 100644 --- a/addons/account_payment/__openerp__.py +++ b/addons/account_payment/__openerp__.py @@ -51,7 +51,10 @@ This module provides : ], 'demo_xml': ['account_payment_demo.xml'], 'test': [ - 'test/account_payment.yml', + 'test/draft2cancel_payment_order.yml', + 'test/draft2done_payment_order.yml', + 'test/draft2valid_bank_statement.yml', + 'account_payment_demo.yml', 'test/account_payment_report.yml' ], 'installable': True, diff --git a/addons/account_payment/account_payment.py b/addons/account_payment/account_payment.py index ba98c71fc3e..f5ba3ed7d54 100644 --- a/addons/account_payment/account_payment.py +++ b/addons/account_payment/account_payment.py @@ -68,6 +68,7 @@ class payment_order(osv.osv): _rec_name = 'reference' _order = 'id desc' +#TODO:REMOVE this function is not used def get_wizard(self, type): logger = netsvc.Logger() logger.notifyChannel("warning", netsvc.LOG_WARNING, @@ -174,7 +175,7 @@ payment_order() class payment_line(osv.osv): _name = 'payment.line' - _description = 'Payment Line' + _description = 'Payment Line' def translate(self, orig): return { @@ -235,6 +236,7 @@ class payment_line(osv.osv): break return result + #TODO:REMOVE this function is not used def select_by_name(self, cr, uid, ids, name, args, context=None): if not ids: return {} partner_obj = self.pool.get('res.partner') diff --git a/addons/account_payment/account_payment_demo.yml b/addons/account_payment/account_payment_demo.yml new file mode 100644 index 00000000000..b5069408e47 --- /dev/null +++ b/addons/account_payment/account_payment_demo.yml @@ -0,0 +1,19 @@ +- + !record {model: res.partner.bank, id: partner_bank_1}: + name: Reserve Bank + acc_number: 00987654321 + partner_id: base.res_partner_agrolait + bank: base.res_bank_1 + state: bank + +- + !record {model: payment.mode, id: payment_mode_1}: + name: Direct Payment + journal: account.bank_journal + bank_id: account_payment.partner_bank_1 + +- + !record {model: payment.order, id: payment_order_1}: + mode: account_payment.payment_mode_1 + user_id: base.user_root + date_prefered: now diff --git a/addons/account_payment/test/account_payment.yml b/addons/account_payment/test/account_payment.yml deleted file mode 100644 index 13c5b5b20a4..00000000000 --- a/addons/account_payment/test/account_payment.yml +++ /dev/null @@ -1,118 +0,0 @@ -- - In order to test account_payment in OpenERP I created a new Bank Record -- - Creating a res.partner.bank record -- - !record {model: res.partner.bank, id: res_partner_bank_0}: - acc_number: '126-2013269-08' - partner_id: base.res_partner_9 - sequence: 0.0 - state: bank - bank: base.res_bank_1 -- - I created a new Payment Mode -- - Creating a payment.mode record -- - !record {model: payment.mode, id: payment_mode_m0}: - bank_id: res_partner_bank_0 - journal: account.bank_journal - name: TestMode - -- - I created a Supplier Invoice -- - Creating a account.invoice record -- - !record {model: account.invoice, id: account_invoice_payment}: - account_id: account.a_pay - address_contact_id: base.res_partner_address_tang - address_invoice_id: base.res_partner_address_tang - check_total: 300.0 - company_id: base.main_company - currency_id: base.EUR - invoice_line: - - account_id: account.a_expense - name: '[PC1] Basic PC' - price_unit: 300.0 - product_id: product.product_product_pc1 - quantity: 1.0 - uos_id: product.product_uom_unit - journal_id: account.expenses_journal - partner_id: base.res_partner_asus - reference_type: none - type: in_invoice - -- - I make the supplier invoice in Open state -- - Performing a workflow action invoice_open on module account.invoice -- - !workflow {model: account.invoice, action: invoice_open, ref: account_invoice_payment} - -- - I create a new payment order -- - Creating a payment.order record -- - !record {model: payment.order, id: payment_order_0}: - date_prefered: due - mode: payment_mode_m0 - reference: !eval "'%s/006' %(datetime.now().year)" - user_id: base.user_root - - -- - Creating a payment.order.create record -- - !record {model: payment.order.create, id: payment_order_create_0}: - duedate: !eval time.strftime('%Y-%m-%d') - -- - I searched the entries using "Payment Create Order" wizard -- - Performing an osv_memory action search_entries on module payment.order.create -- - !python {model: payment.order.create}: | - self.search_entries(cr, uid, [ref("payment_order_create_0")], {"lang": "en_US", - "active_model": "payment.order", "active_ids": [ref("payment_order_0")], - "tz": False, "active_id": ref("payment_order_0"), }) -- - I check that Initially Payment order is in "draft" state -- - !assert {model: payment.order, id: payment_order_0}: - - state == 'draft' -- - I pressed the confirm payment button to confirm the payment -- - Performing a workflow action open on module payment.order -- - !workflow {model: payment.order, action: open, ref: payment_order_0} -- - I check that Payment order is in "Confirmed" state -- - !assert {model: payment.order, id: payment_order_0}: - - state == 'open' -- - I paid the payment using "Make Payments" Button -- - Creating a account.payment.make.payment record -- - !record {model: account.payment.make.payment, id: account_payment_make_payment_0}: - {} - -- - Performing an osv_memory action launch_wizard on module account.payment.make.payment -- - !python {model: account.payment.make.payment}: | - self.launch_wizard(cr, uid, [ref("account_payment_make_payment_0")], {"lang": - "en_US", "active_model": "payment.order", "active_ids": [ref("payment_order_0")], "tz": - False, "active_id": ref("payment_order_0"), }) - -- - I check that Payment order is in "Done" state -- - !assert {model: payment.order, id: payment_order_0}: - - state == 'done' - - diff --git a/addons/account_payment/test/draft2cancel_payment_order.yml b/addons/account_payment/test/draft2cancel_payment_order.yml new file mode 100644 index 00000000000..9b544ab7ca0 --- /dev/null +++ b/addons/account_payment/test/draft2cancel_payment_order.yml @@ -0,0 +1,21 @@ +- + In order to test the process of payment order +- + I perform action to change the state of payment order to "confirmed" +- + !workflow {model: payment.order, action: open, ref: account_payment.payment_order_1} +- + I check that Payment order is now "Confirmed" +- + !assert {model: payment.order, id: account_payment.payment_order_1}: + - state == 'open' +- + In order to not payment line so I perform action to change the state of payment order to "cancel" +- + !python {model: payment.order}: | + self.set_to_draft(cr, uid, [ref("account_payment.payment_order_1")]) +- + I check that Payment order is now "draft" +- + !assert {model: payment.order, id: account_payment.payment_order_1}: + - state == 'draft' \ No newline at end of file diff --git a/addons/account_payment/test/draft2done_payment_order.yml b/addons/account_payment/test/draft2done_payment_order.yml new file mode 100644 index 00000000000..f0b0426d7bd --- /dev/null +++ b/addons/account_payment/test/draft2done_payment_order.yml @@ -0,0 +1,89 @@ + +- + In order to test the process of supplier invoice, I enter the amount for a total of invoice +- + !python {model: account.invoice}: | + self.write(cr, uid, [ref('account.demo_invoice_0')], {'check_total': 14}) +- + In order to test account move line of journal, I check that there is no move attached to the invoice at draft +- + !python {model: account.invoice}: | + invoice = self.browse(cr, uid, ref("account.demo_invoice_0")) + assert (not invoice.move_id), "Move wrongly created at draft" +- + I perform action to change the state of invoice to "open" +- + !workflow {model: account.invoice, action: invoice_open, ref: account.demo_invoice_0} +- + I check that the invoice state is now "Open" +- + !assert {model: account.invoice, id: account.demo_invoice_0}: + - state == 'open' + +- + In order to test the process of payment order and payment line +- + I create a record for payment order +- + !record {model: payment.order.create, id: payment_order_create_0}: + duedate: !eval time.strftime('%Y-%m-%d') + +- + I perform a action to search the entries for create a payment line +- + !python {model: payment.order.create}: | + self.search_entries(cr, uid, [ref("payment_order_create_0")], {"lang": "en_US", + "active_model": "payment.order", "active_ids": [ref("account_payment.payment_order_1")], + "tz": False, "active_id": ref("account_payment.payment_order_1"), }) + +- + In order to make entries in payment line, I create a entries +- + !python {model: payment.order.create}: | + invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account.demo_invoice_0")) + move_line = invoice.move_id.line_id[0] + self.write(cr, uid, [ref("payment_order_create_0")], {'entries': [(6,0,[move_line.id])]}) + self.create_payment(cr, uid, [ref("payment_order_create_0")], {"lang": "en_US", + "active_model": "payment.order", "active_ids": [ref("account_payment.payment_order_1")], + "tz": False, "active_id": ref("account_payment.payment_order_1"), }) + +- + I check a payment line is created with proper data +- + !python {model: payment.order}: | + invoice = self.pool.get('account.invoice').browse(cr, uid, ref("account.demo_invoice_0")) + payment = self.browse(cr, uid, ref("account_payment.payment_order_1")) + payment_line = payment.line_ids[0] + + assert payment_line.move_line_id, "move line is not created in payment line" + assert invoice.move_id.name == payment_line.ml_inv_ref.number, "invoice reference number is not same created" + assert invoice.partner_id == payment_line.partner_id, "partner is not same created" + assert invoice.date_due == payment_line.ml_maturity_date, "due date is not same created" + assert invoice.amount_total == payment_line.amount, "payment amount is not same created" + +- + I perform action to change the state of payment order to "confirmed" +- + !workflow {model: payment.order, action: open, ref: account_payment.payment_order_1} +- + I check that Payment order is now "Confirmed" +- + !assert {model: payment.order, id: account_payment.payment_order_1}: + - state == 'open' +- + I perform action to change the state of payment order to "done" +- + !python {model: payment.order}: | + self.set_done(cr, uid, [ref("account_payment.payment_order_1")]) +- + I check that Payment order is now "done" +- + !assert {model: payment.order, id: account_payment.payment_order_1}: + - state == 'done' + +- + I check a payment order is done with proper data +- + !python {model: payment.order}: | + payment = self.browse(cr, uid, ref("account_payment.payment_order_1")) + assert payment.date_done, "date is not created after done payment order" \ No newline at end of file diff --git a/addons/account_payment/test/draft2valid_bank_statement.yml b/addons/account_payment/test/draft2valid_bank_statement.yml new file mode 100644 index 00000000000..710a63a1540 --- /dev/null +++ b/addons/account_payment/test/draft2valid_bank_statement.yml @@ -0,0 +1,68 @@ +- + In order to test the process of bank statement +- + I create a record for bank statement +- + !record {model: account.bank.statement, id: account_bank_statement_1}: + balance_end_real: 0.0 + balance_start: 0.0 + date: !eval time.strftime('%Y-%m-%d') + journal_id: account.bank_journal + name: / + period_id: account.period_10 + +- + In order to make entries in bank statement line, I import payment order lines +- + !python {model: account.payment.populate.statement}: | + payment = self.pool.get('payment.order').browse(cr, uid, ref("account_payment.payment_order_1")) + payment_line = payment.line_ids[0] + import_payment_id = self.create(cr, uid, {'lines': [(6,0,[payment_line.id])]}) + self.populate_statement(cr, uid, [import_payment_id], {"lang": "en_US", "tz": False, "statement_id": ref("account_bank_statement_1"), "active_model": "account.bank.statement", "journal_type": "cash", "active_ids": [ref("account_bank_statement_1")], "active_id": ref("account_bank_statement_1")}) + +- + I check that payment line is import successfully in bank statement line +- + !python {model: account.bank.statement}: | + bank = self.browse(cr, uid, ref("account_bank_statement_1")) + assert bank.line_ids, "bank statement line is not created" + +- + I modify the bank statement and set the Closing Balance. +- + !record {model: account.bank.statement, id: account_bank_statement_1}: + balance_end_real: -14.0 + +- + I perform action to confirm the bank statement. +- + !python {model: account.bank.statement}: | + self.button_confirm_bank(cr, uid, [ref("account_bank_statement_1")]) +- + I check that bank statement state is now "Closed" +- + !assert {model: account.bank.statement, id: account_bank_statement_1}: + - state == 'confirm' +- + I check that move lines created for bank statement +- + !python {model: account.bank.statement}: | + bank = self.browse(cr, uid, ref("account_bank_statement_1")) + move_line = bank.move_line_ids[0] + + assert bank.move_line_ids, "Move lines not created for bank statement" + assert move_line.state == 'valid', "Move state is not valid" +- + I check that the payment is created with proper data in supplier invoice +- + !python {model: account.invoice}: | + invoice = self.browse(cr, uid, ref("account.demo_invoice_0")) + payment_line = invoice.payment_ids[0] + + assert invoice.state == 'paid', "invoice state is not paid" + assert invoice.reconciled == True, "invoice reconcile is not True" + assert invoice.residual == 0.0, "invoice residua amount is not filly paid" + assert payment_line, "payment line not created for paid invoice" + assert payment_line.debit == invoice.amount_total and payment_line.credit == 0.0, "proper amount is not debit to payment account " + assert payment_line.reconcile_id, "reconcile is not created for paid invoice" + \ No newline at end of file diff --git a/addons/account_payment/wizard/account_payment_create_order_view.xml b/addons/account_payment/wizard/account_payment_create_order_view.xml index c454a84bffd..538d32efe80 100644 --- a/addons/account_payment/wizard/account_payment_create_order_view.xml +++ b/addons/account_payment/wizard/account_payment_create_order_view.xml @@ -27,7 +27,8 @@
- + + diff --git a/addons/account_payment/wizard/account_payment_pay.py b/addons/account_payment/wizard/account_payment_pay.py index ca9311b1f88..922da187612 100644 --- a/addons/account_payment/wizard/account_payment_pay.py +++ b/addons/account_payment/wizard/account_payment_pay.py @@ -20,7 +20,7 @@ ############################################################################## from osv import osv - +#TODO:REMOVE this wizard is not used class account_payment_make_payment(osv.osv_memory): _name = "account.payment.make.payment" _description = "Account make payment" diff --git a/addons/account_payment/wizard/account_payment_pay_view.xml b/addons/account_payment/wizard/account_payment_pay_view.xml index 3d732aea6e2..a8835e0da8f 100644 --- a/addons/account_payment/wizard/account_payment_pay_view.xml +++ b/addons/account_payment/wizard/account_payment_pay_view.xml @@ -1,7 +1,7 @@ - + account.payment.make.payment.form account.payment.make.payment diff --git a/addons/account_payment/wizard/account_payment_populate_statement.py b/addons/account_payment/wizard/account_payment_populate_statement.py index 1ef6339d2f3..16d8dc5a7e4 100644 --- a/addons/account_payment/wizard/account_payment_populate_statement.py +++ b/addons/account_payment/wizard/account_payment_populate_statement.py @@ -76,7 +76,7 @@ class account_payment_populate_statement(osv.osv_memory): statement.currency.id, line.amount_currency, context=ctx) context.update({'move_line_ids': [line.move_line_id.id]}) - result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), voucher_currency_id= statement.currency.id, ttype='payment', date=line.ml_maturity_date, context=context) + result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, price=abs(amount), currency_id= statement.currency.id, ttype='payment', date=line.ml_maturity_date, context=context) if line.move_line_id: voucher_res = {