diff --git a/pos_statement_closing_balance/__manifest__.py b/pos_statement_closing_balance/__manifest__.py
index 84cb0a00..5d914e49 100644
--- a/pos_statement_closing_balance/__manifest__.py
+++ b/pos_statement_closing_balance/__manifest__.py
@@ -11,7 +11,7 @@
'website': 'http://www.github.com/OCA/pos',
'license': 'AGPL-3',
'depends': [
- 'pos_cash_box_journal',
+ 'pos_cash_move_reason',
],
'data': [
'wizards/pos_update_statement_closing_balance.xml',
diff --git a/pos_statement_closing_balance/models/account_journal.py b/pos_statement_closing_balance/models/account_journal.py
index 42d46017..816f292c 100644
--- a/pos_statement_closing_balance/models/account_journal.py
+++ b/pos_statement_closing_balance/models/account_journal.py
@@ -8,3 +8,7 @@ class AccountJournal(models.Model):
pos_control_ending_balance = fields.Boolean(
'Control ending balance in POS')
+ pos_move_reason_id = fields.Many2one(
+ string='Default reason POS adjustments',
+ comodel_name='pos.move.reason',
+ )
diff --git a/pos_statement_closing_balance/models/pos_session.py b/pos_statement_closing_balance/models/pos_session.py
index 4e2e24ef..4f077e12 100644
--- a/pos_statement_closing_balance/models/pos_session.py
+++ b/pos_statement_closing_balance/models/pos_session.py
@@ -1,6 +1,6 @@
# Copyright 2020 ForgeFlow, S.L.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
-from odoo import api, fields, models, _
+from odoo import api, models, _
from odoo.exceptions import ValidationError
diff --git a/pos_statement_closing_balance/readme/CONFIGURATION.rst b/pos_statement_closing_balance/readme/CONFIGURATION.rst
index e305b792..a25ad09a 100644
--- a/pos_statement_closing_balance/readme/CONFIGURATION.rst
+++ b/pos_statement_closing_balance/readme/CONFIGURATION.rst
@@ -1,3 +1,4 @@
* Go to *Invoicing > Configuration > Journals* and set, for each Journal
that will be used in the POS, the flag 'Control ending balance in POS' if
- you expect users to enter the ending balance.
+ you expect users to enter the ending balance, and enter the default POS
+ move reason to be used in the adjustment.
diff --git a/pos_statement_closing_balance/tests/test_pos_statement_closing_balance.py b/pos_statement_closing_balance/tests/test_pos_statement_closing_balance.py
index e9d551f6..4279d262 100644
--- a/pos_statement_closing_balance/tests/test_pos_statement_closing_balance.py
+++ b/pos_statement_closing_balance/tests/test_pos_statement_closing_balance.py
@@ -8,28 +8,47 @@ class TestPosStatementClosingBalance(TransactionCase):
def setUp(self):
super(TestPosStatementClosingBalance, self).setUp()
self.pos_config = self.env["pos.config"].create({"name": "PoS config"})
- bank_journal = self.env["account.journal"].create({
+ self.wizard_reason = self.env['wizard.pos.move.reason']
+ account = self.env['account.account'].create({
+ 'code': '9999',
+ 'name': 'Test',
+ 'user_type_id': self.env.ref(
+ "account.data_account_type_liquidity").id
+ })
+ self.bank_journal = self.env["account.journal"].create({
"name": "Test bank",
"code": "TB1",
"type": "bank",
"pos_control_ending_balance": True,
})
- self.pos_config.journal_ids += bank_journal
+ self.pos_move_reason = self.env['pos.move.reason'].create({
+ 'name': 'Bank closing reason',
+ 'is_income_reason': True,
+ 'is_expense_reason': True,
+ 'expense_account_id': account.id,
+ 'income_account_id': account.id,
+ 'journal_ids': self.bank_journal.ids,
+ 'company_id': self.env.ref('base.main_company').id,
+ })
+ self.bank_journal.pos_move_reason_id = self.pos_move_reason
+ self.pos_config.journal_ids += self.bank_journal
self.pos_config.open_session_cb()
self.session = self.pos_config.current_session_id
self.session.action_pos_session_open()
def test_wizard(self):
journal = self.session.journal_ids.filtered(lambda j: j.code == 'TB1')
- wizard = (
- self.env["cash.box.journal.in"]
- .with_context(
- active_model="pos.session", active_ids=self.session.ids
- )
- .create({"amount": 10, "name": "Out"})
- )
- wizard.journal_id = journal
- wizard.run()
+ wizard = self.wizard_reason.with_context(
+ active_id=self.session.id,
+ default_move_type='income').create({
+ 'move_reason_id': self.pos_move_reason.id,
+ 'journal_id': self.bank_journal.id,
+ 'statement_id': self.session.statement_ids.filtered(
+ lambda s: s.journal_id == self.bank_journal).id,
+ 'amount': 10,
+ 'name': 'Test Bank Deposit',
+ })
+ wizard.apply()
self.assertEqual(
self.session.statement_ids.filtered(
lambda r: r.journal_id.id == journal.id
diff --git a/pos_statement_closing_balance/views/account_journal_views.xml b/pos_statement_closing_balance/views/account_journal_views.xml
index 675b8417..4f1bd596 100644
--- a/pos_statement_closing_balance/views/account_journal_views.xml
+++ b/pos_statement_closing_balance/views/account_journal_views.xml
@@ -6,7 +6,8 @@
-
+
+
diff --git a/pos_statement_closing_balance/wizards/pos_update_statement_closing_balance.py b/pos_statement_closing_balance/wizards/pos_update_statement_closing_balance.py
index db6e4e6c..7e6b58b0 100644
--- a/pos_statement_closing_balance/wizards/pos_update_statement_closing_balance.py
+++ b/pos_statement_closing_balance/wizards/pos_update_statement_closing_balance.py
@@ -26,6 +26,7 @@ class POSBankStatementUpdateClosingBalance(models.TransientModel):
"balance_start": statement.balance_start,
"total_entry_encoding": statement.total_entry_encoding,
"currency_id": statement.currency_id.id,
+ "pos_move_reason_id": statement.journal_id.pos_move_reason_id.id,
}
@api.model
@@ -53,11 +54,13 @@ class POSBankStatementUpdateClosingBalance(models.TransientModel):
return res
@api.model
- def _prepare_cash_box_journal(self, item):
+ def _prepare_wizard_pos_move_reason(self, item):
return {
+ 'move_reason_id':
+ item.statement_id.journal_id.pos_move_reason_id.id,
'amount': abs(item.difference),
- 'name': _('Out'),
- "journal_id": item.journal_id.id,
+ 'journal_id': item.journal_id.id,
+ 'name': _("Ending balance adjustment")
}
@api.multi
@@ -66,17 +69,19 @@ class POSBankStatementUpdateClosingBalance(models.TransientModel):
for item in self.item_ids:
if item.difference:
if item.difference > 0.0:
- model = "cash.box.journal.in"
+ default_move_type = "income"
else:
- model = "cash.box.journal.out"
+ default_move_type = "expense"
wizard = (
- self.env[model]
+ self.env["wizard.pos.move.reason"]
.with_context(
active_model="pos.session",
- active_ids=self.session_id.ids
- ).create(self._prepare_cash_box_journal(item))
+ active_ids=self.session_id.ids,
+ active_id=self.session_id.id,
+ default_move_type=default_move_type,
+ ).create(self._prepare_wizard_pos_move_reason(item))
)
- wizard.run()
+ wizard.apply()
item.statement_id.balance_end_real = item.balance_end_real
return True
@@ -112,6 +117,10 @@ class BankStatementLineUpdateEndingBalanceLine(models.TransientModel):
comodel_name='res.currency',
related='statement_id.currency_id'
)
+ pos_move_reason_id = fields.Many2one(
+ comodel_name='pos.move.reason',
+ string='Reason',
+ )
def _compute_balance_end(self):
for rec in self:
diff --git a/pos_statement_closing_balance/wizards/pos_update_statement_closing_balance.xml b/pos_statement_closing_balance/wizards/pos_update_statement_closing_balance.xml
index 74c79c9f..89fbdbc6 100644
--- a/pos_statement_closing_balance/wizards/pos_update_statement_closing_balance.xml
+++ b/pos_statement_closing_balance/wizards/pos_update_statement_closing_balance.xml
@@ -14,6 +14,7 @@
+