started module account_invoice_reference to modify the way the reference of moves are generated

This commit is contained in:
Guewen Baconnier
2014-01-16 14:07:40 +01:00
parent 11141de561
commit 3bd9ee9cf9
4 changed files with 158 additions and 0 deletions

View File

@@ -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 <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import account_move

View File

@@ -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 <http://www.gnu.org/licenses/>.
#
##############################################################################
{'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,
}

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<record id="invoice_supplier_form" model="ir.ui.view">
<field name="name">account.invoice.supplier.form</field>
<field name="model">account.invoice</field>
<field name="inherit_id" ref="account.invoice_supplier_form"/>
<field name="arch" type="xml">
<field name="supplier_invoice_number" position="attributes">
<attribute name="required">1</attribute>
</field>
<!-- remove the name to move it in a better place -->
<xpath expr="/form/sheet/notebook/page[@string='Other Info']//field[@name='name']"
position="replace">
</xpath>
<field name="reference" position="after">
<field name="name" class="oe_inline"
attrs="{'invisible': [('reference_type', '!=', 'none')]}"/>
</field>
<field name="reference" position="attributes">
<attribute name="attrs">{'invisible': [('reference_type', '=', 'none')]}</attribute>
</field>
</field>
</record>
</data>
</openerp>

View File

@@ -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 <http://www.gnu.org/licenses/>.
#
##############################################################################
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