first commit
This commit is contained in:
2
modules/account_deposit/__init__.py
Normal file
2
modules/account_deposit/__init__.py
Normal 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.
|
||||
BIN
modules/account_deposit/__pycache__/__init__.cpython-311.pyc
Normal file
BIN
modules/account_deposit/__pycache__/__init__.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/account_deposit/__pycache__/account.cpython-311.pyc
Normal file
BIN
modules/account_deposit/__pycache__/account.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/account_deposit/__pycache__/exceptions.cpython-311.pyc
Normal file
BIN
modules/account_deposit/__pycache__/exceptions.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/account_deposit/__pycache__/invoice.cpython-311.pyc
Normal file
BIN
modules/account_deposit/__pycache__/invoice.cpython-311.pyc
Normal file
Binary file not shown.
BIN
modules/account_deposit/__pycache__/party.cpython-311.pyc
Normal file
BIN
modules/account_deposit/__pycache__/party.cpython-311.pyc
Normal file
Binary file not shown.
64
modules/account_deposit/account.py
Normal file
64
modules/account_deposit/account.py
Normal file
@@ -0,0 +1,64 @@
|
||||
# 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 PoolMeta
|
||||
from trytond.pyson import Bool, Eval, If
|
||||
|
||||
|
||||
def AccountTypeMixin(template=False):
|
||||
|
||||
class Mixin:
|
||||
__slots__ = ()
|
||||
deposit = fields.Boolean(
|
||||
"Deposit",
|
||||
domain=[
|
||||
If(~Eval('statement').in_(['off-balance', 'balance']),
|
||||
('deposit', '=', False), ()),
|
||||
],
|
||||
states={
|
||||
'invisible': ~Eval('statement').in_(
|
||||
['off-balance', 'balance']),
|
||||
})
|
||||
if not template:
|
||||
for fname in dir(Mixin):
|
||||
field = getattr(Mixin, fname)
|
||||
if not isinstance(field, fields.Field):
|
||||
continue
|
||||
field.states['readonly'] = (
|
||||
Bool(Eval('template', -1)) & ~Eval('template_override', False))
|
||||
return Mixin
|
||||
|
||||
|
||||
class AccountTypeTemplate(AccountTypeMixin(template=True), metaclass=PoolMeta):
|
||||
__name__ = 'account.account.type.template'
|
||||
|
||||
def _get_type_value(self, type=None):
|
||||
values = super()._get_type_value(type=type)
|
||||
if not type or type.deposit != self.deposit:
|
||||
values['deposit'] = self.deposit
|
||||
return values
|
||||
|
||||
|
||||
class AccountType(AccountTypeMixin(), metaclass=PoolMeta):
|
||||
__name__ = 'account.account.type'
|
||||
|
||||
|
||||
class Reconcile(metaclass=PoolMeta):
|
||||
__name__ = 'account.reconcile'
|
||||
|
||||
def get_currencies(self, account, party, currency=None, _balanced=False):
|
||||
if account.type.deposit:
|
||||
_balanced = True
|
||||
return super().get_currencies(
|
||||
account, party, currency=None, _balanced=_balanced)
|
||||
|
||||
|
||||
class Payment(metaclass=PoolMeta):
|
||||
__name__ = 'account.payment'
|
||||
|
||||
@classmethod
|
||||
def _account_type_domain(cls):
|
||||
return ['OR',
|
||||
super()._account_type_domain(),
|
||||
('type.deposit', '=', True),
|
||||
]
|
||||
50
modules/account_deposit/account.xml
Normal file
50
modules/account_deposit/account.xml
Normal file
@@ -0,0 +1,50 @@
|
||||
<?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_type_template_view_form">
|
||||
<field name="model">account.account.type.template</field>
|
||||
<field name="inherit" ref="account.account_type_template_view_form"/>
|
||||
<field name="name">account_type_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="account_type_view_form">
|
||||
<field name="model">account.account.type</field>
|
||||
<field name="inherit" ref="account.account_type_view_form"/>
|
||||
<field name="name">account_type_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="move_line_view_list_deposit">
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="priority" eval="30"/>
|
||||
<field name="name">move_line_list_deposit</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.act_window" id="act_move_line_deposit">
|
||||
<field name="name">Deposit Lines</field>
|
||||
<field name="res_model">account.move.line</field>
|
||||
<field
|
||||
name="domain"
|
||||
eval="[('account.type.deposit', '=', True), ('party', 'in', Eval('active_ids', []))]"
|
||||
pyson="1"/>
|
||||
<field name="search_value" eval="[('reconciliation', '=', None)]" pyson="1"/>
|
||||
<field name="order" eval="[('date', 'DESC')]" pyson="1"/>
|
||||
</record>
|
||||
<record model="ir.action.act_window.view" id="act_move_line_deposit_view1">
|
||||
<field name="sequence" eval="10"/>
|
||||
<field name="view" ref="move_line_view_list_deposit"/>
|
||||
<field name="act_window" ref="act_move_line_deposit"/>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_move_line_deposit_keyword1">
|
||||
<field name="keyword">form_relate</field>
|
||||
<field name="model">party.party,-1</field>
|
||||
<field name="action" ref="act_move_line_deposit"/>
|
||||
</record>
|
||||
<record model="ir.action-res.group" id="act_move_line_deposit-group_account">
|
||||
<field name="action" ref="act_move_line_deposit"/>
|
||||
<field name="group" ref="account.group_account"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
21
modules/account_deposit/account_chart_de.xml
Normal file
21
modules/account_deposit/account_chart_de.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-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. -->
|
||||
<tryton>
|
||||
<data language="de">
|
||||
<record id="account_type_template_deposit_de" model="account.account.type.template">
|
||||
<field name="name">Kaution</field>
|
||||
<field name="parent" ref="account.account_type_template_off_balance_de"/>
|
||||
<field name="statement">off-balance</field>
|
||||
<field name="deposit" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_template_deposit_de" model="account.account.template">
|
||||
<field name="name">Kaution</field>
|
||||
<field name="type" ref="account_type_template_deposit_de"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="parent" ref="account.account_template_root_de"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
21
modules/account_deposit/account_chart_en.xml
Normal file
21
modules/account_deposit/account_chart_en.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-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. -->
|
||||
<tryton>
|
||||
<data language="en">
|
||||
<record id="account_type_template_deposit_en" model="account.account.type.template">
|
||||
<field name="name">Deposit</field>
|
||||
<field name="parent" ref="account.account_type_template_off_balance_en"/>
|
||||
<field name="statement">off-balance</field>
|
||||
<field name="deposit" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_template_deposit_en" model="account.account.template">
|
||||
<field name="name">Deposit</field>
|
||||
<field name="type" ref="account_type_template_deposit_en"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="parent" ref="account.account_template_root_en"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
21
modules/account_deposit/account_chart_es.xml
Normal file
21
modules/account_deposit/account_chart_es.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-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. -->
|
||||
<tryton>
|
||||
<data language="es">
|
||||
<record id="account_type_template_deposit_es" model="account.account.type.template">
|
||||
<field name="name">Depósitos</field>
|
||||
<field name="parent" ref="account.account_type_template_off_balance_es"/>
|
||||
<field name="statement">off-balance</field>
|
||||
<field name="deposit" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_template_deposit_es" model="account.account.template">
|
||||
<field name="name">Depósitos</field>
|
||||
<field name="type" ref="account_type_template_deposit_es"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="parent" ref="account.account_template_root_es"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
21
modules/account_deposit/account_chart_fr.xml
Normal file
21
modules/account_deposit/account_chart_fr.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-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. -->
|
||||
<tryton>
|
||||
<data language="fr">
|
||||
<record id="account_type_template_deposit_fr" model="account.account.type.template">
|
||||
<field name="name">Dépôt</field>
|
||||
<field name="parent" ref="account.account_type_template_off_balance_fr"/>
|
||||
<field name="statement">off-balance</field>
|
||||
<field name="deposit" eval="True"/>
|
||||
<field name="sequence" eval="10"/>
|
||||
</record>
|
||||
<record id="account_template_deposit_fr" model="account.account.template">
|
||||
<field name="name">Dépôt</field>
|
||||
<field name="type" ref="account_type_template_deposit_fr"/>
|
||||
<field name="reconcile" eval="True"/>
|
||||
<field name="parent" ref="account.account_template_root_fr"/>
|
||||
<field name="party_required" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
8
modules/account_deposit/exceptions.py
Normal file
8
modules/account_deposit/exceptions.py
Normal 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.model.exceptions import ValidationError
|
||||
|
||||
|
||||
class DepositError(ValidationError):
|
||||
pass
|
||||
152
modules/account_deposit/invoice.py
Normal file
152
modules/account_deposit/invoice.py
Normal file
@@ -0,0 +1,152 @@
|
||||
# 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 ModelView, fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval
|
||||
from trytond.wizard import Button, StateTransition, StateView, Wizard
|
||||
|
||||
from .exceptions import DepositError
|
||||
|
||||
|
||||
class Invoice(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls._buttons.update({
|
||||
'recall_deposit': {
|
||||
'invisible': Eval('state') != 'draft',
|
||||
'depends': ['state'],
|
||||
},
|
||||
})
|
||||
|
||||
@classmethod
|
||||
def _post(cls, invoices):
|
||||
super()._post(invoices)
|
||||
cls.check_deposit(invoices)
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action('account_deposit.wizard_recall_deposit')
|
||||
def recall_deposit(cls, invoices):
|
||||
pass
|
||||
|
||||
def call_deposit(self, account, description, maximum=None):
|
||||
pool = Pool()
|
||||
InvoiceLine = pool.get('account.invoice.line')
|
||||
|
||||
balance = self.party.get_deposit_balance(
|
||||
account, currency=self.currency)
|
||||
if maximum is None:
|
||||
maximum = self.total_amount
|
||||
total_amount = min(maximum, self.total_amount, key=abs)
|
||||
|
||||
amount = Decimal(0)
|
||||
if self.type.startswith('in'):
|
||||
if balance > 0 and total_amount > 0:
|
||||
amount = -min(balance, total_amount)
|
||||
else:
|
||||
if balance < 0 and total_amount > 0:
|
||||
amount = -min(-balance, total_amount)
|
||||
to_delete = []
|
||||
for line in self.lines:
|
||||
if line.account == account:
|
||||
to_delete.append(line)
|
||||
if amount < 0:
|
||||
line = self._get_deposit_recall_invoice_line(
|
||||
amount, account, description)
|
||||
try:
|
||||
line.sequence = max(l.sequence for l in self.lines
|
||||
if l.sequence is not None)
|
||||
except ValueError:
|
||||
pass
|
||||
line.save()
|
||||
else:
|
||||
amount = Decimal(0)
|
||||
if to_delete:
|
||||
InvoiceLine.delete(to_delete)
|
||||
return amount
|
||||
|
||||
def _get_deposit_recall_invoice_line(self, amount, account, description):
|
||||
pool = Pool()
|
||||
Line = pool.get('account.invoice.line')
|
||||
|
||||
line = Line(
|
||||
invoice=self,
|
||||
company=self.company,
|
||||
type='line',
|
||||
quantity=1,
|
||||
account=account,
|
||||
unit_price=amount,
|
||||
description=description,
|
||||
)
|
||||
# Set taxes
|
||||
line.on_change_account()
|
||||
return line
|
||||
|
||||
@classmethod
|
||||
def check_deposit(cls, invoices):
|
||||
to_check = set()
|
||||
for invoice in invoices:
|
||||
for line in invoice.lines:
|
||||
if line.type != 'line':
|
||||
continue
|
||||
if line.account.type.deposit:
|
||||
if line.amount < 0:
|
||||
sign = 1 if invoice.type.startswith('in') else -1
|
||||
to_check.add((invoice.party, line.account, sign))
|
||||
|
||||
for party, account, sign in to_check:
|
||||
if not party.check_deposit(account, sign):
|
||||
raise DepositError(
|
||||
gettext('account_deposit.msg_deposit_not_enough',
|
||||
account=account.rec_name,
|
||||
party=party.rec_name))
|
||||
|
||||
|
||||
class InvoiceLine(metaclass=PoolMeta):
|
||||
__name__ = 'account.invoice.line'
|
||||
|
||||
@classmethod
|
||||
def _account_domain(cls, type_):
|
||||
domain = super()._account_domain(type_)
|
||||
return domain + [('type.deposit', '=', True)]
|
||||
|
||||
|
||||
class DepositRecall(Wizard):
|
||||
__name__ = 'account.invoice.recall_deposit'
|
||||
start = StateView('account.invoice.recall_deposit.start',
|
||||
'account_deposit.recall_deposit_start_view_form', [
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('Recall', 'recall', 'tryton-ok', default=True),
|
||||
])
|
||||
recall = StateTransition()
|
||||
|
||||
def default_start(self, fields):
|
||||
return {
|
||||
'company': self.record.company.id,
|
||||
'currency': self.record.currency.id,
|
||||
}
|
||||
|
||||
def transition_recall(self):
|
||||
self.record.call_deposit(self.start.account, self.start.description)
|
||||
return 'end'
|
||||
|
||||
|
||||
class DepositRecallStart(ModelView):
|
||||
__name__ = 'account.invoice.recall_deposit.start'
|
||||
company = fields.Many2One('company.company', 'Company', readonly=True)
|
||||
currency = fields.Many2One('currency.currency', "Currency", readonly=True)
|
||||
account = fields.Many2One('account.account', 'Account', required=True,
|
||||
domain=[
|
||||
('type.deposit', '=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
['OR',
|
||||
('currency', '=', Eval('currency', -1)),
|
||||
('second_currency', '=', Eval('currency', -1)),
|
||||
],
|
||||
])
|
||||
description = fields.Text('Description', required=True)
|
||||
29
modules/account_deposit/invoice.xml
Normal file
29
modules/account_deposit/invoice.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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.action.wizard" id="wizard_recall_deposit">
|
||||
<field name="name">Recall Deposit</field>
|
||||
<field name="wiz_name">account.invoice.recall_deposit</field>
|
||||
<field name="model">account.invoice</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="recall_deposit_start_view_form">
|
||||
<field name="model">account.invoice.recall_deposit.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">recall_deposit_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="invoice_view_form">
|
||||
<field name="model">account.invoice</field>
|
||||
<field name="inherit" ref="account_invoice.invoice_view_form"/>
|
||||
<field name="name">invoice_form</field>
|
||||
</record>
|
||||
<record model="ir.model.button" id="invoice_recall_deposit_button">
|
||||
<field name="model">account.invoice</field>
|
||||
<field name="name">recall_deposit</field>
|
||||
<field name="string">Recall Deposit</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
71
modules/account_deposit/locale/bg.po
Normal file
71
modules/account_deposit/locale/bg.po
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Фактури"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Фирма"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Описание"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Отказване"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
69
modules/account_deposit/locale/ca.po
Normal file
69
modules/account_deposit/locale/ca.po
Normal file
@@ -0,0 +1,69 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Dipòsit"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Dipòsit"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Compte"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr "Moneda"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descripció"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Bestreta"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr "Inici recuperar dipòsit de la factura"
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Línies de dipòsit"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recupera bestreta"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr "El compte \"%(account)s\" no te suficient diposit pel tercer \"%(party)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"No es pot eliminar el tercer \"%(party)s\" mentre tingui diposit a l'empresa"
|
||||
" \"%(company)s\"."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recupera bestreta"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel·la"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Recupera"
|
||||
67
modules/account_deposit/locale/cs.po
Normal file
67
modules/account_deposit/locale/cs.po
Normal file
@@ -0,0 +1,67 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
71
modules/account_deposit/locale/de.po
Normal file
71
modules/account_deposit/locale/de.po
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Anzahlung"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Anzahlung"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Konto"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Unternehmen"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr "Währung"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Anzahlung"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr "Buchhaltung Rechnung Anzahlung verrechnen Start"
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Anzahlungspositionen"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Anzahlung verrechnen"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
"Auf Konto \"%(account)s\" ist nicht genügend Guthaben von Partei "
|
||||
"\"%(party)s\" vorhanden."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"Partei \"%(party)s\" kann nicht gelöscht werden, solange Sie noch ein "
|
||||
"Guthaben bei Unternehmen \"%(company)s\" hat."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Anzahlung verrechnen"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Verrechnen"
|
||||
71
modules/account_deposit/locale/es.po
Normal file
71
modules/account_deposit/locale/es.po
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Anticipo"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Anticipo"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Cuenta"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr "Moneda"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Anticipo"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr "Inicio recuperar deposito factura"
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Líneas de anticipo"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recuperar anticipo"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
"La cuenta \"%(account)s\" no tiene suficiente anticipo para el tercero "
|
||||
"\"%(party)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"No puede eliminar el tercero \"%(party)s\" mientras tenga un anticipo en la "
|
||||
"empresa \"%(company)s\"."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recuperar anticipo"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Recuperar"
|
||||
70
modules/account_deposit/locale/es_419.po
Normal file
70
modules/account_deposit/locale/es_419.po
Normal file
@@ -0,0 +1,70 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Anticipo"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Anticipo"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Cuenta"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Anticipo"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recuperar anticipo"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recuperar anticipo"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Recuperar"
|
||||
69
modules/account_deposit/locale/et.po
Normal file
69
modules/account_deposit/locale/et.po
Normal file
@@ -0,0 +1,69 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Deposiit"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Deposiit"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Konto"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Ettevõte"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Kirjeldus"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Deposiit"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Deposiidi read"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Tagasta deposiit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr "Kontol \"%(account)s\" pole piisavalt osapoole \"%(party)s\" deposiiti."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"Ei saa kustutada osapoolt \"%(party)s\" kui neil on ettevõttes "
|
||||
"\"%(company)s\" deposiit."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Tühista deposiit."
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Tühista"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Tühista"
|
||||
71
modules/account_deposit/locale/fa.po
Normal file
71
modules/account_deposit/locale/fa.po
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "سپرده"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "سپرده"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "حساب"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "شرکت"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "شرح"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "سپرده"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "یادآوری سپرده"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr "حساب : \"%(account)s\" سپرده کافی از طرف نهاد/سازمان: \"%(party)s\" ندارد."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"شما نمیتوانید نهاد/سازمان : \"%(party)s\" را حذف کنید، در حالی که آنها در "
|
||||
"شرکت : \"%(company)s\" سپرده دارند."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "انصراف"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "فراخوانی"
|
||||
67
modules/account_deposit/locale/fi.po
Normal file
67
modules/account_deposit/locale/fi.po
Normal file
@@ -0,0 +1,67 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
70
modules/account_deposit/locale/fr.po
Normal file
70
modules/account_deposit/locale/fr.po
Normal file
@@ -0,0 +1,70 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Dépôt"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Dépôt"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Compte"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr "Devise"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Dépôt"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr "Rappel de dépôt de facture comptable début"
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Lignes de dépôt"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Rappeler les dépôts"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
"Le compte « %(account)s » n'a pas assez de dépôt du tiers « %(party)s »."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas effacer le tiers « %(party)s » tant qu'il a un dépôt dans"
|
||||
" la société « %(company)s »."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Rappeler les dépôts"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Rappeler"
|
||||
71
modules/account_deposit/locale/hu.po
Normal file
71
modules/account_deposit/locale/hu.po
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Számla"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Társaság"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Leírás"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Mégse"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
69
modules/account_deposit/locale/id.po
Normal file
69
modules/account_deposit/locale/id.po
Normal file
@@ -0,0 +1,69 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Setoran"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Setoran"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Akun"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Perusahaan"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Deskripsi"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Simpanan"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"Anda tidak dapat menghapus pihak \"%(party)s\" saat mereka memiliki setoran "
|
||||
"di perusahaan \"%(company)s\"."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Batal"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
71
modules/account_deposit/locale/it.po
Normal file
71
modules/account_deposit/locale/it.po
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Deposito"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Deposito"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Conto"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Azienda"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr "Valuta"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descrizione"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Deposito"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Linee di deposito"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Richiama deposito"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
"L'account \"%(account)s\" non ha abbastanza deposito dalla controparte "
|
||||
"\"%(party)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"Non è possibile cancellare la controparte \"%(party)s\" mentre hanno un "
|
||||
"deposito presso la società \"%(company)s\"."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Richiama Deposito"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Richiama"
|
||||
70
modules/account_deposit/locale/lo.po
Normal file
70
modules/account_deposit/locale/lo.po
Normal file
@@ -0,0 +1,70 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "ເງິນມັດຈໍາ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "ເງິນມັດຈໍາ"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "ບັນຊີ"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "ບໍລິສັດ"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "ເນື້ອໃນລາຍການ"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "ເງິນມັດຈໍາ"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "ຍົກເລີກ"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "ຮຽກຄືນ"
|
||||
67
modules/account_deposit/locale/lt.po
Normal file
67
modules/account_deposit/locale/lt.po
Normal file
@@ -0,0 +1,67 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Organizacija"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
71
modules/account_deposit/locale/nl.po
Normal file
71
modules/account_deposit/locale/nl.po
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Aanbetaling"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Aanbetaling"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Grootboekrekening"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Bedrijf"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr "Valuta"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Omschrijving"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Aanbetaling"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr "Terugstorten factuur aanbetaling start"
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Aanbetalingsregels"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Terugstorten aanbetaling"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
"De grootboekrekening \"%(account)s\" heeft niet voldoende aanbetaling van "
|
||||
"relatie \"%(party)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"U kunt relatie \"%(party)s\" niet verwijderen terwijl men een aanbetaling "
|
||||
"heeft bij bedrijf \"%(company)s\"."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Stort aanbetaling terug"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleren"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Terugstorten"
|
||||
70
modules/account_deposit/locale/pl.po
Normal file
70
modules/account_deposit/locale/pl.po
Normal file
@@ -0,0 +1,70 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Wpłata"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Wpłata"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Konto"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Firma"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Wpłata"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
70
modules/account_deposit/locale/pt.po
Normal file
70
modules/account_deposit/locale/pt.po
Normal file
@@ -0,0 +1,70 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depósito"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depósito"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Conta"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descrição"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depósito"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Linhas de Depósito"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Recuperar"
|
||||
69
modules/account_deposit/locale/ro.po
Normal file
69
modules/account_deposit/locale/ro.po
Normal file
@@ -0,0 +1,69 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depozit"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depozit"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Cont"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Societate"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr "Valută"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Descriere"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depozit"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr "Factură Început Retragere Depozit"
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Rânduri Depozit"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Rechemare Depozit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr "Contul \"%(account)s\" nu are suficient depozit de la parte \"%(party)s\"."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"Nu se poate şterge parte\"%(party)s\" când au depozit la compania "
|
||||
"\"%(company)s\"."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Rechemare Depozit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Anulare"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Rechemare"
|
||||
71
modules/account_deposit/locale/ru.po
Normal file
71
modules/account_deposit/locale/ru.po
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Счет"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Учет.орг."
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Описание"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Отменить"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
69
modules/account_deposit/locale/sl.po
Normal file
69
modules/account_deposit/locale/sl.po
Normal file
@@ -0,0 +1,69 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depozit"
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depozit"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Konto"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Družba"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr "Valuta"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depozit"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr "Vrstice depozita"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Odpoklic depozita"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr "Konto \"%(account)s\" partnerja \"%(party)s\" nima zadostnega depozita."
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
"Partnerja \"%(party)s\" ni mogoče izbrisati dokler ima depozit pri družbi "
|
||||
"\"%(company)s\"."
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Prekliči"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr "Odpoklic"
|
||||
69
modules/account_deposit/locale/tr.po
Normal file
69
modules/account_deposit/locale/tr.po
Normal file
@@ -0,0 +1,69 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depozit"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depozit"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr "Hesap"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr "Şirket"
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "Tanım"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr "Depozit"
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Vazgeç"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
67
modules/account_deposit/locale/uk.po
Normal file
67
modules/account_deposit/locale/uk.po
Normal file
@@ -0,0 +1,67 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
69
modules/account_deposit/locale/zh_CN.po
Normal file
69
modules/account_deposit/locale/zh_CN.po
Normal file
@@ -0,0 +1,69 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.account.type,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.account.type.template,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,company:"
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.invoice.recall_deposit.start,currency:"
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.invoice.recall_deposit.start,description:"
|
||||
msgid "Description"
|
||||
msgstr "描述"
|
||||
|
||||
msgctxt "field:party.party,deposit:"
|
||||
msgid "Deposit"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.invoice.recall_deposit.start,string:"
|
||||
msgid "Account Invoice Recall Deposit Start"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:act_move_line_deposit"
|
||||
msgid "Deposit Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_recall_deposit"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_deposit_not_enough"
|
||||
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgctxt "model:ir.message,text:msg_erase_party_deposit"
|
||||
msgid ""
|
||||
"You cannot erase party \"%(party)s\" while they have deposit at company "
|
||||
"\"%(company)s\"."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
|
||||
msgid "Recall Deposit"
|
||||
msgstr "Recall Deposit"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
|
||||
msgid "Recall"
|
||||
msgstr ""
|
||||
13
modules/account_deposit/message.xml
Normal file
13
modules/account_deposit/message.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?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_erase_party_deposit">
|
||||
<field name="text">You cannot erase party "%(party)s" while they have deposit at company "%(company)s".</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_deposit_not_enough">
|
||||
<field name="text">The account "%(account)s" has not enough deposit from party "%(party)s".</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
162
modules/account_deposit/party.py
Normal file
162
modules/account_deposit/party.py
Normal file
@@ -0,0 +1,162 @@
|
||||
# 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 sql import For, Literal, Null
|
||||
from sql.aggregate import Sum
|
||||
from sql.conditionals import Case, Coalesce
|
||||
|
||||
from trytond import backend
|
||||
from trytond.i18n import gettext
|
||||
from trytond.model import fields
|
||||
from trytond.modules.currency.fields import Monetary
|
||||
from trytond.modules.party.exceptions import EraseError
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.tools import grouped_slice, reduce_ids, sqlite_apply_types
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class Party(metaclass=PoolMeta):
|
||||
__name__ = 'party.party'
|
||||
|
||||
deposit = fields.Function(Monetary(
|
||||
"Deposit", currency='currency', digits='currency'),
|
||||
'get_deposit', searcher='search_deposit')
|
||||
|
||||
@classmethod
|
||||
def get_deposit(cls, parties, name):
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Account = pool.get('account.account')
|
||||
AccountType = pool.get('account.account.type')
|
||||
User = pool.get('res.user')
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
line = MoveLine.__table__()
|
||||
account = Account.__table__()
|
||||
account_type = AccountType.__table__()
|
||||
|
||||
values = {p.id: Decimal(0) for p in parties}
|
||||
|
||||
user = User(Transaction().user)
|
||||
if not user.company:
|
||||
return values
|
||||
currency = user.company.currency
|
||||
|
||||
line_clause, _ = MoveLine.query_get(line)
|
||||
|
||||
for sub_parties in grouped_slice(parties):
|
||||
party_clause = reduce_ids(line.party, [p.id for p in sub_parties])
|
||||
query = (line
|
||||
.join(account, condition=account.id == line.account)
|
||||
.join(account_type, condition=account.type == account_type.id)
|
||||
.select(line.party,
|
||||
# Use credit - debit to positive deposit amount
|
||||
Sum(Coalesce(line.credit, 0) - Coalesce(line.debit, 0)
|
||||
).as_('debit'),
|
||||
where=account_type.deposit
|
||||
& party_clause
|
||||
& (line.reconciliation == Null)
|
||||
& (account.company == user.company.id)
|
||||
& line_clause,
|
||||
group_by=line.party))
|
||||
if backend.name == 'sqlite':
|
||||
sqlite_apply_types(query, [None, 'NUMERIC'])
|
||||
cursor.execute(*query)
|
||||
values.update((p, currency.round(a)) for p, a in cursor)
|
||||
return values
|
||||
|
||||
@classmethod
|
||||
def search_deposit(cls, name, clause):
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Account = pool.get('account.account')
|
||||
AccountType = pool.get('account.account.type')
|
||||
User = pool.get('res.user')
|
||||
|
||||
line = MoveLine.__table__()
|
||||
account = Account.__table__()
|
||||
account_type = AccountType.__table__()
|
||||
|
||||
user = User(Transaction().user)
|
||||
if not user.company:
|
||||
return []
|
||||
|
||||
line_clause, _ = MoveLine.query_get(line)
|
||||
Operator = fields.SQL_OPERATORS[clause[1]]
|
||||
|
||||
query = (line
|
||||
.join(account, condition=account.id == line.account)
|
||||
.join(account_type, condition=account.type == account_type.id)
|
||||
.select(line.party,
|
||||
where=account.active
|
||||
& account_type.deposit
|
||||
& (line.party != Null)
|
||||
& (line.reconciliation == Null)
|
||||
& (account.company == user.company.id)
|
||||
& line_clause,
|
||||
group_by=line.party,
|
||||
having=Operator(
|
||||
# Use credit - debit to positive deposit amount
|
||||
Sum(Coalesce(line.credit, 0) - Coalesce(line.debit, 0)),
|
||||
Decimal(clause[2] or 0))))
|
||||
return [('id', 'in', query)]
|
||||
|
||||
def get_deposit_balance(self, deposit_account, currency=None):
|
||||
'Return the deposit account balance (debit - credit) for the party'
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
transaction = Transaction()
|
||||
cursor = transaction.connection.cursor()
|
||||
|
||||
line = MoveLine.__table__()
|
||||
if currency is None:
|
||||
currency = deposit_account.currency
|
||||
assert deposit_account.type.deposit
|
||||
|
||||
where = ((line.account == deposit_account.id)
|
||||
& (line.party == self.id)
|
||||
& (line.reconciliation == Null))
|
||||
if transaction.database.has_select_for():
|
||||
cursor.execute(*line.select(
|
||||
Literal(1),
|
||||
where=where,
|
||||
for_=For('UPDATE', nowait=True)))
|
||||
else:
|
||||
MoveLine.lock()
|
||||
|
||||
if currency == deposit_account.currency:
|
||||
amount = Sum(Coalesce(line.debit, 0) - Coalesce(line.credit, 0))
|
||||
else:
|
||||
amount = Sum(Case(
|
||||
(line.second_currency == currency.id,
|
||||
line.amount_second_currency),
|
||||
else_=0))
|
||||
|
||||
query = line.select(amount.as_('deposit_balance'), where=where)
|
||||
if backend.name == 'sqlite':
|
||||
sqlite_apply_types(query, ['NUMERIC'])
|
||||
cursor.execute(*query)
|
||||
amount, = cursor.fetchone()
|
||||
if amount is None:
|
||||
amount = Decimal(0)
|
||||
return currency.round(amount)
|
||||
|
||||
def check_deposit(self, deposit_account, sign=1):
|
||||
'''Check if the deposit account balance (debit - credit) has the same
|
||||
sign for the party'''
|
||||
assert sign in (1, -1)
|
||||
amount = self.get_deposit_balance(
|
||||
deposit_account, currency=deposit_account.second_currency)
|
||||
return not amount or ((amount < 0) == (sign < 0))
|
||||
|
||||
|
||||
class Erase(metaclass=PoolMeta):
|
||||
__name__ = 'party.erase'
|
||||
|
||||
def check_erase_company(self, party, company):
|
||||
if party.deposit:
|
||||
raise EraseError(
|
||||
gettext('account_deposit.msg_erase_party_deposit',
|
||||
party=party.rec_name,
|
||||
company=company.rec_name))
|
||||
17
modules/account_deposit/party.xml
Normal file
17
modules/account_deposit/party.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?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="party_view_tree">
|
||||
<field name="model">party.party</field>
|
||||
<field name="inherit" ref="party.party_view_tree"/>
|
||||
<field name="name">party_tree</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="party_view_form">
|
||||
<field name="model">party.party</field>
|
||||
<field name="inherit" ref="party.party_view_form"/>
|
||||
<field name="name">party_form</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
2
modules/account_deposit/tests/__init__.py
Normal file
2
modules/account_deposit/tests/__init__.py
Normal 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.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
modules/account_deposit/tests/__pycache__/tools.cpython-311.pyc
Normal file
BIN
modules/account_deposit/tests/__pycache__/tools.cpython-311.pyc
Normal file
Binary file not shown.
101
modules/account_deposit/tests/scenario_deposit.rst
Normal file
101
modules/account_deposit/tests/scenario_deposit.rst
Normal file
@@ -0,0 +1,101 @@
|
||||
================
|
||||
Deposit 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_deposit.tests.tools import add_deposit_accounts
|
||||
>>> from trytond.modules.account_invoice.tests.tools import (
|
||||
... create_payment_term, set_fiscalyear_invoice_sequences)
|
||||
>>> from trytond.modules.company.tests.tools import create_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('account_deposit', create_company, create_chart)
|
||||
|
||||
Create fiscal year::
|
||||
|
||||
>>> fiscalyear = set_fiscalyear_invoice_sequences(
|
||||
... create_fiscalyear())
|
||||
>>> fiscalyear.click('create_period')
|
||||
|
||||
Get accounts::
|
||||
|
||||
>>> accounts = add_deposit_accounts(get_accounts())
|
||||
|
||||
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 deposit invoice::
|
||||
|
||||
>>> Invoice = Model.get('account.invoice')
|
||||
>>> invoice = Invoice(party=party, payment_term=payment_term)
|
||||
>>> line = invoice.lines.new()
|
||||
>>> line.account = accounts['deposit']
|
||||
>>> line.description = 'Deposit'
|
||||
>>> line.quantity = 1
|
||||
>>> line.unit_price = Decimal(100)
|
||||
>>> invoice.click('post')
|
||||
>>> invoice.untaxed_amount
|
||||
Decimal('100.00')
|
||||
|
||||
Check party deposit::
|
||||
|
||||
>>> party.reload()
|
||||
>>> party.deposit
|
||||
Decimal('100.00')
|
||||
|
||||
Create final invoice::
|
||||
|
||||
>>> invoice = Invoice(party=party, payment_term=payment_term)
|
||||
>>> line = invoice.lines.new()
|
||||
>>> line.account = accounts['revenue']
|
||||
>>> line.description = 'Revenue'
|
||||
>>> line.quantity = 1
|
||||
>>> line.unit_price = Decimal(500)
|
||||
>>> invoice.save()
|
||||
>>> invoice.untaxed_amount
|
||||
Decimal('500.00')
|
||||
|
||||
Recall deposit::
|
||||
|
||||
>>> recall_deposit = invoice.click('recall_deposit')
|
||||
>>> recall_deposit.form.account = accounts['deposit']
|
||||
>>> recall_deposit.form.description = 'Recall Deposit'
|
||||
>>> recall_deposit.execute('recall')
|
||||
>>> invoice.reload()
|
||||
>>> deposit_line, = [l for l in invoice.lines
|
||||
... if l.account == accounts['deposit']]
|
||||
>>> deposit_line.amount
|
||||
Decimal('-100.00')
|
||||
>>> invoice.untaxed_amount
|
||||
Decimal('400.00')
|
||||
|
||||
Recall too much::
|
||||
|
||||
>>> deposit_line.unit_price = Decimal('-200.00')
|
||||
>>> deposit_line.save()
|
||||
>>> invoice.click('post')
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
DepositError: ...
|
||||
|
||||
Recall available::
|
||||
|
||||
>>> deposit_line.unit_price = Decimal('-100.00')
|
||||
>>> deposit_line.save()
|
||||
>>> invoice.click('post')
|
||||
@@ -0,0 +1,115 @@
|
||||
=====================================
|
||||
Deposit with Second Currency Scenario
|
||||
=====================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import datetime as dt
|
||||
>>> 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_deposit.tests.tools import add_deposit_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
|
||||
|
||||
>>> today = dt.date.today()
|
||||
>>> yesterday = today - dt.timedelta(days=1)
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules('account_deposit', create_company, create_chart)
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> Invoice = Model.get('account.invoice')
|
||||
|
||||
Get currencies::
|
||||
|
||||
>>> currency = get_currency('USD')
|
||||
>>> eur = get_currency('EUR')
|
||||
|
||||
Set alternate currency rates::
|
||||
|
||||
>>> rate = eur.rates.new()
|
||||
>>> rate.date = yesterday
|
||||
>>> rate.rate = Decimal('1.20')
|
||||
>>> rate = eur.rates.new()
|
||||
>>> rate.date = today
|
||||
>>> rate.rate = Decimal('1.10')
|
||||
>>> eur.save()
|
||||
|
||||
Create fiscal year::
|
||||
|
||||
>>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear())
|
||||
>>> fiscalyear.click('create_period')
|
||||
|
||||
Get accounts::
|
||||
|
||||
>>> accounts = add_deposit_accounts(get_accounts())
|
||||
>>> accounts['deposit'].second_currency = eur
|
||||
>>> accounts['deposit'].save()
|
||||
|
||||
Create party::
|
||||
|
||||
>>> party = Party(name='Party')
|
||||
>>> party.save()
|
||||
|
||||
Create deposit invoice::
|
||||
|
||||
>>> invoice = Invoice(party=party, currency=eur, invoice_date=yesterday)
|
||||
>>> line = invoice.lines.new()
|
||||
>>> line.account = accounts['deposit']
|
||||
>>> line.description = "Deposit"
|
||||
>>> line.quantity = 1
|
||||
>>> line.unit_price = Decimal(100)
|
||||
>>> invoice.click('post')
|
||||
>>> invoice.untaxed_amount
|
||||
Decimal('100.00')
|
||||
|
||||
Check party deposit::
|
||||
|
||||
>>> party.reload()
|
||||
>>> party.deposit
|
||||
Decimal('83.33')
|
||||
|
||||
Create final invoice::
|
||||
|
||||
>>> invoice = Invoice(party=party, currency=eur, invoice_date=today)
|
||||
>>> line = invoice.lines.new()
|
||||
>>> line.account = accounts['revenue']
|
||||
>>> line.description = "Revenue"
|
||||
>>> line.quantity = 1
|
||||
>>> line.unit_price = Decimal(500)
|
||||
>>> invoice.save()
|
||||
>>> invoice.untaxed_amount
|
||||
Decimal('500.00')
|
||||
|
||||
Recall deposit::
|
||||
|
||||
>>> recall_deposit = invoice.click('recall_deposit')
|
||||
>>> recall_deposit.form.account = accounts['deposit']
|
||||
>>> recall_deposit.form.description = "Recall Deposit"
|
||||
>>> recall_deposit.execute('recall')
|
||||
>>> invoice.reload()
|
||||
>>> deposit_line, = [l for l in invoice.lines
|
||||
... if l.account == accounts['deposit']]
|
||||
>>> deposit_line.amount
|
||||
Decimal('-100.00')
|
||||
>>> invoice.untaxed_amount
|
||||
Decimal('400.00')
|
||||
>>> invoice.click('post')
|
||||
|
||||
Check party deposit::
|
||||
|
||||
>>> party.reload()
|
||||
>>> party.deposit
|
||||
Decimal('-7.58')
|
||||
>>> accounts['deposit'].reload()
|
||||
>>> accounts['deposit'].balance
|
||||
Decimal('7.58')
|
||||
>>> accounts['deposit'].amount_second_currency
|
||||
Decimal('0.00')
|
||||
16
modules/account_deposit/tests/test_module.py
Normal file
16
modules/account_deposit/tests/test_module.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# 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.modules.company.tests import (
|
||||
CompanyTestMixin, PartyCompanyCheckEraseMixin)
|
||||
from trytond.tests.test_tryton import ModuleTestCase
|
||||
|
||||
|
||||
class AccountDepositTestCase(
|
||||
PartyCompanyCheckEraseMixin, CompanyTestMixin, ModuleTestCase):
|
||||
'Test Account Deposit module'
|
||||
module = 'account_deposit'
|
||||
extras = ['account_payment_clearing']
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
8
modules/account_deposit/tests/test_scenario.py
Normal file
8
modules/account_deposit/tests/test_scenario.py
Normal 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)
|
||||
19
modules/account_deposit/tests/tools.py
Normal file
19
modules/account_deposit/tests/tools.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# 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 proteus import Model
|
||||
from trytond.modules.company.tests.tools import get_company
|
||||
|
||||
|
||||
def add_deposit_accounts(accounts, company=None, config=None):
|
||||
'Add deposit to accounts'
|
||||
Account = Model.get('account.account', config=config)
|
||||
|
||||
if not company:
|
||||
company = get_company(config=config)
|
||||
|
||||
accounts['deposit'], = Account.find([
|
||||
('type.deposit', '=', True),
|
||||
('company', '=', company.id),
|
||||
('name', '=', 'Deposit'),
|
||||
])
|
||||
return accounts
|
||||
37
modules/account_deposit/tryton.cfg
Normal file
37
modules/account_deposit/tryton.cfg
Normal file
@@ -0,0 +1,37 @@
|
||||
[tryton]
|
||||
version=7.8.1
|
||||
depends:
|
||||
account
|
||||
account_invoice
|
||||
company
|
||||
ir
|
||||
party
|
||||
res
|
||||
extras_depend:
|
||||
account_payment_clearing
|
||||
xml:
|
||||
account.xml
|
||||
invoice.xml
|
||||
party.xml
|
||||
account_chart_de.xml
|
||||
account_chart_en.xml
|
||||
account_chart_es.xml
|
||||
account_chart_fr.xml
|
||||
message.xml
|
||||
|
||||
[register]
|
||||
model:
|
||||
account.AccountTypeTemplate
|
||||
account.AccountType
|
||||
invoice.Invoice
|
||||
invoice.InvoiceLine
|
||||
invoice.DepositRecallStart
|
||||
party.Party
|
||||
wizard:
|
||||
account.Reconcile
|
||||
invoice.DepositRecall
|
||||
party.Erase
|
||||
|
||||
[register account_payment_clearing]
|
||||
model:
|
||||
account.Payment
|
||||
9
modules/account_deposit/view/account_type_form.xml
Normal file
9
modules/account_deposit/view/account_type_form.xml
Normal 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='checkboxes']" position="inside">
|
||||
<label name="deposit"/>
|
||||
<field name="deposit" xexpand="0" width="25"/>
|
||||
</xpath>
|
||||
</data>
|
||||
8
modules/account_deposit/view/invoice_form.xml
Normal file
8
modules/account_deposit/view/invoice_form.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?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='total_amount']" position="after">
|
||||
<button name="recall_deposit" colspan="2"/>
|
||||
</xpath>
|
||||
</data>
|
||||
14
modules/account_deposit/view/move_line_list_deposit.xml
Normal file
14
modules/account_deposit/view/move_line_list_deposit.xml
Normal 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. -->
|
||||
<tree>
|
||||
<field name="date"/>
|
||||
<field name="party"/>
|
||||
<field name="amount"/>
|
||||
<field name="amount_currency"/>
|
||||
<field name="move"/>
|
||||
<field name="origin"/>
|
||||
<field name="move_description_used"/>
|
||||
<field name="description_used"/>
|
||||
<field name="reconciliation" tree_invisible="1"/>
|
||||
</tree>
|
||||
12
modules/account_deposit/view/party_form.xml
Normal file
12
modules/account_deposit/view/party_form.xml
Normal 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. -->
|
||||
<data>
|
||||
<xpath expr="/form/notebook/page[@id='accounting']/field[@name='payable']"
|
||||
position="after">
|
||||
<newline/>
|
||||
<label name="deposit"/>
|
||||
<field name="deposit"/>
|
||||
<newline/>
|
||||
</xpath>
|
||||
</data>
|
||||
8
modules/account_deposit/view/party_tree.xml
Normal file
8
modules/account_deposit/view/party_tree.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?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="/tree/field[@name='payable_today']" position="after">
|
||||
<field name="deposit" optional="0"/>
|
||||
</xpath>
|
||||
</data>
|
||||
9
modules/account_deposit/view/recall_deposit_form.xml
Normal file
9
modules/account_deposit/view/recall_deposit_form.xml
Normal 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. -->
|
||||
<form>
|
||||
<label name="account"/>
|
||||
<field name="account"/>
|
||||
<separator name="description" colspan="4"/>
|
||||
<field name="description" colspan="4"/>
|
||||
</form>
|
||||
Reference in New Issue
Block a user