2
0

account_cash_deposit: add support for loose coins in deposits

Adds a new field for loose coin amount for deposits: this field is useful if your bank has a coin counting machine that allows you to deposit coins without putting them in rolls.
This commit is contained in:
Alexis de Lattre 2022-05-17 19:56:01 +02:00
parent e448e08371
commit 665fb16693
3 changed files with 24 additions and 3 deletions

View File

@ -98,6 +98,16 @@ class AccountCashDeposit(models.Model):
states={"draft": [("readonly", "=", False)]},
tracking=True,
)
coin_amount = fields.Monetary(
string="Loose Coin Amount",
currency_field="currency_id",
readonly=True,
states={"draft": [("readonly", "=", False)]},
tracking=True,
help="If your bank has a coin counting machine, enter the total amount "
"of coins counted by the machine instead of creating a line for each type "
"of coin.",
)
total_amount = fields.Monetary(
compute="_compute_total_amount",
string="Total Amount",
@ -115,7 +125,12 @@ class AccountCashDeposit(models.Model):
"name_company_unique",
"unique(company_id, name)",
"A cash deposit/order with this reference already exists in this company.",
)
),
(
"coin_amount_positive",
"CHECK(coin_amount >= 0)",
"The loose coin amount must be positive or null.",
),
]
@api.constrains("cash_journal_id", "currency_id")
@ -189,7 +204,7 @@ class AccountCashDeposit(models.Model):
)
mapped_data = {x["parent_id"][0]: x["subtotal"] for x in rg_res}
for rec in self:
rec.total_amount = mapped_data.get(rec.id, 0)
rec.total_amount = mapped_data.get(rec.id, 0) + rec.coin_amount
@api.depends("move_id.line_ids.reconciled", "company_id")
def _compute_is_reconcile(self):

View File

@ -93,6 +93,7 @@ class TestAccountCashDeposit(TransactionCase):
self.assertEqual(order.move_id.ref, order.display_name)
def test_cash_deposit(self):
coin_amount = 12.42
deposit = (
self.env["account.cash.deposit"]
.with_context(default_operation_type="deposit")
@ -102,6 +103,7 @@ class TestAccountCashDeposit(TransactionCase):
"currency_id": self.currency.id,
"cash_journal_id": self.cash_journal.id,
"bank_journal_id": self.bank_journal.id,
"coin_amount": coin_amount,
"line_ids": [
(0, 0, {"cash_unit_id": self.cash_unit_note.id, "qty": 3}),
(0, 0, {"cash_unit_id": self.cash_unit_coinroll.id, "qty": 6}),
@ -116,7 +118,7 @@ class TestAccountCashDeposit(TransactionCase):
total = (
3 * self.cash_unit_note.total_value
+ 6 * self.cash_unit_coinroll.total_value
)
) + coin_amount
self.assertFalse(
deposit.currency_id.compare_amounts(deposit.total_amount, total)
)

View File

@ -68,6 +68,10 @@
/>
<field name="cash_journal_id" />
<field name="bank_journal_id" />
<field
name="coin_amount"
attrs="{'invisible': [('operation_type', '!=', 'deposit')]}"
/>
</group>
<group name="right">
<field name="total_amount" />