mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
[ADD] Account_constraints module to implement accounting constraints that OpenERP doesn't wanted in the core.
This commit is contained in:
21
account_constraints/__init__.py
Normal file
21
account_constraints/__init__.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author Joel Grand-Guillaume. Copyright 2012 Camptocamp SA
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import account_constraints
|
||||
50
account_constraints/__openerp__.py
Normal file
50
account_constraints/__openerp__.py
Normal file
@@ -0,0 +1,50 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author Joel Grand-Guillaume. Copyright 2012 Camptocamp SA
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
{
|
||||
'name' : 'Account Contraints',
|
||||
'version' : '1',
|
||||
'depends' : [
|
||||
'account',
|
||||
],
|
||||
'author' : 'Camptocamp',
|
||||
'category': 'Generic Modules/Accounting',
|
||||
'description': """
|
||||
Add contraints in the accounting module of OpenERP to avoid bad usage by users that lead
|
||||
to corrupted datas. This is based on our experiences and legal state of the art in other
|
||||
software.
|
||||
|
||||
Summary of constraints are:
|
||||
|
||||
* Add a constraint on account move: you cannot pickup a date that is not in the fiscal year of the concerned period
|
||||
|
||||
* For manual entries when multicurrency:
|
||||
a - Validation on the use of the 'Currency' and 'Currency Amount' fields as it is possible to enter one without the other
|
||||
b - Validation to prevent a Credit amount with a positive 'Currency Amount', or a Debit with a negative 'Currency Amount'
|
||||
|
||||
* Add a check on entries that user cannot provide a secondary currency if the same than the company one.
|
||||
|
||||
""",
|
||||
'website': 'http://www.camptocamp.com',
|
||||
'init_xml': [],
|
||||
'update_xml': [],
|
||||
'demo_xml': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
}
|
||||
85
account_constraints/account_constraints.py
Normal file
85
account_constraints/account_constraints.py
Normal file
@@ -0,0 +1,85 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author Joel Grand-Guillaume. Copyright 2012 Camptocamp SA
|
||||
#
|
||||
# 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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import time
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.tools.translate import _
|
||||
|
||||
class AccountMove(osv.osv):
|
||||
_inherit = "account.move"
|
||||
|
||||
def _check_fiscal_year(self, cursor, user, ids):
|
||||
for move in self.browse(cursor, user, ids):
|
||||
date_start = move.period_id.fiscalyear_id.date_start
|
||||
date_stop = move.period_id.fiscalyear_id.date_stop
|
||||
if move.date < date_start or move.date > date_stop:
|
||||
return False
|
||||
return True
|
||||
|
||||
_constraints = [
|
||||
(_check_fiscal_year,
|
||||
'You cannot create entries with date not in the fiscal year of the chosen period',
|
||||
['line_id','']),
|
||||
]
|
||||
|
||||
|
||||
class AccountMoveLine(osv.osv):
|
||||
_inherit='account.move.line'
|
||||
|
||||
def _check_currency_and_amount(self, cr, uid, ids, context=None):
|
||||
for l in self.browse(cr, uid, ids, context=context):
|
||||
if (l.currency_id and not l.amount_currency) or (not l.currency_id and l.amount_currency):
|
||||
return False
|
||||
return True
|
||||
|
||||
def _check_currency_amount(self, cr, uid, ids, context=None):
|
||||
for l in self.browse(cr, uid, ids, context=context):
|
||||
if l.amount_currency:
|
||||
if (l.amount_currency > 0.0 and l.credit > 0.0) or (l.amount_currency < 0.0 and l.debit > 0.0):
|
||||
return False
|
||||
return True
|
||||
|
||||
def _check_currency_company(self, cr, uid, ids, context=None):
|
||||
for l in self.browse(cr, uid, ids, context=context):
|
||||
if l.currency_id.id == l.company_id.currency_id.id:
|
||||
return False
|
||||
return True
|
||||
|
||||
_constraints = [
|
||||
(
|
||||
_check_currency_and_amount,
|
||||
"You cannot create journal items with a secondary currency without recording \
|
||||
both 'currency' and 'amount currency' field.",
|
||||
['currency_id','amount_currency']
|
||||
),
|
||||
(
|
||||
_check_currency_amount,
|
||||
'The amount expressed in the secondary currency must be positif when journal item\
|
||||
are debit and negatif when journal item are credit.',
|
||||
['amount_currency']
|
||||
),
|
||||
(
|
||||
_check_currency_company,
|
||||
"You can't provide a secondary currency if the same than the company one." ,
|
||||
['currency_id']
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user