banking-addons-team team mailing list archive
-
banking-addons-team team
-
Mailing list archive
-
Message #01048
lp:~camptocamp/banking-addons/bank-statement-reconcile-70-pos_compat-afe into lp:banking-addons/bank-statement-reconcile-7.0
Alexandre Fayolle - camptocamp has proposed merging lp:~camptocamp/banking-addons/bank-statement-reconcile-70-pos_compat-afe into lp:banking-addons/bank-statement-reconcile-7.0.
Requested reviews:
Banking Addons Core Editors (banking-addons-team)
Related bugs:
Bug #1245391 in Banking Addons: "point_of_sale incompatible with bank-statement-reconcile-7.0"
https://bugs.launchpad.net/banking-addons/+bug/1245391
Bug #1247876 in Banking Addons: "account_statement_ext: crash when creating an empty statement"
https://bugs.launchpad.net/banking-addons/+bug/1247876
For more details, see:
https://code.launchpad.net/~camptocamp/banking-addons/bank-statement-reconcile-70-pos_compat-afe/+merge/193807
fix issue when creating empty statement (lp:124876) and add a module which enables bank statement creation from the point of sale with the banking framework installed.
--
https://code.launchpad.net/~camptocamp/banking-addons/bank-statement-reconcile-70-pos_compat-afe/+merge/193807
Your team Banking Addons Core Editors is requested to review the proposed merge of lp:~camptocamp/banking-addons/bank-statement-reconcile-70-pos_compat-afe into lp:banking-addons/bank-statement-reconcile-7.0.
=== modified file 'account_statement_ext/statement.py'
--- account_statement_ext/statement.py 2013-10-16 08:58:12 +0000
+++ account_statement_ext/statement.py 2013-11-04 15:51:13 +0000
@@ -31,9 +31,10 @@
I will do it when I have time."""
res = super(stat_mod.account_bank_statement, self).write(cr, uid, ids,
vals, context=context)
- cr.execute("UPDATE account_bank_statement_line"
- " SET sequence = account_bank_statement_line.id + 1"
- " where statement_id in %s", (tuple(ids),))
+ if ids: # will be false for an new empty bank statement
+ cr.execute("UPDATE account_bank_statement_line"
+ " SET sequence = account_bank_statement_line.id + 1"
+ " where statement_id in %s", (tuple(ids),))
return res
stat_mod.account_bank_statement.write = fixed_write
=== added directory 'account_statement_ext_point_of_sale'
=== added file 'account_statement_ext_point_of_sale/__init__.py'
--- account_statement_ext_point_of_sale/__init__.py 1970-01-01 00:00:00 +0000
+++ account_statement_ext_point_of_sale/__init__.py 2013-11-04 15:51:13 +0000
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Alexandre Fayolle
+# Copyright 2013 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/>.
+#
+##############################################################################
+
+import point_of_sale
=== added file 'account_statement_ext_point_of_sale/__openerp__.py'
--- account_statement_ext_point_of_sale/__openerp__.py 1970-01-01 00:00:00 +0000
+++ account_statement_ext_point_of_sale/__openerp__.py 2013-11-04 15:51:13 +0000
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Nicolas Bessi, Joel Grand-Guillaume
+# Copyright 2011-2013 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': "Bank statement extension and profiles for Point of Sale",
+ 'version': '1.0.0',
+ 'author': 'Camptocamp',
+ 'maintainer': 'Camptocamp',
+ 'category': 'Point Of Sale',
+ 'complexity': 'normal',
+ 'depends': ['point_of_sale',
+ 'account_statement_ext',
+ ],
+ 'description': """
+ Update the point of sale code to work with improved bank statements.
+ """,
+ 'website': 'http://www.camptocamp.com',
+ 'data': [],
+ 'demo': [],
+ 'test': [],
+ 'installable': True,
+ 'images': [],
+ 'auto_install': True,
+ 'license': 'AGPL-3',
+ 'active': False,
+ }
=== added file 'account_statement_ext_point_of_sale/point_of_sale.py'
--- account_statement_ext_point_of_sale/point_of_sale.py 1970-01-01 00:00:00 +0000
+++ account_statement_ext_point_of_sale/point_of_sale.py 2013-11-04 15:51:13 +0000
@@ -0,0 +1,95 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Alexandre Fayolle
+# Copyright 2013 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.addons.point_of_sale.point_of_sale import pos_session as std_pos_session
+from openerp.osv import orm, osv
+from openerp.tools.translate import _
+
+if not hasattr(std_pos_session, '_prepare_bank_statement'):
+ # monkey patch to fix lp:1245375
+ def mp_prepare_bank_statement(self, cr, uid, pos_config, journal, context=None):
+ bank_values = {
+ 'journal_id' : journal.id,
+ 'user_id' : uid,
+ 'company_id' : pos_config.shop_id.company_id.id
+ }
+ return bank_values
+
+ def mp_create(self, cr, uid, values, context=None):
+ context = context or {}
+ config_id = values.get('config_id', False) or context.get('default_config_id', False)
+ if not config_id:
+ raise osv.except_osv( _('Error!'),
+ _("You should assign a Point of Sale to your session."))
+
+ # journal_id is not required on the pos_config because it does not
+ # exists at the installation. If nothing is configured at the
+ # installation we do the minimal configuration. Impossible to do in
+ # the .xml files as the CoA is not yet installed.
+ jobj = self.pool.get('pos.config')
+ pos_config = jobj.browse(cr, uid, config_id, context=context)
+ context.update({'company_id': pos_config.shop_id.company_id.id})
+ if not pos_config.journal_id:
+ jid = jobj.default_get(cr, uid, ['journal_id'], context=context)['journal_id']
+ if jid:
+ jobj.write(cr, uid, [pos_config.id], {'journal_id': jid}, context=context)
+ else:
+ raise osv.except_osv( _('error!'),
+ _("Unable to open the session. You have to assign a sale journal to your point of sale."))
+
+ # define some cash journal if no payment method exists
+ if not pos_config.journal_ids:
+ journal_proxy = self.pool.get('account.journal')
+ cashids = journal_proxy.search(cr, uid, [('journal_user', '=', True), ('type','=','cash')], context=context)
+ if not cashids:
+ cashids = journal_proxy.search(cr, uid, [('type', '=', 'cash')], context=context)
+ if not cashids:
+ cashids = journal_proxy.search(cr, uid, [('journal_user','=',True)], context=context)
+
+ jobj.write(cr, uid, [pos_config.id], {'journal_ids': [(6,0, cashids)]})
+
+
+ pos_config = jobj.browse(cr, uid, config_id, context=context)
+ bank_statement_ids = []
+ print pos_config.journal_ids
+ for journal in pos_config.journal_ids:
+ bank_values = self._prepare_bank_statement(cr, uid, pos_config, journal, context)
+ statement_id = self.pool.get('account.bank.statement').create(cr, uid, bank_values, context=context)
+ bank_statement_ids.append(statement_id)
+
+ values.update({
+ 'name' : pos_config.sequence_id._next(),
+ 'statement_ids' : [(6, 0, bank_statement_ids)],
+ 'config_id': config_id
+ })
+ return super(std_pos_session, self).create(cr, uid, values, context=context)
+
+ std_pos_session._prepare_bank_statement = mp_prepare_bank_statement
+ std_pos_session.create = mp_create
+
+
+class pos_session(orm.Model):
+ _inherit = 'pos.session'
+
+ def _prepare_bank_statement(self, cr, uid, pos_config, journal, context=None):
+ bank_values = super(pos_session, self)._prepare_bank_statement(cr, uid, pos_config, journal, context)
+ defaults = self.pool['account.bank.statement'].default_get(cr, uid, ['profile_id', 'period_id'], context=context)
+ bank_values.update(defaults)
+ return bank_values
Follow ups