diff --git a/addons/account/account.py b/addons/account/account.py index 507d1d392d9..90947a59ae4 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -614,9 +614,22 @@ class account_journal(osv.osv): 'user_id': lambda self,cr,uid,context: uid, 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, } + _sql_constraints = [ + ('code_company_uniq', 'unique (code, company_id)', 'The code of the journal must be unique per company !'), + ('name_company_uniq', 'unique (name, company_id)', 'The name of the journal must be unique per company !'), + ] _order = 'code' + def copy(self, cr, uid, id, default={}, context=None, done_list=[], local=False): + journal = self.browse(cr, uid, id, context=context) + if not default: + default = {} + default = default.copy() + default['code'] = (journal['code'] or '') + '(copy)' + default['name'] = (journal['name'] or '') + '(copy)' + return super(account_journal, self).copy(cr, uid, id, default, context=context) + def write(self, cr, uid, ids, vals, context=None): if 'company_id' in vals: move_lines = self.pool.get('account.move.line').search(cr, uid, [('journal_id', 'in', ids)]) diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 62cfa7cbd6f..6fea8a9ef47 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -528,10 +528,18 @@ class account_move_line(osv.osv): return False return True + def _check_partner_id(self, cr, uid, ids): + lines = self.browse(cr, uid, ids) + for l in lines: + if l.account_id.type in ('receivable', 'payable') and not l.partner_id: + return False + return True + _constraints = [ (_check_no_view, 'You can not create move line on view account.', ['account_id']), (_check_no_closed, 'You can not create move line on closed account.', ['account_id']), - (_check_company_id,'Company must be same for its related account and period.',['company_id'] ), + (_check_company_id, 'Company must be same for its related account and period.',['company_id'] ), + (_check_partner_id, 'You can not create move line on receivable/payable account without partner', ['account_id'] ) ] #TODO: ONCHANGE_ACCOUNT_ID: set account_tax_id @@ -929,6 +937,9 @@ class account_move_line(osv.osv): elif field == 'date': attrs.append('on_change="onchange_date(date)"') + elif field == 'analytic_account_id': + attrs.append('''groups="analytic.group_analytic_accounting"''') # Currently it is not working due to framework problem may be .. + if field in ('amount_currency', 'currency_id'): attrs.append('on_change="onchange_currency(account_id, amount_currency, currency_id, date, journal_id)"') attrs.append('''attrs="{'readonly': [('state', '=', 'valid')]}"''') diff --git a/addons/account/demo/account_minimal.xml b/addons/account/demo/account_minimal.xml index 87c8a37254d..d17fe1d760c 100644 --- a/addons/account/demo/account_minimal.xml +++ b/addons/account/demo/account_minimal.xml @@ -342,7 +342,7 @@ Sales Journal - (test) - SAJ + SAJ - (test) sale @@ -353,7 +353,7 @@ Sales Credit Note Journal - (test) - SCNJ + SCNJ- (test) sale_refund @@ -366,7 +366,7 @@ Expenses Journal - (test) - EXJ + EXJ- (test) purchase @@ -377,7 +377,7 @@ Expenses Credit Notes Journal - (test) - ECNJ + ECNJ- (test) purchase_refund @@ -390,7 +390,7 @@ Bank Journal - (test) - BNK + BNK- (test) bank @@ -401,7 +401,7 @@ Checks Journal - (test) - CHK + CHK- (test) bank @@ -412,7 +412,7 @@ Cash Journal - (test) - CSH + CSH- (test) cash diff --git a/addons/account_sequence/__init__.py b/addons/account_sequence/__init__.py new file mode 100644 index 00000000000..535fb766048 --- /dev/null +++ b/addons/account_sequence/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## + +import account_sequence + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/account_sequence/__openerp__.py b/addons/account_sequence/__openerp__.py new file mode 100644 index 00000000000..5781e6db79e --- /dev/null +++ b/addons/account_sequence/__openerp__.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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': 'Sequence Numbering', + 'version': '1.1', + 'category': 'Generic Modules/Accounting', + 'description': """ + This module maintains internal sequence number for accounting entries. + """, + 'author': 'OpenERP SA', + 'website': 'http://www.openerp.com', + 'depends': ['account'], + 'init_xml': [], + 'update_xml': ['account_sequence_data.xml','account_sequence.xml'], + 'demo_xml': ['account_sequence_minimal.xml'], + 'installable': True, + 'active': False, + 'certificate': '', +} +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/account_sequence/account_sequence.py b/addons/account_sequence/account_sequence.py new file mode 100644 index 00000000000..f9a881decbc --- /dev/null +++ b/addons/account_sequence/account_sequence.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). All Rights Reserved +# $Id$ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +from osv import osv, fields + +class account_move(osv.osv): + _inherit = 'account.move' + + _columns = { + 'internal_sequence_number': fields.char('Internal Sequence Number', size=64, readonly=True), + } + + def post(self, cr, uid, ids, context=None): + obj_sequence = self.pool.get('ir.sequence') + res = super(account_move, self).post(cr, uid, ids, context) + for line in self.browse(cr, uid, ids): + if line.journal_id.internal_sequence: + c = {'fiscalyear_id': line.period_id.fiscalyear_id.id} + seq_no = obj_sequence.get_id(cr, uid, line.journal_id.internal_sequence.id, context=c) + if seq_no: + self.write(cr, uid, [line.id], {'internal_sequence_number':seq_no}) + return res + +account_move() + +class account_journal(osv.osv): + _inherit = "account.journal" + + _columns = { + 'internal_sequence': fields.many2one('ir.sequence', 'Internal Sequence'), + } +account_journal() +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: \ No newline at end of file diff --git a/addons/account_sequence/account_sequence.xml b/addons/account_sequence/account_sequence.xml new file mode 100644 index 00000000000..92c145a9b2e --- /dev/null +++ b/addons/account_sequence/account_sequence.xml @@ -0,0 +1,30 @@ + + + + + + account.move.form.inherit + account.move + form + + + + + + + + + + account.journal.form.inherit + account.journal + form + + + + + + + + + + diff --git a/addons/account_sequence/account_sequence_data.xml b/addons/account_sequence/account_sequence_data.xml new file mode 100644 index 00000000000..5429d93b522 --- /dev/null +++ b/addons/account_sequence/account_sequence_data.xml @@ -0,0 +1,12 @@ + + + + + + + Internal Sequence Journal + account.journal + 1 + + + \ No newline at end of file diff --git a/addons/account_sequence/account_sequence_minimal.xml b/addons/account_sequence/account_sequence_minimal.xml new file mode 100644 index 00000000000..d634c2aa3af --- /dev/null +++ b/addons/account_sequence/account_sequence_minimal.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index 5c3690504c2..85e36f068fd 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -206,9 +206,9 @@