From b7739606016978717b273fdfe2cc83c83d4efec3 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Fri, 10 Oct 2014 10:58:41 +0200 Subject: [PATCH 1/3] Add tests that fail to check the copy of supplier_invoice_number to reference on create and write --- account_invoice_reference/__openerp__.py | 1 + .../test/supplier_invoice_number.yml | 47 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 account_invoice_reference/test/supplier_invoice_number.yml diff --git a/account_invoice_reference/__openerp__.py b/account_invoice_reference/__openerp__.py index 2ad8758d..cda206a0 100644 --- a/account_invoice_reference/__openerp__.py +++ b/account_invoice_reference/__openerp__.py @@ -141,6 +141,7 @@ Information propagated to the move lines: 'test/out_refund_without_origin.yml', 'test/in_refund_with_supplier_number.yml', 'test/in_refund_without_supplier_number.yml', + 'test/supplier_invoice_number.yml', ], 'installable': True, diff --git a/account_invoice_reference/test/supplier_invoice_number.yml b/account_invoice_reference/test/supplier_invoice_number.yml new file mode 100644 index 00000000..846fc63f --- /dev/null +++ b/account_invoice_reference/test/supplier_invoice_number.yml @@ -0,0 +1,47 @@ +- + In order to check if the reference is populated from the supplier_invoice_number + I create an invoice. +- + !record {model: account.invoice, id: invoice_supplier_invoice_number, view: account.invoice_supplier_form}: + account_id: account.a_pay + check_total: 3000.0 + company_id: base.main_company + currency_id: base.EUR + invoice_line: + - account_id: account.a_expense + name: '[PCSC234] PC Assemble SC234' + price_unit: 300.0 + product_id: product.product_product_3 + quantity: 10.0 + uos_id: product.product_uom_unit + journal_id: account.expenses_journal + partner_id: base.res_partner_12 + reference_type: none + supplier_invoice_number: ZZZ246 + type: in_invoice +- + Set again the type of the invoice (not set on the first one...) +- + !record {model: account.invoice, id: invoice_supplier_invoice_number, view: account.invoice_supplier_form}: + type: in_invoice +- + Ensure that the reference is the same than the supplier_invoice_number +- + !assert {model: account.invoice, id: invoice_supplier_invoice_number}: + - reference == 'ZZZ246' +- + In order to check if the supplier_invoice_number is copied to the supplier_invoice_number + when the reference is empty, I empty the reference +- + !record {model: account.invoice, id: invoice_supplier_invoice_number, view: account.invoice_supplier_form}: + reference: +- + And I write a new supplier_invoice_number +- + !record {model: account.invoice, id: invoice_supplier_invoice_number, view: account.invoice_supplier_form}: + supplier_invoice_number: ABC789 +- + Ensure that the reference is the same than the supplier_invoice_number +- + !assert {model: account.invoice, id: invoice_supplier_invoice_number}: + - reference == 'ABC789' From 00b71007ad7563144b7aa097a3c1eb6c858d30da Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Fri, 10 Oct 2014 11:12:20 +0200 Subject: [PATCH 2/3] Make the failing test passes, the fields is named supplier_invoice_number not supplier_invoice_reference Conflicts: account_invoice_reference/account_invoice.py Wrong cherry-pick --- account_invoice_reference/account_move.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/account_invoice_reference/account_move.py b/account_invoice_reference/account_move.py index b99689b8..b280679c 100644 --- a/account_invoice_reference/account_move.py +++ b/account_invoice_reference/account_move.py @@ -79,22 +79,23 @@ class AccountInvoice(orm.Model): return True def create(self, cr, uid, vals, context=None): - if (vals.get('supplier_invoice_reference') and not + if (vals.get('supplier_invoice_number') and not vals.get('reference')): - vals['reference'] = vals['supplier_invoice_reference'] + vals = vals.copy() + vals['reference'] = vals['supplier_invoice_number'] return super(AccountInvoice, self).create(cr, uid, vals, context=context) def write(self, cr, uid, ids, vals, context=None): - if vals.get('supplier_invoice_reference'): - if isinstance(ids, (int, long)): - ids = [ids] + if vals.get('supplier_invoice_number'): for invoice in self.browse(cr, uid, ids, context=context): + loc_vals = None if not invoice.reference: - locvals = vals.copy() - locvals['reference'] = vals['supplier_invoice_reference'] + loc_vals = vals.copy() + loc_vals['reference'] = vals['supplier_invoice_number'] super(AccountInvoice, self).write(cr, uid, [invoice.id], - locvals, context=context) + loc_vals or vals, + context=context) return True else: return super(AccountInvoice, self).write(cr, uid, ids, vals, From 7279247310e3f00a3cb005a3f8775c242803d566 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Fri, 10 Oct 2014 13:13:54 +0200 Subject: [PATCH 3/3] ids could be int/long --- account_invoice_reference/account_move.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/account_invoice_reference/account_move.py b/account_invoice_reference/account_move.py index b280679c..9dce2205 100644 --- a/account_invoice_reference/account_move.py +++ b/account_invoice_reference/account_move.py @@ -88,6 +88,8 @@ class AccountInvoice(orm.Model): def write(self, cr, uid, ids, vals, context=None): if vals.get('supplier_invoice_number'): + if isinstance(ids, (int, long)): + ids = [ids] for invoice in self.browse(cr, uid, ids, context=context): loc_vals = None if not invoice.reference: