commit
a6232a6b32
105
account_cash_deposit/README.rst
Normal file
105
account_cash_deposit/README.rst
Normal file
@ -0,0 +1,105 @@
|
||||
====================
|
||||
Account Cash Deposit
|
||||
====================
|
||||
|
||||
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
||||
:target: https://odoo-community.org/page/development-status
|
||||
:alt: Beta
|
||||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--financial--tools-lightgray.png?logo=github
|
||||
:target: https://github.com/OCA/account-financial-tools/tree/14.0/account_cash_deposit
|
||||
:alt: OCA/account-financial-tools
|
||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||
:target: https://translation.odoo-community.org/projects/account-financial-tools-14-0/account-financial-tools-14-0-account_cash_deposit
|
||||
:alt: Translate me on Weblate
|
||||
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
|
||||
:target: https://runbot.odoo-community.org/runbot/92/14.0
|
||||
:alt: Try me on Runbot
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
|
||||
This module adds support for **cash deposits at the bank**. It also supports the other way around: **ordering cash at the bank**. It allows to declare the kind of cash you want to deposit (or order): bank notes, coins and coin rolls and the quantity for each of them. Coins are rarely used, because most banks only allow to deposit/order coin rolls.
|
||||
|
||||
**Table of contents**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
First, for each currency of your cash boxes, you must define the bank notes and coin rolls for that currency (coin rolls are often standardised by the Central Bank). You can also definie the coins, but it's not useful if your bank only accept coin rolls and not coins.
|
||||
|
||||
.. figure:: https://raw.githubusercontent.com/OCA/account-financial-tools/14.0/account_cash_deposit/static/description/currency_form_view.png
|
||||
:scale: 100 %
|
||||
:alt: Currency form view
|
||||
|
||||
To save time for new users, this module provides the bank notes, coins and coin rolls for several currencies (EUR, USD, CAD, etc.). If it is not the case for your currency, it would be very nice of you to contribute it (you can use the file *account_cash_deposit/data/cash_unit_eur.xml* as an example).
|
||||
|
||||
To save time when encoding the cash deposits/orders, you can set the parameter *Auto Create* on the bank notes and/or coin rolls that you use very often.
|
||||
|
||||
On the Accounting configuration page, in the section *Bank & Cash*, the *Inter-Banks Transfer Account* must be configured.
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
To create a new cash **deposit**, go to the menu *Invoicing > Accounting > Miscellaneous > Cash Deposits* and click on *Create*: select the currency, the cash box from which you will take the cash out and the bank journal corresponding to the bank account on which you want to deposit the cash. Then create/edit lines to enter the quantity for each kind of bank note and coin rolls. Then, you can print a PDF report designed to be a kind of delivery report for the cash. Upon validation, Odoo will generate a journal entry in the cash journal that:
|
||||
|
||||
* credits the cash account,
|
||||
* debits the inter-banks transfer account.
|
||||
|
||||
.. figure:: https://raw.githubusercontent.com/OCA/account-financial-tools/14.0/account_cash_deposit/static/description/cash_deposit_form.png
|
||||
:scale: 100 %
|
||||
:alt: Cash Deposit form view
|
||||
|
||||
The process is very similar when **ordering** cash but you have to use another menu entry: menu *Invoicing > Accounting > Miscellaneous > Cash Orders*. Select the currency, the cash box that will receive the cash and the bank account from which the bank will take the money. Create/edit lines to enter the details of your order (bank notes, coin rolls). Then, you can confirm the order and print a PDF report designed to be sent to your bank as a cash order. Eventually, when the bank delivers the cash to you, you should validate the cash order and Odoo will generate a journal entry in the cash journal that:
|
||||
|
||||
* debits the cash account,
|
||||
* credits the inter-banks transfer account.
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-financial-tools/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 <https://github.com/OCA/account-financial-tools/issues/new?body=module:%20account_cash_deposit%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Authors
|
||||
~~~~~~~
|
||||
|
||||
* Akretion
|
||||
|
||||
Contributors
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
|
||||
Maintainers
|
||||
~~~~~~~~~~~
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
.. image:: https://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: https://odoo-community.org
|
||||
|
||||
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.
|
||||
|
||||
This module is part of the `OCA/account-financial-tools <https://github.com/OCA/account-financial-tools/tree/14.0/account_cash_deposit>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
2
account_cash_deposit/__init__.py
Normal file
2
account_cash_deposit/__init__.py
Normal file
@ -0,0 +1,2 @@
|
||||
from . import models
|
||||
from . import wizards
|
30
account_cash_deposit/__manifest__.py
Normal file
30
account_cash_deposit/__manifest__.py
Normal file
@ -0,0 +1,30 @@
|
||||
# Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
{
|
||||
"name": "Account Cash Deposit",
|
||||
"version": "16.0.1.0.0",
|
||||
"category": "Accounting",
|
||||
"license": "AGPL-3",
|
||||
"summary": "Manage cash deposits and cash orders",
|
||||
"author": "Akretion, Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/account-financial-tools",
|
||||
"depends": ["account"],
|
||||
"data": [
|
||||
"security/ir.model.access.csv",
|
||||
"security/security.xml",
|
||||
"wizards/account_cash_order_reception_view.xml",
|
||||
"data/sequence.xml",
|
||||
"data/cash_unit_eur.xml",
|
||||
"data/cash_unit_usd.xml",
|
||||
"data/cash_unit_chf.xml",
|
||||
"data/cash_unit_cad.xml",
|
||||
"views/account_cash_deposit.xml",
|
||||
"views/cash_unit.xml",
|
||||
"views/res_currency.xml",
|
||||
"report/report.xml",
|
||||
"report/report_cashdeposit.xml",
|
||||
],
|
||||
"installable": True,
|
||||
}
|
96
account_cash_deposit/data/cash_unit_cad.xml
Normal file
96
account_cash_deposit/data/cash_unit_cad.xml
Normal file
@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
<odoo noupdate="1">
|
||||
|
||||
<record id="cad_note_100" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">100</field>
|
||||
</record>
|
||||
<record id="cad_note_50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">50</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="cad_note_20" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">20</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="cad_note_10" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">10</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="cad_note_5" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">5</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="cad_coin_2" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">2</field>
|
||||
</record>
|
||||
<record id="cad_coin_1" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">1</field>
|
||||
</record>
|
||||
<record id="cad_coin_cents_25" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.25</field>
|
||||
</record>
|
||||
<record id="cad_coin_cents_10" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.1</field>
|
||||
</record>
|
||||
<record id="cad_coin_cents_5" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.05</field>
|
||||
</record>
|
||||
<!-- Info source for coin rolls:
|
||||
https://en.wikipedia.org/wiki/Coin_wrapper#Canada
|
||||
-->
|
||||
<record id="cad_coinroll_2x25" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">2</field>
|
||||
<field name="coinroll_qty">25</field>
|
||||
</record>
|
||||
<record id="cad_coinroll_1x25" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">1</field>
|
||||
<field name="coinroll_qty">25</field>
|
||||
</record>
|
||||
<record id="cad_coinroll_cents_25x40" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.25</field>
|
||||
<field name="coinroll_qty">40</field>
|
||||
</record>
|
||||
<record id="cad_coinroll_cents_10x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.1</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="cad_coinroll_cents_5x40" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CAD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.05</field>
|
||||
<field name="coinroll_qty">40</field>
|
||||
</record>
|
||||
</odoo>
|
122
account_cash_deposit/data/cash_unit_chf.xml
Normal file
122
account_cash_deposit/data/cash_unit_chf.xml
Normal file
@ -0,0 +1,122 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
<odoo noupdate="1">
|
||||
|
||||
<record id="chf_note_1000" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">1000</field>
|
||||
</record>
|
||||
<record id="chf_note_200" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">200</field>
|
||||
</record>
|
||||
<record id="chf_note_100" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">100</field>
|
||||
</record>
|
||||
<record id="chf_note_50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">50</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="chf_note_20" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">20</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="chf_note_10" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">10</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="chf_coin_5" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">5</field>
|
||||
</record>
|
||||
<record id="chf_coin_2" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">2</field>
|
||||
</record>
|
||||
<record id="chf_coin_1" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">1</field>
|
||||
</record>
|
||||
<record id="chf_coin_cents_50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.5</field>
|
||||
</record>
|
||||
<record id="chf_coin_cents_20" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.2</field>
|
||||
</record>
|
||||
<record id="chf_coin_cents_10" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.1</field>
|
||||
</record>
|
||||
<record id="chf_coin_cents_5" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.05</field>
|
||||
</record>
|
||||
<!-- Info source for coin rolls:
|
||||
https://www.snb.ch/fr/mmr/reference/coin_deliveries/source/coin_deliveries.fr.pdf -->
|
||||
<record id="chf_coinroll_5x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">5</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="chf_coinroll_2x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">2</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="chf_coinroll_1x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">1</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="chf_coinroll_cents_50x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.5</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="chf_coinroll_cents_20x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.2</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="chf_coinroll_cents_10x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.1</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="chf_coinroll_cents_5x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.CHF" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.05</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
139
account_cash_deposit/data/cash_unit_eur.xml
Normal file
139
account_cash_deposit/data/cash_unit_eur.xml
Normal file
@ -0,0 +1,139 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
<odoo noupdate="1">
|
||||
|
||||
<record id="eur_note_500" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">500</field>
|
||||
</record>
|
||||
<record id="eur_note_200" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">200</field>
|
||||
</record>
|
||||
<record id="eur_note_100" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">100</field>
|
||||
</record>
|
||||
<record id="eur_note_50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">50</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="eur_note_20" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">20</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="eur_note_10" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">10</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="eur_note_5" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">5</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="eur_coin_2" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">2</field>
|
||||
</record>
|
||||
<record id="eur_coin_1" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">1</field>
|
||||
</record>
|
||||
<record id="eur_coin_cents_50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.5</field>
|
||||
</record>
|
||||
<record id="eur_coin_cents_20" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.2</field>
|
||||
</record>
|
||||
<record id="eur_coin_cents_10" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.1</field>
|
||||
</record>
|
||||
<record id="eur_coin_cents_5" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.05</field>
|
||||
</record>
|
||||
<record id="eur_coin_cents_2" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.02</field>
|
||||
</record>
|
||||
<record id="eur_coin_cents_1" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.01</field>
|
||||
</record>
|
||||
<!-- Info source for coin rolls:
|
||||
https://www.banque-france.fr/sites/default/files/media/2019/07/03/annexe_ndeg3_caracteristiques-des-conditionnements-des-monnaies.pdf -->
|
||||
<record id="eur_coinroll_2x25" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">2</field>
|
||||
<field name="coinroll_qty">25</field>
|
||||
</record>
|
||||
<record id="eur_coinroll_1x25" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">1</field>
|
||||
<field name="coinroll_qty">25</field>
|
||||
</record>
|
||||
<record id="eur_coinroll_cents_50x40" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.5</field>
|
||||
<field name="coinroll_qty">40</field>
|
||||
</record>
|
||||
<record id="eur_coinroll_cents_20x40" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.2</field>
|
||||
<field name="coinroll_qty">40</field>
|
||||
</record>
|
||||
<record id="eur_coinroll_cents_10x40" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.1</field>
|
||||
<field name="coinroll_qty">40</field>
|
||||
</record>
|
||||
<record id="eur_coinroll_cents_5x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.05</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="eur_coinroll_cents_2x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.02</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="eur_coinroll_cents_1x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.EUR" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.01</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
122
account_cash_deposit/data/cash_unit_usd.xml
Normal file
122
account_cash_deposit/data/cash_unit_usd.xml
Normal file
@ -0,0 +1,122 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
<odoo noupdate="1">
|
||||
|
||||
<record id="usd_note_100" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">100</field>
|
||||
</record>
|
||||
<record id="usd_note_50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">50</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="usd_note_20" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">20</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="usd_note_10" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">10</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="usd_note_5" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">5</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="usd_note_2" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">2</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
<record id="usd_note_1" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">note</field>
|
||||
<field name="value">1</field>
|
||||
<field name="auto_create">deposit</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<record id="usd_coin_1" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">1</field>
|
||||
</record>
|
||||
<record id="usd_coin_cents_50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.5</field>
|
||||
</record>
|
||||
<record id="usd_coin_cents_25" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.25</field>
|
||||
</record>
|
||||
<record id="usd_coin_cents_10" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.1</field>
|
||||
</record>
|
||||
<record id="usd_coin_cents_5" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.05</field>
|
||||
</record>
|
||||
<record id="usd_coin_cents_1" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coin</field>
|
||||
<field name="value">0.01</field>
|
||||
</record>
|
||||
<!-- Info source for coin rolls:
|
||||
https://en.wikipedia.org/wiki/Coin_wrapper#United_States -->
|
||||
<record id="usd_coinroll_1x25" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">1</field>
|
||||
<field name="coinroll_qty">25</field>
|
||||
</record>
|
||||
<record id="usd_coinroll_cents_50x20" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.5</field>
|
||||
<field name="coinroll_qty">20</field>
|
||||
</record>
|
||||
<record id="usd_coinroll_cents_25x40" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.25</field>
|
||||
<field name="coinroll_qty">40</field>
|
||||
</record>
|
||||
<record id="usd_coinroll_cents_10x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.1</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
<record id="usd_coinroll_cents_5x40" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.05</field>
|
||||
<field name="coinroll_qty">40</field>
|
||||
</record>
|
||||
<record id="usd_coinroll_cents_1x50" model="cash.unit">
|
||||
<field name="currency_id" ref="base.USD" />
|
||||
<field name="cash_type">coinroll</field>
|
||||
<field name="value">0.01</field>
|
||||
<field name="coinroll_qty">50</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
22
account_cash_deposit/data/sequence.xml
Normal file
22
account_cash_deposit/data/sequence.xml
Normal file
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
<odoo noupdate="1">
|
||||
<record id="account_cash_deposit_sequence" model="ir.sequence">
|
||||
<field name="name">Account Cash Deposit</field>
|
||||
<field name="code">account.cash.deposit</field>
|
||||
<field name="prefix">CASH-DEP-</field>
|
||||
<field name="padding">3</field>
|
||||
<field name="company_id" eval="False" />
|
||||
</record>
|
||||
<record id="account_cash_order_sequence" model="ir.sequence">
|
||||
<field name="name">Account Cash Order</field>
|
||||
<field name="code">account.cash.order</field>
|
||||
<field name="prefix">CASH-ORDER-</field>
|
||||
<field name="padding">3</field>
|
||||
<field name="company_id" eval="False" />
|
||||
</record>
|
||||
</odoo>
|
694
account_cash_deposit/i18n/account_cash_deposit.pot
Normal file
694
account_cash_deposit/i18n/account_cash_deposit.pot
Normal file
@ -0,0 +1,694 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_cash_deposit
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \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: account_cash_deposit
|
||||
#: model:ir.actions.report,print_report_name:account_cash_deposit.report_account_cash_deposit
|
||||
msgid ""
|
||||
"'%s%s' % (object.display_name.replace(' ', '_'), object.state == 'draft' and"
|
||||
" '-draft' or '')"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "<strong>Currency:</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "<strong>Date:</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "<strong>Order Date:</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "<strong>Total:</strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_account_cash_deposit_name_company_unique
|
||||
msgid ""
|
||||
"A cash deposit/order with this reference already exists in this company."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_account_cash_deposit_line_cash_unit_unique
|
||||
msgid "A line already exists for this cash unit."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_ids
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_exception_decoration
|
||||
msgid "Activity Exception Decoration"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_state
|
||||
msgid "Activity State"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_type_icon
|
||||
msgid "Activity Type Icon"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.cash_unit_form
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__auto_create
|
||||
msgid "Auto Create"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Back to Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__bank_journal_id
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Bank Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Bank Account Number to Credit:"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Bank Account Number to Debit:"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Bank:"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__auto_create__both
|
||||
msgid "Both"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_order_reception_form
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__cash_journal_id
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Cash Box"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__operation_type__deposit
|
||||
msgid "Cash Deposit"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model,name:account_cash_deposit.model_account_cash_deposit_line
|
||||
msgid "Cash Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.report,name:account_cash_deposit.report_account_cash_deposit
|
||||
#: model:ir.model,name:account_cash_deposit.model_account_cash_deposit
|
||||
msgid "Cash Deposit/Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.act_window,name:account_cash_deposit.account_cash_deposit_action
|
||||
#: model:ir.ui.menu,name:account_cash_deposit.account_cash_deposit_menu
|
||||
msgid "Cash Deposits"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__order_id
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__operation_type__order
|
||||
msgid "Cash Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.act_window,name:account_cash_deposit.account_cash_order_reception_action
|
||||
#: model:ir.model,name:account_cash_deposit.model_account_cash_order_reception
|
||||
msgid "Cash Order Reception"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.act_window,name:account_cash_deposit.account_cash_order_action
|
||||
#: model:ir.ui.menu,name:account_cash_deposit.account_cash_order_menu
|
||||
msgid "Cash Orders"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Cash Received"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__date
|
||||
msgid "Cash Reception Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.act_window,name:account_cash_deposit.cash_unit_action
|
||||
#: model:ir.model,name:account_cash_deposit.model_cash_unit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__cash_unit_id
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Cash Unit"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_res_currency__cash_unit_ids
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.view_currency_form
|
||||
msgid "Cash Units"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/wizards/account_cash_order_reception.py:0
|
||||
#, python-format
|
||||
msgid "Cash reception confirmed on %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__cash_type__coin
|
||||
msgid "Coin"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__coinroll_qty
|
||||
msgid "Coin Quantity"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__cash_type__coinroll
|
||||
msgid "Coin Roll"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_order_reception_form
|
||||
msgid "Confirm Cash Reception"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Confirm Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__state__confirmed
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Confirmed"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__create_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__create_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__create_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__create_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__create_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__create_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model,name:account_cash_deposit.model_res_currency
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__currency_id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__currency_id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__currency_id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__currency_id
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__date
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__auto_create__deposit
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__display_name
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__display_name
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__display_name
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__display_name
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_res_currency__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__state__done
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__state__draft
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_channel_ids
|
||||
msgid "Followers (Channels)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__activity_type_icon
|
||||
msgid "Font awesome icon e.g. fa-tasks"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/cash_unit.py:0
|
||||
#, python-format
|
||||
msgid "For a coin roll, the coin quantity must be strictly positive."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_res_currency__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_exception_icon
|
||||
msgid "Icon"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__activity_exception_icon
|
||||
msgid "Icon to indicate an exception activity."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_needaction
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_unread
|
||||
msgid "If checked, new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_has_error
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_has_sms_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_cash_unit__auto_create
|
||||
msgid ""
|
||||
"If set, a line for this cash unit will be created by default on a new cash "
|
||||
"deposit or a new cash order or both."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__coin_amount
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_is_follower
|
||||
msgid "Is Follower"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__move_id
|
||||
msgid "Journal Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit____last_update
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line____last_update
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception____last_update
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit____last_update
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_res_currency____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__write_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__write_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__write_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__write_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__write_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__write_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__line_ids
|
||||
msgid "Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__coin_amount
|
||||
msgid "Loose Coin Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_main_attachment_id
|
||||
msgid "Main Attachment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_has_error
|
||||
msgid "Message Delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_ids
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_date_deadline
|
||||
msgid "Next Activity Deadline"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_summary
|
||||
msgid "Next Activity Summary"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_type_id
|
||||
msgid "Next Activity Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__cash_type__note
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__notes
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Notes"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_needaction_counter
|
||||
msgid "Number of Actions"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_has_error_counter
|
||||
msgid "Number of errors"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_needaction_counter
|
||||
msgid "Number of messages which requires an action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_has_error_counter
|
||||
msgid "Number of messages with delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_unread_counter
|
||||
msgid "Number of unread messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"On {deposit}, the cash journal {cash_journal} is not in the selected "
|
||||
"currency {currency}."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__operation_type
|
||||
msgid "Operation Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__auto_create__order
|
||||
msgid "Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__order_date
|
||||
msgid "Order Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__parent_id
|
||||
msgid "Parent"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Print"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__qty
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__is_reconcile
|
||||
msgid "Reconciled"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__name
|
||||
msgid "Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_user_id
|
||||
msgid "Responsible User"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_has_sms_error
|
||||
msgid "SMS Delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__state
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__activity_state
|
||||
msgid ""
|
||||
"Status based on activities\n"
|
||||
"Overdue: Due date is already passed\n"
|
||||
"Today: Activity date is today\n"
|
||||
"Planned: Future activities."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__subtotal
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Subtotal"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid "The %s is not in draft state, so you cannot delete it."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid "The Inter-Banks Transfer Account is not configured."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_cash_unit_coinroll_qty_positive
|
||||
msgid "The coin quantity must be positive."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_account_cash_deposit_coin_amount_positive
|
||||
msgid "The loose coin amount must be positive or null."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_account_cash_deposit_line_qty_positive
|
||||
msgid "The quantity must be positive or null."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_cash_unit_value_positive
|
||||
msgid "The value must be strictly positive."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid "There are no non-zero lines on %s!"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_cash_unit__cash_type
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_cash_unit__coinroll_qty
|
||||
msgid "This field should never be modified."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_cash_unit__value
|
||||
msgid ""
|
||||
"This field should never be modified. For a coin roll, you must enter the "
|
||||
"value of the coin."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__total_amount
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__total_amount
|
||||
msgid "Total Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__total_value
|
||||
msgid "Total Value"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__tree_order
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__tree_order
|
||||
msgid "Tree Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__cash_type
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__activity_exception_decoration
|
||||
msgid "Type of the exception activity on record."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_unread
|
||||
msgid "Unread Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_unread_counter
|
||||
msgid "Unread Messages Counter"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__date
|
||||
msgid "Used as date for the journal entry."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Validate"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__value
|
||||
msgid "Value"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__website_message_ids
|
||||
msgid "Website Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__website_message_ids
|
||||
msgid "Website communication history"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You must delete cash lines that are linked to a currency other than %s."
|
||||
msgstr ""
|
717
account_cash_deposit/i18n/fr.po
Normal file
717
account_cash_deposit/i18n/fr.po
Normal file
@ -0,0 +1,717 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * account_cash_deposit
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-03-03 11:19+0000\n"
|
||||
"PO-Revision-Date: 2022-03-03 11:19+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.report,print_report_name:account_cash_deposit.report_account_cash_deposit
|
||||
msgid ""
|
||||
"'%s%s' % (object.display_name.replace(' ', '_'), object.state == 'draft' and "
|
||||
"'-draft' or '')"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "<strong>Currency:</strong>"
|
||||
msgstr "<strong>Devise :</strong>"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "<strong>Date:</strong>"
|
||||
msgstr "<strong>Date :</strong>"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "<strong>Order Date:</strong>"
|
||||
msgstr "<strong>Date de commande :</strong>"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "<strong>Total:</strong>"
|
||||
msgstr "<strong>Total :</strong>"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_account_cash_deposit_name_company_unique
|
||||
msgid ""
|
||||
"A cash deposit/order with this reference already exists in this company."
|
||||
msgstr ""
|
||||
"Une commande/remise d'espèces existe déjà avec cette référence dans la même "
|
||||
"société."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_account_cash_deposit_line_cash_unit_unique
|
||||
msgid "A line already exists for this cash unit."
|
||||
msgstr "Une ligne existe déjà avec cette unité d'espèces."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_needaction
|
||||
msgid "Action Needed"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__active
|
||||
msgid "Active"
|
||||
msgstr "Actif"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_ids
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_exception_decoration
|
||||
msgid "Activity Exception Decoration"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_state
|
||||
msgid "Activity State"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_type_icon
|
||||
msgid "Activity Type Icon"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.cash_unit_form
|
||||
msgid "Archived"
|
||||
msgstr "Archivé"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_attachment_count
|
||||
msgid "Attachment Count"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__auto_create
|
||||
msgid "Auto Create"
|
||||
msgstr "Création automatique"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Back to Draft"
|
||||
msgstr "Retour en brouillon"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__bank_journal_id
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Bank Account"
|
||||
msgstr "Compte bancaire"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Bank Account Number to Credit:"
|
||||
msgstr "Numéro de compte bancaire à créditer :"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Bank Account Number to Debit:"
|
||||
msgstr "Numéro de compte bancaire à débiter :"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Bank:"
|
||||
msgstr "Banque :"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__auto_create__both
|
||||
msgid "Both"
|
||||
msgstr "Les deux"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_order_reception_form
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__cash_journal_id
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Cash Box"
|
||||
msgstr "Caisse"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__operation_type__deposit
|
||||
msgid "Cash Deposit"
|
||||
msgstr "Remise d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model,name:account_cash_deposit.model_account_cash_deposit_line
|
||||
msgid "Cash Deposit Lines"
|
||||
msgstr "Lignes de remise d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.report,name:account_cash_deposit.report_account_cash_deposit
|
||||
#: model:ir.model,name:account_cash_deposit.model_account_cash_deposit
|
||||
msgid "Cash Deposit/Order"
|
||||
msgstr "Commande/remise d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.act_window,name:account_cash_deposit.account_cash_deposit_action
|
||||
#: model:ir.ui.menu,name:account_cash_deposit.account_cash_deposit_menu
|
||||
msgid "Cash Deposits"
|
||||
msgstr "Remises d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__order_id
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__operation_type__order
|
||||
msgid "Cash Order"
|
||||
msgstr "Commande d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.act_window,name:account_cash_deposit.account_cash_order_reception_action
|
||||
#: model:ir.model,name:account_cash_deposit.model_account_cash_order_reception
|
||||
msgid "Cash Order Reception"
|
||||
msgstr "Réception de la commande d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.act_window,name:account_cash_deposit.account_cash_order_action
|
||||
#: model:ir.ui.menu,name:account_cash_deposit.account_cash_order_menu
|
||||
msgid "Cash Orders"
|
||||
msgstr "Commandes d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Cash Received"
|
||||
msgstr "Èspèces reçues"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__date
|
||||
msgid "Cash Reception Date"
|
||||
msgstr "Date de réception des espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.actions.act_window,name:account_cash_deposit.cash_unit_action
|
||||
#: model:ir.model,name:account_cash_deposit.model_cash_unit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__cash_unit_id
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Cash Unit"
|
||||
msgstr "Unité d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_res_currency__cash_unit_ids
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.view_currency_form
|
||||
msgid "Cash Units"
|
||||
msgstr "Unités d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/wizards/account_cash_order_reception.py:0
|
||||
#, python-format
|
||||
msgid "Cash reception confirmed on %s."
|
||||
msgstr "Réception d'espèces confirmée le %s."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__cash_type__coin
|
||||
msgid "Coin"
|
||||
msgstr "Pièce"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__coinroll_qty
|
||||
msgid "Coin Quantity"
|
||||
msgstr "Quantité de pièces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__cash_type__coinroll
|
||||
msgid "Coin Roll"
|
||||
msgstr "Rouleau de pièces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__company_id
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_order_reception_form
|
||||
msgid "Confirm Cash Reception"
|
||||
msgstr "Confirmer la réception d'espèces"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Confirm Order"
|
||||
msgstr "Confirmer la commande"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__state__confirmed
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Confirmed"
|
||||
msgstr "Confirmé"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__create_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__create_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__create_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__create_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__create_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__create_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model,name:account_cash_deposit.model_res_currency
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__currency_id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__currency_id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__currency_id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__currency_id
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Currency"
|
||||
msgstr "Devise"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__date
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__auto_create__deposit
|
||||
msgid "Deposit"
|
||||
msgstr "Remise"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__display_name
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__display_name
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__display_name
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__display_name
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_res_currency__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__state__done
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Done"
|
||||
msgstr "Fait"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__account_cash_deposit__state__draft
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Draft"
|
||||
msgstr "Brouillon"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_follower_ids
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_channel_ids
|
||||
msgid "Followers (Channels)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_partner_ids
|
||||
msgid "Followers (Partners)"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__activity_type_icon
|
||||
msgid "Font awesome icon e.g. fa-tasks"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/cash_unit.py:0
|
||||
#, python-format
|
||||
msgid "For a coin roll, the coin quantity must be strictly positive."
|
||||
msgstr ""
|
||||
"Pour un rouleau d'espèces, la quantité de pièces doit être strictement "
|
||||
"positive."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_search
|
||||
msgid "Group By"
|
||||
msgstr "Groupé par"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__id
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_res_currency__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_exception_icon
|
||||
msgid "Icon"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__activity_exception_icon
|
||||
msgid "Icon to indicate an exception activity."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_needaction
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_unread
|
||||
msgid "If checked, new messages require your attention."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_has_error
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_has_sms_error
|
||||
msgid "If checked, some messages have a delivery error."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_cash_unit__auto_create
|
||||
msgid ""
|
||||
"If set, a line for this cash unit will be created by default on a new cash "
|
||||
"deposit or a new cash order or both."
|
||||
msgstr ""
|
||||
"Si coché, une ligne sera créé par défault pour cette unité d'espèce sur les "
|
||||
"nouvelles remises d'espèce ou les nouvelles commandes d'espèces ou les deux."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__coin_amount
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_is_follower
|
||||
msgid "Is Follower"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__move_id
|
||||
msgid "Journal Entry"
|
||||
msgstr "Pièce comptable"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit____last_update
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line____last_update
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception____last_update
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit____last_update
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_res_currency____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière modification le"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__write_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__write_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__write_uid
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__write_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__write_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__write_date
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__line_ids
|
||||
msgid "Lines"
|
||||
msgstr "Lignes"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__coin_amount
|
||||
msgid "Loose Coin Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_main_attachment_id
|
||||
msgid "Main Attachment"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_has_error
|
||||
msgid "Message Delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_ids
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__my_activity_date_deadline
|
||||
msgid "My Activity Deadline"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_date_deadline
|
||||
msgid "Next Activity Deadline"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_summary
|
||||
msgid "Next Activity Summary"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_type_id
|
||||
msgid "Next Activity Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__cash_type__note
|
||||
msgid "Note"
|
||||
msgstr "Billet"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__notes
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Notes"
|
||||
msgstr "Notes"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_needaction_counter
|
||||
msgid "Number of Actions"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_has_error_counter
|
||||
msgid "Number of errors"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_needaction_counter
|
||||
msgid "Number of messages which requires an action"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_has_error_counter
|
||||
msgid "Number of messages with delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__message_unread_counter
|
||||
msgid "Number of unread messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"On {deposit}, the cash journal {cash_journal} is not in the selected "
|
||||
"currency {currency}."
|
||||
msgstr ""
|
||||
"Sur {deposit}, la caisse {cash_journal} n'est pas dans la devise "
|
||||
"sélectionnée {currency}."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__operation_type
|
||||
msgid "Operation Type"
|
||||
msgstr "Type d'opération"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields.selection,name:account_cash_deposit.selection__cash_unit__auto_create__order
|
||||
msgid "Order"
|
||||
msgstr "Commande"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__order_date
|
||||
msgid "Order Date"
|
||||
msgstr "Date de commande"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__parent_id
|
||||
msgid "Parent"
|
||||
msgstr "Parent"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Print"
|
||||
msgstr "Imprimer"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__qty
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Quantity"
|
||||
msgstr "Quantité"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__is_reconcile
|
||||
msgid "Reconciled"
|
||||
msgstr "Lettré"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__name
|
||||
msgid "Reference"
|
||||
msgstr "Référence"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__activity_user_id
|
||||
msgid "Responsible User"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_has_sms_error
|
||||
msgid "SMS Delivery error"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__state
|
||||
msgid "Status"
|
||||
msgstr "État"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__activity_state
|
||||
msgid ""
|
||||
"Status based on activities\n"
|
||||
"Overdue: Due date is already passed\n"
|
||||
"Today: Activity date is today\n"
|
||||
"Planned: Future activities."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__subtotal
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.report_cashdeposit
|
||||
msgid "Subtotal"
|
||||
msgstr "Sous-total"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid "The %s is not in draft state, so you cannot delete it."
|
||||
msgstr ""
|
||||
"La %s n'est pas à l'état brouillon, donc vous ne pouvez pas la supprimer."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid "The Inter-Banks Transfer Account is not configured."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_cash_unit_coinroll_qty_positive
|
||||
msgid "The coin quantity must be positive."
|
||||
msgstr "La quantité de pièces doit être positive."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_account_cash_deposit_coin_amount_positive
|
||||
msgid "The loose coin amount must be positive or null."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_account_cash_deposit_line_qty_positive
|
||||
msgid "The quantity must be positive or null."
|
||||
msgstr "La quantité doit être positive ou nulle."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.constraint,message:account_cash_deposit.constraint_cash_unit_value_positive
|
||||
msgid "The value must be strictly positive."
|
||||
msgstr "La valeur doit être strictement positive."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid "There are no non-zero lines on %s!"
|
||||
msgstr "Il n'y a aucune ligne non nulle sur %s !"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_cash_unit__cash_type
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_cash_unit__coinroll_qty
|
||||
msgid "This field should never be modified."
|
||||
msgstr "Ce champ ne doit jamais être modifié."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_cash_unit__value
|
||||
msgid ""
|
||||
"This field should never be modified. For a coin roll, you must enter the "
|
||||
"value of the coin."
|
||||
msgstr ""
|
||||
"Ce champ ne doit jamais être modifié. Pour un rouleau de pièces, vous devez "
|
||||
"entrer la valeur de la pièce."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__total_amount
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_order_reception__total_amount
|
||||
msgid "Total Amount"
|
||||
msgstr "Montant total"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__total_value
|
||||
msgid "Total Value"
|
||||
msgstr "Valeur totale"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit_line__tree_order
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__tree_order
|
||||
msgid "Tree Order"
|
||||
msgstr "Ordre dans la liste"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__cash_type
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__activity_exception_decoration
|
||||
msgid "Type of the exception activity on record."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_unread
|
||||
msgid "Unread Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__message_unread_counter
|
||||
msgid "Unread Messages Counter"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__date
|
||||
msgid "Used as date for the journal entry."
|
||||
msgstr "Utilisé commande date pour la pièce comptable."
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model_terms:ir.ui.view,arch_db:account_cash_deposit.account_cash_deposit_form
|
||||
msgid "Validate"
|
||||
msgstr "Valider"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_cash_unit__value
|
||||
msgid "Value"
|
||||
msgstr "Valeur"
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,field_description:account_cash_deposit.field_account_cash_deposit__website_message_ids
|
||||
msgid "Website Messages"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: model:ir.model.fields,help:account_cash_deposit.field_account_cash_deposit__website_message_ids
|
||||
msgid "Website communication history"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_cash_deposit
|
||||
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
|
||||
#, python-format
|
||||
msgid "You must delete cash lines that are linked to a currency other than %s."
|
||||
msgstr "Vous devez supprimer les lignes liées à une devise autre que %s."
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Missing Outstanding Payments Account on bank journal '%s'."
|
||||
#~ msgstr ""
|
||||
#~ "Compte de paiements sortants non configuré sur le journal de banque '%s'."
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Missing Outstanding Receipts Account on bank journal '%s'."
|
||||
#~ msgstr ""
|
||||
#~ "Compte de paiements entrants non configuré sur le journal de banque '%s'."
|
3
account_cash_deposit/models/__init__.py
Normal file
3
account_cash_deposit/models/__init__.py
Normal file
@ -0,0 +1,3 @@
|
||||
from . import cash_unit
|
||||
from . import res_currency
|
||||
from . import account_cash_deposit
|
433
account_cash_deposit/models/account_cash_deposit.py
Normal file
433
account_cash_deposit/models/account_cash_deposit.py
Normal file
@ -0,0 +1,433 @@
|
||||
# Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import UserError, ValidationError
|
||||
|
||||
|
||||
class AccountCashDeposit(models.Model):
|
||||
_name = "account.cash.deposit"
|
||||
_description = "Cash Deposit/Order"
|
||||
_inherit = ["mail.thread", "mail.activity.mixin"]
|
||||
_order = "date desc, id desc"
|
||||
_check_company_auto = True
|
||||
|
||||
name = fields.Char(
|
||||
string="Reference", size=64, readonly=True, default="/", copy=False
|
||||
)
|
||||
operation_type = fields.Selection(
|
||||
[
|
||||
("deposit", "Cash Deposit"),
|
||||
("order", "Cash Order"),
|
||||
],
|
||||
required=True,
|
||||
readonly=True,
|
||||
)
|
||||
line_ids = fields.One2many(
|
||||
"account.cash.deposit.line",
|
||||
"parent_id",
|
||||
string="Lines",
|
||||
readonly=True,
|
||||
states={"draft": [("readonly", "=", False)]},
|
||||
)
|
||||
order_date = fields.Date(
|
||||
default=fields.Date.context_today,
|
||||
readonly=True,
|
||||
states={"draft": [("readonly", "=", False)]},
|
||||
)
|
||||
date = fields.Date(
|
||||
states={"done": [("readonly", "=", True)]},
|
||||
tracking=True,
|
||||
copy=False,
|
||||
help="Used as date for the journal entry.",
|
||||
)
|
||||
cash_journal_id = fields.Many2one(
|
||||
"account.journal",
|
||||
string="Cash Box",
|
||||
domain="[('company_id', '=', company_id), ('type', '=', 'cash')]",
|
||||
required=True,
|
||||
check_company=True,
|
||||
readonly=True,
|
||||
states={"draft": [("readonly", "=", False)]},
|
||||
tracking=True,
|
||||
)
|
||||
currency_id = fields.Many2one(
|
||||
"res.currency",
|
||||
required=True,
|
||||
tracking=True,
|
||||
readonly=True,
|
||||
states={"draft": [("readonly", "=", False)]},
|
||||
)
|
||||
state = fields.Selection(
|
||||
[
|
||||
("draft", "Draft"),
|
||||
("confirmed", "Confirmed"), # step only for orders, not for deposits
|
||||
("done", "Done"),
|
||||
],
|
||||
string="Status",
|
||||
default="draft",
|
||||
readonly=True,
|
||||
tracking=True,
|
||||
)
|
||||
move_id = fields.Many2one(
|
||||
"account.move",
|
||||
string="Journal Entry",
|
||||
readonly=True,
|
||||
check_company=True,
|
||||
)
|
||||
bank_journal_id = fields.Many2one(
|
||||
"account.journal",
|
||||
string="Bank Account",
|
||||
required=True,
|
||||
domain="[('company_id', '=', company_id), ('type', '=', 'bank'), "
|
||||
"('bank_account_id', '!=', False)]",
|
||||
check_company=True,
|
||||
readonly=True,
|
||||
states={"draft": [("readonly", "=", False)]},
|
||||
tracking=True,
|
||||
)
|
||||
company_id = fields.Many2one(
|
||||
"res.company",
|
||||
required=True,
|
||||
readonly=True,
|
||||
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",
|
||||
precompute=True,
|
||||
store=True,
|
||||
currency_field="currency_id",
|
||||
tracking=True,
|
||||
)
|
||||
is_reconcile = fields.Boolean(
|
||||
compute="_compute_is_reconcile", store=True, string="Reconciled"
|
||||
)
|
||||
notes = fields.Text()
|
||||
|
||||
_sql_constraints = [
|
||||
(
|
||||
"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")
|
||||
def _check_deposit(self):
|
||||
for rec in self:
|
||||
if rec.currency_id and rec.cash_journal_id:
|
||||
if (
|
||||
rec.cash_journal_id.currency_id
|
||||
and rec.currency_id != rec.cash_journal_id.currency_id
|
||||
) or (
|
||||
not rec.cash_journal_id.currency_id
|
||||
and rec.currency_id != rec.company_id.currency_id
|
||||
):
|
||||
raise ValidationError(
|
||||
_(
|
||||
"On {deposit}, the cash journal {cash_journal} is not "
|
||||
"in the selected currency {currency}."
|
||||
).format(
|
||||
deposit=rec.display_name,
|
||||
cash_journal=rec.cash_journal_id.display_name,
|
||||
currency=rec.currency_id.name,
|
||||
)
|
||||
)
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields_list):
|
||||
res = super().default_get(fields_list)
|
||||
ajo = self.env["account.journal"]
|
||||
company = self.env.company
|
||||
currency = company.currency_id
|
||||
# pre-set cash_journal_id and bank_journal_id if there is only one
|
||||
domain = [("company_id", "=", company.id)]
|
||||
cash_journals = ajo.search(
|
||||
domain
|
||||
+ [
|
||||
("type", "=", "cash"),
|
||||
"|",
|
||||
("currency_id", "=", False),
|
||||
("currency_id", "=", currency.id),
|
||||
]
|
||||
)
|
||||
if len(cash_journals) == 1:
|
||||
res["cash_journal_id"] = cash_journals.id
|
||||
bank_journals = ajo.search(
|
||||
domain + [("type", "=", "bank"), ("bank_account_id", "!=", False)]
|
||||
)
|
||||
if len(bank_journals) == 1:
|
||||
res["bank_journal_id"] = bank_journals.id
|
||||
res.update(
|
||||
{
|
||||
"company_id": company.id,
|
||||
"currency_id": currency.id,
|
||||
}
|
||||
)
|
||||
if res.get("operation_type"):
|
||||
cash_units = self.env["cash.unit"].search(
|
||||
[
|
||||
("auto_create", "in", ("both", res["operation_type"])),
|
||||
("currency_id", "=", currency.id),
|
||||
]
|
||||
)
|
||||
res["line_ids"] = [(0, 0, {"cash_unit_id": cu.id}) for cu in cash_units]
|
||||
return res
|
||||
|
||||
@api.depends("line_ids.subtotal", "coin_amount")
|
||||
def _compute_total_amount(self):
|
||||
# With precompute=True, we can't use read_group() any more,
|
||||
# because it won't work with NewID
|
||||
for rec in self:
|
||||
total_amount = rec.coin_amount
|
||||
for line in rec.line_ids:
|
||||
total_amount += line.subtotal
|
||||
rec.total_amount = total_amount
|
||||
|
||||
@api.depends("move_id.line_ids.reconciled", "company_id")
|
||||
def _compute_is_reconcile(self):
|
||||
for rec in self:
|
||||
reconcile = False
|
||||
if rec.move_id:
|
||||
for line in rec.move_id.line_ids:
|
||||
if (
|
||||
line.account_id.id != rec.cash_journal_id.default_account_id.id
|
||||
and line.reconciled
|
||||
):
|
||||
reconcile = True
|
||||
rec.is_reconcile = reconcile
|
||||
|
||||
def unlink(self):
|
||||
for rec in self:
|
||||
if rec.state != "draft":
|
||||
raise UserError(
|
||||
_("The %s is not in draft state, so you cannot delete it.")
|
||||
% rec.display_name
|
||||
)
|
||||
return super().unlink()
|
||||
|
||||
def backtodraft(self):
|
||||
for rec in self:
|
||||
if rec.move_id:
|
||||
if rec.is_reconcile:
|
||||
raise UserError(
|
||||
_("%s has already been credited/debited on the bank account.")
|
||||
% rec.display_name
|
||||
)
|
||||
move = rec.move_id
|
||||
if move.state == "posted":
|
||||
move.button_draft()
|
||||
move.with_context(force_delete=True).unlink()
|
||||
rec.write({"state": "draft"})
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
for vals in vals_list:
|
||||
if "company_id" in vals:
|
||||
self = self.with_company(vals["company_id"])
|
||||
if vals.get("name", "/") == "/":
|
||||
if (
|
||||
vals.get("operation_type") == "order"
|
||||
or self._context.get("default_operation_type") == "order"
|
||||
):
|
||||
vals["name"] = self.env["ir.sequence"].next_by_code(
|
||||
"account.cash.order", vals.get("order_date")
|
||||
)
|
||||
else:
|
||||
vals["name"] = self.env["ir.sequence"].next_by_code(
|
||||
"account.cash.deposit"
|
||||
)
|
||||
return super().create(vals_list)
|
||||
|
||||
def name_get(self):
|
||||
res = []
|
||||
type2label = dict(
|
||||
self.fields_get("operation_type", "selection")["operation_type"][
|
||||
"selection"
|
||||
]
|
||||
)
|
||||
for rec in self:
|
||||
res.append((rec.id, " ".join([type2label[self.operation_type], self.name])))
|
||||
return res
|
||||
|
||||
def confirm_order(self):
|
||||
self.ensure_one()
|
||||
assert self.operation_type == "order", "Wrong operation type"
|
||||
self._del_empty_lines()
|
||||
self.write({"state": "confirmed"})
|
||||
|
||||
def _del_empty_lines(self, raise_if_empty=True):
|
||||
self.ensure_one()
|
||||
self.line_ids.filtered(lambda x: x.qty == 0).unlink()
|
||||
if raise_if_empty and not self.line_ids:
|
||||
raise UserError(_("There are no non-zero lines on %s!") % self.display_name)
|
||||
|
||||
def _prepare_account_move(self, vals):
|
||||
self.ensure_one()
|
||||
date = vals.get("date") or self.date
|
||||
op_type = self.operation_type
|
||||
total_amount_comp_cur = self.currency_id._convert(
|
||||
self.total_amount, self.company_id.currency_id, self.company_id, date
|
||||
)
|
||||
if not self.company_id.transfer_account_id:
|
||||
raise UserError(_("The Inter-Banks Transfer Account is not configured."))
|
||||
bank_account_id = self.company_id.transfer_account_id.id
|
||||
|
||||
cash_debit = cash_credit = bank_debit = bank_credit = 0.0
|
||||
if op_type == "deposit":
|
||||
cash_credit = total_amount_comp_cur
|
||||
bank_debit = total_amount_comp_cur
|
||||
else:
|
||||
cash_debit = total_amount_comp_cur
|
||||
bank_credit = total_amount_comp_cur
|
||||
# Cash move line
|
||||
cash_vals = {
|
||||
"account_id": self.cash_journal_id.default_account_id.id,
|
||||
"partner_id": False,
|
||||
"debit": cash_debit,
|
||||
"credit": cash_credit,
|
||||
"currency_id": self.currency_id.id,
|
||||
"amount_currency": self.total_amount * (op_type == "deposit" and -1 or 1),
|
||||
}
|
||||
# Bank move line
|
||||
bank_vals = {
|
||||
"account_id": bank_account_id,
|
||||
"partner_id": False,
|
||||
"debit": bank_debit,
|
||||
"credit": bank_credit,
|
||||
"currency_id": self.currency_id.id,
|
||||
"amount_currency": self.total_amount * (op_type == "deposit" and 1 or -1),
|
||||
}
|
||||
move_vals = {
|
||||
"journal_id": self.cash_journal_id.id,
|
||||
"date": date,
|
||||
"ref": self.display_name,
|
||||
"company_id": self.company_id.id,
|
||||
"line_ids": [(0, 0, cash_vals), (0, 0, bank_vals)],
|
||||
}
|
||||
return move_vals
|
||||
|
||||
def _prepare_validate(self, force_date=None):
|
||||
vals = {"state": "done"}
|
||||
if force_date:
|
||||
vals["date"] = force_date
|
||||
elif not self.date:
|
||||
vals["date"] = fields.Date.context_today(self)
|
||||
return vals
|
||||
|
||||
def validate(self, force_date=None):
|
||||
self.ensure_one()
|
||||
self._del_empty_lines()
|
||||
vals = self._prepare_validate(force_date=force_date)
|
||||
move_vals = self._prepare_account_move(vals)
|
||||
move = self.env["account.move"].create(move_vals)
|
||||
move.action_post()
|
||||
vals["move_id"] = move.id
|
||||
self.write(vals)
|
||||
|
||||
@api.onchange("currency_id")
|
||||
def currency_change(self):
|
||||
if self.currency_id and self.operation_type:
|
||||
line_obj = self.env["account.cash.deposit.line"]
|
||||
new_lines = self.env["account.cash.deposit.line"]
|
||||
cash_units = self.env["cash.unit"].search(
|
||||
[
|
||||
("auto_create", "in", ("both", self.operation_type)),
|
||||
("currency_id", "=", self.currency_id.id),
|
||||
]
|
||||
)
|
||||
for cunit in cash_units:
|
||||
new_lines += line_obj.new({"cash_unit_id": cunit.id})
|
||||
self.line_ids = new_lines
|
||||
domain = [("company_id", "=", self.company_id.id), ("type", "=", "cash")]
|
||||
if self.currency_id == self.company_id.currency_id:
|
||||
cash_journals = self.env["account.journal"].search(
|
||||
domain
|
||||
+ [
|
||||
"|",
|
||||
("currency_id", "=", False),
|
||||
("currency_id", "=", self.currency_id.id),
|
||||
]
|
||||
)
|
||||
if len(cash_journals) == 1:
|
||||
self.cash_journal_id = cash_journals.id
|
||||
else:
|
||||
self.cash_journal_id = False
|
||||
else:
|
||||
cash_journals = self.env["account.journal"].search(
|
||||
domain + [("currency_id", "=", self.currency_id.id)]
|
||||
)
|
||||
if len(cash_journals) == 1:
|
||||
self.cash_journal_id = cash_journals.id
|
||||
else:
|
||||
self.cash_journal_id = False
|
||||
|
||||
def get_report(self):
|
||||
report = self.env.ref("account_cash_deposit.report_account_cash_deposit")
|
||||
action = report.with_context(discard_logo_check=True).report_action(self)
|
||||
return action
|
||||
|
||||
|
||||
class AccountCashDepositLine(models.Model):
|
||||
_name = "account.cash.deposit.line"
|
||||
_description = "Cash Deposit Lines"
|
||||
_order = "tree_order desc"
|
||||
|
||||
parent_id = fields.Many2one("account.cash.deposit", ondelete="cascade")
|
||||
qty = fields.Integer(string="Quantity")
|
||||
cash_unit_id = fields.Many2one(
|
||||
"cash.unit", required=True, domain="[('currency_id', '=', currency_id)]"
|
||||
)
|
||||
tree_order = fields.Float(related="cash_unit_id.tree_order", store=True)
|
||||
subtotal = fields.Monetary(compute="_compute_subtotal", store=True, precompute=True)
|
||||
currency_id = fields.Many2one(related="parent_id.currency_id", store=True)
|
||||
|
||||
_sql_constraints = [
|
||||
("qty_positive", "CHECK(qty >= 0)", "The quantity must be positive or null."),
|
||||
(
|
||||
"cash_unit_unique",
|
||||
"unique(cash_unit_id, parent_id)",
|
||||
"A line already exists for this cash unit.",
|
||||
),
|
||||
]
|
||||
|
||||
@api.constrains("currency_id", "cash_unit_id")
|
||||
def _check_lines(self):
|
||||
for line in self:
|
||||
if (
|
||||
line.currency_id
|
||||
and line.cash_unit_id
|
||||
and line.currency_id != line.cash_unit_id.currency_id
|
||||
):
|
||||
raise ValidationError(
|
||||
_(
|
||||
"You must delete cash lines that are linked to a currency "
|
||||
"other than %s."
|
||||
)
|
||||
% line.currency_id.name
|
||||
)
|
||||
|
||||
@api.depends("cash_unit_id", "qty")
|
||||
def _compute_subtotal(self):
|
||||
for line in self:
|
||||
subtotal = 0
|
||||
if line.cash_unit_id:
|
||||
subtotal = line.cash_unit_id.total_value * line.qty
|
||||
line.subtotal = subtotal
|
152
account_cash_deposit/models/cash_unit.py
Normal file
152
account_cash_deposit/models/cash_unit.py
Normal file
@ -0,0 +1,152 @@
|
||||
# Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
import logging
|
||||
|
||||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tools.misc import format_amount
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class CashUnit(models.Model):
|
||||
_name = "cash.unit"
|
||||
_description = "Cash Unit"
|
||||
_order = "currency_id, tree_order desc"
|
||||
_rec_name = "value"
|
||||
|
||||
currency_id = fields.Many2one("res.currency", ondelete="cascade")
|
||||
active = fields.Boolean(default=True)
|
||||
tree_order = fields.Float(compute="_compute_all", store=True)
|
||||
cash_type = fields.Selection(
|
||||
[
|
||||
("note", "Note"),
|
||||
("coin", "Coin"),
|
||||
("coinroll", "Coin Roll"),
|
||||
],
|
||||
string="Type",
|
||||
required=True,
|
||||
help="This field should never be modified.",
|
||||
)
|
||||
coinroll_qty = fields.Integer(
|
||||
string="Coin Quantity", help="This field should never be modified."
|
||||
)
|
||||
value = fields.Monetary(
|
||||
required=True,
|
||||
help="This field should never be modified. For a coin roll, "
|
||||
"you must enter the value of the coin.",
|
||||
)
|
||||
total_value = fields.Monetary(compute="_compute_all", store=True)
|
||||
auto_create = fields.Selection(
|
||||
[
|
||||
("deposit", "Deposit"),
|
||||
("order", "Order"),
|
||||
("both", "Both"),
|
||||
],
|
||||
help="If set, a line for this cash unit will be created by default "
|
||||
"on a new cash deposit or a new cash order or both.",
|
||||
)
|
||||
|
||||
_sql_constraints = [
|
||||
(
|
||||
"coinroll_qty_positive",
|
||||
"CHECK(coinroll_qty >= 0)",
|
||||
"The coin quantity must be positive.",
|
||||
),
|
||||
("value_positive", "CHECK(value > 0)", "The value must be strictly positive."),
|
||||
]
|
||||
|
||||
@api.constrains("cash_type", "coinroll_qty")
|
||||
def _check_cash_unit(self):
|
||||
for rec in self:
|
||||
if rec.cash_type == "coinroll" and rec.coinroll_qty <= 0:
|
||||
raise ValidationError(
|
||||
_("For a coin roll, the coin quantity must be strictly positive.")
|
||||
)
|
||||
|
||||
@api.depends("coinroll_qty", "cash_type", "value")
|
||||
def _compute_all(self):
|
||||
# I want bank notes first, then coinrolls, then coins
|
||||
# This is a hack, but it is designed to work fine with
|
||||
# all currencies of the planet !
|
||||
type2multiplier = {
|
||||
"note": 1000000,
|
||||
"coinroll": 1000,
|
||||
"coin": 1,
|
||||
}
|
||||
for rec in self:
|
||||
qty = rec.cash_type == "coinroll" and rec.coinroll_qty or 1
|
||||
total_value = rec.value * qty
|
||||
rec.tree_order = type2multiplier.get(rec.cash_type, 0) * total_value
|
||||
rec.total_value = total_value
|
||||
|
||||
def _get_value_label(self, value):
|
||||
self.ensure_one()
|
||||
symbol_position = self.currency_id.position
|
||||
symbol = self.currency_id.symbol
|
||||
int_value = int(round(value))
|
||||
# if value is an integer
|
||||
if self.currency_id.compare_amounts(value, int_value) == 0:
|
||||
amount_label = str(int_value)
|
||||
if symbol_position == "before":
|
||||
value_label = "%s %s" % (symbol, amount_label)
|
||||
else:
|
||||
value_label = "%s %s" % (amount_label, symbol)
|
||||
else:
|
||||
value_label = format_amount(self.env, value, self.currency_id)
|
||||
return value_label
|
||||
|
||||
def name_get(self):
|
||||
res = []
|
||||
type2label = dict(
|
||||
self.fields_get("cash_type", "selection")["cash_type"]["selection"]
|
||||
)
|
||||
for rec in self:
|
||||
cash_type_label = type2label.get(rec.cash_type)
|
||||
value_label = rec._get_value_label(rec.value)
|
||||
if rec.cash_type == "coinroll":
|
||||
total_value_label = rec._get_value_label(rec.total_value)
|
||||
label = "%s %s x %d (%s)" % (
|
||||
cash_type_label,
|
||||
value_label,
|
||||
rec.coinroll_qty,
|
||||
total_value_label,
|
||||
)
|
||||
else:
|
||||
label = "%s %s" % (cash_type_label, value_label)
|
||||
res.append((rec.id, label))
|
||||
return res
|
||||
|
||||
@api.model
|
||||
def name_search(self, name="", args=None, operator="ilike", limit=100):
|
||||
if args is None:
|
||||
args = []
|
||||
if name and operator == "ilike":
|
||||
if name.isdigit():
|
||||
recs = self.search([("value", "=", name)] + args, limit=limit)
|
||||
if recs:
|
||||
return recs.name_get()
|
||||
value = False
|
||||
try:
|
||||
value = float(name)
|
||||
except ValueError:
|
||||
logger.debug("name %s is not a float. Make pylint happy.", name)
|
||||
if value:
|
||||
recs = self.search([("value", "=", value)] + args, limit=limit)
|
||||
if recs:
|
||||
return recs.name_get()
|
||||
lang = self.env["res.lang"]._lang_get(self.env.user.lang)
|
||||
if lang:
|
||||
decimal_sep = lang.decimal_point
|
||||
if decimal_sep and decimal_sep != ".":
|
||||
try:
|
||||
value = float(name.replace(decimal_sep, ".", 1))
|
||||
except ValueError:
|
||||
logger.debug("name %s is not a float. Make pylint happy.", name)
|
||||
if value:
|
||||
recs = self.search([("value", "=", value)] + args, limit=limit)
|
||||
if recs:
|
||||
return recs.name_get()
|
||||
return super().name_search(name=name, args=args, operator=operator, limit=limit)
|
11
account_cash_deposit/models/res_currency.py
Normal file
11
account_cash_deposit/models/res_currency.py
Normal file
@ -0,0 +1,11 @@
|
||||
# Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class ResCurrency(models.Model):
|
||||
_inherit = "res.currency"
|
||||
|
||||
cash_unit_ids = fields.One2many("cash.unit", "currency_id", string="Cash Units")
|
11
account_cash_deposit/readme/CONFIGURE.rst
Normal file
11
account_cash_deposit/readme/CONFIGURE.rst
Normal file
@ -0,0 +1,11 @@
|
||||
First, for each currency of your cash boxes, you must define the bank notes and coin rolls for that currency (coin rolls are often standardised by the Central Bank). You can also definie the coins, but it's not useful if your bank only accept coin rolls and not coins.
|
||||
|
||||
.. figure:: static/description/currency_form_view.png
|
||||
:scale: 100 %
|
||||
:alt: Currency form view
|
||||
|
||||
To save time for new users, this module provides the bank notes, coins and coin rolls for several currencies (EUR, USD, CAD, etc.). If it is not the case for your currency, it would be very nice of you to contribute it (you can use the file *account_cash_deposit/data/cash_unit_eur.xml* as an example).
|
||||
|
||||
To save time when encoding the cash deposits/orders, you can set the parameter *Auto Create* on the bank notes and/or coin rolls that you use very often.
|
||||
|
||||
On the Accounting configuration page, in the section *Bank & Cash*, the *Inter-Banks Transfer Account* must be configured.
|
1
account_cash_deposit/readme/CONTRIBUTORS.rst
Normal file
1
account_cash_deposit/readme/CONTRIBUTORS.rst
Normal file
@ -0,0 +1 @@
|
||||
* Alexis de Lattre <alexis.delattre@akretion.com>
|
1
account_cash_deposit/readme/DESCRIPTION.rst
Normal file
1
account_cash_deposit/readme/DESCRIPTION.rst
Normal file
@ -0,0 +1 @@
|
||||
This module adds support for **cash deposits at the bank**. It also supports the other way around: **ordering cash at the bank**. It allows to declare the kind of cash you want to deposit (or order): bank notes, coins and coin rolls and the quantity for each of them. Coins are rarely used, because most banks only allow to deposit/order coin rolls.
|
13
account_cash_deposit/readme/USAGE.rst
Normal file
13
account_cash_deposit/readme/USAGE.rst
Normal file
@ -0,0 +1,13 @@
|
||||
To create a new cash **deposit**, go to the menu *Invoicing > Accounting > Miscellaneous > Cash Deposits* and click on *Create*: select the currency, the cash box from which you will take the cash out and the bank journal corresponding to the bank account on which you want to deposit the cash. Then create/edit lines to enter the quantity for each kind of bank note and coin rolls. Then, you can print a PDF report designed to be a kind of delivery report for the cash. Upon validation, Odoo will generate a journal entry in the cash journal that:
|
||||
|
||||
* credits the cash account,
|
||||
* debits the inter-banks transfer account.
|
||||
|
||||
.. figure:: static/description/cash_deposit_form.png
|
||||
:scale: 100 %
|
||||
:alt: Cash Deposit form view
|
||||
|
||||
The process is very similar when **ordering** cash but you have to use another menu entry: menu *Invoicing > Accounting > Miscellaneous > Cash Orders*. Select the currency, the cash box that will receive the cash and the bank account from which the bank will take the money. Create/edit lines to enter the details of your order (bank notes, coin rolls). Then, you can confirm the order and print a PDF report designed to be sent to your bank as a cash order. Eventually, when the bank delivers the cash to you, you should validate the cash order and Odoo will generate a journal entry in the cash journal that:
|
||||
|
||||
* debits the cash account,
|
||||
* credits the inter-banks transfer account.
|
20
account_cash_deposit/report/report.xml
Normal file
20
account_cash_deposit/report/report.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
-->
|
||||
<odoo>
|
||||
<record id="report_account_cash_deposit" model="ir.actions.report">
|
||||
<field name="name">Cash Deposit/Order</field>
|
||||
<field name="model">account.cash.deposit</field>
|
||||
<field name="report_type">qweb-pdf</field>
|
||||
<field name="report_name">account_cash_deposit.report_cashdeposit</field>
|
||||
<field name="report_file">account_cash_deposit.report_cashdeposit</field>
|
||||
<field
|
||||
name="print_report_name"
|
||||
>'%s%s' % (object.display_name.replace(' ', '_'), object.state == 'draft' and '-draft' or '')</field>
|
||||
<field name="binding_model_id" ref="model_account_cash_deposit" />
|
||||
<field name="binding_type">report</field>
|
||||
</record>
|
||||
</odoo>
|
107
account_cash_deposit/report/report_cashdeposit.xml
Normal file
107
account_cash_deposit/report/report_cashdeposit.xml
Normal file
@ -0,0 +1,107 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (www.akretion.com)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
-->
|
||||
<odoo>
|
||||
<template id="report_cashdeposit">
|
||||
<t t-call="web.html_container">
|
||||
<t t-foreach="docs" t-as="o">
|
||||
<t t-call="web.external_layout">
|
||||
<div class="page">
|
||||
<h1><span t-field="o.display_name" /></h1>
|
||||
<h3>Bank:</h3>
|
||||
<p>
|
||||
<span
|
||||
t-field="o.bank_journal_id.bank_account_id.bank_id.name"
|
||||
/>
|
||||
<br />
|
||||
<span
|
||||
t-field="o.bank_journal_id.bank_account_id.bank_id.street"
|
||||
/>
|
||||
<br />
|
||||
<span
|
||||
t-field="o.bank_journal_id.bank_account_id.bank_id.zip"
|
||||
/>
|
||||
<span
|
||||
t-field="o.bank_journal_id.bank_account_id.bank_id.city"
|
||||
/>
|
||||
</p>
|
||||
<p>
|
||||
<b
|
||||
t-if="o.operation_type == 'deposit'"
|
||||
>Bank Account Number to Credit:</b>
|
||||
<b
|
||||
t-if="o.operation_type == 'order'"
|
||||
>Bank Account Number to Debit:</b>
|
||||
<span
|
||||
t-field="o.bank_journal_id.bank_account_id.acc_number"
|
||||
/>
|
||||
</p>
|
||||
<p>
|
||||
<strong>Currency:</strong>
|
||||
<span t-field="o.currency_id.name" />
|
||||
</p>
|
||||
<p t-if="o.operation_type == 'order'">
|
||||
<strong>Order Date:</strong>
|
||||
<span t-field="o.order_date" />
|
||||
</p>
|
||||
<p t-if="o.operation_type == 'deposit'">
|
||||
<strong>Date:</strong>
|
||||
<span t-field="o.date" />
|
||||
</p>
|
||||
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Cash Unit</th>
|
||||
<th class="text-end">Quantity</th>
|
||||
<th class="text-end">Subtotal</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<t t-foreach="o.line_ids" t-as="line">
|
||||
<tr>
|
||||
<td>
|
||||
<span
|
||||
t-field="line.cash_unit_id.display_name"
|
||||
/>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="line.qty" />
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="line.subtotal" />
|
||||
</td>
|
||||
</tr>
|
||||
</t>
|
||||
<tr class="border-black o_total" t-if="o.coin_amount">
|
||||
<td />
|
||||
<td class="text-end">
|
||||
<strong>Loose Coins:</strong>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="o.coin_amount" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="border-black o_total">
|
||||
<td />
|
||||
<td class="text-end">
|
||||
<strong>Total:</strong>
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<span t-field="o.total_amount" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p t-if="o.notes" name="notes">
|
||||
<span t-field="o.notes" />
|
||||
</p>
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</odoo>
|
6
account_cash_deposit/security/ir.model.access.csv
Normal file
6
account_cash_deposit/security/ir.model.access.csv
Normal file
@ -0,0 +1,6 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_account_cash_deposit_user,Full rights on account.cash.deposit to Accountant,model_account_cash_deposit,account.group_account_user,1,1,1,1
|
||||
access_account_cash_deposit_line_user,Full rights on account.cash.deposit.line to Accountant,model_account_cash_deposit_line,account.group_account_user,1,1,1,1
|
||||
access_account_cash_order_reception,Full rights on account.cash.order.reception wizard,model_account_cash_order_reception,account.group_account_user,1,1,1,1
|
||||
cash_unit_read,Read rights on cash.unit to everybody,model_cash_unit,,1,0,0,0
|
||||
cash_unit_full,Full rights on cash.unit to System group,model_cash_unit,base.group_system,1,1,1,1
|
|
13
account_cash_deposit/security/security.xml
Normal file
13
account_cash_deposit/security/security.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
||||
-->
|
||||
<odoo noupdate="1">
|
||||
<record id="cash_deposit_rule" model="ir.rule">
|
||||
<field name="name">Cash Deposit multi-company</field>
|
||||
<field name="model_id" ref="model_account_cash_deposit" />
|
||||
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
|
||||
</record>
|
||||
</odoo>
|
BIN
account_cash_deposit/static/description/cash_deposit_form.png
Normal file
BIN
account_cash_deposit/static/description/cash_deposit_form.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 91 KiB |
BIN
account_cash_deposit/static/description/currency_form_view.png
Normal file
BIN
account_cash_deposit/static/description/currency_form_view.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 78 KiB |
BIN
account_cash_deposit/static/description/icon.png
Normal file
BIN
account_cash_deposit/static/description/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.2 KiB |
447
account_cash_deposit/static/description/index.html
Normal file
447
account_cash_deposit/static/description/index.html
Normal file
@ -0,0 +1,447 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
|
||||
<title>Account Cash Deposit</title>
|
||||
<style type="text/css">
|
||||
|
||||
/*
|
||||
:Author: David Goodger (goodger@python.org)
|
||||
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
|
||||
:Copyright: This stylesheet has been placed in the public domain.
|
||||
|
||||
Default cascading style sheet for the HTML output of Docutils.
|
||||
|
||||
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
|
||||
customize this style sheet.
|
||||
*/
|
||||
|
||||
/* used to remove borders from tables and images */
|
||||
.borderless, table.borderless td, table.borderless th {
|
||||
border: 0 }
|
||||
|
||||
table.borderless td, table.borderless th {
|
||||
/* Override padding for "table.docutils td" with "! important".
|
||||
The right padding separates the table cells. */
|
||||
padding: 0 0.5em 0 0 ! important }
|
||||
|
||||
.first {
|
||||
/* Override more specific margin styles with "! important". */
|
||||
margin-top: 0 ! important }
|
||||
|
||||
.last, .with-subtitle {
|
||||
margin-bottom: 0 ! important }
|
||||
|
||||
.hidden {
|
||||
display: none }
|
||||
|
||||
.subscript {
|
||||
vertical-align: sub;
|
||||
font-size: smaller }
|
||||
|
||||
.superscript {
|
||||
vertical-align: super;
|
||||
font-size: smaller }
|
||||
|
||||
a.toc-backref {
|
||||
text-decoration: none ;
|
||||
color: black }
|
||||
|
||||
blockquote.epigraph {
|
||||
margin: 2em 5em ; }
|
||||
|
||||
dl.docutils dd {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
||||
dl.docutils dt {
|
||||
font-weight: bold }
|
||||
*/
|
||||
|
||||
div.abstract {
|
||||
margin: 2em 5em }
|
||||
|
||||
div.abstract p.topic-title {
|
||||
font-weight: bold ;
|
||||
text-align: center }
|
||||
|
||||
div.admonition, div.attention, div.caution, div.danger, div.error,
|
||||
div.hint, div.important, div.note, div.tip, div.warning {
|
||||
margin: 2em ;
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.admonition p.admonition-title, div.hint p.admonition-title,
|
||||
div.important p.admonition-title, div.note p.admonition-title,
|
||||
div.tip p.admonition-title {
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
div.attention p.admonition-title, div.caution p.admonition-title,
|
||||
div.danger p.admonition-title, div.error p.admonition-title,
|
||||
div.warning p.admonition-title, .code .error {
|
||||
color: red ;
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
/* Uncomment (and remove this text!) to get reduced vertical space in
|
||||
compound paragraphs.
|
||||
div.compound .compound-first, div.compound .compound-middle {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
div.compound .compound-last, div.compound .compound-middle {
|
||||
margin-top: 0.5em }
|
||||
*/
|
||||
|
||||
div.dedication {
|
||||
margin: 2em 5em ;
|
||||
text-align: center ;
|
||||
font-style: italic }
|
||||
|
||||
div.dedication p.topic-title {
|
||||
font-weight: bold ;
|
||||
font-style: normal }
|
||||
|
||||
div.figure {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
div.footer, div.header {
|
||||
clear: both;
|
||||
font-size: smaller }
|
||||
|
||||
div.line-block {
|
||||
display: block ;
|
||||
margin-top: 1em ;
|
||||
margin-bottom: 1em }
|
||||
|
||||
div.line-block div.line-block {
|
||||
margin-top: 0 ;
|
||||
margin-bottom: 0 ;
|
||||
margin-left: 1.5em }
|
||||
|
||||
div.sidebar {
|
||||
margin: 0 0 0.5em 1em ;
|
||||
border: medium outset ;
|
||||
padding: 1em ;
|
||||
background-color: #ffffee ;
|
||||
width: 40% ;
|
||||
float: right ;
|
||||
clear: right }
|
||||
|
||||
div.sidebar p.rubric {
|
||||
font-family: sans-serif ;
|
||||
font-size: medium }
|
||||
|
||||
div.system-messages {
|
||||
margin: 5em }
|
||||
|
||||
div.system-messages h1 {
|
||||
color: red }
|
||||
|
||||
div.system-message {
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.system-message p.system-message-title {
|
||||
color: red ;
|
||||
font-weight: bold }
|
||||
|
||||
div.topic {
|
||||
margin: 2em }
|
||||
|
||||
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
||||
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
||||
margin-top: 0.4em }
|
||||
|
||||
h1.title {
|
||||
text-align: center }
|
||||
|
||||
h2.subtitle {
|
||||
text-align: center }
|
||||
|
||||
hr.docutils {
|
||||
width: 75% }
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
||||
clear: left ;
|
||||
float: left ;
|
||||
margin-right: 1em }
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
||||
clear: right ;
|
||||
float: right ;
|
||||
margin-left: 1em }
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left }
|
||||
|
||||
.align-center {
|
||||
clear: both ;
|
||||
text-align: center }
|
||||
|
||||
.align-right {
|
||||
text-align: right }
|
||||
|
||||
/* reset inner alignment in figures */
|
||||
div.align-right {
|
||||
text-align: inherit }
|
||||
|
||||
/* div.align-center * { */
|
||||
/* text-align: left } */
|
||||
|
||||
.align-top {
|
||||
vertical-align: top }
|
||||
|
||||
.align-middle {
|
||||
vertical-align: middle }
|
||||
|
||||
.align-bottom {
|
||||
vertical-align: bottom }
|
||||
|
||||
ol.simple, ul.simple {
|
||||
margin-bottom: 1em }
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal }
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha }
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha }
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman }
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman }
|
||||
|
||||
p.attribution {
|
||||
text-align: right ;
|
||||
margin-left: 50% }
|
||||
|
||||
p.caption {
|
||||
font-style: italic }
|
||||
|
||||
p.credits {
|
||||
font-style: italic ;
|
||||
font-size: smaller }
|
||||
|
||||
p.label {
|
||||
white-space: nowrap }
|
||||
|
||||
p.rubric {
|
||||
font-weight: bold ;
|
||||
font-size: larger ;
|
||||
color: maroon ;
|
||||
text-align: center }
|
||||
|
||||
p.sidebar-title {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold ;
|
||||
font-size: larger }
|
||||
|
||||
p.sidebar-subtitle {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
p.topic-title {
|
||||
font-weight: bold }
|
||||
|
||||
pre.address {
|
||||
margin-bottom: 0 ;
|
||||
margin-top: 0 ;
|
||||
font: inherit }
|
||||
|
||||
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
pre.code .ln { color: grey; } /* line numbers */
|
||||
pre.code, code { background-color: #eeeeee }
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
span.classifier {
|
||||
font-family: sans-serif ;
|
||||
font-style: oblique }
|
||||
|
||||
span.classifier-delimiter {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
span.interpreted {
|
||||
font-family: sans-serif }
|
||||
|
||||
span.option {
|
||||
white-space: nowrap }
|
||||
|
||||
span.pre {
|
||||
white-space: pre }
|
||||
|
||||
span.problematic {
|
||||
color: red }
|
||||
|
||||
span.section-subtitle {
|
||||
/* font-size relative to parent (h1..h6 element) */
|
||||
font-size: 80% }
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docinfo {
|
||||
margin: 2em 4em }
|
||||
|
||||
table.docutils {
|
||||
margin-top: 0.5em ;
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
table.footnote {
|
||||
border-left: solid 1px black;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docutils td, table.docutils th,
|
||||
table.docinfo td, table.docinfo th {
|
||||
padding-left: 0.5em ;
|
||||
padding-right: 0.5em ;
|
||||
vertical-align: top }
|
||||
|
||||
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
||||
font-weight: bold ;
|
||||
text-align: left ;
|
||||
white-space: nowrap ;
|
||||
padding-left: 0 }
|
||||
|
||||
/* "booktabs" style (no vertical lines) */
|
||||
table.docutils.booktabs {
|
||||
border: 0px;
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.docutils.booktabs * {
|
||||
border: 0px;
|
||||
}
|
||||
table.docutils.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
||||
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
||||
font-size: 100% }
|
||||
|
||||
ul.auto-toc {
|
||||
list-style-type: none }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="account-cash-deposit">
|
||||
<h1 class="title">Account Cash Deposit</h1>
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/account-financial-tools/tree/14.0/account_cash_deposit"><img alt="OCA/account-financial-tools" src="https://img.shields.io/badge/github-OCA%2Faccount--financial--tools-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/account-financial-tools-14-0/account-financial-tools-14-0-account_cash_deposit"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/92/14.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
|
||||
<p>This module adds support for <strong>cash deposits at the bank</strong>. It also supports the other way around: <strong>ordering cash at the bank</strong>. It allows to declare the kind of cash you want to deposit (or order): bank notes, coins and coin rolls and the quantity for each of them. Coins are rarely used, because most banks only allow to deposit/order coin rolls.</p>
|
||||
<p><strong>Table of contents</strong></p>
|
||||
<div class="contents local topic" id="contents">
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#configuration" id="id1">Configuration</a></li>
|
||||
<li><a class="reference internal" href="#usage" id="id2">Usage</a></li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="id3">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="id4">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="id5">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="id6">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="id7">Maintainers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="configuration">
|
||||
<h1><a class="toc-backref" href="#id1">Configuration</a></h1>
|
||||
<p>First, for each currency of your cash boxes, you must define the bank notes and coin rolls for that currency (coin rolls are often standardised by the Central Bank). You can also definie the coins, but it’s not useful if your bank only accept coin rolls and not coins.</p>
|
||||
<div class="figure">
|
||||
<img alt="Currency form view" src="https://raw.githubusercontent.com/OCA/account-financial-tools/14.0/account_cash_deposit/static/description/currency_form_view.png" />
|
||||
</div>
|
||||
<p>To save time for new users, this module provides the bank notes, coins and coin rolls for several currencies (EUR, USD, CAD, etc.). If it is not the case for your currency, it would be very nice of you to contribute it (you can use the file <em>account_cash_deposit/data/cash_unit_eur.xml</em> as an example).</p>
|
||||
<p>To save time when encoding the cash deposits/orders, you can set the parameter <em>Auto Create</em> on the bank notes and/or coin rolls that you use very often.</p>
|
||||
<p>On the Accounting configuration page, in the section <em>Bank & Cash</em>, the <em>Inter-Banks Transfer Account</em> must be configured.</p>
|
||||
</div>
|
||||
<div class="section" id="usage">
|
||||
<h1><a class="toc-backref" href="#id2">Usage</a></h1>
|
||||
<p>To create a new cash <strong>deposit</strong>, go to the menu <em>Invoicing > Accounting > Miscellaneous > Cash Deposits</em> and click on <em>Create</em>: select the currency, the cash box from which you will take the cash out and the bank journal corresponding to the bank account on which you want to deposit the cash. Then create/edit lines to enter the quantity for each kind of bank note and coin rolls. Then, you can print a PDF report designed to be a kind of delivery report for the cash. Upon validation, Odoo will generate a journal entry in the cash journal that:</p>
|
||||
<ul class="simple">
|
||||
<li>credits the cash account,</li>
|
||||
<li>debits the inter-banks transfer account.</li>
|
||||
</ul>
|
||||
<div class="figure">
|
||||
<img alt="Cash Deposit form view" src="https://raw.githubusercontent.com/OCA/account-financial-tools/14.0/account_cash_deposit/static/description/cash_deposit_form.png" />
|
||||
</div>
|
||||
<p>The process is very similar when <strong>ordering</strong> cash but you have to use another menu entry: menu <em>Invoicing > Accounting > Miscellaneous > Cash Orders</em>. Select the currency, the cash box that will receive the cash and the bank account from which the bank will take the money. Create/edit lines to enter the details of your order (bank notes, coin rolls). Then, you can confirm the order and print a PDF report designed to be sent to your bank as a cash order. Eventually, when the bank delivers the cash to you, you should validate the cash order and Odoo will generate a journal entry in the cash journal that:</p>
|
||||
<ul class="simple">
|
||||
<li>debits the cash account,</li>
|
||||
<li>credits the inter-banks transfer account.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="bug-tracker">
|
||||
<h1><a class="toc-backref" href="#id3">Bug Tracker</a></h1>
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-financial-tools/issues">GitHub Issues</a>.
|
||||
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
|
||||
<a class="reference external" href="https://github.com/OCA/account-financial-tools/issues/new?body=module:%20account_cash_deposit%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
<h1><a class="toc-backref" href="#id4">Credits</a></h1>
|
||||
<div class="section" id="authors">
|
||||
<h2><a class="toc-backref" href="#id5">Authors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Akretion</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="contributors">
|
||||
<h2><a class="toc-backref" href="#id6">Contributors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Alexis de Lattre <<a class="reference external" href="mailto:alexis.delattre@akretion.com">alexis.delattre@akretion.com</a>></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
<h2><a class="toc-backref" href="#id7">Maintainers</a></h2>
|
||||
<p>This module is maintained by the OCA.</p>
|
||||
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
|
||||
<p>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.</p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-financial-tools/tree/14.0/account_cash_deposit">OCA/account-financial-tools</a> project on GitHub.</p>
|
||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
1
account_cash_deposit/tests/__init__.py
Normal file
1
account_cash_deposit/tests/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from . import test_cash_deposit
|
131
account_cash_deposit/tests/test_cash_deposit.py
Normal file
131
account_cash_deposit/tests/test_cash_deposit.py
Normal file
@ -0,0 +1,131 @@
|
||||
# Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from datetime import date, timedelta
|
||||
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
|
||||
class TestAccountCashDeposit(TransactionCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.company = self.env.ref("base.main_company")
|
||||
self.currency = self.company.currency_id
|
||||
self.cash_journal = self.env["account.journal"].search(
|
||||
[("type", "=", "cash"), ("company_id", "=", self.company.id)], limit=1
|
||||
)
|
||||
self.bank_journal = self.env["account.journal"].search(
|
||||
[("type", "=", "bank"), ("company_id", "=", self.company.id)], limit=1
|
||||
)
|
||||
self.cash_unit_note = self.env["cash.unit"].search(
|
||||
[("currency_id", "=", self.currency.id), ("cash_type", "=", "note")],
|
||||
limit=1,
|
||||
)
|
||||
self.cash_unit_coinroll = self.env["cash.unit"].search(
|
||||
[("currency_id", "=", self.currency.id), ("cash_type", "=", "coinroll")],
|
||||
limit=1,
|
||||
)
|
||||
self.all_cash_units = self.env["cash.unit"].search(
|
||||
[("currency_id", "=", self.currency.id)]
|
||||
)
|
||||
self.date = date.today()
|
||||
self.yesterday = date.today() - timedelta(days=1)
|
||||
self.deposit_seq = self.env["ir.sequence"].search(
|
||||
[("code", "=", "account.cash.deposit")]
|
||||
)
|
||||
self.order_seq = self.env["ir.sequence"].search(
|
||||
[("code", "=", "account.cash.order")]
|
||||
)
|
||||
|
||||
def test_cash_order(self):
|
||||
self.all_cash_units.write({"auto_create": "both"})
|
||||
order = (
|
||||
self.env["account.cash.deposit"]
|
||||
.with_context(default_operation_type="order")
|
||||
.create(
|
||||
{
|
||||
"company_id": self.company.id,
|
||||
"currency_id": self.currency.id,
|
||||
"cash_journal_id": self.cash_journal.id,
|
||||
"bank_journal_id": self.bank_journal.id,
|
||||
}
|
||||
)
|
||||
)
|
||||
self.assertEqual(len(order.line_ids), len(self.all_cash_units))
|
||||
self.assertEqual(order.state, "draft")
|
||||
self.assertTrue(order.name.startswith(self.order_seq.prefix))
|
||||
self.assertEqual(order.operation_type, "order")
|
||||
line_note = self.env["account.cash.deposit.line"].search(
|
||||
[
|
||||
("cash_unit_id", "=", self.cash_unit_note.id),
|
||||
("parent_id", "=", order.id),
|
||||
]
|
||||
)
|
||||
line_note.write({"qty": 5})
|
||||
line_note = self.env["account.cash.deposit.line"].search(
|
||||
[
|
||||
("cash_unit_id", "=", self.cash_unit_coinroll.id),
|
||||
("parent_id", "=", order.id),
|
||||
]
|
||||
)
|
||||
line_note.write({"qty": 2})
|
||||
total = (
|
||||
5 * self.cash_unit_note.total_value
|
||||
+ 2 * self.cash_unit_coinroll.total_value
|
||||
)
|
||||
self.assertFalse(order.currency_id.compare_amounts(order.total_amount, total))
|
||||
order.confirm_order()
|
||||
self.assertEqual(order.state, "confirmed")
|
||||
self.assertEqual(len(order.line_ids), 2)
|
||||
wizard = (
|
||||
self.env["account.cash.order.reception"]
|
||||
.with_context(default_order_id=order.id)
|
||||
.create({"date": self.yesterday})
|
||||
)
|
||||
wizard.run()
|
||||
self.assertEqual(order.state, "done")
|
||||
self.assertEqual(order.date, self.yesterday)
|
||||
self.assertTrue(order.move_id)
|
||||
self.assertEqual(len(order.move_id.line_ids), 2)
|
||||
self.assertEqual(order.move_id.date, order.date)
|
||||
self.assertEqual(order.move_id.journal_id, order.cash_journal_id)
|
||||
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")
|
||||
.create(
|
||||
{
|
||||
"company_id": self.company.id,
|
||||
"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}),
|
||||
],
|
||||
}
|
||||
)
|
||||
)
|
||||
self.assertEqual(len(deposit.line_ids), 2)
|
||||
self.assertEqual(deposit.state, "draft")
|
||||
self.assertTrue(deposit.name.startswith(self.deposit_seq.prefix))
|
||||
self.assertEqual(deposit.operation_type, "deposit")
|
||||
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)
|
||||
)
|
||||
deposit.validate()
|
||||
self.assertEqual(deposit.state, "done")
|
||||
self.assertTrue(deposit.move_id)
|
||||
self.assertEqual(len(deposit.move_id.line_ids), 2)
|
||||
self.assertEqual(deposit.move_id.date, deposit.date)
|
||||
self.assertEqual(deposit.move_id.journal_id, deposit.cash_journal_id)
|
||||
self.assertEqual(deposit.move_id.ref, deposit.display_name)
|
234
account_cash_deposit/views/account_cash_deposit.xml
Normal file
234
account_cash_deposit/views/account_cash_deposit.xml
Normal file
@ -0,0 +1,234 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
||||
-->
|
||||
<odoo>
|
||||
<record id="account_cash_deposit_form" model="ir.ui.view">
|
||||
<field name="model">account.cash.deposit</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<!-- order -->
|
||||
<button
|
||||
name="confirm_order"
|
||||
string="Confirm Order"
|
||||
type="object"
|
||||
class="btn-primary"
|
||||
attrs="{'invisible': ['|', ('operation_type', '!=', 'order'), ('state', '!=', 'draft')]}"
|
||||
/>
|
||||
<button
|
||||
name="%(account_cash_order_reception_action)d"
|
||||
string="Cash Received"
|
||||
type="action"
|
||||
context="{'default_order_id': active_id}"
|
||||
class="btn-primary"
|
||||
attrs="{'invisible': ['|', ('operation_type', '!=', 'order'), ('state', '!=', 'confirmed')]}"
|
||||
/>
|
||||
<!-- deposit -->
|
||||
<button
|
||||
name="validate"
|
||||
string="Validate"
|
||||
type="object"
|
||||
class="btn-primary"
|
||||
attrs="{'invisible': ['|', ('operation_type', '!=', 'deposit'), ('state', '!=', 'draft')]}"
|
||||
/>
|
||||
|
||||
<button name="get_report" string="Print" type="object" />
|
||||
<button
|
||||
name="backtodraft"
|
||||
states="confirmed,done"
|
||||
string="Back to Draft"
|
||||
type="object"
|
||||
/>
|
||||
<field
|
||||
name="state"
|
||||
widget="statusbar"
|
||||
statusbar_visible="draft,done"
|
||||
/>
|
||||
</header>
|
||||
<sheet>
|
||||
<div class="oe_title">
|
||||
<b><field name="operation_type" /></b>
|
||||
<h1>
|
||||
<field name="name" />
|
||||
</h1>
|
||||
</div>
|
||||
<group name="main">
|
||||
<group name="left">
|
||||
<field
|
||||
name="order_date"
|
||||
attrs="{'invisible': [('operation_type', '!=', 'order')]}"
|
||||
/>
|
||||
|
||||
<field
|
||||
name="currency_id"
|
||||
groups="base.group_multi_currency"
|
||||
/>
|
||||
<field name="currency_id" invisible="1" />
|
||||
<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" />
|
||||
<field name="date" />
|
||||
<field
|
||||
name="company_id"
|
||||
groups="base.group_multi_company"
|
||||
/>
|
||||
<field name="company_id" invisible="1" />
|
||||
<field name="move_id" />
|
||||
</group>
|
||||
</group>
|
||||
<group name="lines">
|
||||
<field
|
||||
name="line_ids"
|
||||
nolabel="1"
|
||||
colspan="2"
|
||||
context="{'default_currency_id': currency_id}"
|
||||
>
|
||||
<tree editable="bottom">
|
||||
<field name="cash_unit_id" />
|
||||
<field name="qty" />
|
||||
<field name="subtotal" sum="1" />
|
||||
<field name="currency_id" invisible="1" />
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group name="notes" string="Notes">
|
||||
<field name="notes" nolabel="1" />
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" widget="mail_followers" />
|
||||
<field name="activity_ids" widget="mail_activity" />
|
||||
<field name="message_ids" widget="mail_thread" />
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record id="account_cash_deposit_tree" model="ir.ui.view">
|
||||
<field name="model">account.cash.deposit</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="operation_type" optional="hide" />
|
||||
<field name="name" decoration-bf="1" />
|
||||
<field
|
||||
name="order_date"
|
||||
invisible="context.get('default_operation_type')!='order'"
|
||||
/>
|
||||
<field name="date" />
|
||||
<field name="cash_journal_id" />
|
||||
<field name="bank_journal_id" />
|
||||
<field name="total_amount" decoration-bf="1" />
|
||||
<field
|
||||
name="currency_id"
|
||||
groups="base.group_multi_currency"
|
||||
optional="hide"
|
||||
/>
|
||||
<field name="is_reconcile" optional="show" />
|
||||
<field
|
||||
name="company_id"
|
||||
groups="base.group_multi_company"
|
||||
optional="show"
|
||||
/>
|
||||
<field
|
||||
name="state"
|
||||
widget="badge"
|
||||
decoration-info="state == 'draft'"
|
||||
decoration-warning="state == 'confirmed'"
|
||||
decoration-success="state == 'done'"
|
||||
/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="account_cash_deposit_search" model="ir.ui.view">
|
||||
<field name="model">account.cash.deposit</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name" />
|
||||
<field name="cash_journal_id" domain="[('type', '=', 'cash')]" />
|
||||
<field
|
||||
name="bank_journal_id"
|
||||
domain="[('type', '=', 'bank'), ('bank_account_id', '!=', False)]"
|
||||
/>
|
||||
<filter
|
||||
name="draft"
|
||||
string="Draft"
|
||||
domain="[('state', '=', 'draft')]"
|
||||
/>
|
||||
<filter
|
||||
name="confirmed"
|
||||
string="Confirmed"
|
||||
domain="[('state', '=', 'confirmed')]"
|
||||
/>
|
||||
<filter name="done" string="Done" domain="[('state', '=', 'done')]" />
|
||||
<separator />
|
||||
<filter name="date" string="Date" date="date" />
|
||||
<group string="Group By" name="groupby">
|
||||
<filter
|
||||
name="date_groupby"
|
||||
string="Date"
|
||||
context="{'group_by': 'date'}"
|
||||
/>
|
||||
<filter
|
||||
name="cash_journal_groupby"
|
||||
string="Cash Box"
|
||||
context="{'group_by': 'cash_journal_id'}"
|
||||
/>
|
||||
<filter
|
||||
name="bank_journal_id_groupby"
|
||||
string="Bank Account"
|
||||
context="{'group_by': 'bank_journal_id'}"
|
||||
/>
|
||||
<filter
|
||||
name="currency_groupby"
|
||||
string="Currency"
|
||||
context="{'group_by': 'currency_id'}"
|
||||
/>
|
||||
<filter
|
||||
name="state_groupby"
|
||||
string="State"
|
||||
context="{'group_by': 'state'}"
|
||||
/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="account_cash_deposit_action" model="ir.actions.act_window">
|
||||
<field name="name">Cash Deposits</field>
|
||||
<field name="res_model">account.cash.deposit</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('operation_type', '=', 'deposit')]</field>
|
||||
<field name="context">{'default_operation_type': 'deposit'}</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="account_cash_deposit_menu"
|
||||
action="account_cash_deposit_action"
|
||||
parent="account.menu_finance_entries_accounting_miscellaneous"
|
||||
sequence="35"
|
||||
/>
|
||||
<record id="account_cash_order_action" model="ir.actions.act_window">
|
||||
<field name="name">Cash Orders</field>
|
||||
<field name="res_model">account.cash.deposit</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="domain">[('operation_type', '=', 'order')]</field>
|
||||
<field name="context">{'default_operation_type': 'order'}</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="account_cash_order_menu"
|
||||
action="account_cash_order_action"
|
||||
parent="account.menu_finance_entries_accounting_miscellaneous"
|
||||
sequence="37"
|
||||
/>
|
||||
|
||||
|
||||
|
||||
</odoo>
|
75
account_cash_deposit/views/cash_unit.xml
Normal file
75
account_cash_deposit/views/cash_unit.xml
Normal file
@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<record id="cash_unit_form" model="ir.ui.view">
|
||||
<field name="model">cash.unit</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<widget
|
||||
name="web_ribbon"
|
||||
title="Archived"
|
||||
bg_color="bg-danger"
|
||||
attrs="{'invisible': [('active', '=', True)]}"
|
||||
/>
|
||||
<group name="main">
|
||||
<field
|
||||
name="currency_id"
|
||||
invisible="not context.get('cash_unit_main_view')"
|
||||
/>
|
||||
<field name="active" invisible="1" />
|
||||
<field name="cash_type" />
|
||||
<field
|
||||
name="coinroll_qty"
|
||||
attrs="{'invisible': [('cash_type', '!=', 'coinroll')], 'required': [('cash_type', '=', 'coinroll')]}"
|
||||
/>
|
||||
<field name="value" />
|
||||
<field
|
||||
name="total_value"
|
||||
attrs="{'invisible': [('cash_type', '!=', 'coinroll')]}"
|
||||
/>
|
||||
<field name="auto_create" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="cash_unit_tree" model="ir.ui.view">
|
||||
<field name="model">cash.unit</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field
|
||||
name="currency_id"
|
||||
invisible="not context.get('cash_unit_main_view')"
|
||||
/>
|
||||
<field
|
||||
name="cash_type"
|
||||
widget="badge"
|
||||
decoration-success="cash_type == 'note'"
|
||||
decoration-muted="cash_type == 'coin'"
|
||||
decoration-info="cash_type == 'coinroll'"
|
||||
/>
|
||||
<field name="value" />
|
||||
<field
|
||||
name="coinroll_qty"
|
||||
attrs="{'invisible': [('cash_type', '!=', 'coinroll')]}"
|
||||
/>
|
||||
<field name="total_value" />
|
||||
<field name="auto_create" optional="show" />
|
||||
</tree>
|
||||
</field>
|
||||
|
||||
</record>
|
||||
|
||||
<record id="cash_unit_action" model="ir.actions.act_window">
|
||||
<field name="name">Cash Unit</field>
|
||||
<field name="res_model">cash.unit</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="context">{'cash_unit_main_view': True}</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
21
account_cash_deposit/views/res_currency.xml
Normal file
21
account_cash_deposit/views/res_currency.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<record id="view_currency_form" model="ir.ui.view">
|
||||
<field name="model">res.currency</field>
|
||||
<field name="inherit_id" ref="base.view_currency_form" />
|
||||
<field name="arch" type="xml">
|
||||
<sheet position="inside">
|
||||
<group name="cash_units" string="Cash Units">
|
||||
<field name="cash_unit_ids" nolabel="1" colspan="2" />
|
||||
</group>
|
||||
</sheet>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
1
account_cash_deposit/wizards/__init__.py
Normal file
1
account_cash_deposit/wizards/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from . import account_cash_order_reception
|
27
account_cash_deposit/wizards/account_cash_order_reception.py
Normal file
27
account_cash_deposit/wizards/account_cash_order_reception.py
Normal file
@ -0,0 +1,27 @@
|
||||
# Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import _, fields, models
|
||||
from odoo.tools.misc import format_date
|
||||
|
||||
|
||||
class AccountCashOrderReception(models.TransientModel):
|
||||
_name = "account.cash.order.reception"
|
||||
_description = "Cash Order Reception"
|
||||
|
||||
order_id = fields.Many2one(
|
||||
"account.cash.deposit", readonly=True, string="Cash Order"
|
||||
)
|
||||
date = fields.Date(
|
||||
string="Cash Reception Date", default=fields.Date.context_today, required=True
|
||||
)
|
||||
total_amount = fields.Monetary(related="order_id.total_amount")
|
||||
currency_id = fields.Many2one(related="order_id.currency_id")
|
||||
|
||||
def run(self):
|
||||
self.ensure_one()
|
||||
self.order_id.message_post(
|
||||
body=_("Cash reception confirmed on %s.") % format_date(self.env, self.date)
|
||||
)
|
||||
self.order_id.validate(force_date=self.date)
|
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!--
|
||||
Copyright 2022 Akretion France (http://www.akretion.com/)
|
||||
@author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
-->
|
||||
<odoo>
|
||||
|
||||
<record id="account_cash_order_reception_form" model="ir.ui.view">
|
||||
<field name="model">account.cash.order.reception</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<group name="main">
|
||||
<field name="order_id" />
|
||||
<field
|
||||
name="date"
|
||||
options="{'datepicker': {'warn_future': true}}"
|
||||
/>
|
||||
<field name="total_amount" />
|
||||
<field name="currency_id" invisible="1" />
|
||||
</group>
|
||||
<footer>
|
||||
<button
|
||||
name="run"
|
||||
type="object"
|
||||
string="Confirm Cash Reception"
|
||||
class="btn-primary"
|
||||
/>
|
||||
<button special="cancel" string="Cancel" />
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="account_cash_order_reception_action" model="ir.actions.act_window">
|
||||
<field name="name">Cash Order Reception</field>
|
||||
<field name="res_model">account.cash.order.reception</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
1
setup/account_cash_deposit/odoo/addons/account_cash_deposit
Symbolic link
1
setup/account_cash_deposit/odoo/addons/account_cash_deposit
Symbolic link
@ -0,0 +1 @@
|
||||
../../../../account_cash_deposit
|
6
setup/account_cash_deposit/setup.py
Normal file
6
setup/account_cash_deposit/setup.py
Normal file
@ -0,0 +1,6 @@
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
setup_requires=['setuptools-odoo'],
|
||||
odoo_addon=True,
|
||||
)
|
Loading…
Reference in New Issue
Block a user