diff --git a/pos_cash_move_reason/__openerp__.py b/pos_cash_move_reason/__openerp__.py index 8bc37a59..0ba02fdf 100644 --- a/pos_cash_move_reason/__openerp__.py +++ b/pos_cash_move_reason/__openerp__.py @@ -5,10 +5,11 @@ 'name': "POS cash in-out reason", 'summary': """""", 'author': 'ACSONE SA/NV,' + 'GRAP,' 'Odoo Community Association (OCA)', 'website': "http://acsone.eu", 'category': 'POS', - 'version': '8.0.1.0.0', + 'version': '8.0.2.0.0', 'license': 'AGPL-3', 'depends': [ 'point_of_sale', @@ -16,4 +17,7 @@ 'data': [ 'wizard/pos_box.xml', ], + 'demo': [ + 'demo/product_template.xml', + ], } diff --git a/pos_cash_move_reason/demo/product_template.xml b/pos_cash_move_reason/demo/product_template.xml new file mode 100644 index 00000000..b79bdf11 --- /dev/null +++ b/pos_cash_move_reason/demo/product_template.xml @@ -0,0 +1,21 @@ + + + + + + Miscellaneous income + + + + + + Miscellaneous expense + + + + + diff --git a/pos_cash_move_reason/i18n/fr.po b/pos_cash_move_reason/i18n/fr.po index 10297c0d..dfba2deb 100644 --- a/pos_cash_move_reason/i18n/fr.po +++ b/pos_cash_move_reason/i18n/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-04-12 11:10+0000\n" -"PO-Revision-Date: 2016-04-12 11:10+0000\n" +"POT-Creation-Date: 2018-02-15 13:30+0000\n" +"PO-Revision-Date: 2018-02-15 13:30+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "Language: \n" @@ -18,31 +18,35 @@ msgstr "" #. module: pos_cash_move_reason #: code:addons/pos_cash_move_reason/wizard/pos_box.py:36 +#: code:addons/pos_cash_move_reason/wizard/pos_box.py:39 #, python-format msgid "Description" msgstr "Description" #. module: pos_cash_move_reason -#: field:cash.box.in,product_id:0 field:cash.box.out,product_id:0 +#: model:product.template,name:pos_cash_move_reason.expense_reason +msgid "Miscellaneous expense" +msgstr "Dépense diverse" + +#. module: pos_cash_move_reason +#: model:product.template,name:pos_cash_move_reason.income_reason +msgid "Miscellaneous income" +msgstr "Revenu divers" + +#. module: pos_cash_move_reason +#: field:cash.box.in,product_id:0 +#: field:cash.box.out,product_id:0 msgid "Reason" msgstr "Motif" #. module: pos_cash_move_reason -#: code:addons/pos_cash_move_reason/wizard/pos_box.py:84 +#: code:addons/pos_cash_move_reason/wizard/pos_box.py:62 #, python-format -msgid "" -"You have to define an\n" -" expense account on the related product" -msgstr "" -"Vous devez définir un\n" -" compte de charge sur le produit lié" +msgid "You have to define an expense account on the related product %s" +msgstr "Vous devez définir un compte de charge sur le produit lié %s" #. module: pos_cash_move_reason -#: code:addons/pos_cash_move_reason/wizard/pos_box.py:60 +#: code:addons/pos_cash_move_reason/wizard/pos_box.py:55 #, python-format -msgid "" -"You have to define an\n" -" income account on the related product" -msgstr "" -"Vous devez définir un\n" -" compte de produit sur le produit lié" +msgid "You have to define an income account on the related product %s" +msgstr "Vous devez définir un compte de produit sur le produit lié %s" diff --git a/pos_cash_move_reason/i18n/pos_cash_move_reason.pot b/pos_cash_move_reason/i18n/pos_cash_move_reason.pot index 904a152e..fc83a25f 100644 --- a/pos_cash_move_reason/i18n/pos_cash_move_reason.pot +++ b/pos_cash_move_reason/i18n/pos_cash_move_reason.pot @@ -6,6 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-15 13:46+0000\n" +"PO-Revision-Date: 2018-02-15 13:46+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -14,11 +16,21 @@ msgstr "" "Plural-Forms: \n" #. module: pos_cash_move_reason -#: code:addons/pos_cash_move_reason/wizard/pos_box.py:36 +#: code:addons/pos_cash_move_reason/wizard/pos_box.py:39 #, python-format msgid "Description" msgstr "" +#. module: pos_cash_move_reason +#: model:product.template,name:pos_cash_move_reason.expense_reason +msgid "Miscellaneous expense" +msgstr "" + +#. module: pos_cash_move_reason +#: model:product.template,name:pos_cash_move_reason.income_reason +msgid "Miscellaneous income" +msgstr "" + #. module: pos_cash_move_reason #: field:cash.box.in,product_id:0 #: field:cash.box.out,product_id:0 @@ -26,16 +38,14 @@ msgid "Reason" msgstr "" #. module: pos_cash_move_reason -#: code:addons/pos_cash_move_reason/wizard/pos_box.py:84 +#: code:addons/pos_cash_move_reason/wizard/pos_box.py:62 #, python-format -msgid "You have to define an\n" -" expense account on the related product" +msgid "You have to define an expense account on the related product %s" msgstr "" #. module: pos_cash_move_reason -#: code:addons/pos_cash_move_reason/wizard/pos_box.py:60 +#: code:addons/pos_cash_move_reason/wizard/pos_box.py:55 #, python-format -msgid "You have to define an\n" -" income account on the related product" +msgid "You have to define an income account on the related product %s" msgstr "" diff --git a/pos_cash_move_reason/tests/test_pos_cash_move_reason.py b/pos_cash_move_reason/tests/test_pos_cash_move_reason.py index dd56136b..ecf0da07 100644 --- a/pos_cash_move_reason/tests/test_pos_cash_move_reason.py +++ b/pos_cash_move_reason/tests/test_pos_cash_move_reason.py @@ -18,13 +18,11 @@ class TestPosCashMoveReason(common.TransactionCase): self.cash_journal = self.env.ref('account.cash_journal') self.income_account = self.env.ref('account.o_income') self.expense_account = self.env.ref('account.a_expense') + self.income_reason = self.env.ref('pos_cash_move_reason.income_reason') + self.expense_reason = self.env.ref( + 'pos_cash_move_reason.expense_reason') def test01(self): - # I create one move reason - vals = {'name': 'Miscellaneous income', - 'property_account_income': self.income_account.id, - 'income_pdt': True} - move_reason = self.cash_move_reason_obj.create(vals) # I set cash control on cash journal self.cash_journal.cash_control = True # I create and open a new session @@ -44,7 +42,7 @@ class TestPosCashMoveReason(common.TransactionCase): # I create a cash in cash_in = self.cash_in_obj.with_context(ctx).create( {'name': 'Initialization', - 'product_id': move_reason.id, + 'product_id': self.income_reason.id, 'amount': 500.0}) cash_in.with_context(ctx).run() # I close the session @@ -63,11 +61,6 @@ class TestPosCashMoveReason(common.TransactionCase): self.assertEquals(len(move_line.ids), 1) def test02(self): - # I create one move reason - vals = {'name': 'Miscellaneous expense', - 'property_account_expense': self.expense_account.id, - 'expense_pdt': True} - move_reason = self.cash_move_reason_obj.create(vals) # I set cash control on cash journal self.cash_journal.cash_control = True # I create and open a new session @@ -87,7 +80,7 @@ class TestPosCashMoveReason(common.TransactionCase): # I create a cash out cash_out = self.cash_out_obj.with_context(ctx).create( {'name': 'Miscellaneous expense', - 'product_id': move_reason.id, + 'product_id': self.expense_reason.id, 'amount': 500.0}) cash_out.with_context(ctx).run() # I close the session diff --git a/pos_cash_move_reason/wizard/pos_box.py b/pos_cash_move_reason/wizard/pos_box.py index 0dde7aaa..bc09f5cf 100644 --- a/pos_cash_move_reason/wizard/pos_box.py +++ b/pos_cash_move_reason/wizard/pos_box.py @@ -12,6 +12,9 @@ import simplejson class PosBoxCashMoveReason(PosBox): _register = False + product_id = fields.Many2one( + comodel_name='product.template', string='Reason') + @api.onchange('product_id') def onchange_reason(self): for record in self: @@ -37,50 +40,36 @@ class PosBoxCashMoveReason(PosBox): res['arch'] = etree.tostring(doc) return res - -class PosBoxIn(PosBoxCashMoveReason): - _inherit = 'cash.box.in' - - product_id = fields.Many2one( - comodel_name='product.template', string='Reason', - domain="[('income_pdt', '=', True)]") - @api.model def _compute_values_for_statement_line(self, box, record): - values = super(PosBoxIn, self)._compute_values_for_statement_line( - box, record) + values = super( + PosBoxCashMoveReason, self)._compute_values_for_statement_line( + box, record) if self.env.context.get('active_model', '') == 'pos.session': - if box.product_id.id: - product = box.product_id + product = box.product_id + account_id = False + if self._name == 'cash.box.in': account_id = product.property_account_income.id or\ product.categ_id.property_account_income_categ.id - if account_id: - values['account_id'] = account_id - else: - raise exceptions.Warning(_("""You have to define an - income account on the related product""")) + if not account_id: + raise exceptions.Warning(_( + "You have to define an income account on the related" + " product %s") % (product.name)) + elif self._name == 'cash.box.out': + account_id = product.property_account_expense.id or\ + product.categ_id.property_account_expense_categ.id + if not account_id: + raise exceptions.Warning(_( + "You have to define an expense account on the related" + " product %s") % (product.name)) + values['account_id'] = account_id return values -class PosBoxOut(PosBoxCashMoveReason): - _inherit = 'cash.box.out' +# the following lines are required for correct inheritance mechanism +class PosBoxIn(PosBoxCashMoveReason): + _inherit = 'cash.box.in' - product_id = fields.Many2one( - comodel_name='product.template', string='Reason', - domain="[('expense_pdt', '=', True)]") - @api.model - def _compute_values_for_statement_line(self, box, record): - values = super(PosBoxOut, self)._compute_values_for_statement_line( - box, record) - if self.env.context.get('active_model', '') == 'pos.session': - if box.product_id.id: - product = box.product_id - account_id = product.property_account_expense.id or\ - product.categ_id.property_account_expense_categ.id - if account_id: - values['account_id'] = account_id - else: - raise exceptions.Warning(_("""You have to define an - expense account on the related product""")) - return values +class PosBoxOut(PosBoxCashMoveReason): + _inherit = 'cash.box.out' diff --git a/pos_cash_move_reason/wizard/pos_box.xml b/pos_cash_move_reason/wizard/pos_box.xml index ffcf7d7a..dcb0e823 100644 --- a/pos_cash_move_reason/wizard/pos_box.xml +++ b/pos_cash_move_reason/wizard/pos_box.xml @@ -1,26 +1,26 @@ - - - - cash.box.in.form - cash.box.in - - - - - - - + - - cash.box.out.form - cash.box.out - - - - - - - - - + + cash.box.in + + + + + + + + + + cash.box.out + + + + + + + + +