first commit

This commit is contained in:
root
2026-03-14 09:42:12 +00:00
commit 0adbd20c2c
10991 changed files with 1646955 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@@ -0,0 +1,203 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from decimal import Decimal
from trytond.i18n import gettext
from trytond.model import ModelSQL, fields
from trytond.modules.account.exceptions import AccountMissing
from trytond.modules.company.model import CompanyValueMixin
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
from trytond.transaction import Transaction
class Configuration(metaclass=PoolMeta):
__name__ = 'account.configuration'
cash_rounding = fields.MultiValue(fields.Boolean("Cash Rounding"))
cash_rounding_credit_account = fields.MultiValue(fields.Many2One(
'account.account', "Cash Rounding Credit Account",
domain=[
('type', '!=', None),
('closed', '!=', True),
('company', '=', Eval('context', {}).get('company', -1)),
],
states={
'required': Eval('cash_rounding', False),
}))
cash_rounding_debit_account = fields.MultiValue(fields.Many2One(
'account.account', "Cash Rounding Debit Account",
domain=[
('type', '!=', None),
('closed', '!=', True),
('company', '=', Eval('context', {}).get('company', -1)),
],
states={
'required': Eval('cash_rounding', False),
}))
@classmethod
def multivalue_model(cls, field):
pool = Pool()
if field in {
'cash_rounding',
'cash_rounding_credit_account',
'cash_rounding_debit_account',
}:
return pool.get('account.configuration.cash_rounding_account')
return super().multivalue_model(field)
class ConfigurationCashRoundingAccount(ModelSQL, CompanyValueMixin):
__name__ = 'account.configuration.cash_rounding_account'
cash_rounding = fields.Boolean("Cash Rounding")
cash_rounding_credit_account = fields.Many2One(
'account.account', "Cash Rounding Credit Account",
domain=[
('type', '!=', None),
('closed', '!=', True),
('company', '=', Eval('company', -1)),
])
cash_rounding_debit_account = fields.Many2One(
'account.account', "Cash Rounding Debit Account",
domain=[
('type', '!=', None),
('closed', '!=', True),
('company', '=', Eval('company', -1)),
])
class Invoice(metaclass=PoolMeta):
__name__ = 'account.invoice'
cash_rounding = fields.Boolean(
"Cash Rounding",
states={
'readonly': Eval('state') != 'draft',
})
@fields.depends('company', 'type')
def on_change_company(self):
pool = Pool()
Config = pool.get('account.configuration')
config = Config(1)
try:
super().on_change_company()
except AttributeError:
pass
if self.type == 'out':
self.cash_rounding = config.get_multivalue(
'cash_rounding',
company=self.company.id if self.company else None)
@classmethod
def default_cash_rounding(cls, **pattern):
pool = Pool()
Config = pool.get('account.configuration')
config = Config(1)
if cls.default_type() == 'out':
return config.get_multivalue(
'cash_rounding', **pattern)
@fields.depends(methods=['_on_change_lines_taxes'])
def on_change_cash_rounding(self):
self._on_change_lines_taxes()
@fields.depends('cash_rounding', methods=['_cash_round_total_amount'])
def _on_change_lines_taxes(self):
super()._on_change_lines_taxes()
if self.cash_rounding:
self.total_amount = self._cash_round_total_amount(
self.total_amount)
@classmethod
def get_amount(cls, invoices, names):
amounts = super().get_amount(invoices, names)
if 'total_amount' in names:
total_amounts = amounts['total_amount']
for invoice in invoices:
if invoice.cash_rounding:
amount = total_amounts[invoice.id]
amount = invoice._cash_round_total_amount(amount)
total_amounts[invoice.id] = amount
return amounts
@fields.depends(
'currency', 'payment_term', 'company', 'invoice_date',
'payment_term_date')
def _cash_round_total_amount(self, amount):
"Round total amount according to cash rounding"
from trytond.modules.account_invoice.exceptions import (
PaymentTermComputeError)
pool = Pool()
Date = pool.get('ir.date')
if self.currency:
amounts = [amount]
if self.payment_term and self.company:
with Transaction().set_context(company=self.company.id):
today = Date.today()
payment_date = (
self.payment_term_date or self.invoice_date or today)
try:
term_lines = self.payment_term.compute(
amount, self.company.currency,
payment_date)
amounts = [a for _, a in term_lines]
except PaymentTermComputeError:
pass
amount = sum(map(self.currency.cash_round, amounts))
return amount
def _get_move_line(self, date, amount):
line = super()._get_move_line(date, amount)
if self.cash_rounding:
currency = self.company.currency
line.debit = currency.cash_round(line.debit)
line.credit = currency.cash_round(line.credit)
currency = line.second_currency
if currency:
line.amount_second_currency = currency.cash_round(
line.amount_second_currency)
return line
def get_move(self):
pool = Pool()
Configuration = pool.get('account.configuration')
MoveLine = pool.get('account.move.line')
move = super().get_move()
if self.cash_rounding:
config = Configuration(1)
total = Decimal(0)
total_currency = Decimal(0)
second_currency = None
for line in move.lines:
total += line.debit - line.credit
if line.amount_second_currency:
total_currency += line.amount_second_currency
second_currency = line.second_currency
if total or total_currency:
line = MoveLine()
if total <= 0:
line.debit, line.credit = -total, 0
line.account = config.get_multivalue(
'cash_rounding_debit_account',
company=self.company.id)
else:
line.debit, line.credit = 0, total
line.account = config.get_multivalue(
'cash_rounding_credit_account',
company=self.company.id)
if not line.account:
raise AccountMissing(
gettext(
'account_cash_rounding'
'.msg_missing_cash_rounding_account'))
if total_currency:
line.amount_second_currency = total_currency
line.second_currency = second_currency
lines = list(move.lines)
lines.append(line)
move.lines = lines
return move

View File

@@ -0,0 +1,19 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="account_configuration_view_form">
<field name="model">account.configuration</field>
<field name="inherit" ref="account.configuration_view_form"/>
<field name="name">account_configuration_form</field>
</record>
</data>
<data depends="account_invoice">
<record model="ir.ui.view" id="account_invoice_view_form">
<field name="model">account.invoice</field>
<field name="inherit" ref="account_invoice.invoice_view_form"/>
<field name="name">account_invoice_form</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,18 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from decimal import ROUND_HALF_EVEN
from trytond.model import fields
from trytond.pool import PoolMeta
from trytond.pyson import Eval
class Currency(metaclass=PoolMeta):
__name__ = 'currency.currency'
cash_rounding = fields.Numeric(
"Cash Rounding Factor",
digits=(None, Eval('digits', None)))
def cash_round(self, amount, rounding=ROUND_HALF_EVEN):
return self._round(amount, self.cash_rounding, rounding)

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="currency_view_form">
<field name="model">currency.currency</field>
<field name="inherit" ref="currency.currency_view_form"/>
<field name="name">currency_form</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrodoniment d'efectiu"
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Compte haver arrodoniment d'efectiu"
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Compte deure arrodoniment d'efectiu"
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrodoniment d'efectiu"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Compte haver arrodoniment d'efectiu"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Compte deure arrodoniment d'efectiu"
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrodoniment d'efectiu"
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr "Factor d'arrodoniment d'efectiu"
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrodoniment d'efectiu"
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr "Configuració comptable d'arrodoniment d'efectiu"
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr "No s'ha configurat cap compte contable per l'arrodoniment d'efectiu."

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr "Barbetragsrundung"
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Barbetragsrundung Habenkonto"
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Barbetragsrundung Sollkonto"
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr "Barbetragsrundung"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Barbetragsrundung Habenkonto"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Barbetragsrundung Sollkonto"
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr "Unternehmen"
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr "Barbetragsrundung"
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr "Faktor Barbetragsrundung"
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr "Barbetragsrundung"
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr "Buchhaltung Einstellungen Barbetragsrundung Konto"
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr "Es ist kein Barbetragsrundungskonto konfiguriert."

View File

@@ -0,0 +1,54 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr "Redondeo del Efectivo"
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Cuenta de crèdito del redondeo del efectivo"
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Cuenta de débito del redondeo del efectivo"
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr "Redondeo del efectivo"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Cuenta de crèdito del redondeo del efectivo"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Cuenta de débito del redondeo del efectivo"
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr "Redondeo del Efectivo"
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr "Factor de redondeo del efectivo"
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr "Redondeo del Efectivo"
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr "Configuración contable del redondeo del efectivo"
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""
"No existe ninguna cuenta contable configurada para el redondeo del efectivo."

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrondi des espèces"
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Compte de crédit d'arrondi en espèces"
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Compte de débit d'arrondi en espèces"
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrondi des espèces"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Compte de crédit d'arrondi en espèces"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Compte de débit d'arrondi en espèces"
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr "Société"
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrondi en espèces"
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr "Facteur d'arrondi en espèces"
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrondi en espèces"
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr "Configuration du comptable du compte d'arrondi en espèces"
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr "Aucun compte d'arrondi en espèces n'est configuré."

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr "Perusahaan"
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,54 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrotondamento contante"
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Conto di accredito arrotondamento contante"
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Conto di addebito arrotondamento contante"
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrotondamento contante"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Conto di accredito arrotondamento contante"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Conto di addebito arrotondamento contante"
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr "Azienda"
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrotondamento contante"
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr "Fattore di arrotondamento contante"
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr "Arrotondamento contante"
#, fuzzy
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr "Configurazione conti di arrotondamento contante"
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr "Non è stato impostato alcun conto per l'arrotondamento del contante."

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr "Kas afronding"
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Kas afronding credit grootboekrekening"
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Kas afronding debet grootboekrekening"
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr "Kas afronding"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Kas afronding credit grootboekrekening"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Kas afronding debet grootboekrekening"
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr "Bedrijf"
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr "Kas afronding"
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr "Kas afrondingsfactor"
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr "Kas afronding"
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr "Configuratie kas afronding rekening"
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr "Er is geen grootboekrekeningen voor de kas afronding gespecificeerd."

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr "Rotunjire Cash"
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Rotunjire Cash Cont Credit"
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Rotunjire Cash Cont Debit"
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr "Rotunjire Cash"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr "Rotunjire Cash Cont Credit"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr "Rotunjire Cash Cont Debit"
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr "Societate"
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr "Rotunjire Cash"
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr "Rotunjire Cash Factor"
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr "Rotunjire Cash"
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr "Configurare Cont Rotunjire Numerar"
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr "Nu exista un cont configurat pentru rotunjire cash."

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr "Gotovinsko zaokroževanje"
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr "Gotovinsko zaokroževanje"
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr "Družba"
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr "Gotovinsko zaokroževanje"
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr "Faktor gotovinskega zaokroževanja"
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr "Gotovinsko zaokroževanje"
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr "Konti gotovinskega zaokroževanja niso nastavljeni."

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="msg_missing_cash_rounding_account">
<field name="text">There is not cash rounding account configured.</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,78 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model import fields
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
from trytond.transaction import Transaction
class Purchase(metaclass=PoolMeta):
__name__ = 'purchase.purchase'
cash_rounding = fields.Boolean(
"Cash Rounding",
states={
'readonly': Eval('state') != 'draft',
})
@fields.depends('party')
def on_change_party(self):
cursor = Transaction().connection.cursor()
table = self.__table__()
super().on_change_party()
if self.party:
cursor.execute(*table.select(table.cash_rounding,
where=table.party == self.party.id,
order_by=table.id,
limit=1))
row = cursor.fetchone()
if row:
self.cash_rounding, = row
@fields.depends(methods=['on_change_lines'])
def on_change_cash_rounding(self):
self.on_change_lines()
@fields.depends('cash_rounding', methods=['_cash_round_total_amount'])
def on_change_lines(self):
super().on_change_lines()
if self.cash_rounding:
self.total_amount = self._cash_round_total_amount(
self.total_amount)
@classmethod
def get_amount(cls, purchases, names):
amounts = super().get_amount(purchases, names)
if 'total_amount' in names:
total_amounts = amounts['total_amount']
for purchase in purchases:
if purchase.cash_rounding:
amount = total_amounts[purchase.id]
amount = purchase._cash_round_total_amount(amount)
total_amounts[purchase.id] = amount
return amounts
@fields.depends('currency', 'payment_term', 'company')
def _cash_round_total_amount(self, amount):
from trytond.modules.account_invoice.exceptions import (
PaymentTermComputeError)
pool = Pool()
Date = pool.get('ir.date')
if self.currency:
amounts = [amount]
if self.payment_term and self.company:
with Transaction().set_context(company=self.company.id):
today = Date.today()
try:
term_lines = self.payment_term.compute(
amount, self.company.currency, today)
amounts = [a for _, a in term_lines]
except PaymentTermComputeError:
pass
amount = sum(map(self.currency.cash_round, amounts))
return amount
def _get_invoice(self):
invoice = super()._get_invoice()
invoice.cash_rounding = self.cash_rounding
return invoice

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data depends="purchase">
<record model="ir.ui.view" id="purchase_view_form">
<field name="model">purchase.purchase</field>
<field name="inherit" ref="purchase.purchase_view_form"/>
<field name="name">purchase_form</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,57 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model import fields
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
@fields.depends('company', methods=['_cash_round_total_amount'])
def on_change_lines(self):
pool = Pool()
Config = pool.get('account.configuration')
config = Config(1)
super().on_change_lines()
cash_rounding = config.get_multivalue(
'cash_rounding', company=self.company.id if self.company else None)
if cash_rounding:
self.total_amount = self._cash_round_total_amount(
self.total_amount)
@classmethod
def get_amount(cls, sales, names):
pool = Pool()
Config = pool.get('account.configuration')
amounts = super().get_amount(sales, names)
if 'total_amount' in names:
config = Config(1)
total_amounts = amounts['total_amount']
for sale in sales:
if config.get_multivalue(
'cash_rounding', company=sale.company.id):
amount = total_amounts[sale.id]
amount = sale._cash_round_total_amount(amount)
total_amounts[sale.id] = amount
return amounts
@fields.depends('currency', 'payment_term', 'company')
def _cash_round_total_amount(self, amount):
from trytond.modules.account_invoice.exceptions import (
PaymentTermComputeError)
pool = Pool()
Date = pool.get('ir.date')
if self.currency:
amounts = [amount]
if self.payment_term and self.company:
with Transaction().set_context(company=self.company.id):
today = Date.today()
try:
term_lines = self.payment_term.compute(
amount, self.company.currency, today)
amounts = [a for _, a in term_lines]
except PaymentTermComputeError:
pass
amount = sum(map(self.currency.cash_round, amounts))
return amount

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@@ -0,0 +1,103 @@
==============================
Account Cash Rounding Scenario
==============================
Imports::
>>> from decimal import Decimal
>>> from proteus import Model
>>> from trytond.modules.account.tests.tools import (
... create_chart, create_fiscalyear, get_accounts)
>>> from trytond.modules.account_invoice.tests.tools import (
... set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.modules.currency.tests.tools import get_currency
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... ['account_cash_rounding', 'account_invoice'], create_company, create_chart)
>>> Account = Model.get('account.account')
>>> AccountConfig = Model.get('account.configuration')
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
... create_fiscalyear())
>>> fiscalyear.click('create_period')
Get accounts::
>>> accounts = get_accounts()
Set cash rounding::
>>> cash_rounding_credit = Account(name="Cash Rounding")
>>> cash_rounding_credit.type = accounts['revenue'].type
>>> cash_rounding_credit.deferral = True
>>> cash_rounding_credit.save()
>>> cash_rounding_debit = Account(name="Cash Rounding")
>>> cash_rounding_debit.type = accounts['expense'].type
>>> cash_rounding_debit.deferral = True
>>> cash_rounding_debit.save()
>>> account_config = AccountConfig(1)
>>> account_config.cash_rounding = True
>>> account_config.cash_rounding_credit_account = cash_rounding_credit
>>> account_config.cash_rounding_debit_account = cash_rounding_debit
>>> account_config.save()
>>> currency = get_currency()
>>> currency.cash_rounding = Decimal('0.05')
>>> currency.save()
Create party::
>>> Party = Model.get('party.party')
>>> party = Party(name='Party')
>>> party.save()
Create payment term::
>>> PaymentTerm = Model.get('account.invoice.payment_term')
>>> payment_term = PaymentTerm(name='Term')
>>> line = payment_term.lines.new(type='percent', ratio=Decimal('.5'))
>>> delta, = line.relativedeltas
>>> delta.days = 20
>>> line = payment_term.lines.new(type='remainder')
>>> delta = line.relativedeltas.new(days=40)
>>> payment_term.save()
Create invoice::
>>> Invoice = Model.get('account.invoice')
>>> invoice = Invoice()
>>> bool(invoice.cash_rounding)
True
>>> invoice.party = party
>>> invoice.payment_term = payment_term
>>> line = invoice.lines.new()
>>> line.account = accounts['revenue']
>>> line.quantity = 1
>>> line.unit_price = Decimal('42.06')
>>> invoice.untaxed_amount, invoice.tax_amount, invoice.total_amount
(Decimal('42.06'), Decimal('0.00'), Decimal('42.10'))
>>> invoice.cash_rounding = False
>>> invoice.untaxed_amount, invoice.tax_amount, invoice.total_amount
(Decimal('42.06'), Decimal('0.00'), Decimal('42.06'))
>>> invoice.cash_rounding = True
>>> invoice.save()
>>> invoice.total_amount
Decimal('42.10')
Post invoice::
>>> invoice.click('post')
>>> invoice.total_amount
Decimal('42.10')
>>> cash_rounding_credit.reload()
>>> cash_rounding_credit.credit
Decimal('0.04')

View File

@@ -0,0 +1,110 @@
=================================================
Account Cash Rounding Alternate Currency Scenario
=================================================
Imports::
>>> from decimal import Decimal
>>> from proteus import Model
>>> from trytond.modules.account.tests.tools import (
... create_chart, create_fiscalyear, get_accounts)
>>> from trytond.modules.account_invoice.tests.tools import (
... set_fiscalyear_invoice_sequences)
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.modules.currency.tests.tools import get_currency
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... ['account_cash_rounding', 'account_invoice'], create_company, create_chart)
>>> Account = Model.get('account.account')
>>> AccountConfig = Model.get('account.configuration')
>>> Configuration = Model.get('account.configuration')
Set alternate currencies::
>>> currency = get_currency('USD')
>>> eur = get_currency('EUR')
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
... create_fiscalyear())
>>> fiscalyear.click('create_period')
Get accounts::
>>> accounts = get_accounts()
Configure currency exchange::
>>> currency_exchange_account, = (
... accounts['revenue'].duplicate(
... default={'name': "Currency Exchange"}))
>>> configuration = Configuration(1)
>>> configuration.currency_exchange_debit_account = (
... currency_exchange_account)
>>> configuration.save()
Set cash rounding::
>>> cash_rounding_credit = Account(name="Cash Rounding")
>>> cash_rounding_credit.type = accounts['revenue'].type
>>> cash_rounding_credit.deferral = True
>>> cash_rounding_credit.save()
>>> cash_rounding_debit = Account(name="Cash Rounding")
>>> cash_rounding_debit.type = accounts['expense'].type
>>> cash_rounding_debit.deferral = True
>>> cash_rounding_debit.save()
>>> account_config = AccountConfig(1)
>>> account_config.cash_rounding = True
>>> account_config.cash_rounding_credit_account = cash_rounding_credit
>>> account_config.cash_rounding_debit_account = cash_rounding_debit
>>> account_config.save()
>>> eur.cash_rounding = Decimal('0.05')
>>> eur.save()
Create party::
>>> Party = Model.get('party.party')
>>> party = Party(name="Party")
>>> party.save()
Create invoice::
>>> Invoice = Model.get('account.invoice')
>>> invoice = Invoice()
>>> invoice.cash_rounding = True
>>> invoice.currency = eur
>>> bool(invoice.cash_rounding)
True
>>> invoice.party = party
>>> line = invoice.lines.new()
>>> line.account = accounts['revenue']
>>> line.quantity = 1
>>> line.unit_price = Decimal('42.06')
>>> invoice.untaxed_amount, invoice.tax_amount, invoice.total_amount
(Decimal('42.06'), Decimal('0.00'), Decimal('42.05'))
>>> invoice.save()
>>> invoice.total_amount
Decimal('42.05')
Post invoice::
>>> invoice.click('post')
>>> invoice.total_amount
Decimal('42.05')
>>> cash_rounding_credit.reload()
>>> cash_rounding_credit.credit, cash_rounding_credit.debit
(Decimal('0.00'), Decimal('0.00'))
>>> line_to_pay, = invoice.lines_to_pay
>>> line_to_pay.debit, line_to_pay.credit
(Decimal('21.02'), Decimal('0'))
>>> line_to_pay.amount_second_currency
Decimal('42.05')

View File

@@ -0,0 +1,74 @@
=======================================
Account Cash Rounding Purchase Scenario
=======================================
Imports::
>>> from decimal import Decimal
>>> from proteus import Model
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.account_invoice.tests.tools import create_payment_term
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.modules.currency.tests.tools import get_currency
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... ['account_cash_rounding', 'account_invoice', 'purchase'],
... create_company, create_chart)
>>> Account = Model.get('account.account')
>>> AccountConfig = Model.get('account.configuration')
Get accounts::
>>> accounts = get_accounts()
>>> Configuration = Model.get('account.configuration')
>>> config = Configuration(1)
>>> config.default_category_account_expense = accounts['expense']
>>> config.save()
Set cash rounding::
>>> currency = get_currency()
>>> currency.cash_rounding = Decimal('0.05')
>>> currency.save()
Create party::
>>> Party = Model.get('party.party')
>>> party = Party(name='Party')
>>> party.save()
Create payment term::
>>> payment_term = create_payment_term()
>>> payment_term.save()
Create purchase::
>>> Purchase = Model.get('purchase.purchase')
>>> purchase = Purchase()
>>> purchase.party = party
>>> purchase.payment_term = payment_term
>>> line = purchase.lines.new()
>>> line.quantity = 1
>>> line.unit_price = Decimal('42.07')
>>> purchase.untaxed_amount, purchase.tax_amount, purchase.total_amount
(Decimal('42.07'), Decimal('0.00'), Decimal('42.07'))
>>> purchase.cash_rounding = True
>>> purchase.untaxed_amount, purchase.tax_amount, purchase.total_amount
(Decimal('42.07'), Decimal('0.00'), Decimal('42.05'))
>>> purchase.click('quote')
>>> purchase.untaxed_amount, purchase.tax_amount, purchase.total_amount
(Decimal('42.07'), Decimal('0'), Decimal('42.05'))
Create invoice::
>>> purchase.click('confirm')
>>> invoice, = purchase.invoices
>>> bool(invoice.cash_rounding)
True

View File

@@ -0,0 +1,73 @@
===================================
Account Cash Rounding Sale Scenario
===================================
Imports::
>>> from decimal import Decimal
>>> from proteus import Model
>>> from trytond.modules.account.tests.tools import create_chart, get_accounts
>>> from trytond.modules.account_invoice.tests.tools import create_payment_term
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.modules.currency.tests.tools import get_currency
>>> from trytond.tests.tools import activate_modules
Activate modules::
>>> config = activate_modules(
... ['account_cash_rounding', 'account_invoice', 'sale'],
... create_company, create_chart)
>>> Account = Model.get('account.account')
>>> AccountConfig = Model.get('account.configuration')
Get accounts::
>>> accounts = get_accounts()
Set cash rounding::
>>> cash_rounding_credit = Account(name="Cash Rounding")
>>> cash_rounding_credit.type = accounts['revenue'].type
>>> cash_rounding_credit.deferral = True
>>> cash_rounding_credit.save()
>>> cash_rounding_debit = Account(name="Cash Rounding")
>>> cash_rounding_debit.type = accounts['expense'].type
>>> cash_rounding_debit.deferral = True
>>> cash_rounding_debit.save()
>>> account_config = AccountConfig(1)
>>> account_config.cash_rounding = True
>>> account_config.cash_rounding_credit_account = cash_rounding_credit
>>> account_config.cash_rounding_debit_account = cash_rounding_debit
>>> account_config.save()
>>> currency = get_currency()
>>> currency.cash_rounding = Decimal('0.05')
>>> currency.save()
Create party::
>>> Party = Model.get('party.party')
>>> party = Party(name='Party')
>>> party.save()
Create payment term::
>>> payment_term = create_payment_term()
>>> payment_term.save()
Create sale::
>>> Sale = Model.get('sale.sale')
>>> sale = Sale()
>>> sale.party = party
>>> sale.payment_term = payment_term
>>> line = sale.lines.new()
>>> line.quantity = 1
>>> line.unit_price = Decimal('42.02')
>>> sale.untaxed_amount, sale.tax_amount, sale.total_amount
(Decimal('42.02'), Decimal('0.00'), Decimal('42.00'))
>>> sale.click('quote')
>>> sale.untaxed_amount, sale.tax_amount, sale.total_amount
(Decimal('42.02'), Decimal('0'), Decimal('42.00'))

View File

@@ -0,0 +1,13 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import ModuleTestCase
class AccountCashRoundingTestCase(ModuleTestCase):
'Test Account Cash Rounding module'
module = 'account_cash_rounding'
extras = ['account_invoice', 'purchase', 'sale']
del ModuleTestCase

View File

@@ -0,0 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import load_doc_tests
def load_tests(*args, **kwargs):
return load_doc_tests(__name__, __file__, *args, **kwargs)

View File

@@ -0,0 +1,33 @@
[tryton]
version=7.8.0
depends:
account
currency
ir
extras_depend:
account_invoice
purchase
sale
xml:
account.xml
currency.xml
purchase.xml
message.xml
[register]
model:
account.Configuration
account.ConfigurationCashRoundingAccount
currency.Currency
[register account_invoice]
model:
account.Invoice
[register purchase]
model:
purchase.Purchase
[register sale]
model:
sale.Sale

View File

@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="/form" position="inside">
<separator name="cash_rounding" colspan="4"/>
<label name="cash_rounding"/>
<field name="cash_rounding"/>
<label name="cash_rounding_debit_account"/>
<field name="cash_rounding_debit_account"/>
<label name="cash_rounding_credit_account"/>
<field name="cash_rounding_credit_account"/>
</xpath>
</data>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//group[@id='reconciled_state']" position="inside">
<label name="cash_rounding"/>
<field name="cash_rounding"/>
</xpath>
</data>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//field[@name='digits']" position="after">
<label name="cash_rounding"/>
<field name="cash_rounding"/>
</xpath>
</data>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//group[@id='states']" position="inside">
<label name="cash_rounding"/>
<field name="cash_rounding"/>
</xpath>
</data>