diff --git a/account_invoice_reference/__init__.py b/account_invoice_reference/__init__.py new file mode 100644 index 00000000..ce74e081 --- /dev/null +++ b/account_invoice_reference/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Author: Guewen Baconnier +# Copyright 2014 Camptocamp SA +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from . import account_move diff --git a/account_invoice_reference/__openerp__.py b/account_invoice_reference/__openerp__.py new file mode 100644 index 00000000..a7fc1115 --- /dev/null +++ b/account_invoice_reference/__openerp__.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Author: Guewen Baconnier +# Copyright 2014 Camptocamp SA +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{'name' : 'Invoices Reference', + 'version' : '1.0', + 'author' : 'Camptocamp', + 'maintainer': 'Camptocamp', + 'license': 'AGPL-3', + 'category': 'category', + 'complexity': "easy", + 'depends' : ['account', + ], + 'description': """ +Invoices Reference +================== + +Aims to simplify the "references" things on the invoices. +There is too many fields on the invoices. And it is very difficult +to remember which field goes in which field of the Journal Entries. + +It particularly fits with other modules of the bank-statement-reconcile series +as account_advanced_reconcile_transaction_ref. + +Use cases +--------- + +Customer invoices + Journal Entry Reference is the Origin of the invoice if there, + otherwise, it is the Number of the invoice. + +Supplier invoices + Journal Entry Reference is the Supplier Invoice Number of the invoice + which is now mandatory. + + """, + 'website': 'http://www.camptocamp.com', + 'data': ['account_invoice_view.xml', + ], + 'tests': [], + 'installable': True, + 'auto_install': False, +} diff --git a/account_invoice_reference/account_invoice_view.xml b/account_invoice_reference/account_invoice_view.xml new file mode 100644 index 00000000..1c9cfdde --- /dev/null +++ b/account_invoice_reference/account_invoice_view.xml @@ -0,0 +1,26 @@ + + + + + account.invoice.supplier.form + account.invoice + + + + 1 + + + + + + + + + {'invisible': [('reference_type', '=', 'none')]} + + + + + diff --git a/account_invoice_reference/account_move.py b/account_invoice_reference/account_move.py new file mode 100644 index 00000000..5d3ef4c6 --- /dev/null +++ b/account_invoice_reference/account_move.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Author: Guewen Baconnier +# Copyright 2014 Camptocamp SA +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp.osv import orm, fields + + +class account_move(orm.Model): + _inherit = 'account.move' + + def _ref_from_invoice(self, cr, uid, invoice, context=None): + if invoice.type == 'out_invoice': + return invoice.origin or invoice.name + elif invoice.type == 'in_invoice': + # the supplier invoice number is now mandatory, but + # if historical invoices should not have one, we fallback + # to the name of the invoice + return invoice.supplier_invoice_number or invoice.name + + def create(self, cr, uid, vals, context=None): + if context is None: + context = {} + # invoice from which the move is generated + invoice = context.get('invoice') + if invoice: + assert isinstance(invoice, orm.browse_record) + ref = self._ref_from_invoice(cr, uid, invoice, context=context) + if ref: + vals = vals.copy() + vals['ref'] = ref + move_id = super(account_move, self).\ + create(cr, uid, vals, context=context) + return move_id