# -*- coding: utf-8 -*-
-from osv import fields, osv
+##############################################################################
+#
+# Bikecoop module for OpenERP, Custom module for bike coop'
+# Copyright (C) 2012-2014 L'Heureux Cyclage (<http://www.heureux-cyclage.org>)
+#
+# This file is a part of Bikecoop
+#
+# Bikecoop 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.
+#
+# Bikecoop 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/>.
+#
+##############################################################################
+
+from openerp.osv import fields, osv
import openerp.addons.decimal_precision as dp
+from openerp.tools.translate import _
+from openerp.addons.point_of_sale.wizard.pos_box import PosBoxOut
+
+from datetime import date
class Theme(osv.osv):
def _check_year(self, cr, uid, ids, context=None):
obj = self.browse(cr, uid, ids[0], context=context)
if obj.year:
- if obj.year < 1900 or obj.year > 2100:
+ if obj.year < 1900 or obj.year > date.today().year:
return False
return True
_constraints = [
(_check_year, 'Error: this year is not valid.', ['year']),
]
-
-
Partner()
product_template()
+# Inheriting journal in order to define a purchase account which will be used when refunding an employee from an open register
+class account_journal(osv.osv):
+ _inherit = 'account.journal'
+ _columns = {
+ 'purchase_account_id' : fields.many2one('account.account', 'Purchase Account', select=1),
+ }
+account_journal()
+
+class PurchaseBox(PosBoxOut):
+ # Copied from account/wizard/pos_box.py since there is no way to overload the account used to create the statement
+ def _run(self, cr, uid, ids, records, context=None):
+ for box in self.browse(cr, uid, ids, context=context):
+ for record in records:
+ if not record.journal_id:
+ raise osv.except_osv(_('Error!'),
+ _("Please check that the field 'Journal' is set on the Bank Statement"))
+
+ if not record.journal_id.purchase_account_id:
+ raise osv.except_osv(_('Error!'),
+ _("Please check that the field 'Purchase Account' is set on the payment method '%s'.") % (record.journal_id.name,))
+
+ self._create_bank_statement_line(cr, uid, box, record, context=context)
+
+ return {}
+
+ def _compute_values_for_statement_line(self, cr, uid, box, record, context=None):
+ values = super(PosBoxOut, self)._compute_values_for_statement_line(cr, uid, box, record, context=context)
+ values['account_id'] = record.journal_id.purchase_account_id.id
+ return values
+
+PurchaseBox()
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: