Initial import from Docker volume
This commit is contained in:
31
modules/account_payment_clearing/__init__.py
Executable file
31
modules/account_payment_clearing/__init__.py
Executable file
@@ -0,0 +1,31 @@
|
||||
# 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.pool import Pool
|
||||
|
||||
from . import account, ir, payment, statement
|
||||
|
||||
|
||||
def register():
|
||||
Pool.register(
|
||||
payment.Journal,
|
||||
payment.Payment,
|
||||
payment.Group,
|
||||
payment.SucceedStart,
|
||||
account.Move,
|
||||
account.MoveReconciliation,
|
||||
ir.Cron,
|
||||
module='account_payment_clearing', type_='model')
|
||||
Pool.register(
|
||||
statement.Payment,
|
||||
statement.PaymentGroup,
|
||||
statement.Statement,
|
||||
statement.StatementLine,
|
||||
module='account_payment_clearing', type_='model',
|
||||
depends=['account_statement'])
|
||||
Pool.register(
|
||||
statement.StatementRuleLine,
|
||||
module='account_payment_clearing', type_='model',
|
||||
depends=['account_statement_rule'])
|
||||
Pool.register(
|
||||
payment.Succeed,
|
||||
module='account_payment_clearing', type_='wizard')
|
||||
BIN
modules/account_payment_clearing/__pycache__/__init__.cpython-311.opt-1.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/__init__.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account_payment_clearing/__pycache__/__init__.cpython-311.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/__init__.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account_payment_clearing/__pycache__/account.cpython-311.opt-1.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/account.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account_payment_clearing/__pycache__/account.cpython-311.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/account.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account_payment_clearing/__pycache__/ir.cpython-311.opt-1.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/ir.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account_payment_clearing/__pycache__/ir.cpython-311.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/ir.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account_payment_clearing/__pycache__/payment.cpython-311.opt-1.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/payment.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account_payment_clearing/__pycache__/payment.cpython-311.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/payment.cpython-311.pyc
Executable file
Binary file not shown.
BIN
modules/account_payment_clearing/__pycache__/statement.cpython-311.opt-1.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/statement.cpython-311.opt-1.pyc
Executable file
Binary file not shown.
BIN
modules/account_payment_clearing/__pycache__/statement.cpython-311.pyc
Executable file
BIN
modules/account_payment_clearing/__pycache__/statement.cpython-311.pyc
Executable file
Binary file not shown.
57
modules/account_payment_clearing/account.py
Executable file
57
modules/account_payment_clearing/account.py
Executable file
@@ -0,0 +1,57 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.tools import grouped_slice
|
||||
|
||||
|
||||
class Move(metaclass=PoolMeta):
|
||||
__name__ = 'account.move'
|
||||
|
||||
@classmethod
|
||||
def _get_origin(cls):
|
||||
models = super(Move, cls)._get_origin()
|
||||
return models + ['account.payment']
|
||||
|
||||
|
||||
def _payments_to_update(reconciliations):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
Reconciliation = pool.get('account.move.reconciliation')
|
||||
|
||||
moves = set()
|
||||
others = set()
|
||||
for reconciliation in reconciliations:
|
||||
for line in reconciliation.lines:
|
||||
moves.add(line.move)
|
||||
others.update(line.reconciliations_delegated)
|
||||
|
||||
payments = set()
|
||||
for sub_moves in grouped_slice(moves):
|
||||
payments.update(Payment.search([
|
||||
('clearing_move', 'in', [m.id for m in sub_moves]),
|
||||
], order=[]))
|
||||
if others:
|
||||
payments.update(_payments_to_update(Reconciliation.browse(others)))
|
||||
|
||||
return payments
|
||||
|
||||
|
||||
class MoveReconciliation(metaclass=PoolMeta):
|
||||
__name__ = 'account.move.reconciliation'
|
||||
|
||||
@classmethod
|
||||
def create(cls, vlist):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
reconciliations = super().create(vlist)
|
||||
Payment.__queue__.update_reconciled(
|
||||
list(_payments_to_update(reconciliations)))
|
||||
return reconciliations
|
||||
|
||||
@classmethod
|
||||
def delete(cls, reconciliations):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
payments = _payments_to_update(reconciliations)
|
||||
super().delete(reconciliations)
|
||||
Payment.__queue__.update_reconciled(list(payments))
|
||||
14
modules/account_payment_clearing/ir.py
Executable file
14
modules/account_payment_clearing/ir.py
Executable file
@@ -0,0 +1,14 @@
|
||||
# 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.pool import PoolMeta
|
||||
|
||||
|
||||
class Cron(metaclass=PoolMeta):
|
||||
__name__ = 'ir.cron'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super().__setup__()
|
||||
cls.method.selection.append(
|
||||
('account.payment.journal|cron_post_clearing_moves',
|
||||
"Post Clearing Moves"))
|
||||
92
modules/account_payment_clearing/locale/bg.po
Executable file
92
modules/account_payment_clearing/locale/bg.po
Executable file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
91
modules/account_payment_clearing/locale/ca.po
Executable file
91
modules/account_payment_clearing/locale/ca.po
Executable file
@@ -0,0 +1,91 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Compte"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Assentament de liquidació"
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Liquidació conciliada"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Línies d'extracte"
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Liquidació conciliada"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Línies d'extracte"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "Compte de liquidació"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "Diari de liquidació"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr "Retràs comptabilització liquidació"
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr "Defineix el compte a utilitzar pel moviment de liquidació."
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr "Marcat si l'apunt de liquidació s'ha conciliat."
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr "Tots els pagaments del grup s'han conciliat."
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
"Comptabilitza automàticament els asentaments de liquidació desprès del retràs.\n"
|
||||
"Deixeu-ho en blanc per no comptabilitzar."
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Marca pagament amb èxit"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Marca pagaments amb èxit"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Amb èxit"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Comptabilitza assentaments de liquidació"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "Liquidació"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel·la"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Amb èxit"
|
||||
92
modules/account_payment_clearing/locale/cs.po
Executable file
92
modules/account_payment_clearing/locale/cs.po
Executable file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
91
modules/account_payment_clearing/locale/de.po
Executable file
91
modules/account_payment_clearing/locale/de.po
Executable file
@@ -0,0 +1,91 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Konto"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Abstimmungsbuchungssatz"
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Zahlungsausgleich abgestimmt"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Kontoauszugspositionen"
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Zahlungsausgleich abgestimmt"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Kontoauszugspositionen"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "Konto Zahlungsausgleich"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "Journal Zahlungsausgleich"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr "Verzögerung des Zahlungsausgleichs"
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr "Definieren des Kontos für die Ausgleichsbuchungssätze."
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr "Ausgewählt wenn Zahlungsausgleichsbuchung abgestimmt ist."
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr "Alle Zahlungen in der Gruppe sind abgestimmt."
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
"Automatisches Verbuchen der Ausgleichsbuchungssätze mit Verzögerung.\n"
|
||||
"Leer lassen, um keine Buchungssätze zu erzeugen."
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Erfolgreiche Zahlung"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Erfolgreiche Zahlungen"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Erfolgreich markieren"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Ausgleichsbuchungssätze erstellen"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "Zahlungsausgleich"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Erfolgreich"
|
||||
91
modules/account_payment_clearing/locale/es.po
Executable file
91
modules/account_payment_clearing/locale/es.po
Executable file
@@ -0,0 +1,91 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Cuenta"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Asiento de liquidación"
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Liquidación conciliada"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Líneas de extracto"
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Liquidación conciliada"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Líneas de extracto"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "Cuenta de liquidación"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "Diario de liquidación"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr "Retraso contabilización liquidación"
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr "Define la cuenta a utilizar para el asiento de liquidación."
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr "Marcado si el apunte de liquidación se ha conciliado."
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr "Todos los pagos del grupo se han conciliado."
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
"Contabiliza automáticamente los apuntes de liquidación después del retraso.\n"
|
||||
"Dejar en blanco para no contabilizar."
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Marcar pagos con éxito"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Marcar pagos con éxito"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Con éxito"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Contabilizar asientos de liquidación"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "Liquidación"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Con éxito"
|
||||
92
modules/account_payment_clearing/locale/es_419.po
Executable file
92
modules/account_payment_clearing/locale/es_419.po
Executable file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Asiento de compensación"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Asiento de compensación"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Asiento de compensación"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "Cuenta de compensación"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "Libro diario de compensación"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Pago exitoso"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Pago exitoso"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Exitoso"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "Compensación"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Exitoso"
|
||||
93
modules/account_payment_clearing/locale/et.po
Executable file
93
modules/account_payment_clearing/locale/et.po
Executable file
@@ -0,0 +1,93 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Konto"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Arvelduse kanne"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Arvelduse kanne"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Arvelduse kanne"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "Arvelduse konto"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "Arvelduse päevaraamat"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr "Arvelduse postitamise viivitus"
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Kuupäev"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr "Määra konto, mida kasutada arveldamise kandel."
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
"Postita automaatselt arvelduse kanded pärast viivitust.Jäta tühjaks kui ei "
|
||||
"soovi postitada."
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Tasumine õnnestus"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Tasumised õnnestusid"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Õnnestunud"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Postita tasumise kanded"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "Tasumine"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Tühista"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Õnnestunud"
|
||||
94
modules/account_payment_clearing/locale/fa.po
Executable file
94
modules/account_payment_clearing/locale/fa.po
Executable file
@@ -0,0 +1,94 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "حساب"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "تسویه جابجایی"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "تسویه جابجایی"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "تسویه جابجایی"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "تسویه حساب"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "تسویه روزنامه"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr "تسویه تاخیر ارسال"
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "تاریخ"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr "تعریف حساب برای استفاده تسویه جابجایی."
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
"ارسال تسویه جابجایی ها بعداز تأخییر بطورخودکار.\n"
|
||||
"برای بدون ارسال خالی بگذارید."
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "پرداخت موفق"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "پرداخت های موفق"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "تسویه"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "انصراف"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "موفق شد"
|
||||
92
modules/account_payment_clearing/locale/fi.po
Executable file
92
modules/account_payment_clearing/locale/fi.po
Executable file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
91
modules/account_payment_clearing/locale/fr.po
Executable file
91
modules/account_payment_clearing/locale/fr.po
Executable file
@@ -0,0 +1,91 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Compte"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Mouvement de compensation"
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Compensation réconciliée"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Lignes de relevé"
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Compensation réconciliée"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Lignes de relevé"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "Compte de compensation"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "Journal de compensation"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr "Délai de comptabilisation de compensation"
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr "Définit le compte à utiliser pour le mouvement de compensation."
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr "Coché si la ligne de compensation est réconciliée."
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr "Tous les paiements du groupe sont réconciliés."
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
"Comptabilise automatiquement les mouvements de compensation après le délai.\n"
|
||||
"Laissez vide pour ne pas comptabiliser."
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Réussir les paiements"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Réussir les paiements"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Réussir"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Comptabiliser les mouvements de compensation"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "Compensation"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Réussir"
|
||||
92
modules/account_payment_clearing/locale/hu.po
Executable file
92
modules/account_payment_clearing/locale/hu.po
Executable file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
89
modules/account_payment_clearing/locale/id.po
Executable file
89
modules/account_payment_clearing/locale/id.po
Executable file
@@ -0,0 +1,89 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Akun"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Tanggal"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Batal"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr ""
|
||||
90
modules/account_payment_clearing/locale/it.po
Executable file
90
modules/account_payment_clearing/locale/it.po
Executable file
@@ -0,0 +1,90 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Conto"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Movimento di compensazione"
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Movimento di compensazione"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "Conto di compensazione"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "Registro di compensazione"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Pagamenti avvenuti con successo"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Pagamenti avvenuti con successo"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Riusciti"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "Compensazione"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Riusciti"
|
||||
93
modules/account_payment_clearing/locale/lo.po
Executable file
93
modules/account_payment_clearing/locale/lo.po
Executable file
@@ -0,0 +1,93 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "ຊໍາລະເຄື່ອນຍ້າຍ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "ຊໍາລະເຄື່ອນຍ້າຍ"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "ຊໍາລະເຄື່ອນຍ້າຍ"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "ບັນຊີສະສາງ"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "ບັນຊີສະສາງປະຈຳວັນ"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "ວັນທີ"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "ການຈ່າຍສຳເລັດ"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "ການຊໍາລະ"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "ຍົກເລີກ"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "ສຳເລັດແລ້ວ"
|
||||
90
modules/account_payment_clearing/locale/lt.po
Executable file
90
modules/account_payment_clearing/locale/lt.po
Executable file
@@ -0,0 +1,90 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Koresponduojanti sąskaita"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Sėkmingai apmokėta"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Sėkmingai apmokėta"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Sėkmingai"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Atsisakyti"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Sėkmingai"
|
||||
91
modules/account_payment_clearing/locale/nl.po
Executable file
91
modules/account_payment_clearing/locale/nl.po
Executable file
@@ -0,0 +1,91 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Rekening"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "tegenboeking"
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Compensatieboeking afgeletterd"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Afschrift regels"
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Compensatieboeking afgeletterd"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr "Afschrift regels"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "tegen rekening"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "tegen dagboek"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr "tegenboeking vertraging"
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr "definieer de rekening om te gebruiken voor de tegenboekingen."
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr "Aangevinkt als de compensatieboekingsregel is afgeletterd."
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr "Alle betalingen in de groep zijn afgeletterd."
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
"maak automatisch de tegenboeking na de vertraging (delay).\n"
|
||||
"Laat leeg om geen boekingen te maken."
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "succesvolle betalingen"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "geslaagde betalingen"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "geslaagd"
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Maak tegenboekingen"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "tegenboeking"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleer"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "geslaagd"
|
||||
92
modules/account_payment_clearing/locale/pl.po
Executable file
92
modules/account_payment_clearing/locale/pl.po
Executable file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Konto"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
93
modules/account_payment_clearing/locale/pt.po
Executable file
93
modules/account_payment_clearing/locale/pt.po
Executable file
@@ -0,0 +1,93 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Conta"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Movimento de Compensação"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Movimento de Compensação"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Movimento de Compensação"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "Conta de Compensação"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "Diário de Compensação"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr "Define a conta usada para o movimento de compensação."
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Pagamento com Sucesso"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "Compensação"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Sucesso"
|
||||
91
modules/account_payment_clearing/locale/ro.po
Executable file
91
modules/account_payment_clearing/locale/ro.po
Executable file
@@ -0,0 +1,91 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Cont"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Ștergerea Mișcării"
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr "Toate plățile din grup sunt reconciliate."
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Anulare"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr ""
|
||||
92
modules/account_payment_clearing/locale/ru.po
Executable file
92
modules/account_payment_clearing/locale/ru.po
Executable file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
93
modules/account_payment_clearing/locale/sl.po
Executable file
93
modules/account_payment_clearing/locale/sl.po
Executable file
@@ -0,0 +1,93 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr "Konto"
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr "Klirinška knjižba"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Klirinška knjižba"
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr "Klirinška knjižba"
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr "Klirinški konto"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr "Klirinški dnevnik"
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr "Konto za knjiženje klirinškega prometa"
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Zaključeno plačilo"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr "Kliring"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Prekliči"
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Zaključi"
|
||||
92
modules/account_payment_clearing/locale/tr.po
Executable file
92
modules/account_payment_clearing/locale/tr.po
Executable file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
89
modules/account_payment_clearing/locale/uk.po
Executable file
89
modules/account_payment_clearing/locale/uk.po
Executable file
@@ -0,0 +1,89 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr ""
|
||||
92
modules/account_payment_clearing/locale/zh_CN.po
Executable file
92
modules/account_payment_clearing/locale/zh_CN.po
Executable file
@@ -0,0 +1,92 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=utf-8\n"
|
||||
|
||||
msgctxt "field:account.payment,account:"
|
||||
msgid "Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_move:"
|
||||
msgid "Clearing Move"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,clearing_reconciled:"
|
||||
msgid "Clearing Reconciled"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.group,statement_lines:"
|
||||
msgid "Statement Lines"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_account:"
|
||||
msgid "Clearing Account"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_journal:"
|
||||
msgid "Clearing Journal"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.journal,clearing_posting_delay:"
|
||||
msgid "Clearing Posting Delay"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "field:account.payment.succeed.start,date:"
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,account:"
|
||||
msgid "Define the account to use for clearing move."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment,clearing_reconciled:"
|
||||
msgid "Checked if clearing line is reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.group,clearing_reconciled:"
|
||||
msgid "All payments in the group are reconciled."
|
||||
msgstr ""
|
||||
|
||||
msgctxt "help:account.payment.journal,clearing_posting_delay:"
|
||||
msgid ""
|
||||
"Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "model:account.payment.succeed.start,name:"
|
||||
msgid "Succeed Payment"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_succeed"
|
||||
msgid "Succeed Payments"
|
||||
msgstr "Succeed Payments"
|
||||
|
||||
msgctxt "model:ir.model.button,string:payment_succeed_wizard_button"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "selection:ir.cron,method:"
|
||||
msgid "Post Clearing Moves"
|
||||
msgstr "Post Clearing Moves"
|
||||
|
||||
msgctxt "view:account.payment.journal:"
|
||||
msgid "Clearing"
|
||||
msgstr ""
|
||||
|
||||
msgctxt "wizard_button:account.payment.succeed,start,end:"
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgctxt "wizard_button:account.payment.succeed,start,succeed:"
|
||||
msgid "Succeed"
|
||||
msgstr "Succeed"
|
||||
470
modules/account_payment_clearing/payment.py
Executable file
470
modules/account_payment_clearing/payment.py
Executable file
@@ -0,0 +1,470 @@
|
||||
# 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 collections import defaultdict
|
||||
from functools import wraps
|
||||
|
||||
from sql.aggregate import BoolAnd, Min
|
||||
from sql.conditionals import Coalesce
|
||||
|
||||
from trytond import backend
|
||||
from trytond.model import ModelView, Workflow, fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Bool, Eval, If, TimeDelta
|
||||
from trytond.tools import grouped_slice, reduce_ids
|
||||
from trytond.transaction import Transaction
|
||||
from trytond.wizard import Button, StateTransition, StateView, Wizard
|
||||
|
||||
|
||||
class Journal(metaclass=PoolMeta):
|
||||
__name__ = 'account.payment.journal'
|
||||
clearing_account = fields.Many2One('account.account', 'Clearing Account',
|
||||
domain=[
|
||||
('company', '=', Eval('company', -1)),
|
||||
('type', '!=', None),
|
||||
('closed', '!=', True),
|
||||
('party_required', '=', False),
|
||||
],
|
||||
states={
|
||||
'required': Bool(Eval('clearing_journal')),
|
||||
})
|
||||
clearing_journal = fields.Many2One('account.journal', 'Clearing Journal',
|
||||
states={
|
||||
'required': Bool(Eval('clearing_account')),
|
||||
})
|
||||
clearing_posting_delay = fields.TimeDelta(
|
||||
"Clearing Posting Delay",
|
||||
domain=['OR',
|
||||
('clearing_posting_delay', '=', None),
|
||||
('clearing_posting_delay', '>=', TimeDelta()),
|
||||
],
|
||||
help="Post automatically the clearing moves after the delay.\n"
|
||||
"Leave empty for no posting.")
|
||||
|
||||
@classmethod
|
||||
def cron_post_clearing_moves(cls, date=None):
|
||||
pool = Pool()
|
||||
Date = pool.get('ir.date')
|
||||
Move = pool.get('account.move')
|
||||
if date is None:
|
||||
date = Date.today()
|
||||
moves = []
|
||||
journals = cls.search([
|
||||
('company', '=', Transaction().context.get('company')),
|
||||
('clearing_posting_delay', '!=', None),
|
||||
])
|
||||
for journal in journals:
|
||||
move_date = date - journal.clearing_posting_delay
|
||||
moves.extend(Move.search([
|
||||
('date', '<=', move_date),
|
||||
('origin.journal.id', '=', journal.id,
|
||||
'account.payment'),
|
||||
('state', '=', 'draft'),
|
||||
('company', '=', journal.company.id),
|
||||
]))
|
||||
Move.post(moves)
|
||||
|
||||
|
||||
def cancel_clearing_move(func):
|
||||
@wraps(func)
|
||||
def wrapper(cls, payments, *args, **kwargs):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
Line = pool.get('account.move.line')
|
||||
Reconciliation = pool.get('account.move.reconciliation')
|
||||
|
||||
func(cls, payments, *args, **kwargs)
|
||||
|
||||
to_delete = []
|
||||
to_reconcile = defaultdict(lambda: defaultdict(list))
|
||||
to_unreconcile = []
|
||||
for payment in payments:
|
||||
if payment.clearing_move:
|
||||
if payment.clearing_move.state == 'draft':
|
||||
to_delete.append(payment.clearing_move)
|
||||
for line in payment.clearing_move.lines:
|
||||
if line.reconciliation:
|
||||
to_unreconcile.append(line.reconciliation)
|
||||
else:
|
||||
cancel_move = payment.clearing_move.cancel()
|
||||
for line in (payment.clearing_move.lines
|
||||
+ cancel_move.lines):
|
||||
if line.reconciliation:
|
||||
to_unreconcile.append(line.reconciliation)
|
||||
if line.account.reconcile:
|
||||
to_reconcile[payment.party][line.account].append(
|
||||
line)
|
||||
|
||||
# Remove clearing_move before delete
|
||||
# in case reconciliation triggers use it.
|
||||
cls.write(payments, {'clearing_move': None})
|
||||
|
||||
if to_unreconcile:
|
||||
Reconciliation.delete(to_unreconcile)
|
||||
if to_delete:
|
||||
Move.delete(to_delete)
|
||||
for party in to_reconcile:
|
||||
for lines in to_reconcile[party].values():
|
||||
Line.reconcile(lines)
|
||||
cls.update_reconciled(payments)
|
||||
return wrapper
|
||||
|
||||
|
||||
class Payment(metaclass=PoolMeta):
|
||||
__name__ = 'account.payment'
|
||||
account = fields.Many2One(
|
||||
'account.account', "Account", ondelete='RESTRICT',
|
||||
domain=[
|
||||
('closed', '!=', True),
|
||||
('company', '=', Eval('company', -1)),
|
||||
['OR',
|
||||
('second_currency', '=', Eval('currency', None)),
|
||||
[
|
||||
('company.currency', '=', Eval('currency', None)),
|
||||
('second_currency', '=', None),
|
||||
],
|
||||
],
|
||||
If(Eval('line'),
|
||||
('id', '=', None),
|
||||
()),
|
||||
],
|
||||
states={
|
||||
'readonly': Eval('state') != 'draft',
|
||||
'invisible': Eval('line') & ~Eval('account'),
|
||||
},
|
||||
help="Define the account to use for clearing move.")
|
||||
clearing_move = fields.Many2One('account.move', 'Clearing Move',
|
||||
readonly=True)
|
||||
clearing_reconciled = fields.Boolean(
|
||||
"Clearing Reconciled", readonly=True,
|
||||
states={
|
||||
'invisible': ~Eval('clearing_move'),
|
||||
},
|
||||
help="Checked if clearing line is reconciled.")
|
||||
|
||||
@property
|
||||
def amount_line_paid(self):
|
||||
amount = super().amount_line_paid
|
||||
|
||||
if self.clearing_move:
|
||||
clearing_lines = [
|
||||
l for l in self.clearing_move.lines
|
||||
if l.account == self.clearing_account]
|
||||
if clearing_lines:
|
||||
clearing_line = clearing_lines[0]
|
||||
if (not self.line.reconciliation
|
||||
and clearing_line.reconciliation):
|
||||
if self.line.second_currency:
|
||||
payment_amount = abs(self.line.amount_second_currency)
|
||||
else:
|
||||
payment_amount = abs(
|
||||
self.line.credit - self.line.debit)
|
||||
amount -= max(min(self.amount, payment_amount), 0)
|
||||
return amount
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Payment, cls).__setup__()
|
||||
line_invisible = Eval('account') & ~Eval('line')
|
||||
if 'invisible' in cls.line.states:
|
||||
cls.line.states['invisible'] &= line_invisible
|
||||
else:
|
||||
cls.line.states['invisible'] = line_invisible
|
||||
cls._buttons.update({
|
||||
'succeed_wizard': cls._buttons['succeed'],
|
||||
})
|
||||
cls.account.domain = [
|
||||
cls.account.domain,
|
||||
cls._account_type_domain(),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def _account_type_domain(cls):
|
||||
return If(Eval('state') == 'draft',
|
||||
If(Eval('kind') == 'receivable',
|
||||
('type.receivable', '=', True),
|
||||
('type.payable', '=', True),
|
||||
),
|
||||
())
|
||||
|
||||
@fields.depends('party', 'kind', 'date')
|
||||
def on_change_party(self):
|
||||
super().on_change_party()
|
||||
if self.kind == 'receivable':
|
||||
if self.party:
|
||||
with Transaction().set_context(date=self.date):
|
||||
self.account = self.party.account_receivable_used
|
||||
else:
|
||||
self.account = None
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action('account_payment_clearing.wizard_succeed')
|
||||
def succeed_wizard(cls, payments):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('succeeded')
|
||||
def succeed(cls, payments):
|
||||
pool = Pool()
|
||||
Line = pool.get('account.move.line')
|
||||
|
||||
super(Payment, cls).succeed(payments)
|
||||
|
||||
cls.set_clearing_move(payments)
|
||||
to_reconcile = []
|
||||
for payment in payments:
|
||||
if (payment.line
|
||||
and not payment.line.reconciliation
|
||||
and payment.clearing_move):
|
||||
lines = [l for l in payment.clearing_move.lines
|
||||
if l.account == payment.line.account] + [payment.line]
|
||||
if not sum(l.debit - l.credit for l in lines):
|
||||
to_reconcile.append(lines)
|
||||
Line.reconcile(*to_reconcile)
|
||||
cls.reconcile_clearing(payments)
|
||||
cls.update_reconciled(payments)
|
||||
|
||||
@property
|
||||
def clearing_account(self):
|
||||
if self.line:
|
||||
return self.line.account
|
||||
elif self.account:
|
||||
return self.account
|
||||
|
||||
@property
|
||||
def clearing_party(self):
|
||||
if self.line:
|
||||
return self.line.party
|
||||
else:
|
||||
return self.party
|
||||
|
||||
@classmethod
|
||||
def set_clearing_move(cls, payments):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
moves = []
|
||||
for payment in payments:
|
||||
move = payment._get_clearing_move()
|
||||
if move and not payment.clearing_move:
|
||||
payment.clearing_move = move
|
||||
moves.append(move)
|
||||
if moves:
|
||||
Move.save(moves)
|
||||
cls.save(payments)
|
||||
|
||||
def _get_clearing_move(self, date=None):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
Line = pool.get('account.move.line')
|
||||
Currency = pool.get('currency.currency')
|
||||
Period = pool.get('account.period')
|
||||
Date = pool.get('ir.date')
|
||||
|
||||
if not self.clearing_account:
|
||||
return
|
||||
if (not self.journal.clearing_account
|
||||
or not self.journal.clearing_journal):
|
||||
return
|
||||
if self.clearing_move:
|
||||
return self.clearing_move
|
||||
|
||||
if date is None:
|
||||
date = Transaction().context.get('clearing_date')
|
||||
if date is None:
|
||||
with Transaction().set_context(company=self.company.id):
|
||||
date = Date.today()
|
||||
period = Period.find(self.company, date=date)
|
||||
|
||||
local_currency = self.journal.currency == self.company.currency
|
||||
if not local_currency:
|
||||
with Transaction().set_context(date=self.date):
|
||||
local_amount = Currency.compute(
|
||||
self.journal.currency, self.amount, self.company.currency)
|
||||
else:
|
||||
local_amount = self.amount
|
||||
|
||||
move = Move(journal=self.journal.clearing_journal, origin=self,
|
||||
date=date, period=period, company=self.company)
|
||||
line = Line()
|
||||
if self.kind == 'payable':
|
||||
line.debit, line.credit = local_amount, 0
|
||||
else:
|
||||
line.debit, line.credit = 0, local_amount
|
||||
line.account = self.clearing_account
|
||||
if not local_currency:
|
||||
line.amount_second_currency = self.amount.copy_sign(
|
||||
line.debit - line.credit)
|
||||
line.second_currency = self.journal.currency
|
||||
|
||||
line.party = (self.clearing_party
|
||||
if line.account.party_required else None)
|
||||
counterpart = Line()
|
||||
if self.kind == 'payable':
|
||||
counterpart.debit, counterpart.credit = 0, local_amount
|
||||
else:
|
||||
counterpart.debit, counterpart.credit = local_amount, 0
|
||||
counterpart.account = self.journal.clearing_account
|
||||
if not local_currency:
|
||||
counterpart.amount_second_currency = self.amount.copy_sign(
|
||||
counterpart.debit - counterpart.credit)
|
||||
counterpart.second_currency = self.journal.currency
|
||||
move.lines = (line, counterpart)
|
||||
return move
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('processing')
|
||||
@cancel_clearing_move
|
||||
def proceed(cls, payments):
|
||||
super().proceed(payments)
|
||||
|
||||
@classmethod
|
||||
@ModelView.button
|
||||
@Workflow.transition('failed')
|
||||
@cancel_clearing_move
|
||||
def fail(cls, payments):
|
||||
super(Payment, cls).fail(payments)
|
||||
|
||||
@classmethod
|
||||
def update_reconciled(cls, payments):
|
||||
for payment in payments:
|
||||
if payment.clearing_move:
|
||||
payment.clearing_reconciled = all(
|
||||
l.reconciliation for l in payment.clearing_lines)
|
||||
else:
|
||||
payment.clearing_reconciled = False
|
||||
cls.save(payments)
|
||||
|
||||
@classmethod
|
||||
def reconcile_clearing(cls, payments):
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
Group = pool.get('account.payment.group')
|
||||
to_reconcile = []
|
||||
for payment in payments:
|
||||
if not payment.clearing_move:
|
||||
continue
|
||||
clearing_account = payment.journal.clearing_account
|
||||
if not clearing_account or not clearing_account.reconcile:
|
||||
continue
|
||||
lines = [l for l in payment.clearing_lines if not l.reconciliation]
|
||||
if lines and not sum((l.debit - l.credit) for l in lines):
|
||||
to_reconcile.append(lines)
|
||||
if to_reconcile:
|
||||
MoveLine.reconcile(*to_reconcile)
|
||||
Group.reconcile_clearing(
|
||||
Group.browse(list({p.group for p in payments if p.group})))
|
||||
|
||||
@property
|
||||
def clearing_lines(self):
|
||||
clearing_account = self.journal.clearing_account
|
||||
if self.clearing_move:
|
||||
for line in self.clearing_move.lines:
|
||||
if line.account == clearing_account:
|
||||
yield line
|
||||
|
||||
@classmethod
|
||||
def copy(cls, payments, default=None):
|
||||
if default is None:
|
||||
default = {}
|
||||
else:
|
||||
default = default.copy()
|
||||
default.setdefault('clearing_move')
|
||||
return super(Payment, cls).copy(payments, default=default)
|
||||
|
||||
|
||||
class Group(metaclass=PoolMeta):
|
||||
__name__ = 'account.payment.group'
|
||||
|
||||
clearing_reconciled = fields.Function(fields.Boolean(
|
||||
"Clearing Reconciled",
|
||||
help="All payments in the group are reconciled."),
|
||||
'get_reconciled', searcher='search_reconciled')
|
||||
|
||||
@classmethod
|
||||
def get_reconciled(cls, groups, name):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
payment = Payment.__table__()
|
||||
cursor = Transaction().connection.cursor()
|
||||
result = defaultdict()
|
||||
column = Coalesce(payment.clearing_reconciled, False)
|
||||
if backend.name == 'sqlite':
|
||||
column = Min(column)
|
||||
else:
|
||||
column = BoolAnd(column)
|
||||
for sub_groups in grouped_slice(groups):
|
||||
cursor.execute(*payment.select(
|
||||
payment.group, column,
|
||||
where=reduce_ids(payment.group, sub_groups),
|
||||
group_by=payment.group))
|
||||
result.update(cursor)
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def search_reconciled(cls, name, clause):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
payment = Payment.__table__()
|
||||
|
||||
_, operator, value = clause
|
||||
Operator = fields.SQL_OPERATORS[operator]
|
||||
column = Coalesce(payment.clearing_reconciled, False)
|
||||
if backend.name == 'sqlite':
|
||||
column = Min(column)
|
||||
else:
|
||||
column = BoolAnd(column)
|
||||
|
||||
query = payment.select(
|
||||
payment.group,
|
||||
having=Operator(column, value),
|
||||
group_by=payment.group)
|
||||
return [('id', 'in', query)]
|
||||
|
||||
@classmethod
|
||||
def reconcile_clearing(cls, groups):
|
||||
pool = Pool()
|
||||
MoveLine = pool.get('account.move.line')
|
||||
to_reconcile = []
|
||||
for group in groups:
|
||||
clearing_account = group.journal.clearing_account
|
||||
if not clearing_account or not clearing_account.reconcile:
|
||||
continue
|
||||
lines = [l for l in group.clearing_lines if not l.reconciliation]
|
||||
if lines and not sum((l.debit - l.credit) for l in lines):
|
||||
to_reconcile.append(lines)
|
||||
if to_reconcile:
|
||||
MoveLine.reconcile(*to_reconcile)
|
||||
|
||||
@property
|
||||
def clearing_lines(self):
|
||||
for payment in self.payments:
|
||||
yield from payment.clearing_lines
|
||||
|
||||
|
||||
class Succeed(Wizard):
|
||||
"Succeed Payment"
|
||||
__name__ = 'account.payment.succeed'
|
||||
start = StateView('account.payment.succeed.start',
|
||||
'account_payment_clearing.succeed_start_view_form', [
|
||||
Button('Cancel', 'end', 'tryton-cancel'),
|
||||
Button('Succeed', 'succeed', 'tryton-ok', default=True),
|
||||
])
|
||||
succeed = StateTransition()
|
||||
|
||||
def transition_succeed(self):
|
||||
with Transaction().set_context(clearing_date=self.start.date):
|
||||
self.model.succeed(self.records)
|
||||
return 'end'
|
||||
|
||||
|
||||
class SucceedStart(ModelView):
|
||||
"Succeed Payment"
|
||||
__name__ = 'account.payment.succeed.start'
|
||||
date = fields.Date("Date", required=True)
|
||||
|
||||
@classmethod
|
||||
def default_date(cls):
|
||||
pool = Pool()
|
||||
Date = pool.get('ir.date')
|
||||
return Date.today()
|
||||
54
modules/account_payment_clearing/payment.xml
Executable file
54
modules/account_payment_clearing/payment.xml
Executable file
@@ -0,0 +1,54 @@
|
||||
<?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="payment_journal_view_form">
|
||||
<field name="model">account.payment.journal</field>
|
||||
<field name="inherit"
|
||||
ref="account_payment.payment_journal_view_form"/>
|
||||
<field name="name">payment_journal_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="payment_view_form">
|
||||
<field name="model">account.payment</field>
|
||||
<field name="inherit" ref="account_payment.payment_view_form"/>
|
||||
<field name="name">payment_form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="payment_view_list">
|
||||
<field name="model">account.payment</field>
|
||||
<field name="inherit" ref="account_payment.payment_view_list"/>
|
||||
<field name="name">payment_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="payment_group_view_list">
|
||||
<field name="model">account.payment.group</field>
|
||||
<field name="inherit" ref="account_payment.payment_group_view_list"/>
|
||||
<field name="name">payment_group_list</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.action.wizard" id="wizard_succeed">
|
||||
<field name="name">Succeed Payments</field>
|
||||
<field name="wiz_name">account.payment.succeed</field>
|
||||
<field name="model">account.payment</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="succeed_start_view_form">
|
||||
<field name="model">account.payment.succeed.start</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">succeed_start_form</field>
|
||||
</record>
|
||||
<record model="ir.model.button" id="payment_succeed_wizard_button">
|
||||
<field name="model">account.payment</field>
|
||||
<field name="name">succeed_wizard</field>
|
||||
<field name="string">Succeed</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.cron" id="cron_post_clearing_moves">
|
||||
<field name="method">account.payment.journal|cron_post_clearing_moves</field>
|
||||
<field name="interval_number" eval="1"/>
|
||||
<field name="interval_type">days</field>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
||||
245
modules/account_payment_clearing/statement.py
Executable file
245
modules/account_payment_clearing/statement.py
Executable file
@@ -0,0 +1,245 @@
|
||||
# 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 sql import Null
|
||||
from sql.operators import Concat
|
||||
|
||||
from trytond.model import fields
|
||||
from trytond.pool import Pool, PoolMeta
|
||||
from trytond.pyson import Eval, If
|
||||
from trytond.transaction import Transaction
|
||||
|
||||
|
||||
class Payment(metaclass=PoolMeta):
|
||||
__name__ = 'account.payment'
|
||||
|
||||
statement_lines = fields.One2Many(
|
||||
'account.statement.line', 'related_to', "Statement Lines",
|
||||
readonly=True)
|
||||
|
||||
@property
|
||||
def clearing_lines(self):
|
||||
clearing_account = self.journal.clearing_account
|
||||
yield from super().clearing_lines
|
||||
for statement_line in self.statement_lines:
|
||||
if statement_line.move:
|
||||
for line in statement_line.move.lines:
|
||||
if line.account == clearing_account:
|
||||
yield line
|
||||
|
||||
|
||||
class PaymentGroup(metaclass=PoolMeta):
|
||||
__name__ = 'account.payment.group'
|
||||
|
||||
statement_lines = fields.One2Many(
|
||||
'account.statement.line', 'related_to', "Statement Lines",
|
||||
readonly=True)
|
||||
|
||||
@property
|
||||
def clearing_lines(self):
|
||||
clearing_account = self.journal.clearing_account
|
||||
yield from super().clearing_lines
|
||||
for statement_line in self.statement_lines:
|
||||
if statement_line.move:
|
||||
for line in statement_line.move.lines:
|
||||
if line.account == clearing_account:
|
||||
yield line
|
||||
|
||||
|
||||
class Statement(metaclass=PoolMeta):
|
||||
__name__ = 'account.statement'
|
||||
|
||||
@classmethod
|
||||
def _process_payments(cls, moves):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
|
||||
payments = super()._process_payments(moves)
|
||||
|
||||
if payments:
|
||||
Payment.__queue__.reconcile_clearing(payments)
|
||||
return payments
|
||||
|
||||
def _group_key(self, line):
|
||||
key = super(Statement, self)._group_key(line)
|
||||
if hasattr(line, 'payment'):
|
||||
key += (('payment', line.payment),)
|
||||
return key
|
||||
|
||||
|
||||
class StatementLine(metaclass=PoolMeta):
|
||||
__name__ = 'account.statement.line'
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(StatementLine, cls).__setup__()
|
||||
cls.related_to.domain['account.payment'] = [
|
||||
cls.related_to.domain.get('account.payment', []),
|
||||
If(Eval('statement_state') == 'draft',
|
||||
('clearing_reconciled', '!=', True),
|
||||
()),
|
||||
]
|
||||
cls.related_to.domain['account.payment.group'] = [
|
||||
('company', '=', Eval('company', -1)),
|
||||
If(Eval('second_currency'),
|
||||
('currency', '=', Eval('second_currency', -1)),
|
||||
('currency', '=', Eval('currency', -1))),
|
||||
If(Eval('statement_state') == 'draft',
|
||||
('clearing_reconciled', '!=', True),
|
||||
()),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def __register__(cls, module):
|
||||
table = cls.__table__()
|
||||
|
||||
super().__register__(module)
|
||||
|
||||
table_h = cls.__table_handler__(module)
|
||||
cursor = Transaction().connection.cursor()
|
||||
|
||||
# Migration from 6.2: replace payment by related_to
|
||||
if table_h.column_exist('payment'):
|
||||
cursor.execute(*table.update(
|
||||
[table.related_to],
|
||||
[Concat('account.payment,', table.payment)],
|
||||
where=table.payment != Null))
|
||||
table_h.drop_column('payment')
|
||||
|
||||
# Migration from 6.2: replace payment_group by related_to
|
||||
if table_h.column_exist('payment_group'):
|
||||
cursor.execute(*table.update(
|
||||
[table.related_to],
|
||||
[Concat('account.payment.group,', table.payment_group)],
|
||||
where=table.payment_group != Null))
|
||||
table_h.drop_column('payment_group')
|
||||
|
||||
@classmethod
|
||||
def _get_relations(cls):
|
||||
return super()._get_relations() + ['account.payment.group']
|
||||
|
||||
@property
|
||||
@fields.depends('related_to')
|
||||
def payment_group(self):
|
||||
pool = Pool()
|
||||
PaymentGroup = pool.get('account.payment.group')
|
||||
related_to = getattr(self, 'related_to', None)
|
||||
if isinstance(related_to, PaymentGroup) and related_to.id >= 0:
|
||||
return related_to
|
||||
|
||||
@payment_group.setter
|
||||
def payment_group(self, value):
|
||||
self.related_to = value
|
||||
|
||||
@fields.depends(methods=['payment', 'payment_group'])
|
||||
def on_change_related_to(self):
|
||||
super().on_change_related_to()
|
||||
if self.payment:
|
||||
clearing_account = self.payment.journal.clearing_account
|
||||
if clearing_account:
|
||||
self.account = clearing_account
|
||||
if self.payment_group:
|
||||
self.party = None
|
||||
clearing_account = self.payment_group.journal.clearing_account
|
||||
if clearing_account:
|
||||
self.account = clearing_account
|
||||
|
||||
def payments(self):
|
||||
yield from super().payments()
|
||||
if self.payment_group:
|
||||
yield self.payment_group.kind, self.payment_group.payments
|
||||
|
||||
@fields.depends('party', methods=['payment'])
|
||||
def on_change_party(self):
|
||||
super(StatementLine, self).on_change_party()
|
||||
if self.payment:
|
||||
if self.payment.party != self.party:
|
||||
self.payment = None
|
||||
if self.party:
|
||||
self.payment_group = None
|
||||
|
||||
@fields.depends('account', methods=['payment', 'payment_group'])
|
||||
def on_change_account(self):
|
||||
super(StatementLine, self).on_change_account()
|
||||
if self.payment:
|
||||
clearing_account = self.payment.journal.clearing_account
|
||||
elif self.payment_group:
|
||||
clearing_account = self.payment_group.journal.clearing_account
|
||||
else:
|
||||
return
|
||||
if self.account != clearing_account:
|
||||
self.payment = None
|
||||
|
||||
@classmethod
|
||||
def post_move(cls, lines):
|
||||
pool = Pool()
|
||||
Move = pool.get('account.move')
|
||||
super(StatementLine, cls).post_move(lines)
|
||||
Move.post([l.payment.clearing_move for l in lines
|
||||
if l.payment
|
||||
and l.payment.clearing_move
|
||||
and l.payment.clearing_move.state == 'draft'])
|
||||
|
||||
|
||||
class StatementRuleLine(metaclass=PoolMeta):
|
||||
__name__ = 'account.statement.rule.line'
|
||||
|
||||
def _get_related_to(self, origin, keywords, party=None, amount=0):
|
||||
return super()._get_related_to(
|
||||
origin, keywords, party=party, amount=amount) | {
|
||||
self._get_payment(origin, keywords, party=party, amount=amount),
|
||||
self._get_payment_group(origin, keywords),
|
||||
}
|
||||
|
||||
def _get_party_from(self, related_to):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
party = super()._get_party_from(related_to)
|
||||
if isinstance(related_to, Payment):
|
||||
party = related_to.party
|
||||
return party
|
||||
|
||||
def _get_account_from(self, related_to):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
PaymentGroup = pool.get('account.payment.group')
|
||||
account = super()._get_account_from(related_to)
|
||||
if isinstance(related_to, (Payment, PaymentGroup)):
|
||||
account = related_to.journal.clearing_account
|
||||
return account
|
||||
|
||||
def _get_payment(self, origin, keywords, party=None, amount=0):
|
||||
pool = Pool()
|
||||
Payment = pool.get('account.payment')
|
||||
if keywords.get('payment'):
|
||||
domain = [
|
||||
('rec_name', '=', keywords['payment']),
|
||||
('company', '=', origin.company.id),
|
||||
('currency', '=', origin.currency.id),
|
||||
('state', 'in', ['processing', 'succeeded', 'failed']),
|
||||
('clearing_reconciled', '!=', True),
|
||||
]
|
||||
if party:
|
||||
domain.append(('party', '=', party.id))
|
||||
if amount > 0:
|
||||
domain.append(('kind', '=', 'receivable'))
|
||||
elif amount < 0:
|
||||
domain.append(('kind', '=', 'payable'))
|
||||
payments = Payment.search(domain)
|
||||
if len(payments) == 1:
|
||||
payment, = payments
|
||||
return payment
|
||||
|
||||
def _get_payment_group(self, origin, keywords):
|
||||
pool = Pool()
|
||||
PaymentGroup = pool.get('account.payment.group')
|
||||
if keywords.get('payment_group'):
|
||||
groups, = PaymentGroup.search([
|
||||
('rec_name', '=', keywords['payment_group']),
|
||||
('company', '=', origin.company.id),
|
||||
('currency', '=', origin.currency.id),
|
||||
('clearing_reconciled', '!=', True),
|
||||
])
|
||||
if len(groups) == 1:
|
||||
group, = groups
|
||||
return group
|
||||
2
modules/account_payment_clearing/tests/__init__.py
Executable file
2
modules/account_payment_clearing/tests/__init__.py
Executable 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.
BIN
modules/account_payment_clearing/tests/__pycache__/__init__.cpython-311.pyc
Executable file
BIN
modules/account_payment_clearing/tests/__pycache__/__init__.cpython-311.pyc
Executable file
Binary file not shown.
Binary file not shown.
BIN
modules/account_payment_clearing/tests/__pycache__/test_module.cpython-311.pyc
Executable file
BIN
modules/account_payment_clearing/tests/__pycache__/test_module.cpython-311.pyc
Executable file
Binary file not shown.
Binary file not shown.
BIN
modules/account_payment_clearing/tests/__pycache__/test_scenario.cpython-311.pyc
Executable file
BIN
modules/account_payment_clearing/tests/__pycache__/test_scenario.cpython-311.pyc
Executable file
Binary file not shown.
@@ -0,0 +1,114 @@
|
||||
==================================
|
||||
Negative Payment Clearing Scenario
|
||||
==================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import datetime as dt
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.modules.account.tests.tools import (
|
||||
... create_chart, create_fiscalyear, get_accounts)
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
>>> today = dt.date.today()
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules(['account_payment_clearing'])
|
||||
|
||||
Create company::
|
||||
|
||||
>>> _ = create_company()
|
||||
>>> company = get_company()
|
||||
|
||||
Create fiscal year::
|
||||
|
||||
>>> fiscalyear = create_fiscalyear(company)
|
||||
>>> fiscalyear.click('create_period')
|
||||
|
||||
Create chart of accounts::
|
||||
|
||||
>>> _ = create_chart(company)
|
||||
>>> accounts = get_accounts(company)
|
||||
>>> receivable = accounts['receivable']
|
||||
>>> payable = accounts['payable']
|
||||
>>> cash = accounts['cash']
|
||||
>>> expense = accounts['expense']
|
||||
|
||||
>>> Account = Model.get('account.account')
|
||||
>>> bank_clearing = Account(parent=payable.parent)
|
||||
>>> bank_clearing.name = 'Bank Clearing'
|
||||
>>> bank_clearing.type = payable.type
|
||||
>>> bank_clearing.reconcile = True
|
||||
>>> bank_clearing.deferral = True
|
||||
>>> bank_clearing.save()
|
||||
|
||||
>>> Journal = Model.get('account.journal')
|
||||
>>> expense_journal, = Journal.find([('code', '=', 'EXP')])
|
||||
|
||||
Create payment journal::
|
||||
|
||||
>>> PaymentJournal = Model.get('account.payment.journal')
|
||||
>>> payment_journal = PaymentJournal(name='Manual',
|
||||
... process_method='manual', clearing_journal=expense_journal,
|
||||
... clearing_account=bank_clearing)
|
||||
>>> payment_journal.save()
|
||||
|
||||
Create parties::
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> supplier = Party(name='Supplier')
|
||||
>>> supplier.save()
|
||||
|
||||
Create payable move::
|
||||
|
||||
>>> Move = Model.get('account.move')
|
||||
>>> move = Move()
|
||||
>>> move.journal = expense_journal
|
||||
>>> line = move.lines.new(
|
||||
... account=payable, party=supplier, maturity_date=today,
|
||||
... debit=Decimal('-50.00'))
|
||||
>>> line = move.lines.new(account=expense, credit=Decimal('-50.00'))
|
||||
>>> move.click('post')
|
||||
>>> payable.reload()
|
||||
>>> payable.balance
|
||||
Decimal('-50.00')
|
||||
|
||||
Pay the line::
|
||||
|
||||
>>> Payment = Model.get('account.payment')
|
||||
>>> line, = [l for l in move.lines if l.account == payable]
|
||||
>>> pay_line = Wizard('account.move.line.pay', [line])
|
||||
>>> pay_line.execute('next_')
|
||||
>>> pay_line.form.journal = payment_journal
|
||||
>>> pay_line.execute('next_')
|
||||
>>> payment, = Payment.find([('state', '=', 'draft')])
|
||||
>>> payment.amount
|
||||
Decimal('50.00')
|
||||
>>> payment.click('submit')
|
||||
>>> payment.click('approve')
|
||||
>>> payment.state
|
||||
'approved'
|
||||
>>> process_payment = payment.click('process_wizard')
|
||||
>>> payment.state
|
||||
'processing'
|
||||
|
||||
Succeed payment::
|
||||
|
||||
>>> succeed = payment.click('succeed_wizard')
|
||||
>>> succeed.execute('succeed')
|
||||
>>> payment.state
|
||||
'succeeded'
|
||||
>>> payment.clearing_move.state
|
||||
'draft'
|
||||
>>> payable.reload()
|
||||
>>> payable.balance
|
||||
Decimal('0.00')
|
||||
>>> bank_clearing.reload()
|
||||
>>> bank_clearing.balance
|
||||
Decimal('-50.00')
|
||||
>>> bool(payment.line.reconciliation)
|
||||
True
|
||||
475
modules/account_payment_clearing/tests/scenario_account_payment_clearing.rst
Executable file
475
modules/account_payment_clearing/tests/scenario_account_payment_clearing.rst
Executable file
@@ -0,0 +1,475 @@
|
||||
=========================
|
||||
Payment Clearing Scenario
|
||||
=========================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> import datetime as dt
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.modules.account.tests.tools import (
|
||||
... create_chart, create_fiscalyear, get_accounts)
|
||||
>>> from trytond.modules.account_invoice.tests.tools import (
|
||||
... set_fiscalyear_invoice_sequences)
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.modules.currency.tests.tools import get_currency
|
||||
>>> from trytond.tests.tools import activate_modules, assertEqual
|
||||
|
||||
>>> today = dt.date.today()
|
||||
>>> yesterday = today - dt.timedelta(days=1)
|
||||
>>> first = today + dt.timedelta(days=1)
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules(['account_payment_clearing', 'account_statement'])
|
||||
|
||||
Create company::
|
||||
|
||||
>>> _ = create_company()
|
||||
>>> company = get_company()
|
||||
|
||||
Create fiscal year::
|
||||
|
||||
>>> fiscalyear = set_fiscalyear_invoice_sequences(
|
||||
... create_fiscalyear(company, (yesterday, first)))
|
||||
>>> fiscalyear.click('create_period')
|
||||
|
||||
Create chart of accounts::
|
||||
|
||||
>>> _ = create_chart(company)
|
||||
>>> accounts = get_accounts(company)
|
||||
>>> receivable = accounts['receivable']
|
||||
>>> revenue = accounts['revenue']
|
||||
>>> expense = accounts['expense']
|
||||
>>> payable = accounts['payable']
|
||||
>>> cash = accounts['cash']
|
||||
|
||||
>>> Account = Model.get('account.account')
|
||||
>>> bank_clearing = Account(parent=payable.parent)
|
||||
>>> bank_clearing.name = 'Bank Clearing'
|
||||
>>> bank_clearing.type = payable.type
|
||||
>>> bank_clearing.reconcile = True
|
||||
>>> bank_clearing.deferral = True
|
||||
>>> bank_clearing.save()
|
||||
|
||||
>>> Journal = Model.get('account.journal')
|
||||
>>> expense_journal, = Journal.find([('code', '=', 'EXP')])
|
||||
>>> revenue_journal, = Journal.find([('code', '=', 'REV')])
|
||||
|
||||
Create payment journal::
|
||||
|
||||
>>> PaymentJournal = Model.get('account.payment.journal')
|
||||
>>> payment_journal = PaymentJournal(name='Manual',
|
||||
... process_method='manual', clearing_journal=expense,
|
||||
... clearing_account=bank_clearing,
|
||||
... clearing_posting_delay=dt.timedelta(1))
|
||||
>>> payment_journal.save()
|
||||
|
||||
Create parties::
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> supplier = Party(name='Supplier')
|
||||
>>> supplier.save()
|
||||
>>> customer = Party(name='Customer')
|
||||
>>> customer.save()
|
||||
|
||||
Create payable move::
|
||||
|
||||
>>> Move = Model.get('account.move')
|
||||
>>> move = Move()
|
||||
>>> move.journal = expense_journal
|
||||
>>> line = move.lines.new(
|
||||
... account=payable, party=supplier, maturity_date=today,
|
||||
... credit=Decimal('50.00'))
|
||||
>>> line = move.lines.new(account=expense, debit=Decimal('50.00'))
|
||||
>>> move.click('post')
|
||||
>>> payable.reload()
|
||||
>>> payable.balance
|
||||
Decimal('-50.00')
|
||||
|
||||
Partially pay the line::
|
||||
|
||||
>>> Payment = Model.get('account.payment')
|
||||
>>> line, = [l for l in move.lines if l.account == payable]
|
||||
>>> pay_line = Wizard('account.move.line.pay', [line])
|
||||
>>> pay_line.execute('next_')
|
||||
>>> pay_line.form.journal = payment_journal
|
||||
>>> pay_line.execute('next_')
|
||||
>>> payment, = Payment.find()
|
||||
>>> payment.amount = Decimal('30.0')
|
||||
>>> payment.click('submit')
|
||||
>>> payment.click('approve')
|
||||
>>> payment.state
|
||||
'approved'
|
||||
>>> process_payment = payment.click('process_wizard')
|
||||
>>> payment.state
|
||||
'processing'
|
||||
|
||||
Succeed payment::
|
||||
|
||||
>>> succeed = payment.click('succeed_wizard')
|
||||
>>> succeed.form.date = first
|
||||
>>> succeed.execute('succeed')
|
||||
>>> payment.state
|
||||
'succeeded'
|
||||
>>> assertEqual(payment.clearing_move.date, first)
|
||||
>>> payment.clearing_move.state
|
||||
'draft'
|
||||
>>> bool(payment.clearing_reconciled)
|
||||
False
|
||||
>>> payable.reload()
|
||||
>>> payable.balance
|
||||
Decimal('-20.00')
|
||||
>>> bank_clearing.reload()
|
||||
>>> bank_clearing.balance
|
||||
Decimal('-30.00')
|
||||
>>> payment.line.reconciliation
|
||||
|
||||
Fail payment::
|
||||
|
||||
>>> payment.click('fail')
|
||||
>>> payment.state
|
||||
'failed'
|
||||
>>> payment.clearing_move
|
||||
>>> bool(payment.clearing_reconciled)
|
||||
False
|
||||
>>> payment.line.reconciliation
|
||||
>>> payable.reload()
|
||||
>>> payable.balance
|
||||
Decimal('-50.00')
|
||||
>>> bank_clearing.reload()
|
||||
>>> bank_clearing.balance
|
||||
Decimal('0.00')
|
||||
|
||||
Pay the line::
|
||||
|
||||
>>> line, = [l for l in move.lines if l.account == payable]
|
||||
>>> pay_line = Wizard('account.move.line.pay', [line])
|
||||
>>> pay_line.execute('next_')
|
||||
>>> pay_line.form.journal = payment_journal
|
||||
>>> pay_line.execute('next_')
|
||||
>>> payment, = Payment.find([('state', '=', 'draft')])
|
||||
>>> payment.amount
|
||||
Decimal('50.00')
|
||||
>>> payment.click('submit')
|
||||
>>> payment.click('approve')
|
||||
>>> payment.state
|
||||
'approved'
|
||||
>>> process_payment = payment.click('process_wizard')
|
||||
>>> payment.state
|
||||
'processing'
|
||||
|
||||
Succeed payment::
|
||||
|
||||
>>> succeed = payment.click('succeed_wizard')
|
||||
>>> succeed.execute('succeed')
|
||||
>>> payment.state
|
||||
'succeeded'
|
||||
>>> payment.clearing_move.state
|
||||
'draft'
|
||||
>>> payable.reload()
|
||||
>>> payable.balance
|
||||
Decimal('0.00')
|
||||
>>> bank_clearing.reload()
|
||||
>>> bank_clearing.balance
|
||||
Decimal('-50.00')
|
||||
>>> bool(payment.line.reconciliation)
|
||||
True
|
||||
|
||||
Fail payment::
|
||||
|
||||
>>> payment.click('fail')
|
||||
>>> payment.state
|
||||
'failed'
|
||||
>>> payment.clearing_move
|
||||
>>> payment.line.reconciliation
|
||||
|
||||
Succeed payment and post clearing::
|
||||
|
||||
>>> succeed = payment.click('succeed_wizard')
|
||||
>>> succeed.form.date = yesterday
|
||||
>>> succeed.execute('succeed')
|
||||
>>> payment.state
|
||||
'succeeded'
|
||||
|
||||
>>> Cron = Model.get('ir.cron')
|
||||
>>> Company = Model.get('company.company')
|
||||
>>> cron_post_clearing_moves, = Cron.find([
|
||||
... ('method', '=',
|
||||
... 'account.payment.journal|cron_post_clearing_moves'),
|
||||
... ])
|
||||
>>> cron_post_clearing_moves.companies.append(Company(company.id))
|
||||
>>> cron_post_clearing_moves.click('run_once')
|
||||
|
||||
>>> payment.reload()
|
||||
>>> clearing_move = payment.clearing_move
|
||||
>>> clearing_move.state
|
||||
'posted'
|
||||
|
||||
Fail payment with posted clearing::
|
||||
|
||||
>>> payment.click('fail')
|
||||
>>> payment.state
|
||||
'failed'
|
||||
>>> payment.clearing_move
|
||||
>>> bool(payment.clearing_reconciled)
|
||||
False
|
||||
>>> payment.line.reconciliation
|
||||
>>> clearing_move.reload()
|
||||
>>> line, = [l for l in clearing_move.lines
|
||||
... if l.account == payment.line.account]
|
||||
>>> bool(line.reconciliation)
|
||||
True
|
||||
|
||||
Succeed payment to use on statement::
|
||||
|
||||
>>> succeed = payment.click('succeed_wizard')
|
||||
>>> succeed.execute('succeed')
|
||||
>>> payment.state
|
||||
'succeeded'
|
||||
|
||||
Create statement::
|
||||
|
||||
>>> StatementJournal = Model.get('account.statement.journal')
|
||||
>>> Statement = Model.get('account.statement')
|
||||
|
||||
>>> account_journal, = Journal.find([('code', '=', 'STA')], limit=1)
|
||||
>>> statement_journal = StatementJournal(name='Test',
|
||||
... journal=account_journal,
|
||||
... account=cash,
|
||||
... )
|
||||
>>> statement_journal.save()
|
||||
|
||||
>>> statement = Statement(name='test',
|
||||
... journal=statement_journal,
|
||||
... start_balance=Decimal('0.00'),
|
||||
... end_balance=Decimal('-50.00'),
|
||||
... )
|
||||
|
||||
Create a line for the payment::
|
||||
|
||||
>>> line = statement.lines.new(date=today)
|
||||
>>> line.amount = Decimal('-50.00')
|
||||
>>> line.related_to = payment
|
||||
>>> assertEqual(line.party, supplier)
|
||||
>>> assertEqual(line.account, bank_clearing)
|
||||
|
||||
Remove the party must remove payment::
|
||||
|
||||
>>> line.party = None
|
||||
>>> line.related_to
|
||||
|
||||
>>> line.related_to = payment
|
||||
|
||||
Change account must remove payment::
|
||||
|
||||
>>> line.account = receivable
|
||||
>>> line.related_to
|
||||
|
||||
>>> line.account = None
|
||||
>>> line.related_to = payment
|
||||
|
||||
Validate statement::
|
||||
|
||||
>>> statement.click('validate_statement')
|
||||
>>> statement.state
|
||||
'validated'
|
||||
>>> line, = statement.lines
|
||||
>>> move_line, = [l for l in line.move.lines
|
||||
... if l.account == bank_clearing]
|
||||
>>> bool(move_line.reconciliation)
|
||||
True
|
||||
>>> bank_clearing.reload()
|
||||
>>> bank_clearing.balance
|
||||
Decimal('0.00')
|
||||
>>> payment.reload()
|
||||
>>> bool(payment.clearing_reconciled)
|
||||
True
|
||||
>>> bool(payment.group.clearing_reconciled)
|
||||
True
|
||||
|
||||
Unreconcile payment clearing to allow reimbursement::
|
||||
|
||||
>>> move_line.reconciliation.delete()
|
||||
>>> payment.reload()
|
||||
>>> bool(payment.clearing_reconciled)
|
||||
False
|
||||
>>> bool(payment.group.clearing_reconciled)
|
||||
False
|
||||
|
||||
Create a statement that reimburse the payment group::
|
||||
|
||||
>>> statement = Statement(name='test',
|
||||
... journal=statement_journal,
|
||||
... start_balance=Decimal('-50.00'),
|
||||
... end_balance=Decimal('0.00'),
|
||||
... )
|
||||
>>> line = statement.lines.new(date=today)
|
||||
>>> line.related_to = payment.group
|
||||
>>> assertEqual(line.account, bank_clearing)
|
||||
>>> line.amount = Decimal('50.00')
|
||||
|
||||
>>> statement.click('validate_statement')
|
||||
>>> statement.state
|
||||
'validated'
|
||||
|
||||
Payment must be failed::
|
||||
|
||||
>>> payment.reload()
|
||||
>>> payment.state
|
||||
'failed'
|
||||
|
||||
|
||||
Payment in a foreign currency
|
||||
-----------------------------
|
||||
|
||||
Create a payment journal in Euro::
|
||||
|
||||
>>> euro = get_currency('EUR')
|
||||
>>> euro_payment_journal = PaymentJournal(
|
||||
... name='Euro Payments', process_method='manual', currency=euro,
|
||||
... clearing_journal=expense_journal, clearing_account=bank_clearing)
|
||||
>>> euro_payment_journal.save()
|
||||
|
||||
Create a payable move::
|
||||
|
||||
>>> move = Move()
|
||||
>>> move.journal = expense_journal
|
||||
>>> line = move.lines.new(
|
||||
... account=payable, party=supplier, maturity_date=today,
|
||||
... credit=Decimal('20.00'),
|
||||
... amount_second_currency=Decimal('-40.00'), second_currency=euro)
|
||||
>>> line = move.lines.new(
|
||||
... account=expense, debit=Decimal('20.00'),
|
||||
... amount_second_currency=Decimal('40.00'), second_currency=euro)
|
||||
>>> move.click('post')
|
||||
|
||||
Pay the line::
|
||||
|
||||
>>> line, = [l for l in move.lines if l.account == payable]
|
||||
>>> pay_line = Wizard('account.move.line.pay', [line])
|
||||
>>> pay_line.execute('next_')
|
||||
>>> pay_line.form.journal = euro_payment_journal
|
||||
>>> pay_line.execute('next_')
|
||||
>>> payment, = Payment.find([('state', '=', 'draft')])
|
||||
>>> payment.amount
|
||||
Decimal('40.00')
|
||||
>>> payment.click('submit')
|
||||
>>> payment.click('approve')
|
||||
>>> process_payment = payment.click('process_wizard')
|
||||
>>> payment.state
|
||||
'processing'
|
||||
|
||||
Succeed payment::
|
||||
|
||||
>>> succeed = payment.click('succeed_wizard')
|
||||
>>> succeed.execute('succeed')
|
||||
>>> debit_line, = [l for l in payment.clearing_move.lines if l.debit > 0]
|
||||
>>> debit_line.debit
|
||||
Decimal('20.00')
|
||||
>>> debit_line.amount_second_currency
|
||||
Decimal('40.00')
|
||||
|
||||
Create receivable move::
|
||||
|
||||
>>> move = Move()
|
||||
>>> move.journal = revenue_journal
|
||||
>>> line = move.lines.new(
|
||||
... account=receivable, party=customer, maturity_date=today,
|
||||
... debit=Decimal('50.00'), second_currency=euro,
|
||||
... amount_second_currency=Decimal('100.0'))
|
||||
>>> line = move.lines.new(account=revenue, credit=Decimal('50.00'))
|
||||
>>> move.click('post')
|
||||
>>> receivable.reload()
|
||||
>>> receivable.balance
|
||||
Decimal('50.00')
|
||||
|
||||
Pay the line::
|
||||
|
||||
>>> Payment = Model.get('account.payment')
|
||||
>>> line, = [l for l in move.lines if l.account == receivable]
|
||||
>>> pay_line = Wizard('account.move.line.pay', [line])
|
||||
>>> pay_line.execute('next_')
|
||||
>>> pay_line.form.journal = euro_payment_journal
|
||||
>>> pay_line.execute('next_')
|
||||
>>> payment, = Payment.find([('state', '=', 'draft')])
|
||||
>>> payment.amount
|
||||
Decimal('100.0')
|
||||
>>> payment.click('submit')
|
||||
>>> process_payment = payment.click('process_wizard')
|
||||
>>> payment.state
|
||||
'processing'
|
||||
|
||||
Succeed payment::
|
||||
|
||||
>>> succeed = payment.click('succeed_wizard')
|
||||
>>> succeed.execute('succeed')
|
||||
>>> credit_line, = [l for l in payment.clearing_move.lines if l.credit > 0]
|
||||
>>> credit_line.credit
|
||||
Decimal('50.00')
|
||||
>>> credit_line.amount_second_currency
|
||||
Decimal('-100.0')
|
||||
|
||||
Validate Statement with processing payment
|
||||
--------------------------------------------
|
||||
|
||||
Create a payable move::
|
||||
|
||||
>>> move = Move()
|
||||
>>> move.journal = expense_journal
|
||||
>>> line = move.lines.new(
|
||||
... account=payable, party=supplier, maturity_date=today,
|
||||
... credit=Decimal('50.00'))
|
||||
>>> line = move.lines.new(account=expense, debit=Decimal('50.00'))
|
||||
>>> move.click('post')
|
||||
|
||||
Create a processing payment for the move::
|
||||
|
||||
>>> Payment = Model.get('account.payment')
|
||||
>>> line, = [l for l in move.lines if l.account == payable]
|
||||
>>> pay_line = Wizard('account.move.line.pay', [line])
|
||||
>>> pay_line.execute('next_')
|
||||
>>> pay_line.form.journal = payment_journal
|
||||
>>> pay_line.execute('next_')
|
||||
>>> payment, = Payment.find([('line', '=', line.id)])
|
||||
>>> payment.click('submit')
|
||||
>>> payment.click('approve')
|
||||
>>> payment.state
|
||||
'approved'
|
||||
>>> process_payment = payment.click('process_wizard')
|
||||
>>> payment.state
|
||||
'processing'
|
||||
|
||||
Create statement for the payment::
|
||||
|
||||
>>> statement = Statement(name='test',
|
||||
... journal=statement_journal,
|
||||
... start_balance=Decimal('0.00'),
|
||||
... end_balance=Decimal('-50.00'))
|
||||
>>> line = statement.lines.new(date=yesterday)
|
||||
>>> line.amount = Decimal('-50.00')
|
||||
>>> line.related_to = payment
|
||||
>>> assertEqual(line.party, supplier)
|
||||
>>> assertEqual(line.account, bank_clearing)
|
||||
>>> statement.save()
|
||||
|
||||
Validate statement and check the payment is confirmed::
|
||||
|
||||
>>> statement.click('validate_statement')
|
||||
>>> statement.state
|
||||
'validated'
|
||||
>>> line, = statement.lines
|
||||
>>> move_line, = [l for l in line.move.lines
|
||||
... if l.account == bank_clearing]
|
||||
>>> bool(move_line.reconciliation)
|
||||
True
|
||||
>>> payment.reload()
|
||||
>>> payment.state
|
||||
'succeeded'
|
||||
>>> bool(payment.clearing_reconciled)
|
||||
True
|
||||
>>> debit_line, = [l for l in payment.clearing_move.lines if l.debit > 0]
|
||||
>>> debit_line.debit
|
||||
Decimal('50.00')
|
||||
>>> assertEqual(debit_line.date, yesterday)
|
||||
@@ -0,0 +1,167 @@
|
||||
======================================
|
||||
Payment Clearing Invoice Amount to Pay
|
||||
======================================
|
||||
|
||||
Imports::
|
||||
|
||||
>>> from decimal import Decimal
|
||||
|
||||
>>> from proteus import Model, Wizard
|
||||
>>> from trytond.modules.account.tests.tools import (
|
||||
... create_chart, create_fiscalyear, get_accounts)
|
||||
>>> from trytond.modules.account_invoice.tests.tools import (
|
||||
... set_fiscalyear_invoice_sequences)
|
||||
>>> from trytond.modules.company.tests.tools import create_company, get_company
|
||||
>>> from trytond.tests.tools import activate_modules
|
||||
|
||||
Activate modules::
|
||||
|
||||
>>> config = activate_modules(
|
||||
... ['account_payment_clearing', 'account_invoice'])
|
||||
|
||||
Create company::
|
||||
|
||||
>>> _ = create_company()
|
||||
>>> company = get_company()
|
||||
|
||||
Create fiscal year::
|
||||
|
||||
>>> fiscalyear = set_fiscalyear_invoice_sequences(
|
||||
... create_fiscalyear(company))
|
||||
>>> fiscalyear.click('create_period')
|
||||
|
||||
Create chart of accounts::
|
||||
|
||||
>>> _ = create_chart(company)
|
||||
>>> accounts = get_accounts(company)
|
||||
>>> receivable = accounts['receivable']
|
||||
>>> revenue = accounts['revenue']
|
||||
>>> expense = accounts['expense']
|
||||
>>> payable = accounts['payable']
|
||||
>>> cash = accounts['cash']
|
||||
|
||||
>>> Account = Model.get('account.account')
|
||||
>>> bank_clearing = Account(parent=payable.parent)
|
||||
>>> bank_clearing.name = 'Bank Clearing'
|
||||
>>> bank_clearing.type = payable.type
|
||||
>>> bank_clearing.reconcile = True
|
||||
>>> bank_clearing.deferral = True
|
||||
>>> bank_clearing.save()
|
||||
|
||||
>>> Journal = Model.get('account.journal')
|
||||
>>> expense_journal, = Journal.find([('code', '=', 'EXP')])
|
||||
>>> revenue_journal, = Journal.find([('code', '=', 'REV')])
|
||||
|
||||
Create payment journal::
|
||||
|
||||
>>> PaymentJournal = Model.get('account.payment.journal')
|
||||
>>> payment_journal = PaymentJournal(name='No Clearing',
|
||||
... process_method='manual')
|
||||
>>> payment_journal.save()
|
||||
>>> clearing_journal = PaymentJournal(name='Clearing',
|
||||
... process_method='manual', clearing_journal=expense,
|
||||
... clearing_account=bank_clearing)
|
||||
>>> clearing_journal.save()
|
||||
|
||||
Create parties::
|
||||
|
||||
>>> Party = Model.get('party.party')
|
||||
>>> supplier = Party(name='Supplier')
|
||||
>>> supplier.save()
|
||||
>>> customer = Party(name='Customer')
|
||||
>>> customer.save()
|
||||
|
||||
Create and pay an invoice without clearing::
|
||||
|
||||
>>> Invoice = Model.get('account.invoice')
|
||||
>>> invoice = Invoice()
|
||||
>>> invoice.party = customer
|
||||
>>> line = invoice.lines.new()
|
||||
>>> line.account = revenue
|
||||
>>> line.quantity = 1
|
||||
>>> line.unit_price = Decimal('100')
|
||||
>>> invoice.save()
|
||||
>>> invoice.click('post')
|
||||
>>> invoice.amount_to_pay
|
||||
Decimal('100.00')
|
||||
|
||||
>>> paid_line, = [l for l in invoice.move.lines if l.account == receivable]
|
||||
>>> pay_line = Wizard('account.move.line.pay', [paid_line])
|
||||
>>> pay_line.execute('next_')
|
||||
>>> pay_line.form.journal = payment_journal
|
||||
>>> pay_line.execute('next_')
|
||||
|
||||
>>> Payment = Model.get('account.payment')
|
||||
>>> payment, = Payment.find()
|
||||
>>> payment.click('submit')
|
||||
>>> payment.state
|
||||
'submitted'
|
||||
>>> process_payment = payment.click('process_wizard')
|
||||
>>> succeed = payment.click('succeed_wizard')
|
||||
>>> succeed.execute('succeed')
|
||||
|
||||
>>> invoice.reload()
|
||||
>>> invoice.amount_to_pay
|
||||
Decimal('0.00')
|
||||
|
||||
Create an invoice and pay it::
|
||||
|
||||
>>> invoice1 = Invoice()
|
||||
>>> invoice1.party = customer
|
||||
>>> line = invoice1.lines.new()
|
||||
>>> line.account = revenue
|
||||
>>> line.quantity = 1
|
||||
>>> line.unit_price = Decimal('100')
|
||||
>>> invoice1.save()
|
||||
>>> invoice1.click('post')
|
||||
>>> invoice1.amount_to_pay
|
||||
Decimal('100.00')
|
||||
|
||||
>>> paid_line, = [l for l in invoice1.move.lines if l.account == receivable]
|
||||
>>> pay_line = Wizard('account.move.line.pay', [paid_line])
|
||||
>>> pay_line.execute('next_')
|
||||
>>> pay_line.form.journal = clearing_journal
|
||||
>>> pay_line.execute('next_')
|
||||
|
||||
>>> payment, = Payment.find([('state', '=', 'draft')])
|
||||
>>> payment.click('submit')
|
||||
>>> payment.state
|
||||
'submitted'
|
||||
>>> process_payment = payment.click('process_wizard')
|
||||
>>> succeed = payment.click('succeed_wizard')
|
||||
>>> succeed.execute('succeed')
|
||||
|
||||
>>> invoice1.reload()
|
||||
>>> invoice1.amount_to_pay
|
||||
Decimal('0')
|
||||
|
||||
Unreconcile the payment line and check the amount to pay::
|
||||
|
||||
>>> other_line, = [l for l in paid_line.reconciliation.lines
|
||||
... if l != paid_line]
|
||||
>>> unreconcile = Wizard('account.move.unreconcile_lines', [paid_line])
|
||||
>>> invoice1.reload()
|
||||
>>> invoice1.amount_to_pay
|
||||
Decimal('0.00')
|
||||
|
||||
Create a second invoice and reconcile its line to pay with the payment::
|
||||
|
||||
>>> invoice2 = Invoice()
|
||||
>>> invoice2.party = customer
|
||||
>>> line = invoice2.lines.new()
|
||||
>>> line.account = revenue
|
||||
>>> line.quantity = 1
|
||||
>>> line.unit_price = Decimal('100')
|
||||
>>> invoice2.save()
|
||||
>>> invoice2.click('post')
|
||||
|
||||
>>> inv2_line, = [l for l in invoice2.move.lines if l.account == receivable]
|
||||
>>> reconcile = Wizard(
|
||||
... 'account.move.reconcile_lines', [inv2_line, other_line])
|
||||
|
||||
>>> invoice1.reload()
|
||||
>>> invoice1.amount_to_pay
|
||||
Decimal('100.00')
|
||||
>>> invoice2.reload()
|
||||
>>> invoice2.amount_to_pay
|
||||
Decimal('0')
|
||||
13
modules/account_payment_clearing/tests/test_module.py
Executable file
13
modules/account_payment_clearing/tests/test_module.py
Executable file
@@ -0,0 +1,13 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
|
||||
from trytond.tests.test_tryton import ModuleTestCase
|
||||
|
||||
|
||||
class AccountPaymentTestCase(ModuleTestCase):
|
||||
'Test Account Payment module'
|
||||
module = 'account_payment_clearing'
|
||||
extras = ['account_statement', 'account_statement_rule']
|
||||
|
||||
|
||||
del ModuleTestCase
|
||||
8
modules/account_payment_clearing/tests/test_scenario.py
Executable file
8
modules/account_payment_clearing/tests/test_scenario.py
Executable 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)
|
||||
11
modules/account_payment_clearing/tryton.cfg
Executable file
11
modules/account_payment_clearing/tryton.cfg
Executable file
@@ -0,0 +1,11 @@
|
||||
[tryton]
|
||||
version=7.2.0
|
||||
depends:
|
||||
account
|
||||
account_payment
|
||||
ir
|
||||
extras_depend:
|
||||
account_statement
|
||||
account_statement_rule
|
||||
xml:
|
||||
payment.xml
|
||||
18
modules/account_payment_clearing/view/payment_form.xml
Executable file
18
modules/account_payment_clearing/view/payment_form.xml
Executable file
@@ -0,0 +1,18 @@
|
||||
<?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/field[@name='line']" position="after">
|
||||
<label name="account"/>
|
||||
<field name="account"/>
|
||||
<newline/>
|
||||
</xpath>
|
||||
<xpath expr="/form/notebook/page[@id='info']/field[@name='group']"
|
||||
position="after">
|
||||
<label name="clearing_move"/>
|
||||
<field name="clearing_move"/>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='succeed']" position="replace_attributes">
|
||||
<button name="succeed_wizard"/>
|
||||
</xpath>
|
||||
</data>
|
||||
8
modules/account_payment_clearing/view/payment_group_list.xml
Executable file
8
modules/account_payment_clearing/view/payment_group_list.xml
Executable 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='payment_complete']" position="after">
|
||||
<field name="clearing_reconciled"/>
|
||||
</xpath>
|
||||
</data>
|
||||
14
modules/account_payment_clearing/view/payment_journal_form.xml
Executable file
14
modules/account_payment_clearing/view/payment_journal_form.xml
Executable file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
this repository contains the full copyright notices and license terms. -->
|
||||
<data>
|
||||
<xpath expr="/form/field[@name='process_method']" position="after">
|
||||
<separator id="clearing" string="Clearing" colspan="4"/>
|
||||
<label name="clearing_account"/>
|
||||
<field name="clearing_account"/>
|
||||
<label name="clearing_journal"/>
|
||||
<field name="clearing_journal" widget="selection"/>
|
||||
<label name="clearing_posting_delay"/>
|
||||
<field name="clearing_posting_delay"/>
|
||||
</xpath>
|
||||
</data>
|
||||
8
modules/account_payment_clearing/view/payment_list.xml
Executable file
8
modules/account_payment_clearing/view/payment_list.xml
Executable 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='state']" position="after">
|
||||
<field name="clearing_reconciled"/>
|
||||
</xpath>
|
||||
</data>
|
||||
7
modules/account_payment_clearing/view/succeed_start_form.xml
Executable file
7
modules/account_payment_clearing/view/succeed_start_form.xml
Executable file
@@ -0,0 +1,7 @@
|
||||
<?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="date"/>
|
||||
<field name="date"/>
|
||||
</form>
|
||||
Reference in New Issue
Block a user