2
0

Add module account_cash_deposit

This module manages cash deposits (cash to bank) and cash orders (bank to cash)
This commit is contained in:
Alexis de Lattre 2022-02-21 22:52:54 +01:00
parent 1782a12048
commit 6b8d47f5c0
32 changed files with 3141 additions and 0 deletions

View File

@ -0,0 +1 @@
Will be auto-generated from readme subdir

View File

@ -0,0 +1,2 @@
from . import models
from . import wizards

View 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": "14.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,
}

View 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>

View 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>

View 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>

View 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>

View 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>

View File

@ -0,0 +1,672 @@
# 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 17:51+0000\n"
"PO-Revision-Date: 2022-03-03 17:51+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: 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
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,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__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
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
#, python-format
msgid "Missing Outstanding Payments Account on bank journal '%s'."
msgstr ""
#. module: account_cash_deposit
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
#, python-format
msgid "Missing Outstanding Receipts Account on bank journal '%s'."
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 "Reconcile"
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__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
#: 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_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 ""

View File

@ -0,0 +1,675 @@
# 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"
"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_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
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,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__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
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
#, python-format
msgid "Missing Outstanding Payments Account on bank journal '%s'."
msgstr "Compte de paiements sortants non configuré sur le journal de banque '%s'."
#. module: account_cash_deposit
#: code:addons/account_cash_deposit/models/account_cash_deposit.py:0
#, python-format
msgid "Missing Outstanding Receipts Account on bank journal '%s'."
msgstr "Compte de paiements entrants non configuré sur le journal de banque '%s'."
#. 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__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
#: 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_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."

View File

@ -0,0 +1,3 @@
from . import cash_unit
from . import res_currency
from . import account_cash_deposit

View File

@ -0,0 +1,418 @@
# 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,
string="Operation Type",
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(
string="Date",
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",
string="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",
string="Company",
required=True,
readonly=True,
states={"draft": [("readonly", "=", False)]},
tracking=True,
)
total_amount = fields.Monetary(
compute="_compute_total_amount",
string="Total Amount",
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.",
)
]
@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")
def _compute_total_amount(self):
rg_res = self.env["account.cash.deposit.line"].read_group(
[("parent_id", "in", self.ids)],
["parent_id", "subtotal"],
["parent_id"],
)
mapped_data = {x["parent_id"][0]: x["subtotal"] for x in rg_res}
for rec in self:
rec.total_amount = mapped_data.get(rec.id, 0)
@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:
move = rec.move_id
# It will raise here if journal_id.update_posted = False
if move.state == "posted":
move.button_draft()
move.unlink()
rec.write({"state": "draft"})
@api.model
def create(self, vals):
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)
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["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
else:
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)
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

View File

@ -0,0 +1,148 @@
# 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 _, api, fields, models
from odoo.exceptions import ValidationError
from odoo.tools.misc import format_amount
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 Exception:
pass
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 Exception:
pass
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)

View 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")

View 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.

View File

@ -0,0 +1 @@
* Alexis de Lattre <alexis.delattre@akretion.com>

View 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.

View 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.

View 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>

View File

@ -0,0 +1,104 @@
<?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-right">Quantity</th>
<th class="text-right">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-right">
<span t-field="line.qty" />
</td>
<td class="text-right">
<span
t-field="line.subtotal"
t-field-options='{"widget": "monetary", "display_currency": "o.currency_id"}'
/>
</td>
</tr>
</t>
<tr class="border-black o_total">
<td />
<td class="text-right">
<strong>Total:</strong>
</td>
<td class="text-right">
<span
t-field="o.total_amount"
t-field-options='{"widget": "monetary", "display_currency": "o.currency_id"}'
/>
</td>
</tr>
</tbody>
</table>
</div>
<p t-if="o.notes" name="notes">
<span t-field="o.notes" />
</p>
</t>
</t>
</t>
</template>
</odoo>

View 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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 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
3 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
4 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
5 cash_unit_read Read rights on cash.unit to everybody model_cash_unit 1 0 0 0
6 cash_unit_full Full rights on cash.unit to System group model_cash_unit base.group_system 1 1 1 1

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -0,0 +1 @@
from . import test_cash_deposit

View File

@ -0,0 +1,129 @@
# 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):
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,
"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
)
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)

View File

@ -0,0 +1,218 @@
<?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="cash_journal_id" />
<field name="bank_journal_id" />
</group>
<group name="right">
<field name="total_amount" />
<field name="date" />
<field
name="company_id"
groups="base.group_multi_company"
/>
<field name="move_id" />
</group>
</group>
<group name="lines">
<field
name="line_ids"
nolabel="1"
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" />
<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'}"
/>
</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>

View File

@ -0,0 +1,72 @@
<?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" />
<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>

View 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" />
</group>
</sheet>
</field>
</record>
</odoo>

View File

@ -0,0 +1 @@
from . import account_cash_order_reception

View 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)

View File

@ -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>