From 0da4e8205d065ef717bcd78c58925d1d393b6ec6 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 16 May 2016 15:41:07 +0200 Subject: [PATCH] [ADD] New module pos_transfer_account; --- pos_transfer_account/README.rst | 79 ++++++++++++++++++ pos_transfer_account/__init__.py | 2 + pos_transfer_account/__openerp__.py | 23 +++++ pos_transfer_account/demo/account_account.xml | 11 +++ pos_transfer_account/demo/pos_config.xml | 13 +++ pos_transfer_account/i18n/fr.po | 37 ++++++++ .../i18n/pos_transfer_account.pot | 37 ++++++++ pos_transfer_account/models/__init__.py | 4 + pos_transfer_account/models/cash_box_in.py | 31 +++++++ pos_transfer_account/models/cash_box_out.py | 31 +++++++ pos_transfer_account/models/pos_config.py | 14 ++++ .../static/description/icon.png | Bin 0 -> 4721 bytes .../static/description/pos_config.png | Bin 0 -> 24750 bytes .../views/view_pos_config.xml | 20 +++++ 14 files changed, 302 insertions(+) create mode 100644 pos_transfer_account/README.rst create mode 100644 pos_transfer_account/__init__.py create mode 100644 pos_transfer_account/__openerp__.py create mode 100644 pos_transfer_account/demo/account_account.xml create mode 100644 pos_transfer_account/demo/pos_config.xml create mode 100644 pos_transfer_account/i18n/fr.po create mode 100644 pos_transfer_account/i18n/pos_transfer_account.pot create mode 100644 pos_transfer_account/models/__init__.py create mode 100644 pos_transfer_account/models/cash_box_in.py create mode 100644 pos_transfer_account/models/cash_box_out.py create mode 100644 pos_transfer_account/models/pos_config.py create mode 100644 pos_transfer_account/static/description/icon.png create mode 100644 pos_transfer_account/static/description/pos_config.png create mode 100644 pos_transfer_account/views/view_pos_config.xml diff --git a/pos_transfer_account/README.rst b/pos_transfer_account/README.rst new file mode 100644 index 00000000..8395abf0 --- /dev/null +++ b/pos_transfer_account/README.rst @@ -0,0 +1,79 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License: AGPL-3 + +PoS - Custom Transfer Account +============================= + +This module was written to extend the functionality of odoo Point Of Sale about +transfer account. + +This module is usefull only in a multi Point of Sale context of multi company +context. + +With this module, it is now allowed to define for each PoS config a transfer +account. + +If this account is set, it will be used when user realizes "Put Money In" or +"Take Money Out" operation, instead of the default one set in 'Invoicing' / +'Configuration' / 'Setting' Section. ("Inter-Banks Transfer Account" field) + +Note +==== + +You could be interested by another OCA module 'pos_cash_move_reason'. + +Installation +============ + +Normal installation. + +Configuration +============= + +* Go to 'Point of Sale' / 'Configuration' / 'Point of Sale' +* Edit your PoS Config and add a custom account + +.. image:: /pos_transfer_account/static/description/pos_config.png + +Usage +===== + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/184/9.0 + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Sylvain LE GAL + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/pos_transfer_account/__init__.py b/pos_transfer_account/__init__.py new file mode 100644 index 00000000..a0fdc10f --- /dev/null +++ b/pos_transfer_account/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import models diff --git a/pos_transfer_account/__openerp__.py b/pos_transfer_account/__openerp__.py new file mode 100644 index 00000000..dfbeb95f --- /dev/null +++ b/pos_transfer_account/__openerp__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2016-Today: La Louve () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + 'name': 'Point of Sale - Transfer Account', + 'version': '9.0.1.0.0', + 'category': 'Point Of Sale', + 'author': 'La Louve, Odoo Community Association (OCA)', + 'website': 'http://www.lalouve.net', + 'depends': [ + 'point_of_sale', + ], + 'data': [ + 'views/view_pos_config.xml', + ], + 'demo': [ + 'demo/account_account.xml', + 'demo/pos_config.xml', + ], + 'installable': True, +} diff --git a/pos_transfer_account/demo/account_account.xml b/pos_transfer_account/demo/account_account.xml new file mode 100644 index 00000000..293de0d4 --- /dev/null +++ b/pos_transfer_account/demo/account_account.xml @@ -0,0 +1,11 @@ + + + + + Demo PoS Liquidity Transfers + 101710 + + + + + diff --git a/pos_transfer_account/demo/pos_config.xml b/pos_transfer_account/demo/pos_config.xml new file mode 100644 index 00000000..edfefa2b --- /dev/null +++ b/pos_transfer_account/demo/pos_config.xml @@ -0,0 +1,13 @@ + + + + + Point Of Sale with Specific Transfer Account + + + + + + + + diff --git a/pos_transfer_account/i18n/fr.po b/pos_transfer_account/i18n/fr.po new file mode 100644 index 00000000..78b047b1 --- /dev/null +++ b/pos_transfer_account/i18n/fr.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_transfer_account +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-16 13:34+0000\n" +"PO-Revision-Date: 2016-05-16 13:34+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: pos_transfer_account +#: model:ir.model.fields,field_description:pos_transfer_account.field_pos_config_transfer_account_id +msgid "Transfer Account" +msgstr "Compte de transferts" + +#. module: pos_transfer_account +#: model:ir.model,name:pos_transfer_account.model_cash_box_in +msgid "cash.box.in" +msgstr "cash.box.in" + +#. module: pos_transfer_account +#: model:ir.model,name:pos_transfer_account.model_cash_box_out +msgid "cash.box.out" +msgstr "cash.box.out" + +#. module: pos_transfer_account +#: model:ir.model,name:pos_transfer_account.model_pos_config +msgid "pos.config" +msgstr "pos.config" + diff --git a/pos_transfer_account/i18n/pos_transfer_account.pot b/pos_transfer_account/i18n/pos_transfer_account.pot new file mode 100644 index 00000000..cb503944 --- /dev/null +++ b/pos_transfer_account/i18n/pos_transfer_account.pot @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_transfer_account +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-05-16 13:35+0000\n" +"PO-Revision-Date: 2016-05-16 13:35+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: pos_transfer_account +#: model:ir.model.fields,field_description:pos_transfer_account.field_pos_config_transfer_account_id +msgid "Transfer Account" +msgstr "" + +#. module: pos_transfer_account +#: model:ir.model,name:pos_transfer_account.model_cash_box_in +msgid "cash.box.in" +msgstr "" + +#. module: pos_transfer_account +#: model:ir.model,name:pos_transfer_account.model_cash_box_out +msgid "cash.box.out" +msgstr "" + +#. module: pos_transfer_account +#: model:ir.model,name:pos_transfer_account.model_pos_config +msgid "pos.config" +msgstr "" + diff --git a/pos_transfer_account/models/__init__.py b/pos_transfer_account/models/__init__.py new file mode 100644 index 00000000..2d604a63 --- /dev/null +++ b/pos_transfer_account/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +from . import pos_config +from . import cash_box_in +from . import cash_box_out diff --git a/pos_transfer_account/models/cash_box_in.py b/pos_transfer_account/models/cash_box_in.py new file mode 100644 index 00000000..8a20db33 --- /dev/null +++ b/pos_transfer_account/models/cash_box_in.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2016-Today: La Louve () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + + +from openerp import api + +from openerp.addons.account.wizard.pos_box import CashBox + + +class CashBoxIn(CashBox): + _inherit = 'cash.box.in' + + @api.one + def _calculate_values_for_statement_line(self, record): + session_obj = self.env['pos.session'] + active_model = self._context.get('active_model', False) + active_ids = self._context.get('active_ids', []) + + # Call with [0] because new api.one func calls old api func + res = super(CashBoxIn, self)._calculate_values_for_statement_line( + record)[0] + + if active_model == 'pos.session': + session = session_obj.browse(active_ids[0]) + if session.config_id.transfer_account_id: + res['account_id'] =\ + session.config_id.transfer_account_id.id + + return res diff --git a/pos_transfer_account/models/cash_box_out.py b/pos_transfer_account/models/cash_box_out.py new file mode 100644 index 00000000..47ccea4d --- /dev/null +++ b/pos_transfer_account/models/cash_box_out.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2016-Today: La Louve () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + + +from openerp import api + +from openerp.addons.account.wizard.pos_box import CashBox + + +class CashBoxOut(CashBox): + _inherit = 'cash.box.out' + + @api.one + def _calculate_values_for_statement_line(self, record): + session_obj = self.env['pos.session'] + active_model = self._context.get('active_model', False) + active_ids = self._context.get('active_ids', []) + + # Call with [0] because new api.one func calls old api func + res = super(CashBoxOut, self)._calculate_values_for_statement_line( + record)[0] + + if active_model == 'pos.session': + session = session_obj.browse(active_ids[0]) + if session.config_id.transfer_account_id: + res['account_id'] =\ + session.config_id.transfer_account_id.id + + return res diff --git a/pos_transfer_account/models/pos_config.py b/pos_transfer_account/models/pos_config.py new file mode 100644 index 00000000..b6aac3b5 --- /dev/null +++ b/pos_transfer_account/models/pos_config.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2016-Today: La Louve () +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + + +from openerp import fields, models + + +class PosConfig(models.Model): + _inherit = 'pos.config' + + transfer_account_id = fields.Many2one( + comodel_name='account.account', string='Transfer Account') diff --git a/pos_transfer_account/static/description/icon.png b/pos_transfer_account/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..769e99823a9805bdbfe2b6c41433761a88ae934f GIT binary patch literal 4721 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 + + + + + + pos.config + + + + + + + + +