Merge PR #630 into 17.0

Signed-off-by etobella
This commit is contained in:
OCA-git-bot
2024-04-26 08:20:35 +00:00
75 changed files with 13461 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
===========================
Account Reconcile Model Oca
===========================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:62683a913039d5afe96202b49fdd537d57edf8ac49edc89bf9c9e4512971888f
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--reconcile-lightgray.png?logo=github
:target: https://github.com/OCA/account-reconcile/tree/17.0/account_reconcile_model_oca
:alt: OCA/account-reconcile
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-reconcile-17-0/account-reconcile-17-0-account_reconcile_model_oca
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/account-reconcile&target_branch=17.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module restores account reconciliation models functions moved from
Odoo community to enterpise in V. 17.0
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-reconcile/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/account-reconcile/issues/new?body=module:%20account_reconcile_model_oca%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
-------
* Dixmit
* Odoo
Contributors
------------
- Dixmit
- Enric Tobella
Maintainers
-----------
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/account-reconcile <https://github.com/OCA/account-reconcile/tree/17.0/account_reconcile_model_oca>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

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

View File

@@ -0,0 +1,15 @@
# Copyright 2024 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Account Reconcile Model Oca",
"summary": """
This includes the logic moved from Odoo Community to Odoo Enterprise""",
"version": "17.0.1.0.0",
"license": "LGPL-3",
"author": "Dixmit,Odoo,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-reconcile",
"depends": ["account"],
"data": [],
"demo": [],
}

View File

@@ -0,0 +1,2 @@
from . import account_reconcile_model
from . import account_bank_statement_line

View File

@@ -0,0 +1,128 @@
# Copyright 2023 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models
from odoo.osv.expression import get_unaccent_wrapper
from odoo.tools import html2plaintext
from odoo.addons.base.models.res_bank import sanitize_account_number
class AccountBankStatementLine(models.Model):
_inherit = ("account.bank.statement.line",)
def _retrieve_partner(self):
self.ensure_one()
# Retrieve the partner from the statement line.
if self.partner_id:
return self.partner_id
# Retrieve the partner from the bank account.
if self.account_number:
account_number_nums = sanitize_account_number(self.account_number)
if account_number_nums:
domain = [("sanitized_acc_number", "ilike", account_number_nums)]
for extra_domain in ([("company_id", "=", self.company_id.id)], []):
bank_accounts = self.env["res.partner.bank"].search(
extra_domain + domain
)
if len(bank_accounts.partner_id) == 1:
return bank_accounts.partner_id
# Retrieve the partner from the partner name.
if self.partner_name:
domain = [
("parent_id", "=", False),
("name", "ilike", self.partner_name),
]
for extra_domain in ([("company_id", "=", self.company_id.id)], []):
partner = self.env["res.partner"].search(extra_domain + domain, limit=1)
if partner:
return partner
# Retrieve the partner from the 'reconcile models'.
rec_models = self.env["account.reconcile.model"].search(
[
("rule_type", "!=", "writeoff_button"),
("company_id", "=", self.company_id.id),
]
)
for rec_model in rec_models:
partner = rec_model._get_partner_from_mapping(self)
if partner and rec_model._is_applicable_for(self, partner):
return partner
# Retrieve the partner from statement line text values.
st_line_text_values = self._get_st_line_strings_for_matching()
unaccent = get_unaccent_wrapper(self._cr)
sub_queries = []
params = []
for text_value in st_line_text_values:
if not text_value:
continue
# Find a partner having a name contained inside the statement line values.
# Take care a partner could contain some special characters in its name that needs to be escaped.
sub_queries.append(
rf"""
{unaccent("%s")} ~* ('^' || (
SELECT STRING_AGG(CONCAT('(?=.*\m', chunk[1], '\M)'), '')
FROM regexp_matches({unaccent('partner.name')}, '\w{{3,}}', 'g') AS chunk
))
"""
)
params.append(text_value)
if sub_queries:
self.env["res.partner"].flush_model(["company_id", "name"])
self.env["account.move.line"].flush_model(["partner_id", "company_id"])
self._cr.execute(
"""
SELECT aml.partner_id
FROM account_move_line aml
JOIN res_partner partner ON
aml.partner_id = partner.id
AND partner.name IS NOT NULL
AND partner.active
AND (("""
+ ") OR (".join(sub_queries)
+ """))
WHERE aml.company_id = %s
LIMIT 1
""",
params + [self.company_id.id],
)
row = self._cr.fetchone()
if row:
return self.env["res.partner"].browse(row[0])
return self.env["res.partner"]
def _get_st_line_strings_for_matching(self, allowed_fields=None):
"""Collect the strings that could be used on the statement line to perform some matching.
:param allowed_fields: A explicit list of fields to consider.
:return: A list of strings.
"""
self.ensure_one()
def _get_text_value(field_name):
if self._fields[field_name].type == "html":
return self[field_name] and html2plaintext(self[field_name])
else:
return self[field_name]
st_line_text_values = []
if allowed_fields is None or "payment_ref" in allowed_fields:
value = _get_text_value("payment_ref")
if value:
st_line_text_values.append(value)
if allowed_fields is None or "narration" in allowed_fields:
value = _get_text_value("narration")
if value:
st_line_text_values.append(value)
if allowed_fields is None or "ref" in allowed_fields:
value = _get_text_value("ref")
if value:
st_line_text_values.append(value)
return st_line_text_values

View File

@@ -0,0 +1,667 @@
import re
from collections import defaultdict
from dateutil.relativedelta import relativedelta
from odoo import Command, fields, models, tools
class AccountReconcileModel(models.Model):
_inherit = "account.reconcile.model"
####################################################
# RECONCILIATION PROCESS
####################################################
def _apply_lines_for_bank_widget(self, residual_amount_currency, partner, st_line):
"""Apply the reconciliation model lines to the statement line passed as parameter.
:param residual_amount_currency: The open balance of the statement line in the bank reconciliation widget
expressed in the statement line currency.
:param partner: The partner set on the wizard.
:param st_line: The statement line processed by the bank reconciliation widget.
:return: A list of python dictionaries (one per reconcile model line) representing
the journal items to be created by the current reconcile model.
"""
self.ensure_one()
currency = (
st_line.foreign_currency_id
or st_line.journal_id.currency_id
or st_line.company_currency_id
)
if currency.is_zero(residual_amount_currency):
return []
vals_list = []
for line in self.line_ids:
vals = line._apply_in_bank_widget(
residual_amount_currency, partner, st_line
)
amount_currency = vals["amount_currency"]
if currency.is_zero(amount_currency):
continue
vals_list.append(vals)
residual_amount_currency -= amount_currency
return vals_list
def _get_taxes_move_lines_dict(self, tax, base_line_dict):
"""Get move.lines dict (to be passed to the create()) corresponding to a tax.
:param tax: An account.tax record.
:param base_line_dict: A dict representing the move.line containing the base amount.
:return: A list of dict representing move.lines to be created corresponding to the tax.
"""
self.ensure_one()
balance = base_line_dict["balance"]
tax_type = tax.type_tax_use
is_refund = (tax_type == "sale" and balance < 0) or (
tax_type == "purchase" and balance > 0
)
res = tax.compute_all(balance, is_refund=is_refund)
new_aml_dicts = []
for tax_res in res["taxes"]:
tax = self.env["account.tax"].browse(tax_res["id"])
balance = tax_res["amount"]
name = " ".join(
[x for x in [base_line_dict.get("name", ""), tax_res["name"]] if x]
)
new_aml_dicts.append(
{
"account_id": tax_res["account_id"] or base_line_dict["account_id"],
"journal_id": base_line_dict.get("journal_id", False),
"name": name,
"partner_id": base_line_dict.get("partner_id"),
"balance": balance,
"debit": balance > 0 and balance or 0,
"credit": balance < 0 and -balance or 0,
"analytic_distribution": tax.analytic
and base_line_dict["analytic_distribution"],
"tax_repartition_line_id": tax_res["tax_repartition_line_id"],
"tax_ids": [(6, 0, tax_res["tax_ids"])],
"tax_tag_ids": [(6, 0, tax_res["tag_ids"])],
"group_tax_id": tax_res["group"].id if tax_res["group"] else False,
"currency_id": False,
"reconcile_model_id": self.id,
}
)
# Handle price included taxes.
base_balance = tax_res["base"]
base_line_dict.update(
{
"balance": base_balance,
"debit": base_balance > 0 and base_balance or 0,
"credit": base_balance < 0 and -base_balance or 0,
}
)
base_line_dict["tax_tag_ids"] = [(6, 0, res["base_tags"])]
return new_aml_dicts
def _get_write_off_move_lines_dict(self, residual_balance, partner_id):
"""Get move.lines dict corresponding to the reconciliation model's write-off lines.
:param residual_balance: The residual balance of the account on the manual reconciliation widget.
:return: A list of dict representing move.lines to be created corresponding to the write-off lines.
"""
self.ensure_one()
if self.rule_type == "invoice_matching" and (
not self.allow_payment_tolerance or self.payment_tolerance_param == 0
):
return []
currency = self.company_id.currency_id
lines_vals_list = []
for line in self.line_ids:
balance = 0
if line.amount_type == "percentage":
balance = currency.round(residual_balance * (line.amount / 100.0))
elif line.amount_type == "fixed":
balance = currency.round(
line.amount * (1 if residual_balance > 0.0 else -1)
)
if currency.is_zero(balance):
continue
writeoff_line = {
"name": line.label,
"balance": balance,
"debit": balance > 0 and balance or 0,
"credit": balance < 0 and -balance or 0,
"account_id": line.account_id.id,
"currency_id": currency.id,
"analytic_distribution": line.analytic_distribution,
"reconcile_model_id": self.id,
"journal_id": line.journal_id.id,
"tax_ids": [],
}
lines_vals_list.append(writeoff_line)
residual_balance -= balance
if line.tax_ids:
taxes = line.tax_ids
detected_fiscal_position = self.env[
"account.fiscal.position"
]._get_fiscal_position(self.env["res.partner"].browse(partner_id))
if detected_fiscal_position:
taxes = detected_fiscal_position.map_tax(taxes)
writeoff_line["tax_ids"] += [Command.set(taxes.ids)]
# Multiple taxes with force_tax_included results in wrong computation, so we
# only allow to set the force_tax_included field if we have one tax selected
if line.force_tax_included:
taxes = taxes[0].with_context(force_price_include=True)
tax_vals_list = self._get_taxes_move_lines_dict(taxes, writeoff_line)
lines_vals_list += tax_vals_list
if not line.force_tax_included:
for tax_line in tax_vals_list:
residual_balance -= tax_line["balance"]
return lines_vals_list
####################################################
# RECONCILIATION CRITERIA
####################################################
def _apply_rules(self, st_line, partner):
"""Apply criteria to get candidates for all reconciliation models.
This function is called in enterprise by the reconciliation widget to match
the statement line with the available candidates (using the reconciliation models).
:param st_line: The statement line to match.
:param partner: The partner to consider.
:return: A dict mapping each statement line id with:
* aml_ids: A list of account.move.line ids.
* model: An account.reconcile.model record (optional).
* status: 'reconciled' if the lines has been already reconciled, 'write_off' if the write-off
must be applied on the statement line.
* auto_reconcile: A flag indicating if the match is enough significant to auto reconcile the candidates.
"""
available_models = self.filtered(
lambda m: m.rule_type != "writeoff_button"
).sorted()
for rec_model in available_models:
if not rec_model._is_applicable_for(st_line, partner):
continue
if rec_model.rule_type == "invoice_matching":
rules_map = rec_model._get_invoice_matching_rules_map()
for rule_index in sorted(rules_map.keys()):
for rule_method in rules_map[rule_index]:
candidate_vals = rule_method(st_line, partner)
if not candidate_vals:
continue
if candidate_vals.get("amls"):
res = rec_model._get_invoice_matching_amls_result(
st_line, partner, candidate_vals
)
if res:
return {
**res,
"model": rec_model,
}
else:
return {
**candidate_vals,
"model": rec_model,
}
elif rec_model.rule_type == "writeoff_suggestion":
return {
"model": rec_model,
"status": "write_off",
"auto_reconcile": rec_model.auto_reconcile,
}
return {}
def _is_applicable_for(self, st_line, partner):
"""Returns true iff this reconciliation model can be used to search for matches
for the provided statement line and partner.
"""
self.ensure_one()
# Filter on journals, amount nature, amount and partners
# All the conditions defined in this block are non-match conditions.
if (
(
self.match_journal_ids
and st_line.move_id.journal_id not in self.match_journal_ids
)
or (self.match_nature == "amount_received" and st_line.amount < 0)
or (self.match_nature == "amount_paid" and st_line.amount > 0)
or (
self.match_amount == "lower"
and abs(st_line.amount) >= self.match_amount_max
)
or (
self.match_amount == "greater"
and abs(st_line.amount) <= self.match_amount_min
)
or (
self.match_amount == "between"
and (
abs(st_line.amount) > self.match_amount_max
or abs(st_line.amount) < self.match_amount_min
)
)
or (self.match_partner and not partner)
or (
self.match_partner
and self.match_partner_ids
and partner not in self.match_partner_ids
)
or (
self.match_partner
and self.match_partner_category_ids
and partner.category_id not in self.match_partner_category_ids
)
):
return False
# Filter on label, note and transaction_type
for record, rule_field, record_field in [
(st_line, "label", "payment_ref"),
(st_line.move_id, "note", "narration"),
(st_line, "transaction_type", "transaction_type"),
]:
rule_term = (self["match_" + rule_field + "_param"] or "").lower()
record_term = (record[record_field] or "").lower()
# This defines non-match conditions
if (
(
self["match_" + rule_field] == "contains"
and rule_term not in record_term
)
or (
self["match_" + rule_field] == "not_contains"
and rule_term in record_term
)
or (
self["match_" + rule_field] == "match_regex"
and not re.match(rule_term, record_term)
)
):
return False
return True
def _get_invoice_matching_amls_domain(self, st_line, partner):
aml_domain = st_line._get_default_amls_matching_domain()
if st_line.amount > 0.0:
aml_domain.append(("balance", ">", 0.0))
else:
aml_domain.append(("balance", "<", 0.0))
currency = st_line.foreign_currency_id or st_line.currency_id
if self.match_same_currency:
aml_domain.append(("currency_id", "=", currency.id))
if partner:
aml_domain.append(("partner_id", "=", partner.id))
if self.past_months_limit:
date_limit = fields.Date.context_today(self) - relativedelta(
months=self.past_months_limit
)
aml_domain.append(("date", ">=", fields.Date.to_string(date_limit)))
return aml_domain
def _get_invoice_matching_st_line_tokens(self, st_line):
"""Parse the textual information from the statement line passed as parameter
in order to extract from it the meaningful information in order to perform the matching.
:param st_line: A statement line.
:return: A list of tokens, each one being a string.
"""
st_line_text_values = st_line._get_st_line_strings_for_matching(
allowed_fields=(
"payment_ref" if self.match_text_location_label else None,
"narration" if self.match_text_location_note else None,
"ref" if self.match_text_location_reference else None,
)
)
significant_token_size = 4
tokens = []
for text_value in st_line_text_values:
for token in (text_value or "").split():
# The token is too short to be significant.
if len(token) < significant_token_size:
continue
formatted_token = "".join(x for x in token if x.isdecimal())
# The token is too short after formatting to be significant.
if len(formatted_token) < significant_token_size:
continue
tokens.append(formatted_token)
return tokens
def _get_invoice_matching_amls_candidates(self, st_line, partner):
"""Returns the match candidates for the 'invoice_matching' rule, with respect to the provided parameters.
:param st_line: A statement line.
:param partner: The partner associated to the statement line.
"""
assert self.rule_type == "invoice_matching"
self.env["account.move"].flush_model()
self.env["account.move.line"].flush_model()
if self.matching_order == "new_first":
order_by = "sub.date_maturity DESC, sub.date DESC, sub.id DESC"
else:
order_by = "sub.date_maturity ASC, sub.date ASC, sub.id ASC"
aml_domain = self._get_invoice_matching_amls_domain(st_line, partner)
query = self.env["account.move.line"]._where_calc(aml_domain)
tables, where_clause, where_params = query.get_sql()
tokens = self._get_invoice_matching_st_line_tokens(st_line)
if tokens:
sub_queries = []
for table_alias, field in (
("account_move_line", "name"),
("account_move_line__move_id", "name"),
("account_move_line__move_id", "ref"),
):
sub_queries.append(
rf"""
SELECT
account_move_line.id,
account_move_line.date,
account_move_line.date_maturity,
UNNEST(
REGEXP_SPLIT_TO_ARRAY(
SUBSTRING(
REGEXP_REPLACE({table_alias}.{field}, '[^0-9\s]', '', 'g'),
'\S(?:.*\S)*'
),
'\s+'
)
) AS token
FROM {tables}
JOIN account_move account_move_line__move_id ON account_move_line__move_id.id = account_move_line.move_id
WHERE {where_clause} AND {table_alias}.{field} IS NOT NULL
"""
)
self._cr.execute(
"""
SELECT
sub.id,
COUNT(*) AS nb_match
FROM ("""
+ " UNION ALL ".join(sub_queries)
+ """) AS sub
WHERE sub.token IN %s
GROUP BY sub.date_maturity, sub.date, sub.id
HAVING COUNT(*) > 0
ORDER BY nb_match DESC, """
+ order_by
+ """
""",
(where_params * 3) + [tuple(tokens)],
)
candidate_ids = [r[0] for r in self._cr.fetchall()]
if candidate_ids:
return {
"allow_auto_reconcile": True,
"amls": self.env["account.move.line"].browse(candidate_ids),
}
# Search without any matching based on textual information.
if partner:
if self.matching_order == "new_first":
order = "date_maturity DESC, date DESC, id DESC"
else:
order = "date_maturity ASC, date ASC, id ASC"
amls = self.env["account.move.line"].search(aml_domain, order=order)
if amls:
return {
"allow_auto_reconcile": False,
"amls": amls,
}
def _get_invoice_matching_rules_map(self):
"""Get a mapping <priority_order, rule> that could be overridden in others modules.
:return: a mapping <priority_order, rule> where:
* priority_order: Defines in which order the rules will be evaluated, the lowest comes first.
This is extremely important since the algorithm stops when a rule returns some candidates.
* rule: Method taking <st_line, partner> as parameters and returning the candidates journal items found.
"""
rules_map = defaultdict(list)
rules_map[10].append(self._get_invoice_matching_amls_candidates)
return rules_map
def _get_partner_from_mapping(self, st_line):
"""Find partner with mapping defined on model.
For invoice matching rules, matches the statement line against each
regex defined in partner mapping, and returns the partner corresponding
to the first one matching.
:param st_line (Model<account.bank.statement.line>):
The statement line that needs a partner to be found
:return Model<res.partner>:
The partner found from the mapping. Can be empty an empty recordset
if there was nothing found from the mapping or if the function is
not applicable.
"""
self.ensure_one()
if self.rule_type not in ("invoice_matching", "writeoff_suggestion"):
return self.env["res.partner"]
for partner_mapping in self.partner_mapping_line_ids:
match_payment_ref = (
re.match(partner_mapping.payment_ref_regex, st_line.payment_ref)
if partner_mapping.payment_ref_regex
else True
)
match_narration = (
re.match(
partner_mapping.narration_regex,
tools.html2plaintext(st_line.narration or "").rstrip(),
)
if partner_mapping.narration_regex
else True
)
if match_payment_ref and match_narration:
return partner_mapping.partner_id
return self.env["res.partner"]
def _get_invoice_matching_amls_result(self, st_line, partner, candidate_vals): # noqa: C901
def _create_result_dict(amls_values_list, status):
if "rejected" in status:
return
result = {"amls": self.env["account.move.line"]}
for aml_values in amls_values_list:
result["amls"] |= aml_values["aml"]
if "allow_write_off" in status and self.line_ids:
result["status"] = "write_off"
if (
"allow_auto_reconcile" in status
and candidate_vals["allow_auto_reconcile"]
and self.auto_reconcile
):
result["auto_reconcile"] = True
return result
st_line_currency = st_line.foreign_currency_id or st_line.currency_id
st_line_amount = st_line._prepare_move_line_default_vals()[1]["amount_currency"]
sign = 1 if st_line_amount > 0.0 else -1
amls = candidate_vals["amls"]
amls_values_list = []
amls_with_epd_values_list = []
same_currency_mode = amls.currency_id == st_line_currency
for aml in amls:
aml_values = {
"aml": aml,
"amount_residual": aml.amount_residual,
"amount_residual_currency": aml.amount_residual_currency,
}
amls_values_list.append(aml_values)
# Manage the early payment discount.
if (
same_currency_mode
and aml.move_id.move_type
in ("out_invoice", "out_receipt", "in_invoice", "in_receipt")
and not aml.matched_debit_ids
and not aml.matched_credit_ids
and aml.discount_date
and st_line.date <= aml.discount_date
):
rate = (
abs(aml.amount_currency) / abs(aml.balance) if aml.balance else 1.0
)
amls_with_epd_values_list.append(
{
**aml_values,
"amount_residual": st_line.company_currency_id.round(
aml.discount_amount_currency / rate
),
"amount_residual_currency": aml.discount_amount_currency,
}
)
else:
amls_with_epd_values_list.append(aml_values)
def match_batch_amls(amls_values_list):
if not same_currency_mode:
return None, []
kepts_amls_values_list = []
sum_amount_residual_currency = 0.0
for aml_values in amls_values_list:
if (
st_line_currency.compare_amounts(
st_line_amount, -aml_values["amount_residual_currency"]
)
== 0
):
# Special case: the amounts are the same, submit the line directly.
return "perfect", [aml_values]
if (
st_line_currency.compare_amounts(
sign * (st_line_amount + sum_amount_residual_currency), 0.0
)
> 0
):
# Here, we still have room for other candidates ; so we add the current one to the list we keep.
# Then, we continue iterating, even if there is no room anymore, just in case one of the following candidates
# is an exact match, which would then be preferred on the current candidates.
kepts_amls_values_list.append(aml_values)
sum_amount_residual_currency += aml_values[
"amount_residual_currency"
]
if st_line_currency.is_zero(
sign * (st_line_amount + sum_amount_residual_currency)
):
return "perfect", kepts_amls_values_list
elif kepts_amls_values_list:
return "partial", kepts_amls_values_list
else:
return None, []
# Try to match a batch with the early payment feature. Only a perfect match is allowed.
match_type, kepts_amls_values_list = match_batch_amls(amls_with_epd_values_list)
if match_type != "perfect":
kepts_amls_values_list = []
# Try to match the amls having the same currency as the statement line.
if not kepts_amls_values_list:
_match_type, kepts_amls_values_list = match_batch_amls(amls_values_list)
# Try to match the whole candidates.
if not kepts_amls_values_list:
kepts_amls_values_list = amls_values_list
# Try to match the amls having the same currency as the statement line.
if kepts_amls_values_list:
status = self._check_rule_propositions(st_line, kepts_amls_values_list)
result = _create_result_dict(kepts_amls_values_list, status)
if result:
return result
def _check_rule_propositions(self, st_line, amls_values_list):
"""Check restrictions that can't be handled for each move.line separately.
Note: Only used by models having a type equals to 'invoice_matching'.
:param st_line: The statement line.
:param amls_values_list: The candidates account.move.line as a list of dict:
* aml: The record.
* amount_residual: The amount residual to consider.
* amount_residual_currency: The amount residual in foreign currency to consider.
:return: A string representing what to do with the candidates:
* rejected: Reject candidates.
* allow_write_off: Allow to generate the write-off from the reconcile model lines if specified.
* allow_auto_reconcile: Allow to automatically reconcile entries if 'auto_validate' is enabled.
"""
self.ensure_one()
if not self.allow_payment_tolerance:
return {"allow_write_off", "allow_auto_reconcile"}
st_line_currency = st_line.foreign_currency_id or st_line.currency_id
st_line_amount_curr = st_line._prepare_move_line_default_vals()[1][
"amount_currency"
]
amls_amount_curr = sum(
st_line._prepare_counterpart_amounts_using_st_line_rate(
aml_values["aml"].currency_id,
aml_values["amount_residual"],
aml_values["amount_residual_currency"],
)["amount_currency"]
for aml_values in amls_values_list
)
sign = 1 if st_line_amount_curr > 0.0 else -1
amount_curr_after_rec = sign * (amls_amount_curr + st_line_amount_curr)
# The statement line will be fully reconciled.
if st_line_currency.is_zero(amount_curr_after_rec):
return {"allow_auto_reconcile"}
# The payment amount is higher than the sum of invoices.
# In that case, don't check the tolerance and don't try to generate any write-off.
if amount_curr_after_rec > 0.0:
return {"allow_auto_reconcile"}
# No tolerance, reject the candidates.
if self.payment_tolerance_param == 0:
return {"rejected"}
# If the tolerance is expressed as a fixed amount, check the residual payment amount doesn't exceed the
# tolerance.
if (
self.payment_tolerance_type == "fixed_amount"
and -amount_curr_after_rec <= self.payment_tolerance_param
):
return {"allow_write_off", "allow_auto_reconcile"}
# The tolerance is expressed as a percentage between 0 and 100.0.
reconciled_percentage_left = (
abs(amount_curr_after_rec / amls_amount_curr)
) * 100.0
if (
self.payment_tolerance_type == "percentage"
and reconciled_percentage_left <= self.payment_tolerance_param
):
return {"allow_write_off", "allow_auto_reconcile"}
return {"rejected"}

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View File

@@ -0,0 +1,3 @@
- Dixmit
- Enric Tobella

View File

@@ -0,0 +1 @@
This module restores account reconciliation models functions moved from Odoo community to enterpise in V. 17.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,426 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Account Reconcile Model Oca</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="account-reconcile-model-oca">
<h1 class="title">Account Reconcile Model Oca</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:62683a913039d5afe96202b49fdd537d57edf8ac49edc89bf9c9e4512971888f
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/licence-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-reconcile/tree/17.0/account_reconcile_model_oca"><img alt="OCA/account-reconcile" src="https://img.shields.io/badge/github-OCA%2Faccount--reconcile-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-reconcile-17-0/account-reconcile-17-0-account_reconcile_model_oca"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-reconcile&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module restores account reconciliation models functions moved from
Odoo community to enterpise in V. 17.0</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-1">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-2">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-3">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-4">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-5">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-reconcile/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/account-reconcile/issues/new?body=module:%20account_reconcile_model_oca%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-2">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
<ul class="simple">
<li>Dixmit</li>
<li>Odoo</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
<ul class="simple">
<li>Dixmit<ul>
<li>Enric Tobella</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-reconcile/tree/17.0/account_reconcile_model_oca">OCA/account-reconcile</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

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

View File

@@ -0,0 +1,243 @@
import time
from odoo import Command
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
class TestAccountReconciliationCommon(AccountTestInvoicingCommon):
"""Tests for reconciliation (account.tax)
Test used to check that when doing a sale or purchase invoice in a different currency,
the result will be balanced.
"""
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
cls.company = cls.company_data["company"]
cls.company.currency_id = cls.env.ref("base.EUR")
cls.partner_agrolait = cls.env["res.partner"].create(
{
"name": "Deco Addict",
"is_company": True,
"country_id": cls.env.ref("base.us").id,
}
)
cls.partner_agrolait_id = cls.partner_agrolait.id
cls.currency_swiss_id = cls.env.ref("base.CHF").id
cls.currency_usd_id = cls.env.ref("base.USD").id
cls.currency_euro_id = cls.env.ref("base.EUR").id
cls.account_rcv = cls.company_data["default_account_receivable"]
cls.account_rsa = cls.company_data["default_account_payable"]
cls.product = cls.env["product.product"].create(
{
"name": "Product Product 4",
"standard_price": 500.0,
"list_price": 750.0,
"type": "consu",
"categ_id": cls.env.ref("product.product_category_all").id,
}
)
cls.bank_journal_euro = cls.env["account.journal"].create(
{"name": "Bank", "type": "bank", "code": "BNK67"}
)
cls.account_euro = cls.bank_journal_euro.default_account_id
cls.bank_journal_usd = cls.env["account.journal"].create(
{
"name": "Bank US",
"type": "bank",
"code": "BNK68",
"currency_id": cls.currency_usd_id,
}
)
cls.account_usd = cls.bank_journal_usd.default_account_id
cls.fx_journal = cls.company.currency_exchange_journal_id
cls.diff_income_account = cls.company.income_currency_exchange_account_id
cls.diff_expense_account = cls.company.expense_currency_exchange_account_id
cls.expense_account = cls.company_data["default_account_expense"]
# cash basis intermediary account
cls.tax_waiting_account = cls.env["account.account"].create(
{
"name": "TAX_WAIT",
"code": "TWAIT",
"account_type": "liability_current",
"reconcile": True,
"company_id": cls.company.id,
}
)
# cash basis final account
cls.tax_final_account = cls.env["account.account"].create(
{
"name": "TAX_TO_DEDUCT",
"code": "TDEDUCT",
"account_type": "asset_current",
"company_id": cls.company.id,
}
)
cls.tax_base_amount_account = cls.env["account.account"].create(
{
"name": "TAX_BASE",
"code": "TBASE",
"account_type": "asset_current",
"company_id": cls.company.id,
}
)
cls.company.account_cash_basis_base_account_id = cls.tax_base_amount_account.id
# Journals
cls.purchase_journal = cls.company_data["default_journal_purchase"]
cls.cash_basis_journal = cls.env["account.journal"].create(
{
"name": "Test CABA",
"code": "tCABA",
"type": "general",
}
)
cls.general_journal = cls.company_data["default_journal_misc"]
# Tax Cash Basis
cls.tax_cash_basis = cls.env["account.tax"].create(
{
"name": "cash basis 20%",
"type_tax_use": "purchase",
"company_id": cls.company.id,
"country_id": cls.company.account_fiscal_country_id.id,
"amount": 20,
"tax_exigibility": "on_payment",
"cash_basis_transition_account_id": cls.tax_waiting_account.id,
"invoice_repartition_line_ids": [
(
0,
0,
{
"repartition_type": "base",
},
),
(
0,
0,
{
"repartition_type": "tax",
"account_id": cls.tax_final_account.id,
},
),
],
"refund_repartition_line_ids": [
(
0,
0,
{
"repartition_type": "base",
},
),
(
0,
0,
{
"repartition_type": "tax",
"account_id": cls.tax_final_account.id,
},
),
],
}
)
cls.env["res.currency.rate"].create(
[
{
"currency_id": cls.env.ref("base.EUR").id,
"name": "2010-01-02",
"rate": 1.0,
},
{
"currency_id": cls.env.ref("base.USD").id,
"name": "2010-01-02",
"rate": 1.2834,
},
{
"currency_id": cls.env.ref("base.USD").id,
"name": time.strftime("%Y-06-05"),
"rate": 1.5289,
},
]
)
def _create_invoice(
self,
move_type="out_invoice",
invoice_amount=50,
currency_id=None,
partner_id=None,
date_invoice=None,
payment_term_id=False,
auto_validate=False,
):
date_invoice = date_invoice or time.strftime("%Y") + "-07-01"
invoice_vals = {
"move_type": move_type,
"partner_id": partner_id or self.partner_agrolait_id,
"invoice_date": date_invoice,
"date": date_invoice,
"invoice_line_ids": [
(
0,
0,
{
"name": "product that cost %s" % invoice_amount,
"quantity": 1,
"price_unit": invoice_amount,
"tax_ids": [Command.set([])],
},
)
],
}
if payment_term_id:
invoice_vals["invoice_payment_term_id"] = payment_term_id
if currency_id:
invoice_vals["currency_id"] = currency_id
invoice = (
self.env["account.move"]
.with_context(default_move_type=move_type)
.create(invoice_vals)
)
if auto_validate:
invoice.action_post()
return invoice
def create_invoice(
self, move_type="out_invoice", invoice_amount=50, currency_id=None
):
return self._create_invoice(
move_type=move_type,
invoice_amount=invoice_amount,
currency_id=currency_id,
auto_validate=True,
)
def create_invoice_partner(
self,
move_type="out_invoice",
invoice_amount=50,
currency_id=None,
partner_id=False,
payment_term_id=False,
):
return self._create_invoice(
move_type=move_type,
invoice_amount=invoice_amount,
currency_id=currency_id,
partner_id=partner_id,
payment_term_id=payment_term_id,
auto_validate=True,
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,109 @@
=====================
Account Reconcile Oca
=====================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:0259c9d504534b4ee88e7b929ddb6c524dd35cb217811c87b8dd02e0a433f1f1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--reconcile-lightgray.png?logo=github
:target: https://github.com/OCA/account-reconcile/tree/17.0/account_reconcile_oca
:alt: OCA/account-reconcile
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-reconcile-17-0/account-reconcile-17-0-account_reconcile_oca
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/account-reconcile&target_branch=17.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This addon allows to reconcile bank statements and account marked as
reconcile.
**Table of contents**
.. contents::
:local:
Usage
=====
Bank reconcile
--------------
Access Invoicing / Dashboard with a user with Full Acounting
capabilities. Select reconcile on the journal of your choice.
Account reconcile
-----------------
Access Invoicing / Accounting / Actions / Reconcile All the possible
reconcile options will show and you will be able to reconcile properly.
You can access the same widget from accounts and Partners.
Known issues / Roadmap
======================
The following bugs are already detected:
- Creation of activities on the chatter do show automatically
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-reconcile/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/account-reconcile/issues/new?body=module:%20account_reconcile_oca%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
-------
* CreuBlanca
* Dixmit
Contributors
------------
- Enric Tobella
Maintainers
-----------
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-etobella| image:: https://github.com/etobella.png?size=40px
:target: https://github.com/etobella
:alt: etobella
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-etobella|
This module is part of the `OCA/account-reconcile <https://github.com/OCA/account-reconcile/tree/17.0/account_reconcile_oca>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1,2 @@
from . import models
from .hooks import post_init_hook

View File

@@ -0,0 +1,45 @@
# Copyright 2023 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Account Reconcile Oca",
"summary": """
Reconcile addons for Odoo CE accounting""",
"version": "17.0.1.0.0",
"license": "AGPL-3",
"author": "CreuBlanca,Dixmit,Odoo Community Association (OCA)",
"maintainers": ["etobella"],
"website": "https://github.com/OCA/account-reconcile",
"depends": [
"account_statement_base",
"account_reconcile_model_oca",
"base_sparse_field",
],
"data": [
"views/res_config_settings.xml",
"security/ir.model.access.csv",
"views/account_account_reconcile.xml",
"views/account_bank_statement_line.xml",
"views/account_move_line.xml",
"views/account_journal.xml",
"views/account_move.xml",
"views/account_account.xml",
"views/account_bank_statement.xml",
],
"demo": ["demo/demo.xml"],
"post_init_hook": "post_init_hook",
"assets": {
"web.assets_backend": [
"account_reconcile_oca/static/src/js/widgets/reconcile_data_widget.esm.js",
"account_reconcile_oca/static/src/js/widgets/reconcile_chatter_field.esm.js",
"account_reconcile_oca/static/src/js/widgets/selection_badge_uncheck.esm.js",
"account_reconcile_oca/static/src/js/widgets/reconcile_move_line_widget.esm.js",
"account_reconcile_oca/static/src/js/reconcile_move_line/*.esm.js",
"account_reconcile_oca/static/src/js/reconcile_form/*.esm.js",
"account_reconcile_oca/static/src/js/reconcile_manual/*.esm.js",
"account_reconcile_oca/static/src/js/reconcile/*.esm.js",
"account_reconcile_oca/static/src/xml/reconcile.xml",
"account_reconcile_oca/static/src/scss/reconcile.scss",
],
},
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="base.user_admin" model="res.users">
<field name="groups_id" eval="[(4,ref('account.group_account_user'))]" />
</record>
</odoo>

View File

@@ -0,0 +1,8 @@
def post_init_hook(env):
env.cr.execute(
"""
UPDATE account_bank_statement_line
SET reconcile_mode = 'edit'
WHERE is_reconciled
"""
)

View File

@@ -0,0 +1,583 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_reconcile_oca
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid ""
".\n"
" <br/>\n"
" You might want to set the invoice as"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__account_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Account"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile
msgid "Account Account Reconcile"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_reconcile_abstract
msgid "Account Reconcile Abstract"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__add_account_move_line_id
msgid "Add Account Move Line"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_create
msgid "Add Bank Statement Line"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Amount"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Amount in currency"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_distribution
msgid "Analytic Distribution"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_precision
msgid "Analytic Precision"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Are you sure that the move should be unreconciled?"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Bank"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_form_view
msgid "Bank reconcile"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__can_reconcile
msgid "Can Reconcile"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Cancel"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Cash"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Chatter"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
msgid "Clean"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_id
msgid "Company"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__company_id
msgid "Company related to this journal"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Create"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_uid
msgid "Created by"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_date
msgid "Created on"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Credit"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__currency_id
msgid "Currency"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__data
msgid "Data"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Date"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Debit"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__display_name
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__display_name
msgid "Display Name"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__edit
msgid "Edit Move"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__foreign_currency_id
msgid "Foreign Currency"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Payable accounts"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Receivable accounts"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__id
msgid "ID"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Invoice"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__is_reconciled
msgid "Is Reconciled"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Items"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_journal
msgid "Journal"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__currency_id
msgid "Journal Currency"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Entry"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_move_line
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Item"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__keep
msgid "Keep Suspense Accounts"
msgstr ""
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Keep suspense move lines mode cannot be unreconciled"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Label"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile____last_update
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data____last_update
msgid "Last Modified on"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_date
msgid "Last Updated on"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_account_id
msgid "Manual Account"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_amount
msgid "Manual Amount"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_currency_id
msgid "Manual Currency"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_delete
msgid "Manual Delete"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_kind
msgid "Manual Kind"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_line_id
msgid "Manual Line"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_model_id
msgid "Manual Model"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_id
msgid "Manual Move"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_type
msgid "Manual Move Type"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_name
msgid "Manual Name"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_original_amount
msgid "Manual Original Amount"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_partner_id
msgid "Manual Partner"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_reference
msgid "Manual Reference"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Manual operation"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Miscellaneous"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__name
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Name"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Narration"
msgstr ""
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "No supense lines are allowed when reconciling"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Nothing to check"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_all
msgid "Nothing to reconcile"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__partner_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Partner"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Payable"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Purchases"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Receivable"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.res_partner_account_account_reconcile_act_window
#: model:ir.actions.server,name:account_reconcile_oca.action_reconcile
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__reconcile_id
#: model:ir.ui.menu,name:account_reconcile_oca.account_account_reconcile_menu
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.view_account_list
msgid "Reconcile"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data
msgid "Reconcile Data"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__reconcile_data_info
msgid "Reconcile Data Info"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_mode
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_journal__reconcile_mode
msgid "Reconcile Mode"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_all
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Reconcile bank statement lines"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile_data
msgid "Reconcile data model to store user info"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "Reconciled"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Reset reconciliation"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Sales"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Save"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Search Journal Items"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Set as Checked"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
msgid "The optional other currency if it is a multi-currency entry."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "To Check"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "To check"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Transactions"
msgstr ""
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Undefined"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Unreconcile"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__user_id
msgid "User"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Validate"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_tree_reconcile_view
msgid "View"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "View move"
msgstr ""
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_journal.py:0
#, python-format
msgid "Well done! Everything has been reconciled"
msgstr ""
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_move_line.py:0
#, python-format
msgid "You can only reconcile journal items belonging to the same account."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "fully paid"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "to check"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "will be reduced by"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "with an open amount"
msgstr ""

View File

@@ -0,0 +1,590 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_reconcile_oca
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-20 17:34+0000\n"
"Last-Translator: Enric Tobella <etobella@creublanca.es>\n"
"Language-Team: none\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid ""
".\n"
" <br/>\n"
" You might want to set the invoice as"
msgstr ""
".\n"
" <br/>\n"
" Potser vols definir la factura com"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__account_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Account"
msgstr "Compte"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile
msgid "Account Account Reconcile"
msgstr "Conciliació de compte comptable"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_reconcile_abstract
msgid "Account Reconcile Abstract"
msgstr "Conciliació de Compte abstracte"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__add_account_move_line_id
msgid "Add Account Move Line"
msgstr "Afegir un apunt comptable"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_create
msgid "Add Bank Statement Line"
msgstr "Afegir una línea d'extracte bancari"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Amount"
msgstr "Import"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Amount in currency"
msgstr "Import en divisa"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_distribution
msgid "Analytic Distribution"
msgstr "Dsitribució analítica"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_precision
msgid "Analytic Precision"
msgstr "Precisió analítica"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Are you sure that the move should be unreconciled?"
msgstr "Estas segur que vols desconciliar aquest apunt?"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Bank"
msgstr "Banc"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Línea d'extracte bancari"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_form_view
msgid "Bank reconcile"
msgstr "Concilicació bancària"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__can_reconcile
msgid "Can Reconcile"
msgstr "Es pot conciliar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Cancel"
msgstr "Cancel·la"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Cash"
msgstr "Efectiu"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Chatter"
msgstr "Missatges"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
msgid "Clean"
msgstr "Neteja"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_id
msgid "Company"
msgstr "Companyia"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__company_id
msgid "Company related to this journal"
msgstr "Companyia relacionada amb el diari"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Create"
msgstr "Crea"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_uid
msgid "Created by"
msgstr "Creat per"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_date
msgid "Created on"
msgstr "Creat el"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Credit"
msgstr "Crèdit"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__currency_id
msgid "Currency"
msgstr "Moneda"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__data
msgid "Data"
msgstr "Dades"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Date"
msgstr "Data"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Debit"
msgstr "Dèbit"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__display_name
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__display_name
msgid "Display Name"
msgstr "Nóm a mostrar"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__edit
msgid "Edit Move"
msgstr "Edita moviment"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__foreign_currency_id
msgid "Foreign Currency"
msgstr "Moneda extrangera"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Payable accounts"
msgstr "De comptes a pagar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Receivable accounts"
msgstr "De comptes a cobrar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__id
msgid "ID"
msgstr "ID"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Invoice"
msgstr "Factura"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__is_reconciled
msgid "Is Reconciled"
msgstr "Conciliat"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Items"
msgstr "Elements"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_journal
msgid "Journal"
msgstr "Diari"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__currency_id
msgid "Journal Currency"
msgstr "Divisa del diari"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Entry"
msgstr "Entrada del diari"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_move_line
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Item"
msgstr "Element del diari"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__keep
msgid "Keep Suspense Accounts"
msgstr "Mantenir comptes transitoris"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Keep suspense move lines mode cannot be unreconciled"
msgstr "La modalitat mantenir els comptes transitoris no permet desconciliar"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Label"
msgstr "Etiqueta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile____last_update
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data____last_update
msgid "Last Modified on"
msgstr "Última modificació el"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_uid
msgid "Last Updated by"
msgstr "Última actualització per"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_date
msgid "Last Updated on"
msgstr "Última actualització per"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_account_id
msgid "Manual Account"
msgstr "Compte manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_amount
msgid "Manual Amount"
msgstr "Import manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_currency_id
msgid "Manual Currency"
msgstr "Divisa manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_delete
msgid "Manual Delete"
msgstr "Esborrat manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_kind
msgid "Manual Kind"
msgstr "Tipus manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_line_id
msgid "Manual Line"
msgstr "Línea manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_model_id
msgid "Manual Model"
msgstr "Model manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_id
msgid "Manual Move"
msgstr "Assentament manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_type
msgid "Manual Move Type"
msgstr "Tipus d'assentament manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_name
msgid "Manual Name"
msgstr "Nom manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_original_amount
msgid "Manual Original Amount"
msgstr "Import original manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_partner_id
msgid "Manual Partner"
msgstr "Contacte manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_reference
msgid "Manual Reference"
msgstr "Referencia manual"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Manual operation"
msgstr "Operació manual"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Miscellaneous"
msgstr "Variat"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__name
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Name"
msgstr "Nom"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Narration"
msgstr "Narració"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "No supense lines are allowed when reconciling"
msgstr "No està permés usar líneas transitòries"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Nothing to check"
msgstr "Res a comprobar"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_all
msgid "Nothing to reconcile"
msgstr "Res a conciliar"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__partner_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Partner"
msgstr "Empresa"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Payable"
msgstr "A pagar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Purchases"
msgstr "Compres"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Receivable"
msgstr "A cobrar"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.res_partner_account_account_reconcile_act_window
#: model:ir.actions.server,name:account_reconcile_oca.action_reconcile
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__reconcile_id
#: model:ir.ui.menu,name:account_reconcile_oca.account_account_reconcile_menu
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.view_account_list
msgid "Reconcile"
msgstr "Conciliar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data
msgid "Reconcile Data"
msgstr "Data de concilicació"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__reconcile_data_info
msgid "Reconcile Data Info"
msgstr "Informació de conciliació"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_mode
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_journal__reconcile_mode
msgid "Reconcile Mode"
msgstr "Mode de concilicació"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_all
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Reconcile bank statement lines"
msgstr "Conciliar líneas d'extracte bancari"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile_data
msgid "Reconcile data model to store user info"
msgstr ""
"Model de dades per emmagatzemar dades de concilicació a nivell d'usuari"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "Reconciled"
msgstr "Conciliat"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Reset reconciliation"
msgstr "Restablir concilicació"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Sales"
msgstr "Ventes"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Save"
msgstr "Guardar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Search Journal Items"
msgstr "Buscar apunts comptables"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Set as Checked"
msgstr "Marcar com revisat"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
msgid "The optional other currency if it is a multi-currency entry."
msgstr "L'altra divisa opcional si es tracta d'una entrada multidivisa."
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "To Check"
msgstr "A revisar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "To check"
msgstr "A revisar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Transactions"
msgstr "Transaccions"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Undefined"
msgstr "Indefinit"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Unreconcile"
msgstr "Desconciliar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__user_id
msgid "User"
msgstr "Usuari"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Validate"
msgstr "Validar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_tree_reconcile_view
msgid "View"
msgstr "Veure"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "View move"
msgstr "Veure assentament"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_journal.py:0
#, python-format
msgid "Well done! Everything has been reconciled"
msgstr "Ben fet! Tot s'ha conciliat"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_move_line.py:0
#, python-format
msgid "You can only reconcile journal items belonging to the same account."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "fully paid"
msgstr "Completament pagat"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "to check"
msgstr "a revisar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "will be reduced by"
msgstr "será reduit en"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "with an open amount"
msgstr "amb un import pendent"

View File

@@ -0,0 +1,596 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_reconcile_oca
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-12-28 20:35+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid ""
".\n"
" <br/>\n"
" You might want to set the invoice as"
msgstr ""
".\n"
" <br/>\n"
" Podrías querer establecer la factura como"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__account_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Account"
msgstr "Cuenta"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile
msgid "Account Account Reconcile"
msgstr "Conciliación de cuenta contable"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_reconcile_abstract
msgid "Account Reconcile Abstract"
msgstr "Resumen de conciliación de cuenta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__add_account_move_line_id
msgid "Add Account Move Line"
msgstr "Añadir apunte contable"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_create
msgid "Add Bank Statement Line"
msgstr "Añadir línea de extracto bancario"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Amount"
msgstr "Importe"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Amount in currency"
msgstr "Importe en Divisa"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_distribution
msgid "Analytic Distribution"
msgstr "Distribución analítica"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_precision
msgid "Analytic Precision"
msgstr "Precisión analítica"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Are you sure that the move should be unreconciled?"
msgstr "¿Estás seguro de que el apunte se debería desconciliar?"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Bank"
msgstr "Banco"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Línea de extracto bancario"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_form_view
msgid "Bank reconcile"
msgstr "Conciliación bancaria"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__can_reconcile
msgid "Can Reconcile"
msgstr "Se puede conciliar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Cancel"
msgstr "Cancelar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Cash"
msgstr "Efectivo"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Chatter"
msgstr "Charla"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
msgid "Clean"
msgstr "Limpiar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_id
msgid "Company"
msgstr "Compañía"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__company_id
msgid "Company related to this journal"
msgstr "Compañía relacionada al diario"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Create"
msgstr "Crear"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_date
msgid "Created on"
msgstr "Creado en"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Credit"
msgstr "Haber"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__currency_id
msgid "Currency"
msgstr "Moneda"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__data
msgid "Data"
msgstr "Datos"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Date"
msgstr "Fecha"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Debit"
msgstr "Debe"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__display_name
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__display_name
msgid "Display Name"
msgstr "Nombre Mostrado"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__edit
msgid "Edit Move"
msgstr "Editar movimiento"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__foreign_currency_id
msgid "Foreign Currency"
msgstr "Moneda Extranjera"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Payable accounts"
msgstr "De cuentas comerciales por pagar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Receivable accounts"
msgstr "De cuentas comerciales por cobrar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__id
msgid "ID"
msgstr "ID"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Invoice"
msgstr "Factura"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__is_reconciled
msgid "Is Reconciled"
msgstr "Conciliado"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Items"
msgstr "Elementos"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_journal
msgid "Journal"
msgstr "Diario"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__currency_id
msgid "Journal Currency"
msgstr "Divisa del diario"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Entry"
msgstr "Entrada de diario"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_move_line
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Item"
msgstr "Elemento de diario"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__keep
msgid "Keep Suspense Accounts"
msgstr "Mantener cuentas transitorias"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Keep suspense move lines mode cannot be unreconciled"
msgstr "Mantener en modo suspenso las líneas que no pueden ser desconciliadas"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Label"
msgstr "Etiqueta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile____last_update
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data____last_update
msgid "Last Modified on"
msgstr "Última modficación en"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_uid
msgid "Last Updated by"
msgstr "Última modficación por"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_account_id
msgid "Manual Account"
msgstr "Cuenta manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_amount
msgid "Manual Amount"
msgstr "Importe manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_currency_id
msgid "Manual Currency"
msgstr "Divisa manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_delete
msgid "Manual Delete"
msgstr "Borrado manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_kind
msgid "Manual Kind"
msgstr "Tipo manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_line_id
msgid "Manual Line"
msgstr "Apunte manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_model_id
msgid "Manual Model"
msgstr "Modelo manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_id
msgid "Manual Move"
msgstr "Asiento manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_type
msgid "Manual Move Type"
msgstr "Tipo de asiento manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_name
msgid "Manual Name"
msgstr "Nombre manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_original_amount
msgid "Manual Original Amount"
msgstr "Importe original manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_partner_id
msgid "Manual Partner"
msgstr "Partner manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_reference
msgid "Manual Reference"
msgstr "Referencia manual"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Manual operation"
msgstr "Operación manual"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Miscellaneous"
msgstr "Vario"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__name
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Name"
msgstr "Nombre"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Narration"
msgstr "Narración"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "No supense lines are allowed when reconciling"
msgstr "No se permiten líneas en suspenso al conciliar"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Nothing to check"
msgstr "Nada que comprobar"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_all
msgid "Nothing to reconcile"
msgstr "Nada para conciliar"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__partner_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Partner"
msgstr "Empresa"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Payable"
msgstr "A pagar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Purchases"
msgstr "Compras"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Receivable"
msgstr "A cobrar"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.res_partner_account_account_reconcile_act_window
#: model:ir.actions.server,name:account_reconcile_oca.action_reconcile
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__reconcile_id
#: model:ir.ui.menu,name:account_reconcile_oca.account_account_reconcile_menu
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.view_account_list
msgid "Reconcile"
msgstr "Conciliar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data
msgid "Reconcile Data"
msgstr "Fecha de conciliación"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__reconcile_data_info
msgid "Reconcile Data Info"
msgstr "Información de Conciliación de Datos"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_mode
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_journal__reconcile_mode
msgid "Reconcile Mode"
msgstr "Modo de conciliación"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_all
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Reconcile bank statement lines"
msgstr "Conciliar líneas de extracto bancario"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile_data
msgid "Reconcile data model to store user info"
msgstr "Modelo de datos de conciliación para almacenar información de usuarios"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "Reconciled"
msgstr "Conciliado"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Reset reconciliation"
msgstr "Restablecer reconciliación"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Sales"
msgstr "Ventas"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Save"
msgstr "Guardar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Search Journal Items"
msgstr "Buscar apuntes"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Set as Checked"
msgstr "Marcar como revisado"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
msgid "The optional other currency if it is a multi-currency entry."
msgstr "La otra divisa opcional si se trata de una entrada multidivisa."
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "To Check"
msgstr "Para revisar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "To check"
msgstr "Para revisar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Transactions"
msgstr "Transacciones"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Undefined"
msgstr "Indefinido"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Unreconcile"
msgstr "No Conciliado"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__user_id
msgid "User"
msgstr "Usuario"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Validate"
msgstr "Validar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_tree_reconcile_view
msgid "View"
msgstr "Ver"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "View move"
msgstr "Ver asiento"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_journal.py:0
#, python-format
msgid "Well done! Everything has been reconciled"
msgstr "¡Bien hecho! Todo ha sido conciliado"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_move_line.py:0
#, python-format
msgid "You can only reconcile journal items belonging to the same account."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "fully paid"
msgstr "totalmente pagado"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "to check"
msgstr "Para revisar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "will be reduced by"
msgstr "será disminuido por"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "with an open amount"
msgstr "con un importe pendiente"
#, python-format
#~ msgid "You must reconcile information on the same partner"
#~ msgstr "Debe conciliar la información sobre el mismo socio"
#~ msgid "Reset"
#~ msgstr "Restablecer"

View File

@@ -0,0 +1,596 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_reconcile_oca
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-01-01 13:49+0000\n"
"Last-Translator: \"Stéphane Bidoul (ACSONE)\" <stephane.bidoul@acsone.eu>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid ""
".\n"
" <br/>\n"
" You might want to set the invoice as"
msgstr ""
".\n"
" <br/>\n"
" Vous pouvez définir la facture comme"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__account_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Account"
msgstr "Compte"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile
msgid "Account Account Reconcile"
msgstr "Lettrage"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_reconcile_abstract
msgid "Account Reconcile Abstract"
msgstr "Modèle Abstrait de lettrage"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__add_account_move_line_id
msgid "Add Account Move Line"
msgstr "Ajouter une écriture comptable"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_create
msgid "Add Bank Statement Line"
msgstr "Ajouter une ligne de relevé de compte"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Amount"
msgstr "Montant"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Amount in currency"
msgstr "Montant en devise"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_distribution
msgid "Analytic Distribution"
msgstr "Distribution analytique"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_precision
msgid "Analytic Precision"
msgstr "Précision analytique"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Are you sure that the move should be unreconciled?"
msgstr "Êtes-vous sûr que la ligne doit être délettrée ?"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Bank"
msgstr "Banque"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Ligne de relevé bancaire"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_form_view
msgid "Bank reconcile"
msgstr "Lettrage des comptes bancaires"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__can_reconcile
msgid "Can Reconcile"
msgstr "Peut se lettrer"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Cancel"
msgstr "Annuler"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Cash"
msgstr "Espèces"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Chatter"
msgstr "Chatter"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
msgid "Clean"
msgstr "Nettoyer"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_id
msgid "Company"
msgstr "Société"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__company_id
msgid "Company related to this journal"
msgstr "Société liée à ce journal"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Create"
msgstr "Créer"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_date
msgid "Created on"
msgstr "Créé le"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Credit"
msgstr "Crédit"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__currency_id
msgid "Currency"
msgstr "Devise"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__data
msgid "Data"
msgstr "Données"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Date"
msgstr "Date"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Debit"
msgstr "Débit"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__display_name
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__edit
msgid "Edit Move"
msgstr "Modifier la pièce"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__foreign_currency_id
msgid "Foreign Currency"
msgstr "Devise étrangère"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Payable accounts"
msgstr "Depuis comptes fournisseur"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Receivable accounts"
msgstr "Depuis comptes client"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__id
msgid "ID"
msgstr "ID"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Invoice"
msgstr "Facture"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__is_reconciled
msgid "Is Reconciled"
msgstr "Est lettré"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Items"
msgstr "Articles"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_journal
msgid "Journal"
msgstr "Journal"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__currency_id
msgid "Journal Currency"
msgstr "Devise du journal"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Entry"
msgstr "Pièce comptable"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_move_line
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Item"
msgstr "Écriture comptable"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__keep
msgid "Keep Suspense Accounts"
msgstr "Conserver les comptes d'attente"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Keep suspense move lines mode cannot be unreconciled"
msgstr ""
"Conserver les comptes d'attente sur les écritures qui ne peuvent être "
"délettrées"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Label"
msgstr "Libellé"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile____last_update
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_account_id
msgid "Manual Account"
msgstr "Compte manuel"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_amount
msgid "Manual Amount"
msgstr "Montant manuel"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_currency_id
msgid "Manual Currency"
msgstr "Devise manuelle"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_delete
msgid "Manual Delete"
msgstr "Suppression manuelle"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_kind
msgid "Manual Kind"
msgstr "Type manuel"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_line_id
msgid "Manual Line"
msgstr "Écriture manuelle"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_model_id
msgid "Manual Model"
msgstr "Modèle manuel"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_id
msgid "Manual Move"
msgstr "Pièce manuelle"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_type
msgid "Manual Move Type"
msgstr "Type de pièce manuelle"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_name
msgid "Manual Name"
msgstr "Libellé manuel"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_original_amount
msgid "Manual Original Amount"
msgstr "Montant original manuel"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_partner_id
msgid "Manual Partner"
msgstr "Partenaire manuel"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_reference
msgid "Manual Reference"
msgstr "Référence manuelle"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Manual operation"
msgstr "Opération manuelle"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Miscellaneous"
msgstr "Divers"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__name
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Name"
msgstr "Nom"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Narration"
msgstr "Commentaire"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "No supense lines are allowed when reconciling"
msgstr "Aucune ligne d'attente n'est autorisée lors du lettrage"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Nothing to check"
msgstr "Rien à vérifier"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_all
msgid "Nothing to reconcile"
msgstr "Rien à lettrer"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__partner_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Partner"
msgstr "Partenaire"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Payable"
msgstr "Compte fournisseur"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Purchases"
msgstr "Achats"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Receivable"
msgstr "Compte client"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.res_partner_account_account_reconcile_act_window
#: model:ir.actions.server,name:account_reconcile_oca.action_reconcile
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__reconcile_id
#: model:ir.ui.menu,name:account_reconcile_oca.account_account_reconcile_menu
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.view_account_list
msgid "Reconcile"
msgstr "Lettrer"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data
msgid "Reconcile Data"
msgstr "Données de lettrage"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__reconcile_data_info
msgid "Reconcile Data Info"
msgstr "Informations de données de lettrage"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_mode
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_journal__reconcile_mode
msgid "Reconcile Mode"
msgstr "Mode de lettrage"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_all
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Reconcile bank statement lines"
msgstr "Lettrer les lignes de relevé de compte"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile_data
msgid "Reconcile data model to store user info"
msgstr ""
"Modèle de données de lettrage pour stocker les informations relatives à "
"l'utilisateur"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "Reconciled"
msgstr "Lettré"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Reset reconciliation"
msgstr "Réinitialiser le rapprochement"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Sales"
msgstr "Ventes"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Save"
msgstr "Sauvegarder"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Search Journal Items"
msgstr "Rechercher des écritures comptables"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Set as Checked"
msgstr "Marquer comme vérifié"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
msgid "The optional other currency if it is a multi-currency entry."
msgstr "L'autre devise facultative s'il s'agit d'une entrée multidevise."
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "To Check"
msgstr "À vérifier"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "To check"
msgstr "À vérifier"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Transactions"
msgstr "Transactions"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Undefined"
msgstr "Non défini"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Unreconcile"
msgstr "Délettrer"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__user_id
msgid "User"
msgstr "Utilisateur"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Validate"
msgstr "Valider"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_tree_reconcile_view
msgid "View"
msgstr "Voir"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "View move"
msgstr "Voir la pièce"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_journal.py:0
#, python-format
msgid "Well done! Everything has been reconciled"
msgstr "Bravo ! Tout a été lettré"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_move_line.py:0
#, python-format
msgid "You can only reconcile journal items belonging to the same account."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "fully paid"
msgstr "entièrement payé"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "to check"
msgstr "à vérifier"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "will be reduced by"
msgstr "sera réduite de"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "with an open amount"
msgstr "avec un montant ouvert"
#~ msgid "Reset"
#~ msgstr "Réinitialiser"

View File

@@ -0,0 +1,590 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_reconcile_oca
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-05-25 13:09+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.17\n"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid ""
".\n"
" <br/>\n"
" You might want to set the invoice as"
msgstr ""
".\n"
" <br/>\n"
" Možda želite postaviti račun kao"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__account_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Account"
msgstr "Konto"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile
msgid "Account Account Reconcile"
msgstr "Zatvaranje konta"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_reconcile_abstract
msgid "Account Reconcile Abstract"
msgstr "Apstraktno zatvaranje konta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__add_account_move_line_id
msgid "Add Account Move Line"
msgstr "Dodaj stavku temeljnice"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_create
msgid "Add Bank Statement Line"
msgstr "Dodaj stavku izvoda"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Amount"
msgstr "Iznos"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Amount in currency"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_distribution
msgid "Analytic Distribution"
msgstr "Analitička distribucija"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_precision
msgid "Analytic Precision"
msgstr "Preciznost analitike"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Are you sure that the move should be unreconciled?"
msgstr "Jeste li sigurni da temeljnica treba biti rastvorena?"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Bank"
msgstr "Banka"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Stavka izvoda banke"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_form_view
msgid "Bank reconcile"
msgstr "Zatvaranje banke"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__can_reconcile
msgid "Can Reconcile"
msgstr "Može zatvoriti"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Cancel"
msgstr "Otkaži"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Cash"
msgstr "Gotovina"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Chatter"
msgstr "Razgovor"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
msgid "Clean"
msgstr "Očisti"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_id
msgid "Company"
msgstr "Tvrtka"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__company_id
msgid "Company related to this journal"
msgstr "Tvrtka povezana sa ovim dnevnikom"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Create"
msgstr "Kreiraj"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Credit"
msgstr "Potražuje"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__data
msgid "Data"
msgstr "Podaci"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Date"
msgstr "Datum"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Debit"
msgstr "Duguje"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__display_name
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__edit
msgid "Edit Move"
msgstr "Uredi temeljnicu"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__foreign_currency_id
msgid "Foreign Currency"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Payable accounts"
msgstr "Iz konta dugovanja"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Receivable accounts"
msgstr "Iz konta potraživanja"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__id
msgid "ID"
msgstr "ID"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Invoice"
msgstr "Račun"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__is_reconciled
msgid "Is Reconciled"
msgstr "Je zatvoren"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Items"
msgstr "Stavke"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_journal
msgid "Journal"
msgstr "Dnevnik"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__currency_id
msgid "Journal Currency"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Entry"
msgstr "Zapis dnevnika"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_move_line
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Item"
msgstr "Stavka dnevnika"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__keep
msgid "Keep Suspense Accounts"
msgstr ""
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Keep suspense move lines mode cannot be unreconciled"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Label"
msgstr "Natpis"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile____last_update
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data____last_update
msgid "Last Modified on"
msgstr "Zadnje modificirano"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_date
msgid "Last Updated on"
msgstr "Zadnje ažuriranje"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_account_id
msgid "Manual Account"
msgstr "Ručni konto"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_amount
msgid "Manual Amount"
msgstr "Ručni iznos"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_currency_id
msgid "Manual Currency"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_delete
msgid "Manual Delete"
msgstr "Ručno brisanje"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_kind
msgid "Manual Kind"
msgstr "Vrsta ručne obrade"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_line_id
msgid "Manual Line"
msgstr "Stavka ručne obrade"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_model_id
msgid "Manual Model"
msgstr "Model ručne obrade"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_id
msgid "Manual Move"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_type
msgid "Manual Move Type"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_name
msgid "Manual Name"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_original_amount
msgid "Manual Original Amount"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_partner_id
msgid "Manual Partner"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_reference
msgid "Manual Reference"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Manual operation"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Miscellaneous"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__name
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Name"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Narration"
msgstr ""
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "No supense lines are allowed when reconciling"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Nothing to check"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_all
msgid "Nothing to reconcile"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__partner_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Partner"
msgstr "Partner"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Payable"
msgstr "Za plaćanje"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Purchases"
msgstr "Nabave"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Receivable"
msgstr "Za naplatu"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.res_partner_account_account_reconcile_act_window
#: model:ir.actions.server,name:account_reconcile_oca.action_reconcile
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__reconcile_id
#: model:ir.ui.menu,name:account_reconcile_oca.account_account_reconcile_menu
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.view_account_list
msgid "Reconcile"
msgstr "Zatvori"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data
msgid "Reconcile Data"
msgstr "Podaci zatvaranja"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__reconcile_data_info
msgid "Reconcile Data Info"
msgstr "Info podataka o zatvaranju"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_mode
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_journal__reconcile_mode
msgid "Reconcile Mode"
msgstr "Način zatvaranja"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_all
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Reconcile bank statement lines"
msgstr "Zatvori stavke izvoda"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile_data
msgid "Reconcile data model to store user info"
msgstr "Model podataka o zatvaranju za pohranu korisničkih informacija"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "Reconciled"
msgstr "Zatvoreno"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Reset reconciliation"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Sales"
msgstr "Prodaje"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Save"
msgstr "Spremi"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Search Journal Items"
msgstr "Pretraži stavke dnevnika"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Set as Checked"
msgstr "Postavi kao Provjereno"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
msgid "The optional other currency if it is a multi-currency entry."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "To Check"
msgstr "Za provjeru"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "To check"
msgstr "Za provjeru"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Transactions"
msgstr "Transakcije"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Undefined"
msgstr "Nedefinirano"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Unreconcile"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__user_id
msgid "User"
msgstr "Korisnik"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Validate"
msgstr "Potvrdi"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_tree_reconcile_view
msgid "View"
msgstr "Pogled"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "View move"
msgstr "Pregledaj temeljnicu"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_journal.py:0
#, python-format
msgid "Well done! Everything has been reconciled"
msgstr "Odlično! Sve je pozatvarano"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_move_line.py:0
#, python-format
msgid "You can only reconcile journal items belonging to the same account."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "fully paid"
msgstr "potpuno plaćeno"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "to check"
msgstr "za provjeru"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "will be reduced by"
msgstr "će biti umanjeno za"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "with an open amount"
msgstr "pa početnim iznosom"

View File

@@ -0,0 +1,591 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_reconcile_oca
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-28 17:34+0000\n"
"Last-Translator: Yung-Wa <yw.ng@onestein.nl>\n"
"Language-Team: none\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid ""
".\n"
" <br/>\n"
" You might want to set the invoice as"
msgstr ""
".\n"
" <br/>\n"
" Je kunt de factuur instellen als"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__account_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Account"
msgstr "Rekening"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile
msgid "Account Account Reconcile"
msgstr "Boekhouding Rekening Aflettering"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_reconcile_abstract
msgid "Account Reconcile Abstract"
msgstr "Rekening Aflettering Samenvatting"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__add_account_move_line_id
msgid "Add Account Move Line"
msgstr "Toevoegen Boekingsregel"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_create
msgid "Add Bank Statement Line"
msgstr "Toevoegen Bankafschriftregel"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Amount"
msgstr "Bedrag"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Amount in currency"
msgstr "Valutabedrag"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_distribution
msgid "Analytic Distribution"
msgstr "Analytische Verdeling"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_precision
msgid "Analytic Precision"
msgstr "Analytische Precisie"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Are you sure that the move should be unreconciled?"
msgstr "Weet je zeker dat de boeking niet moet worden afgeletterd?"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Bank"
msgstr "Bank"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Bankafschriftregel"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_form_view
msgid "Bank reconcile"
msgstr "Bank aflettering"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__can_reconcile
msgid "Can Reconcile"
msgstr "Kan Afletteren"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Cancel"
msgstr "Annuleer"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Cash"
msgstr "Contant"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Chatter"
msgstr "Logging"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
msgid "Clean"
msgstr "Opschonen"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_id
msgid "Company"
msgstr "Bedrijf"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__company_id
msgid "Company related to this journal"
msgstr "Bedrijf gerelateerd aan dit dagboek"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Create"
msgstr "Aanmaken"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_uid
msgid "Created by"
msgstr "Aangemaakt door"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_date
msgid "Created on"
msgstr "Aangemaakt op"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Credit"
msgstr "Credit"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__data
msgid "Data"
msgstr "Data"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Date"
msgstr "Datum"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Debit"
msgstr "Debet"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__display_name
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__display_name
msgid "Display Name"
msgstr "Weergavenaam"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__edit
msgid "Edit Move"
msgstr "Bewerk Boeking"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__foreign_currency_id
msgid "Foreign Currency"
msgstr "Vreemde valuta"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Payable accounts"
msgstr "Van Crediteurenrekeningen"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Receivable accounts"
msgstr "Van debiteurenrekeningen"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__id
msgid "ID"
msgstr "ID"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Invoice"
msgstr "Factuur"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__is_reconciled
msgid "Is Reconciled"
msgstr "Is Afgeletterd"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Items"
msgstr "Regels"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_journal
msgid "Journal"
msgstr "Dagboek"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__currency_id
msgid "Journal Currency"
msgstr "Dagboek Valuta"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Entry"
msgstr "Boeking"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_move_line
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Item"
msgstr "Boekingsregel"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__keep
msgid "Keep Suspense Accounts"
msgstr "Tussenrekeningen aanhouden"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Keep suspense move lines mode cannot be unreconciled"
msgstr ""
"De modes, houd tussenrekening boekingsregels, kan niet ongedaan worden "
"gemaakt"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Label"
msgstr "Label"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile____last_update
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data____last_update
msgid "Last Modified on"
msgstr "Laatst gewijzigd op"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_uid
msgid "Last Updated by"
msgstr "Laatst gewijzigd door"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_date
msgid "Last Updated on"
msgstr "Laatst gewijzigd op"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_account_id
msgid "Manual Account"
msgstr "Handmatige Rekening"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_amount
msgid "Manual Amount"
msgstr "Handmatige Bedrag"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_currency_id
msgid "Manual Currency"
msgstr "Handmatige Valuta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_delete
msgid "Manual Delete"
msgstr "Handmatig Verwijderen"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_kind
msgid "Manual Kind"
msgstr "Handmatige Soort"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_line_id
msgid "Manual Line"
msgstr "Handmatige Regel"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_model_id
msgid "Manual Model"
msgstr "Handmatige Model"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_id
msgid "Manual Move"
msgstr "Handmatige Boeking"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_type
msgid "Manual Move Type"
msgstr "Handmatige Boekingstype"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_name
msgid "Manual Name"
msgstr "Handmatige Naam"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_original_amount
msgid "Manual Original Amount"
msgstr "Handmatige Origineel Bedrag"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_partner_id
msgid "Manual Partner"
msgstr "Handmatige Partner"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_reference
msgid "Manual Reference"
msgstr "Handmatige Referentie"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Manual operation"
msgstr "Handmatige Verwerking"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Miscellaneous"
msgstr "Diverse"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__name
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Name"
msgstr "Naam"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Narration"
msgstr "Notitie"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "No supense lines are allowed when reconciling"
msgstr "Bij aflettering zijn tussenrekening regels niet toegestaan"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Nothing to check"
msgstr "Niets te controleren"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_all
msgid "Nothing to reconcile"
msgstr "Niet af te letteren"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__partner_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Partner"
msgstr "Partner"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Payable"
msgstr "Crediteuren"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Purchases"
msgstr "Inkopen"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Receivable"
msgstr "Debiteuren"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.res_partner_account_account_reconcile_act_window
#: model:ir.actions.server,name:account_reconcile_oca.action_reconcile
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__reconcile_id
#: model:ir.ui.menu,name:account_reconcile_oca.account_account_reconcile_menu
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.view_account_list
msgid "Reconcile"
msgstr "Afletteren"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data
msgid "Reconcile Data"
msgstr "Afletteringsdata"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__reconcile_data_info
msgid "Reconcile Data Info"
msgstr "Afletteringsdata informatie"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_mode
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_journal__reconcile_mode
msgid "Reconcile Mode"
msgstr "Afletteringsmodus"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_all
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Reconcile bank statement lines"
msgstr "Bankafschriftregels afletteren"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile_data
msgid "Reconcile data model to store user info"
msgstr "Afletteringsmodel aanpassen om gebruikersinfo op te slaan"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "Reconciled"
msgstr "Afgeletterd"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Reset reconciliation"
msgstr "Herstel aflettering"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Sales"
msgstr "Verkoop"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Save"
msgstr "Opslaan"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Search Journal Items"
msgstr "Zoek in boekingsregels"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Set as Checked"
msgstr "Stel in als Gecontroleerd"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
msgid "The optional other currency if it is a multi-currency entry."
msgstr "De optionele andere valuta als het invoer in meerdere valuta is."
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "To Check"
msgstr "Te Controleren"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "To check"
msgstr "Te controleren"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Transactions"
msgstr "Transacties"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Undefined"
msgstr "Ongedefinieerd"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Unreconcile"
msgstr "Afletteren ongedaan maken"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__user_id
msgid "User"
msgstr "Gebruiker"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Validate"
msgstr "Bevestig"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_tree_reconcile_view
msgid "View"
msgstr "Weergave"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "View move"
msgstr "Boeking weergeven"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_journal.py:0
#, python-format
msgid "Well done! Everything has been reconciled"
msgstr "Goed gedaan! Alles is afgeletterd"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_move_line.py:0
#, python-format
msgid "You can only reconcile journal items belonging to the same account."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "fully paid"
msgstr "volledig betaald"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "to check"
msgstr "Te controleren"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "will be reduced by"
msgstr "wordt verminderd met"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "with an open amount"
msgstr "met een open bedrag"

View File

@@ -0,0 +1,596 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_reconcile_oca
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-12-28 23:54+0000\n"
"Last-Translator: Adriano Prado <adrianojprado@gmail.com>\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid ""
".\n"
" <br/>\n"
" You might want to set the invoice as"
msgstr ""
".\n"
" <br/>\n"
" Voce pode querer definir a fatura como"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__account_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Account"
msgstr "Conta"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile
msgid "Account Account Reconcile"
msgstr "Reconciliação de conta"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_reconcile_abstract
msgid "Account Reconcile Abstract"
msgstr "Resumo de reconciliação de conta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__add_account_move_line_id
msgid "Add Account Move Line"
msgstr "Add Linha de Movimentação da Conta"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_create
msgid "Add Bank Statement Line"
msgstr "Add Linha Extrato Bancário"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Amount"
msgstr "Valor"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Amount in currency"
msgstr "Valor na moeda"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_distribution
msgid "Analytic Distribution"
msgstr "Distribuição Analítica"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_precision
msgid "Analytic Precision"
msgstr "Precisão Analítica"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Are you sure that the move should be unreconciled?"
msgstr "Tem certeza de que a mudança deve ser irreconciliável?"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Bank"
msgstr "Banco"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Linha Extrato Banco"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_form_view
msgid "Bank reconcile"
msgstr "Reconciliar Banco"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__can_reconcile
msgid "Can Reconcile"
msgstr "Pode Reconciliar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Cancel"
msgstr "Cancelar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Cash"
msgstr "Dinheiro"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Chatter"
msgstr "Conversa"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
msgid "Clean"
msgstr "Limpar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_id
msgid "Company"
msgstr "Empresa"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__company_id
msgid "Company related to this journal"
msgstr "Empresa relacionada a este diário"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Create"
msgstr "Criar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_uid
msgid "Created by"
msgstr "Criado por"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_date
msgid "Created on"
msgstr "Criado em"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Credit"
msgstr "Crédito"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__currency_id
msgid "Currency"
msgstr "Moeda"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__data
msgid "Data"
msgstr "Dados"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Date"
msgstr "Data"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Debit"
msgstr "Débito"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__display_name
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__display_name
msgid "Display Name"
msgstr "Nome Exibição"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__edit
msgid "Edit Move"
msgstr "Editar Movimento"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__foreign_currency_id
msgid "Foreign Currency"
msgstr "Moeda Estrangeira"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Payable accounts"
msgstr "De contas a Pagar comerciais"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Receivable accounts"
msgstr "De contas a Receber comerciais"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__id
msgid "ID"
msgstr "ID"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Invoice"
msgstr "Fatura"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__is_reconciled
msgid "Is Reconciled"
msgstr "Reconciliado"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Items"
msgstr "Itens"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_journal
msgid "Journal"
msgstr "Diário"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__currency_id
msgid "Journal Currency"
msgstr "Moeda Diário"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Entry"
msgstr "Entrada Diário"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_move_line
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Item"
msgstr "Item Diário"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__keep
msgid "Keep Suspense Accounts"
msgstr "Manter contas suspensas"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Keep suspense move lines mode cannot be unreconciled"
msgstr "O modo Manter suspenso linhas de movimento não pode ser irreconciliado"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Label"
msgstr "Rótulo"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile____last_update
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data____last_update
msgid "Last Modified on"
msgstr "Última modificação em"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_uid
msgid "Last Updated by"
msgstr "Última atualização por"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_date
msgid "Last Updated on"
msgstr "Última atualização em"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_account_id
msgid "Manual Account"
msgstr "Conta Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_amount
msgid "Manual Amount"
msgstr "Valor Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_currency_id
msgid "Manual Currency"
msgstr "Moeda Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_delete
msgid "Manual Delete"
msgstr "Exclusão Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_kind
msgid "Manual Kind"
msgstr "Tipo Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_line_id
msgid "Manual Line"
msgstr "Linha Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_model_id
msgid "Manual Model"
msgstr "Modelo Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_id
msgid "Manual Move"
msgstr "Movimento Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_type
msgid "Manual Move Type"
msgstr "Tipo Movimento Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_name
msgid "Manual Name"
msgstr "Nome Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_original_amount
msgid "Manual Original Amount"
msgstr "Valor Original Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_partner_id
msgid "Manual Partner"
msgstr "Parceiro Manual"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_reference
msgid "Manual Reference"
msgstr "Referencia Manual"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Manual operation"
msgstr "Operação Manual"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Miscellaneous"
msgstr "Outros"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__name
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Name"
msgstr "Nome"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Narration"
msgstr "Narração"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "No supense lines are allowed when reconciling"
msgstr "Nenhuma linha supensa é permitida ao reconciliar"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Nothing to check"
msgstr "Nada para verificar"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_all
msgid "Nothing to reconcile"
msgstr "Nada para Reconciliar"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__partner_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Partner"
msgstr "Parceiro"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Payable"
msgstr "Pagavel"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Purchases"
msgstr "Compras"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Receivable"
msgstr "Recebíveis"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.res_partner_account_account_reconcile_act_window
#: model:ir.actions.server,name:account_reconcile_oca.action_reconcile
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__reconcile_id
#: model:ir.ui.menu,name:account_reconcile_oca.account_account_reconcile_menu
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.view_account_list
msgid "Reconcile"
msgstr "Reconciliar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data
msgid "Reconcile Data"
msgstr "Reconciliar dados"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__reconcile_data_info
msgid "Reconcile Data Info"
msgstr "Reconciliar Informações dos Dados"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_mode
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_journal__reconcile_mode
msgid "Reconcile Mode"
msgstr "Modo de reconciliação"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_all
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Reconcile bank statement lines"
msgstr "Reconciliar linhas de extrato bancário"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile_data
msgid "Reconcile data model to store user info"
msgstr "Reconciliar modelo de dados para armazenar informações do usuário"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "Reconciled"
msgstr "Reconciliado"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Reset reconciliation"
msgstr "Redefinir Reconciliação"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Sales"
msgstr "Vendas"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Save"
msgstr "Salvar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Search Journal Items"
msgstr "Procurar Itens do Diário"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Set as Checked"
msgstr "Def. como Verificado"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
msgid "The optional other currency if it is a multi-currency entry."
msgstr "A outra moeda opcional se for uma entrada em várias moedas."
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "To Check"
msgstr "Para Verificar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "To check"
msgstr "Para Verificar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Transactions"
msgstr "Transações"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Undefined"
msgstr "Indefinido"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Unreconcile"
msgstr "Desconciliar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__user_id
msgid "User"
msgstr "Usuário"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Validate"
msgstr "Validar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_tree_reconcile_view
msgid "View"
msgstr "Ver"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "View move"
msgstr "Ver movimento"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_journal.py:0
#, python-format
msgid "Well done! Everything has been reconciled"
msgstr "Bom trabalho! Tudo foi reconciliado"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_move_line.py:0
#, python-format
msgid "You can only reconcile journal items belonging to the same account."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "fully paid"
msgstr "totalmente pago"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "to check"
msgstr "para verificar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "will be reduced by"
msgstr "será reduzido em"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "with an open amount"
msgstr "com um valor em aberto"
#, python-format
#~ msgid "You must reconcile information on the same partner"
#~ msgstr "Você deve reconciliar informações sobre o mesmo parceiro"
#~ msgid "Reset"
#~ msgstr "Reiniciar"

View File

@@ -0,0 +1,589 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_reconcile_oca
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-10-28 13:19+0000\n"
"Last-Translator: jakobkrabbe <jakob@syscare.se>\n"
"Language-Team: none\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid ""
".\n"
" <br/>\n"
" You might want to set the invoice as"
msgstr ""
".\n"
" <br/>\n"
" Du kanske vill ställa in fakturan som"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__account_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Account"
msgstr "Konto"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile
msgid "Account Account Reconcile"
msgstr "Kontoavstämning"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_reconcile_abstract
msgid "Account Reconcile Abstract"
msgstr "Sammanfattning av kontoavstämning"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__add_account_move_line_id
msgid "Add Account Move Line"
msgstr "Lägg till konto, move_line"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_create
msgid "Add Bank Statement Line"
msgstr "Lägg till kontoutdragsrad"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Amount"
msgstr "Belopp"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Amount in currency"
msgstr "Belopp i valuta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_distribution
msgid "Analytic Distribution"
msgstr "Analytisk distribution"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_precision
msgid "Analytic Precision"
msgstr "Analytisk precision"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Are you sure that the move should be unreconciled?"
msgstr "Är du säker på att flytten borde vara oförenlig?"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Bank"
msgstr "Bank"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Bankkontoutdragsrad"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_form_view
msgid "Bank reconcile"
msgstr "Bankavstämning"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__can_reconcile
msgid "Can Reconcile"
msgstr "Kan förenas"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Cancel"
msgstr "Avbryt"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Cash"
msgstr "Cash"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Chatter"
msgstr "Chatter"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
msgid "Clean"
msgstr "Rensa"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_id
msgid "Company"
msgstr "Företag"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__company_id
msgid "Company related to this journal"
msgstr "Företag relaterad till denna journalen"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Create"
msgstr "Skapa"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_uid
msgid "Created by"
msgstr "Skapad av"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_date
msgid "Created on"
msgstr "Skapad den"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Credit"
msgstr "Kreditera"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__data
msgid "Data"
msgstr "Data"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Date"
msgstr "Datum"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Debit"
msgstr "Debitera"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__display_name
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__display_name
msgid "Display Name"
msgstr "Visningsnamn"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__edit
msgid "Edit Move"
msgstr "Redigera Move"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__foreign_currency_id
msgid "Foreign Currency"
msgstr "Utländsk valuta"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Payable accounts"
msgstr "Från Leverantörsskulder"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Receivable accounts"
msgstr "Från kundfordringar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__id
msgid "ID"
msgstr "ID"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Invoice"
msgstr "Faktura"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__is_reconciled
msgid "Is Reconciled"
msgstr "Är försonad"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Items"
msgstr "Föremål"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_journal
msgid "Journal"
msgstr "Dagbok"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__currency_id
msgid "Journal Currency"
msgstr "Dagboksvaluta"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Entry"
msgstr "Dagboksanteckning"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_move_line
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Item"
msgstr "Dagboksanteckning"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__keep
msgid "Keep Suspense Accounts"
msgstr "Håll avstängningskonton"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Keep suspense move lines mode cannot be unreconciled"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Label"
msgstr "Etikett"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile____last_update
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data____last_update
msgid "Last Modified on"
msgstr "Senast ändrad den"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_uid
msgid "Last Updated by"
msgstr "Senast uppdaterad den"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_date
msgid "Last Updated on"
msgstr "Senast uppdaterad på"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_account_id
msgid "Manual Account"
msgstr "Manuellt konto"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_amount
msgid "Manual Amount"
msgstr "Manuellt belopp"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_currency_id
msgid "Manual Currency"
msgstr "Manuell valuta"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_delete
msgid "Manual Delete"
msgstr "Manuell radering"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_kind
msgid "Manual Kind"
msgstr "Manuell typ"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_line_id
msgid "Manual Line"
msgstr "Manuell Linje"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_model_id
msgid "Manual Model"
msgstr "Manuell modell"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_id
msgid "Manual Move"
msgstr "Manuell Move"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_type
msgid "Manual Move Type"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_name
msgid "Manual Name"
msgstr "Manuellt namn"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_original_amount
msgid "Manual Original Amount"
msgstr "Manuell ursprunglig summa"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_partner_id
msgid "Manual Partner"
msgstr "Manuell partner"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_reference
msgid "Manual Reference"
msgstr "Manuell referens"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Manual operation"
msgstr "Manuell operation"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Miscellaneous"
msgstr "Diverse"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__name
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Name"
msgstr "Namn"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Narration"
msgstr "Berättande"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "No supense lines are allowed when reconciling"
msgstr "Inga supensrader är tillåtna vid avstämning"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Nothing to check"
msgstr "Inget att kontrollera"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_all
msgid "Nothing to reconcile"
msgstr "Inget att förena"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__partner_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Partner"
msgstr "Partner"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Payable"
msgstr "Betalbar"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Purchases"
msgstr "Inköp"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Receivable"
msgstr "Mottagningsbar"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.res_partner_account_account_reconcile_act_window
#: model:ir.actions.server,name:account_reconcile_oca.action_reconcile
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__reconcile_id
#: model:ir.ui.menu,name:account_reconcile_oca.account_account_reconcile_menu
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.view_account_list
msgid "Reconcile"
msgstr "Avstämma"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data
msgid "Reconcile Data"
msgstr "Avstämning av data"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__reconcile_data_info
msgid "Reconcile Data Info"
msgstr "Avstämma datainfo"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_mode
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_journal__reconcile_mode
msgid "Reconcile Mode"
msgstr "Avstämningsläge"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_all
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Reconcile bank statement lines"
msgstr "Stämma av kontoutdragsrader"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile_data
msgid "Reconcile data model to store user info"
msgstr "Avstämma datamodell för att lagra användarinformation"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "Reconciled"
msgstr "Avstämnd"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Reset reconciliation"
msgstr "Återställ avstämning"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Sales"
msgstr "Försäljning"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Save"
msgstr "Spara"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Search Journal Items"
msgstr "Sök journalföremål"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Set as Checked"
msgstr "Ställ in som markerad"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
msgid "The optional other currency if it is a multi-currency entry."
msgstr "Den valfria andra valutan om det är en post i flera valutor."
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "To Check"
msgstr "Att kontrollera"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "To check"
msgstr "Att kontrollera"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Transactions"
msgstr "Transaktioner"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Undefined"
msgstr "Odefinierad"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Unreconcile"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__user_id
msgid "User"
msgstr "Användare"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Validate"
msgstr "Bekräfta"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_tree_reconcile_view
msgid "View"
msgstr "Vy"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "View move"
msgstr "Visa move"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_journal.py:0
#, python-format
msgid "Well done! Everything has been reconciled"
msgstr "Bra gjort! Allt har blivit avstämmt"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_move_line.py:0
#, python-format
msgid "You can only reconcile journal items belonging to the same account."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "fully paid"
msgstr "fullt betald"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "to check"
msgstr "att kontrollera"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "will be reduced by"
msgstr "kommer att reduceras med"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "with an open amount"
msgstr "med ett valfritt belopp"

View File

@@ -0,0 +1,589 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_reconcile_oca
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-06-13 18:09+0000\n"
"Last-Translator: Ediz Duman <neps1192@gmail.com>\n"
"Language-Team: none\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid ""
".\n"
" <br/>\n"
" You might want to set the invoice as"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__account_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Account"
msgstr "Hesap"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile
msgid "Account Account Reconcile"
msgstr "Hesap Hesap Mutabakatı"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_reconcile_abstract
msgid "Account Reconcile Abstract"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__add_account_move_line_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__add_account_move_line_id
msgid "Add Account Move Line"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_create
msgid "Add Bank Statement Line"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Amount"
msgstr "Tutar"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Amount in currency"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_distribution
msgid "Analytic Distribution"
msgstr "Analitik Dağıtım"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__analytic_precision
msgid "Analytic Precision"
msgstr "Analitik Hassasiyet"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Are you sure that the move should be unreconciled?"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Bank"
msgstr "Banka"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Banka Ekstre Satırı"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_form_view
msgid "Bank reconcile"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__can_reconcile
msgid "Can Reconcile"
msgstr "Uzlaşabilir"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Cancel"
msgstr "İptal"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Cash"
msgstr "Nakit"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Chatter"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
msgid "Clean"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_id
msgid "Company"
msgstr "Firma"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__company_id
msgid "Company related to this journal"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Create"
msgstr "Oluştur"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_uid
msgid "Created by"
msgstr "Oluşturan"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__create_date
msgid "Created on"
msgstr "Oluşturuldu"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Credit"
msgstr "Alacak"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__company_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__currency_id
msgid "Currency"
msgstr "Para Birimi"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__data
msgid "Data"
msgstr "Veri"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Date"
msgstr "Tarih"
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Debit"
msgstr "Borç"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__display_name
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__display_name
msgid "Display Name"
msgstr "Ad Görünümü"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__edit
msgid "Edit Move"
msgstr "Hareketi Düzenle"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__foreign_currency_id
msgid "Foreign Currency"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Payable accounts"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "From Trade Receivable accounts"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__id
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__id
msgid "ID"
msgstr "ID"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Invoice"
msgstr "Fatura"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__is_reconciled
msgid "Is Reconciled"
msgstr "Uzlaştırıldı mı"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Items"
msgstr "Öğe"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_journal
msgid "Journal"
msgstr "Yevmiye"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__currency_id
msgid "Journal Currency"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Entry"
msgstr "Yevmiye Girişi"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_move_line
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Journal Item"
msgstr "Yevmiye Öğesi"
#. module: account_reconcile_oca
#: model:ir.model.fields.selection,name:account_reconcile_oca.selection__account_journal__reconcile_mode__keep
msgid "Keep Suspense Accounts"
msgstr "Askı Hesapları Tutun"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Keep suspense move lines mode cannot be unreconciled"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#, python-format
msgid "Label"
msgstr "Etiket"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile____last_update
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data____last_update
msgid "Last Modified on"
msgstr "Son Değiştirilme"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_uid
msgid "Last Updated by"
msgstr "Son Güncelleyen"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__write_date
msgid "Last Updated on"
msgstr "Son Güncelleme"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_account_id
msgid "Manual Account"
msgstr "Manuel Hesap"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_amount
msgid "Manual Amount"
msgstr "Manuel Tutar"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_currency_id
msgid "Manual Currency"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_delete
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_delete
msgid "Manual Delete"
msgstr "Manuel Silme"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_kind
msgid "Manual Kind"
msgstr "Manuel Tür"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_line_id
msgid "Manual Line"
msgstr "Manuel Satır"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_model_id
msgid "Manual Model"
msgstr "Manuel Model"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_id
msgid "Manual Move"
msgstr "Manuel Hareket"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_move_type
msgid "Manual Move Type"
msgstr "Manuel Hareket Türü"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_name
msgid "Manual Name"
msgstr "Manuel Adı"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_original_amount
msgid "Manual Original Amount"
msgstr "Manuel Orijinal Miktarı"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_partner_id
msgid "Manual Partner"
msgstr "Manuel İş Ortağı"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__manual_reference
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__manual_reference
msgid "Manual Reference"
msgstr "Manuel Referans"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Manual operation"
msgstr "Manuel İşlem"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Miscellaneous"
msgstr "Çeşitli"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__name
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Name"
msgstr "Adı"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Narration"
msgstr ""
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "No supense lines are allowed when reconciling"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Nothing to check"
msgstr "Kontrol edilecek bir şey yok"
#. module: account_reconcile_oca
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile
#: model_terms:ir.actions.act_window,help:account_reconcile_oca.action_bank_statement_line_reconcile_all
msgid "Nothing to reconcile"
msgstr ""
#. module: account_reconcile_oca
#. odoo-javascript
#: code:addons/account_reconcile_oca/static/src/xml/reconcile.xml:0
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__partner_id
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#, python-format
msgid "Partner"
msgstr "İş Ortağı"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Payable"
msgstr "Borç"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Purchases"
msgstr "Satınalma"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Receivable"
msgstr "Alacak"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.account_account_reconcile_act_window
#: model:ir.actions.act_window,name:account_reconcile_oca.res_partner_account_account_reconcile_act_window
#: model:ir.actions.server,name:account_reconcile_oca.action_reconcile
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__reconcile_id
#: model:ir.ui.menu,name:account_reconcile_oca.account_account_reconcile_menu
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_account_reconcile_form_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.view_account_list
msgid "Reconcile"
msgstr "Uzlaştırma"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data
msgid "Reconcile Data"
msgstr "Uzlaştırma Verisi"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_data_info
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_reconcile_abstract__reconcile_data_info
msgid "Reconcile Data Info"
msgstr "Uzlaştırma Veri Bilgisi"
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_bank_statement_line__reconcile_mode
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_journal__reconcile_mode
msgid "Reconcile Mode"
msgstr "Uzlaştırma Modu"
#. module: account_reconcile_oca
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_move_view_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_all
#: model:ir.actions.act_window,name:account_reconcile_oca.action_bank_statement_line_reconcile_to_check
msgid "Reconcile bank statement lines"
msgstr "Banka ekstresi satırlarını uzlaştırma"
#. module: account_reconcile_oca
#: model:ir.model,name:account_reconcile_oca.model_account_account_reconcile_data
msgid "Reconcile data model to store user info"
msgstr "Kullanıcı bilgilerini depolamak için veri modelini uzlaştırın"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "Reconciled"
msgstr "Uzlaştırılan"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Reset reconciliation"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Sales"
msgstr "Satış"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_add_view
msgid "Save"
msgstr "Kaydet"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_search_reconcile_view
msgid "Search Journal Items"
msgstr "Yemiye Öğelerini Ara"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Set as Checked"
msgstr "Gözden Geçirme İşaretlendi"
#. module: account_reconcile_oca
#: model:ir.model.fields,help:account_reconcile_oca.field_account_bank_statement_line__foreign_currency_id
msgid "The optional other currency if it is a multi-currency entry."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "To Check"
msgstr "Kontrol Edilecek"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_reconcile_view
msgid "To check"
msgstr "Kontrol edilecek"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "Transactions"
msgstr "İşlemler"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_bank_statement_line.py:0
#, python-format
msgid "Undefined"
msgstr "Tanımsız"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Unreconcile"
msgstr ""
#. module: account_reconcile_oca
#: model:ir.model.fields,field_description:account_reconcile_oca.field_account_account_reconcile_data__user_id
msgid "User"
msgstr "Kullanıcı"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "Validate"
msgstr "Doğrulama"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_move_line_tree_reconcile_view
msgid "View"
msgstr "Görme"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "View move"
msgstr "Hareketi görüntüle"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_journal.py:0
#, python-format
msgid "Well done! Everything has been reconciled"
msgstr "Tebrikler! Her şey uzlaştırldı"
#. module: account_reconcile_oca
#. odoo-python
#: code:addons/account_reconcile_oca/models/account_move_line.py:0
#, python-format
msgid "You can only reconcile journal items belonging to the same account."
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "fully paid"
msgstr "tamamen ödenmiş"
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.account_journal_dashboard_kanban_view
msgid "to check"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "will be reduced by"
msgstr ""
#. module: account_reconcile_oca
#: model_terms:ir.ui.view,arch_db:account_reconcile_oca.bank_statement_line_form_reconcile_view
msgid "with an open amount"
msgstr ""
#~ msgid "Reset"
#~ msgstr "Sıfırla"

View File

@@ -0,0 +1,8 @@
from . import account_reconcile_abstract
from . import account_journal
from . import account_bank_statement_line
from . import account_bank_statement
from . import account_account_reconcile
from . import account_move_line
from . import res_company
from . import res_config_settings

View File

@@ -0,0 +1,182 @@
# Copyright 2023 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class CharId(fields.Id):
type = "string"
column_type = ("varchar", fields.pg_varchar())
class AccountAccountReconcile(models.Model):
_name = "account.account.reconcile"
_description = "Account Account Reconcile"
_inherit = "account.reconcile.abstract"
_auto = False
reconcile_data_info = fields.Serialized(inverse="_inverse_reconcile_data_info")
partner_id = fields.Many2one("res.partner", readonly=True)
account_id = fields.Many2one("account.account", readonly=True)
name = fields.Char(readonly=True)
is_reconciled = fields.Boolean(readonly=True)
@property
def _table_query(self):
return "{} {} {} {} {}".format(
self._select(),
self._from(),
self._where(),
self._groupby(),
self._having(),
)
def _select(self):
account_account_name_field = (
self.env["ir.model.fields"]
.sudo()
.search([("model", "=", "account.account"), ("name", "=", "name")])
)
account_name = (
f"a.name ->> '{self.env.user.lang}'"
if account_account_name_field.translate
else "a.name"
)
return f"""
SELECT
min(aml.id) as id,
MAX({account_name}) as name,
aml.partner_id,
a.id as account_id,
FALSE as is_reconciled,
aml.currency_id as currency_id,
a.company_id,
null as foreign_currency_id
"""
def _from(self):
return """
FROM
account_account a
INNER JOIN account_move_line aml ON aml.account_id = a.id
INNER JOIN account_move am ON am.id = aml.move_id
"""
def _where(self):
return """
WHERE a.reconcile
AND am.state = 'posted'
AND aml.amount_residual != 0
"""
def _groupby(self):
return """
GROUP BY
a.id, aml.partner_id, aml.currency_id, a.company_id
"""
def _having(self):
return """
HAVING
SUM(aml.debit) > 0
AND SUM(aml.credit) > 0
"""
def _compute_reconcile_data_info(self):
data_obj = self.env["account.account.reconcile.data"]
for record in self:
if self.env.context.get("default_account_move_lines"):
data = {
"data": [],
"counterparts": self.env.context.get("default_account_move_lines"),
}
record.reconcile_data_info = self._recompute_data(data)
continue
data_record = data_obj.search(
[("user_id", "=", self.env.user.id), ("reconcile_id", "=", record.id)]
)
if data_record:
record.reconcile_data_info = data_record.data
else:
record.reconcile_data_info = {"data": [], "counterparts": []}
def _inverse_reconcile_data_info(self):
data_obj = self.env["account.account.reconcile.data"]
for record in self:
data_record = data_obj.search(
[("user_id", "=", self.env.user.id), ("reconcile_id", "=", record.id)]
)
if data_record:
data_record.data = record.reconcile_data_info
else:
data_obj.create(
{
"reconcile_id": record.id,
"user_id": self.env.user.id,
"data": record.reconcile_data_info,
}
)
@api.onchange("add_account_move_line_id")
def _onchange_add_account_move_line(self):
if self.add_account_move_line_id:
data = self.reconcile_data_info
if self.add_account_move_line_id.id not in data["counterparts"]:
data["counterparts"].append(self.add_account_move_line_id.id)
else:
del data["counterparts"][
data["counterparts"].index(self.add_account_move_line_id.id)
]
self.reconcile_data_info = self._recompute_data(data)
self.add_account_move_line_id = False
@api.onchange("manual_reference", "manual_delete")
def _onchange_manual_reconcile_reference(self):
self.ensure_one()
data = self.reconcile_data_info
counterparts = []
for line in data["data"]:
if line["reference"] == self.manual_reference:
if self.manual_delete:
continue
counterparts.append(line["id"])
data["counterparts"] = counterparts
self.reconcile_data_info = self._recompute_data(data)
self.manual_delete = False
self.manual_reference = False
def _recompute_data(self, data):
new_data = {"data": [], "counterparts": data["counterparts"]}
counterparts = data["counterparts"]
amount = 0.0
for line_id in counterparts:
line = self._get_reconcile_line(
self.env["account.move.line"].browse(line_id), "other", True, amount
)
new_data["data"].append(line)
amount += line["amount"]
return new_data
def clean_reconcile(self):
self.ensure_one()
self.reconcile_data_info = {"data": [], "counterparts": []}
def reconcile(self):
lines = self.env["account.move.line"].browse(
self.reconcile_data_info["counterparts"]
)
lines.reconcile()
data_record = self.env["account.account.reconcile.data"].search(
[("user_id", "=", self.env.user.id), ("reconcile_id", "=", self.id)]
)
data_record.unlink()
class AccountAccountReconcileData(models.TransientModel):
_name = "account.account.reconcile.data"
_description = "Reconcile data model to store user info"
user_id = fields.Many2one("res.users", required=True)
reconcile_id = fields.Integer(required=True)
data = fields.Serialized()

View File

@@ -0,0 +1,15 @@
# Copyright 2024 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models
class AccountBankStatement(models.Model):
_inherit = "account.bank.statement"
def action_open_statement(self):
self.ensure_one()
action = self.env["ir.actions.act_window"]._for_xml_id(
"account_reconcile_oca.account_bank_statement_action_edit"
)
action["res_id"] = self.id
return action

View File

@@ -0,0 +1,833 @@
# Copyright 2023 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from collections import defaultdict
from dateutil import rrule
from dateutil.relativedelta import relativedelta
from odoo import Command, _, api, fields, models, tools
from odoo.exceptions import UserError
from odoo.tools import float_is_zero
class AccountBankStatementLine(models.Model):
_name = "account.bank.statement.line"
_inherit = ["account.bank.statement.line", "account.reconcile.abstract"]
reconcile_data_info = fields.Serialized(inverse="_inverse_reconcile_data_info")
reconcile_mode = fields.Selection(
selection=lambda self: self.env["account.journal"]
._fields["reconcile_mode"]
.selection
)
company_id = fields.Many2one(related="journal_id.company_id")
reconcile_data = fields.Serialized()
manual_line_id = fields.Many2one(
"account.move.line",
store=False,
default=False,
prefetch=False,
)
manual_kind = fields.Char(
store=False,
default=False,
prefetch=False,
)
manual_account_id = fields.Many2one(
"account.account",
check_company=True,
store=False,
default=False,
prefetch=False,
)
manual_partner_id = fields.Many2one(
"res.partner",
domain=[("parent_id", "=", False)],
check_company=True,
store=False,
default=False,
prefetch=False,
)
analytic_distribution = fields.Json(
store=False,
default=False,
prefetch=False,
)
analytic_precision = fields.Integer(
store=False,
default=lambda self: self.env["decimal.precision"].precision_get(
"Percentage Analytic"
),
)
manual_model_id = fields.Many2one(
"account.reconcile.model",
check_company=True,
store=False,
default=False,
prefetch=False,
domain=[("rule_type", "=", "writeoff_button")],
)
manual_name = fields.Char(store=False, default=False, prefetch=False)
manual_amount = fields.Monetary(
store=False, default=False, prefetch=False, currency_field="manual_currency_id"
)
manual_currency_id = fields.Many2one(
"res.currency", readonly=True, store=False, prefetch=False
)
manual_original_amount = fields.Monetary(
default=False, store=False, prefetch=False, readonly=True
)
manual_move_type = fields.Selection(
lambda r: r.env["account.move"]._fields["move_type"].selection,
default=False,
store=False,
prefetch=False,
readonly=True,
)
manual_move_id = fields.Many2one(
"account.move", default=False, store=False, prefetch=False, readonly=True
)
can_reconcile = fields.Boolean(sparse="reconcile_data_info")
reconcile_aggregate = fields.Char(compute="_compute_reconcile_aggregate")
aggregate_id = fields.Integer(compute="_compute_reconcile_aggregate")
aggregate_name = fields.Char(compute="_compute_reconcile_aggregate")
@api.model
def _reconcile_aggregate_map(self):
lang = self.env["res.lang"]._lang_get(self.env.user.lang)
week_start = rrule.weekday(int(lang.week_start) - 1)
return {
False: lambda s: (False, False),
"statement": lambda s: (s.statement_id.id, s.statement_id.name),
"day": lambda s: (s.date.toordinal(), s.date.strftime(lang.date_format)),
"week": lambda s: (
(s.date + relativedelta(weekday=week_start(-1))).toordinal(),
(s.date + relativedelta(weekday=week_start(-1))).strftime(
lang.date_format
),
),
"month": lambda s: (
s.date.replace(day=1).toordinal(),
s.date.replace(day=1).strftime(lang.date_format),
),
}
@api.depends("company_id", "journal_id")
def _compute_reconcile_aggregate(self):
reconcile_aggregate_map = self._reconcile_aggregate_map()
for record in self:
reconcile_aggregate = (
record.journal_id.reconcile_aggregate
or record.company_id.reconcile_aggregate
)
record.reconcile_aggregate = reconcile_aggregate
print(record.date, reconcile_aggregate_map[reconcile_aggregate](record))
record.aggregate_id, record.aggregate_name = reconcile_aggregate_map[
reconcile_aggregate
](record)
def save(self):
return {"type": "ir.actions.act_window_close"}
@api.model
def action_new_line(self):
action = self.env["ir.actions.act_window"]._for_xml_id(
"account_reconcile_oca.action_bank_statement_line_create"
)
action["context"] = self.env.context
return action
@api.onchange("manual_model_id")
def _onchange_manual_model_id(self):
if self.manual_model_id:
data = []
for line in self.reconcile_data_info.get("data", []):
if line.get("kind") != "suspense":
data.append(line)
self.reconcile_data_info = self._recompute_suspense_line(
*self._reconcile_data_by_model(
data,
self.manual_model_id,
self.reconcile_data_info["reconcile_auxiliary_id"],
),
self.manual_reference,
)
else:
# Refreshing data
self.reconcile_data_info = self.browse(
self.id.origin
)._default_reconcile_data()
self.can_reconcile = self.reconcile_data_info.get("can_reconcile", False)
@api.onchange("add_account_move_line_id")
def _onchange_add_account_move_line_id(self):
if self.add_account_move_line_id:
data = self.reconcile_data_info["data"]
new_data = []
is_new_line = True
pending_amount = 0.0
for line in data:
if line["kind"] != "suspense":
pending_amount += line["amount"]
if self.add_account_move_line_id.id in line.get(
"counterpart_line_ids", []
):
is_new_line = False
else:
new_data.append(line)
if is_new_line:
new_data.append(
self._get_reconcile_line(
self.add_account_move_line_id, "other", True, pending_amount
)
)
self.reconcile_data_info = self._recompute_suspense_line(
new_data,
self.reconcile_data_info["reconcile_auxiliary_id"],
self.manual_reference,
exchange_recompute=True,
)
self.can_reconcile = self.reconcile_data_info.get("can_reconcile", False)
self.add_account_move_line_id = False
def _recompute_suspense_line(
self, data, reconcile_auxiliary_id, manual_reference, exchange_recompute=False
):
reconcile_auxiliary_id = self._compute_exchange_rate(
data, reconcile_auxiliary_id, exchange_recompute=exchange_recompute
)
can_reconcile = True
total_amount = 0
new_data = []
suspense_line = False
counterparts = []
for line in data:
if line.get("counterpart_line_ids"):
counterparts += line["counterpart_line_ids"]
if (
line["account_id"][0] == self.journal_id.suspense_account_id.id
or not line["account_id"][0]
) and line["kind"] != "suspense":
can_reconcile = False
if line["kind"] != "suspense":
new_data.append(line)
total_amount += line["amount"]
else:
suspense_line = line
if not float_is_zero(
total_amount, precision_digits=self.currency_id.decimal_places
):
can_reconcile = False
if suspense_line:
suspense_line.update(
{
"amount": -total_amount,
"credit": total_amount if total_amount > 0 else 0.0,
"debit": -total_amount if total_amount < 0 else 0.0,
}
)
else:
suspense_line = {
"reference": "reconcile_auxiliary;%s" % reconcile_auxiliary_id,
"id": False,
"account_id": [
self.journal_id.suspense_account_id.id,
self.journal_id.suspense_account_id.display_name,
],
"partner_id": self.partner_id
and [self.partner_id.id, self.partner_id.display_name]
or (self.partner_name and (False, self.partner_name))
or False,
"date": fields.Date.to_string(self.date),
"name": self.payment_ref or self.name,
"amount": -total_amount,
"credit": total_amount if total_amount > 0 else 0.0,
"debit": -total_amount if total_amount < 0 else 0.0,
"kind": "suspense",
"currency_id": self.company_id.currency_id.id,
"line_currency_id": self.company_id.currency_id.id,
"currency_amount": -total_amount,
}
reconcile_auxiliary_id += 1
new_data.append(suspense_line)
return {
"data": new_data,
"counterparts": counterparts,
"reconcile_auxiliary_id": reconcile_auxiliary_id,
"can_reconcile": can_reconcile,
"manual_reference": manual_reference,
}
def _check_line_changed(self, line):
return (
not float_is_zero(
self.manual_amount - line["amount"],
precision_digits=self.company_id.currency_id.decimal_places,
)
or self.manual_account_id.id != line["account_id"][0]
or self.manual_name != line["name"]
or (self.manual_partner_id and self.manual_partner_id.display_name or False)
!= line.get("partner_id")
)
@api.onchange("manual_reference", "manual_delete")
def _onchange_manual_reconcile_reference(self):
self.ensure_one()
data = self.reconcile_data_info.get("data", [])
new_data = []
for line in data:
if line["reference"] == self.manual_reference:
if self.manual_delete:
self.update(
{
"manual_delete": False,
"manual_reference": False,
"manual_account_id": False,
"manual_amount": False,
"manual_name": False,
"manual_partner_id": False,
"manual_line_id": False,
"manual_move_id": False,
"manual_move_type": False,
"manual_kind": False,
"manual_original_amount": False,
"manual_currency_id": False,
"analytic_distribution": False,
}
)
continue
else:
self.manual_account_id = line["account_id"][0]
self.manual_amount = line["amount"]
self.manual_currency_id = line["currency_id"]
self.manual_name = line["name"]
self.manual_partner_id = (
line.get("partner_id") and line["partner_id"][0]
)
self.manual_line_id = line["id"]
self.analytic_distribution = line.get("analytic_distribution", {})
if self.manual_line_id:
self.manual_move_id = self.manual_line_id.move_id
self.manual_move_type = self.manual_line_id.move_id.move_type
self.manual_kind = line["kind"]
self.manual_original_amount = line.get("original_amount", 0.0)
new_data.append(line)
self.reconcile_data_info = self._recompute_suspense_line(
new_data,
self.reconcile_data_info["reconcile_auxiliary_id"],
self.manual_reference,
)
self.can_reconcile = self.reconcile_data_info.get("can_reconcile", False)
@api.onchange(
"manual_account_id",
"manual_partner_id",
"manual_name",
"manual_amount",
"analytic_distribution",
)
def _onchange_manual_reconcile_vals(self):
self.ensure_one()
data = self.reconcile_data_info.get("data", [])
new_data = []
for line in data:
if line["reference"] == self.manual_reference:
if self._check_line_changed(line):
line.update(
{
"name": self.manual_name,
"partner_id": self.manual_partner_id
and [
self.manual_partner_id.id,
self.manual_partner_id.display_name,
]
or (self.partner_name and (False, self.partner_name))
or False,
"account_id": [
self.manual_account_id.id,
self.manual_account_id.display_name,
]
if self.manual_account_id
else [False, _("Undefined")],
"amount": self.manual_amount,
"credit": -self.manual_amount
if self.manual_amount < 0
else 0.0,
"debit": self.manual_amount
if self.manual_amount > 0
else 0.0,
"analytic_distribution": self.analytic_distribution,
"kind": line["kind"]
if line["kind"] != "suspense"
else "other",
}
)
if line["kind"] == "liquidity":
self._update_move_partner()
new_data.append(line)
self.reconcile_data_info = self._recompute_suspense_line(
new_data,
self.reconcile_data_info["reconcile_auxiliary_id"],
self.manual_reference,
)
self.can_reconcile = self.reconcile_data_info.get("can_reconcile", False)
def _update_move_partner(self):
if self.partner_id == self.manual_partner_id:
return
self.partner_id = self.manual_partner_id
@api.depends("reconcile_data")
def _compute_reconcile_data_info(self):
for record in self:
if record.reconcile_data:
record.reconcile_data_info = record.reconcile_data
else:
record.reconcile_data_info = record._default_reconcile_data(
from_unreconcile=record.is_reconciled
)
record.can_reconcile = record.reconcile_data_info.get(
"can_reconcile", False
)
def action_show_move(self):
self.ensure_one()
action = self.env["ir.actions.act_window"]._for_xml_id(
"account.action_move_journal_line"
)
action.update(
{"res_id": self.move_id.id, "views": [[False, "form"]], "view_mode": "form"}
)
return action
def _inverse_reconcile_data_info(self):
for record in self:
record.reconcile_data = record.reconcile_data_info
def _reconcile_data_by_model(self, data, reconcile_model, reconcile_auxiliary_id):
new_data = []
liquidity_amount = 0.0
for line_data in data:
if line_data["kind"] == "suspense":
continue
new_data.append(line_data)
liquidity_amount += line_data["amount"]
for line in reconcile_model._get_write_off_move_lines_dict(
-liquidity_amount, self._retrieve_partner()
):
new_line = line.copy()
amount = line.get("balance")
if self.foreign_currency_id:
amount = self.foreign_currency_id.compute(
amount, self.journal_id.currency_id or self.company_currency_id
)
new_line.update(
{
"reference": "reconcile_auxiliary;%s" % reconcile_auxiliary_id,
"id": False,
"amount": amount,
"debit": amount if amount > 0 else 0,
"credit": -amount if amount < 0 else 0,
"kind": "other",
"account_id": [
line["account_id"],
self.env["account.account"]
.browse(line["account_id"])
.display_name,
],
"date": fields.Date.to_string(self.date),
"line_currency_id": self.company_id.currency_id.id,
"currency_id": self.company_id.currency_id.id,
"currency_amount": amount,
}
)
reconcile_auxiliary_id += 1
if line.get("partner_id"):
new_line["partner_id"] = (
line["partner_id"],
self.env["res.partner"].browse(line["partner_id"]).display_name,
)
new_data.append(new_line)
return new_data, reconcile_auxiliary_id
def _compute_exchange_rate(
self, data, reconcile_auxiliary_id, exchange_recompute=False
):
if not exchange_recompute:
return reconcile_auxiliary_id
foreign_currency = (
self.currency_id != self.company_id.currency_id
or self.foreign_currency_id
or any(line["currency_id"] != line["line_currency_id"] for line in data)
)
if not foreign_currency or self.is_reconciled:
return reconcile_auxiliary_id
currency = self.journal_id.currency_id or self.company_id.currency_id
amount = sum(d.get("net_amount", 0) for d in data)
if not currency.is_zero(amount):
account = self.company_id.expense_currency_exchange_account_id
if amount > 0:
account = self.company_id.income_currency_exchange_account_id
data.append(
{
"reference": "reconcile_auxiliary;%s" % reconcile_auxiliary_id,
"id": False,
"account_id": [account.id, account.display_name],
"partner_id": False,
"date": fields.Date.to_string(self.date),
"name": self.payment_ref or self.name,
"amount": -amount,
"net_amount": -amount,
"credit": amount if amount > 0 else 0.0,
"debit": -amount if amount < 0 else 0.0,
"kind": "other",
"currency_id": self.currency_id.id,
"line_currency_id": self.currency_id.id,
"currency_amount": -amount,
}
)
reconcile_auxiliary_id += 1
return reconcile_auxiliary_id
def _default_reconcile_data(self, from_unreconcile=False):
liquidity_lines, suspense_lines, other_lines = self._seek_for_lines()
data = [self._get_reconcile_line(line, "liquidity") for line in liquidity_lines]
reconcile_auxiliary_id = 1
if not from_unreconcile:
res = (
self.env["account.reconcile.model"]
.search(
[("rule_type", "in", ["invoice_matching", "writeoff_suggestion"])]
)
._apply_rules(self, self._retrieve_partner())
)
if res and res.get("status", "") == "write_off":
return self._recompute_suspense_line(
*self._reconcile_data_by_model(
data, res["model"], reconcile_auxiliary_id
),
self.manual_reference,
exchange_recompute=True,
)
elif res and res.get("amls"):
amount = self.amount_total_signed
for line in res.get("amls", []):
line_data = self._get_reconcile_line(
line, "other", is_counterpart=True, max_amount=amount
)
amount -= line_data.get("amount")
data.append(line_data)
return self._recompute_suspense_line(
data,
reconcile_auxiliary_id,
self.manual_reference,
exchange_recompute=True,
)
return self._recompute_suspense_line(
data
+ [
self._get_reconcile_line(
line, "other", from_unreconcile=from_unreconcile
)
for line in other_lines
],
reconcile_auxiliary_id,
self.manual_reference,
)
def clean_reconcile(self):
self.reconcile_data_info = self._default_reconcile_data()
self.can_reconcile = self.reconcile_data_info.get("can_reconcile", False)
def reconcile_bank_line(self):
self.ensure_one()
self.reconcile_mode = self.journal_id.reconcile_mode
result = getattr(self, "_reconcile_bank_line_%s" % self.reconcile_mode)(
self.reconcile_data_info["data"]
)
self.reconcile_data_info = False
return result
def _reconcile_bank_line_edit(self, data):
_liquidity_lines, suspense_lines, other_lines = self._seek_for_lines()
lines_to_remove = [(2, line.id) for line in suspense_lines + other_lines]
# Cleanup previous lines.
move = self.move_id
container = {"records": move, "self": move}
to_reconcile = []
with move._check_balanced(container):
move.with_context(
skip_account_move_synchronization=True,
force_delete=True,
skip_invoice_sync=True,
).write(
{
"line_ids": lines_to_remove,
}
)
for line_vals in data:
if line_vals["kind"] == "liquidity":
continue
line = (
self.env["account.move.line"]
.with_context(
check_move_validity=False,
skip_sync_invoice=True,
skip_invoice_sync=True,
)
.create(self._reconcile_move_line_vals(line_vals))
)
if line_vals.get("counterpart_line_ids"):
to_reconcile.append(
self.env["account.move.line"].browse(
line_vals.get("counterpart_line_ids")
)
+ line
)
for reconcile_items in to_reconcile:
reconcile_items.reconcile()
def _reconcile_bank_line_keep_move_vals(self):
return {
"journal_id": self.journal_id.id,
}
def _reconcile_bank_line_keep(self, data):
move = (
self.env["account.move"]
.with_context(skip_invoice_sync=True)
.create(self._reconcile_bank_line_keep_move_vals())
)
_liquidity_lines, suspense_lines, other_lines = self._seek_for_lines()
container = {"records": move, "self": move}
to_reconcile = defaultdict(lambda: self.env["account.move.line"])
with move._check_balanced(container):
for line in suspense_lines | other_lines:
to_reconcile[line.account_id.id] |= line
line_data = line.with_context(
active_test=False,
include_business_fields=True,
).copy_data({"move_id": move.id})[0]
to_reconcile[line.account_id.id] |= (
self.env["account.move.line"]
.with_context(
check_move_validity=False,
skip_sync_invoice=True,
skip_invoice_sync=True,
)
.create(line_data)
)
move.write(
{
"line_ids": [
Command.update(
line.id,
{
"balance": -line.balance,
"amount_currency": -line.amount_currency,
},
)
for line in move.line_ids
if line.move_id.move_type == "entry"
or line.display_type == "cogs"
]
}
)
for line_vals in data:
if line_vals["kind"] == "liquidity":
continue
if line_vals["kind"] == "suspense":
raise UserError(_("No supense lines are allowed when reconciling"))
line = (
self.env["account.move.line"]
.with_context(check_move_validity=False, skip_invoice_sync=True)
.create(self._reconcile_move_line_vals(line_vals, move.id))
)
if line_vals.get("counterpart_line_ids") and line.account_id.reconcile:
to_reconcile[line.account_id.id] |= (
self.env["account.move.line"].browse(
line_vals.get("counterpart_line_ids")
)
| line
)
move.invalidate_recordset()
move._post()
for _account, lines in to_reconcile.items():
lines.reconcile()
def unreconcile_bank_line(self):
self.ensure_one()
return getattr(
self, "_unreconcile_bank_line_%s" % (self.reconcile_mode or "edit")
)()
def _unreconcile_bank_line_edit(self):
self.reconcile_data_info = self._default_reconcile_data(from_unreconcile=True)
self.action_undo_reconciliation()
def _unreconcile_bank_line_keep(self):
raise UserError(_("Keep suspense move lines mode cannot be unreconciled"))
def _reconcile_move_line_vals(self, line, move_id=False):
return {
"move_id": move_id or self.move_id.id,
"account_id": line["account_id"][0],
"partner_id": line.get("partner_id") and line["partner_id"][0],
"credit": line["credit"],
"debit": line["debit"],
"tax_ids": line.get("tax_ids", []),
"tax_tag_ids": line.get("tax_tag_ids", []),
"group_tax_id": line.get("group_tax_id"),
"tax_repartition_line_id": line.get("tax_repartition_line_id"),
"analytic_distribution": line.get("analytic_distribution"),
"name": line.get("name"),
"reconcile_model_id": line.get("reconcile_model_id"),
}
@api.model_create_multi
def create(self, mvals):
result = super().create(mvals)
if tools.config["test_enable"] and not self.env.context.get(
"_test_account_reconcile_oca"
):
return result
models = self.env["account.reconcile.model"].search(
[
("rule_type", "in", ["invoice_matching", "writeoff_suggestion"]),
("auto_reconcile", "=", True),
]
)
for record in result:
res = models._apply_rules(record, record._retrieve_partner())
if not res:
continue
liquidity_lines, suspense_lines, other_lines = record._seek_for_lines()
data = [
record._get_reconcile_line(line, "liquidity")
for line in liquidity_lines
]
reconcile_auxiliary_id = 1
if res.get("status", "") == "write_off":
data = record._recompute_suspense_line(
*record._reconcile_data_by_model(
data, res["model"], reconcile_auxiliary_id
),
self.manual_reference,
exchange_recompute=True,
)
elif res.get("amls"):
amount = self.amount
for line in res.get("amls", []):
line_data = record._get_reconcile_line(
line, "other", is_counterpart=True, max_amount=amount
)
amount -= line_data.get("amount")
data.append(line_data)
data = record._recompute_suspense_line(
data,
reconcile_auxiliary_id,
self.manual_reference,
exchange_recompute=True,
)
if not data.get("can_reconcile"):
continue
getattr(
record, "_reconcile_bank_line_%s" % record.journal_id.reconcile_mode
)(data["data"])
return result
def button_manual_reference_full_paid(self):
self.ensure_one()
if not self.reconcile_data_info["manual_reference"]:
return
manual_reference = self.reconcile_data_info["manual_reference"]
data = self.reconcile_data_info.get("data", [])
new_data = []
reconcile_auxiliary_id = self.reconcile_data_info["reconcile_auxiliary_id"]
for line in data:
if line["reference"] == manual_reference and line.get("id"):
total_amount = -line["amount"] + line["original_amount_unsigned"]
original_amount = line["original_amount_unsigned"]
new_data.append(
self._get_reconcile_line(
self.env["account.move.line"].browse(line["id"]),
"other",
is_counterpart=True,
max_amount=original_amount,
)
)
new_data.append(
{
"reference": "reconcile_auxiliary;%s" % reconcile_auxiliary_id,
"id": False,
"account_id": line["account_id"],
"partner_id": line.get("partner_id"),
"date": line["date"],
"name": line["name"],
"amount": -total_amount,
"credit": total_amount if total_amount > 0 else 0.0,
"debit": -total_amount if total_amount < 0 else 0.0,
"kind": "other",
"currency_id": line["currency_id"],
"line_currency_id": line["currency_id"],
"currency_amount": -total_amount,
}
)
reconcile_auxiliary_id += 1
else:
new_data.append(line)
self.reconcile_data_info = self._recompute_suspense_line(
new_data,
reconcile_auxiliary_id,
self.manual_reference,
exchange_recompute=True,
)
self.can_reconcile = self.reconcile_data_info.get("can_reconcile", False)
def action_to_check(self):
self.ensure_one()
self.move_id.to_check = True
if self.can_reconcile and self.journal_id.reconcile_mode == "edit":
self.reconcile_bank_line()
def action_checked(self):
self.ensure_one()
self.move_id.to_check = False
def _get_reconcile_line(
self, line, kind, is_counterpart=False, max_amount=False, from_unreconcile=False
):
vals = super()._get_reconcile_line(
line,
kind,
is_counterpart=is_counterpart,
max_amount=max_amount,
from_unreconcile=from_unreconcile,
)
if vals["partner_id"] is False and self.partner_name:
vals["partner_id"] = (False, self.partner_name)
return vals
def add_statement(self):
self.ensure_one()
action = self.env["ir.actions.act_window"]._for_xml_id(
"account_reconcile_oca.account_bank_statement_action_edit"
)
previous_line_with_statement = self.env["account.bank.statement.line"].search(
[
("internal_index", "<", self.internal_index),
("journal_id", "=", self.journal_id.id),
("state", "=", "posted"),
("statement_id", "!=", self.statement_id.id),
("statement_id", "!=", False),
],
limit=1,
)
action["context"] = {
"default_journal_id": self.journal_id.id,
"default_balance_start": previous_line_with_statement.statement_id.balance_end_real,
"split_line_id": self.id,
}
return action

View File

@@ -0,0 +1,34 @@
# Copyright 2023 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, fields, models
class AccountJournal(models.Model):
_inherit = "account.journal"
reconcile_mode = fields.Selection(
[("edit", "Edit Move"), ("keep", "Keep Suspense Accounts")],
default="edit",
required=True,
)
company_currency_id = fields.Many2one(related="company_id.currency_id")
reconcile_aggregate = fields.Selection(
[
("statement", "Statement"),
("day", "Day"),
("week", "Week"),
("month", "Month"),
],
string="Reconcile aggregation",
help="Aggregation to use on reconcile view",
)
def get_rainbowman_message(self):
self.ensure_one()
if (
self._get_journal_dashboard_data_batched()[self.id]["number_to_reconcile"]
> 0
):
return False
return _("Well done! Everything has been reconciled")

View File

@@ -0,0 +1,35 @@
# Copyright 2023 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, fields, models
from odoo.exceptions import ValidationError
class AccountMoveLine(models.Model):
_inherit = "account.move.line"
invoice_due_date = fields.Date(
related="move_id.invoice_date_due",
readonly=True,
)
def action_reconcile_manually(self):
if not self:
return {}
accounts = self.mapped("account_id")
if len(accounts) > 1:
raise ValidationError(
_("You can only reconcile journal items belonging to the same account.")
)
partner = self.mapped("partner_id")
action = self.env["ir.actions.act_window"]._for_xml_id(
"account_reconcile_oca.account_account_reconcile_act_window"
)
action["domain"] = [("account_id", "=", self.mapped("account_id").id)]
if len(partner) == 1:
action["domain"] += [("partner_id", "=", partner.id)]
action["context"] = self.env.context.copy()
action["context"]["default_account_move_lines"] = self.filtered(
lambda r: not r.reconciled
).ids
return action

View File

@@ -0,0 +1,104 @@
# Copyright 2023 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
from odoo.tools import float_is_zero
class AccountReconcileAbstract(models.AbstractModel):
_name = "account.reconcile.abstract"
_description = "Account Reconcile Abstract"
reconcile_data_info = fields.Serialized(
compute="_compute_reconcile_data_info",
prefetch=False,
)
company_id = fields.Many2one("res.company")
add_account_move_line_id = fields.Many2one(
"account.move.line",
check_company=True,
store=False,
default=False,
prefetch=False,
)
manual_reference = fields.Char(store=False, default=False, prefetch=False)
manual_delete = fields.Boolean(
store=False,
default=False,
prefetch=False,
)
currency_id = fields.Many2one("res.currency", readonly=True)
foreign_currency_id = fields.Many2one("res.currency")
company_currency_id = fields.Many2one(
"res.currency", related="company_id.currency_id"
)
def _get_reconcile_line(
self, line, kind, is_counterpart=False, max_amount=False, from_unreconcile=False
):
date = self.date if "date" in self._fields else line.date
original_amount = amount = net_amount = line.debit - line.credit
amount_currency = self.company_id.currency_id
if is_counterpart:
amount = line.amount_residual_currency or line.amount_residual
amount_currency = line.currency_id or self.company_id.currency_id
original_amount = net_amount = line.amount_residual
if max_amount:
currency_max_amount = self.company_id.currency_id._convert(
max_amount, amount_currency, self.company_id, line.date
)
if amount > currency_max_amount > 0:
amount = currency_max_amount
net_amount = max_amount
if amount < currency_max_amount < 0:
amount = currency_max_amount
net_amount = max_amount
amount = -amount
original_amount = -original_amount
net_amount = -net_amount
else:
amount_currency = line.currency_id
amount = self.company_id.currency_id._convert(
amount, amount_currency, self.company_id, date
)
currency_amount = amount
amount = amount_currency._convert(
amount, self.company_id.currency_id, self.company_id, date
)
vals = {
"reference": "account.move.line;%s" % line.id,
"id": line.id,
"account_id": [line.account_id.id, line.account_id.display_name],
"partner_id": [line.partner_id.id, line.partner_id.display_name]
if line.partner_id
else False,
"date": fields.Date.to_string(line.date),
"name": line.name,
"debit": amount if amount > 0 else 0.0,
"credit": -amount if amount < 0 else 0.0,
"amount": amount,
"net_amount": amount - net_amount,
"currency_id": self.company_id.currency_id.id,
"line_currency_id": line.currency_id.id,
"currency_amount": currency_amount,
"analytic_distribution": line.analytic_distribution,
"kind": kind,
}
if from_unreconcile:
vals.update(
{
"id": False,
"counterpart_line_ids": (
line.matched_debit_ids.mapped("debit_move_id")
| line.matched_credit_ids.mapped("credit_move_id")
).ids,
}
)
if not float_is_zero(
amount - original_amount, precision_digits=line.currency_id.decimal_places
):
vals["original_amount"] = abs(original_amount)
vals["original_amount_unsigned"] = original_amount
if is_counterpart:
vals["counterpart_line_ids"] = line.ids
return vals

View File

@@ -0,0 +1,14 @@
# Copyright 2024 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResCompany(models.Model):
_inherit = "res.company"
reconcile_aggregate = fields.Selection(
selection=lambda self: self.env["account.journal"]
._fields["reconcile_aggregate"]
.selection
)

View File

@@ -0,0 +1,12 @@
# Copyright 2024 Dixmit
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
reconcile_aggregate = fields.Selection(
related="company_id.reconcile_aggregate", readonly=False
)

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View File

@@ -0,0 +1 @@
- Enric Tobella

View File

@@ -0,0 +1,2 @@
This addon allows to reconcile bank statements and account marked as
reconcile.

View File

@@ -0,0 +1,3 @@
The following bugs are already detected:
- Creation of activities on the chatter do show automatically

View File

@@ -0,0 +1,10 @@
## Bank reconcile
Access Invoicing / Dashboard with a user with Full Acounting
capabilities. Select reconcile on the journal of your choice.
## Account reconcile
Access Invoicing / Accounting / Actions / Reconcile All the possible
reconcile options will show and you will be able to reconcile properly.
You can access the same widget from accounts and Partners.

View File

@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_account_reconcile,account.account.reconcile,model_account_account_reconcile,account.group_account_user,1,1,0,0
access_account_account_reconcile_data,account.account.reconcile,model_account_account_reconcile_data,account.group_account_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_account_account_reconcile account.account.reconcile model_account_account_reconcile account.group_account_user 1 1 0 0
3 access_account_account_reconcile_data account.account.reconcile model_account_account_reconcile_data account.group_account_user 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,452 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Account Reconcile Oca</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="account-reconcile-oca">
<h1 class="title">Account Reconcile Oca</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:0259c9d504534b4ee88e7b929ddb6c524dd35cb217811c87b8dd02e0a433f1f1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-reconcile/tree/17.0/account_reconcile_oca"><img alt="OCA/account-reconcile" src="https://img.shields.io/badge/github-OCA%2Faccount--reconcile-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-reconcile-17-0/account-reconcile-17-0-account_reconcile_oca"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-reconcile&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This addon allows to reconcile bank statements and account marked as
reconcile.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a><ul>
<li><a class="reference internal" href="#bank-reconcile" id="toc-entry-2">Bank reconcile</a></li>
<li><a class="reference internal" href="#account-reconcile" id="toc-entry-3">Account reconcile</a></li>
</ul>
</li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-4">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-5">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-6">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-7">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-8">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-9">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<div class="section" id="bank-reconcile">
<h2><a class="toc-backref" href="#toc-entry-2">Bank reconcile</a></h2>
<p>Access Invoicing / Dashboard with a user with Full Acounting
capabilities. Select reconcile on the journal of your choice.</p>
</div>
<div class="section" id="account-reconcile">
<h2><a class="toc-backref" href="#toc-entry-3">Account reconcile</a></h2>
<p>Access Invoicing / Accounting / Actions / Reconcile All the possible
reconcile options will show and you will be able to reconcile properly.
You can access the same widget from accounts and Partners.</p>
</div>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#toc-entry-4">Known issues / Roadmap</a></h1>
<p>The following bugs are already detected:</p>
<ul class="simple">
<li>Creation of activities on the chatter do show automatically</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-5">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-reconcile/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/account-reconcile/issues/new?body=module:%20account_reconcile_oca%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-6">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-7">Authors</a></h2>
<ul class="simple">
<li>CreuBlanca</li>
<li>Dixmit</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-8">Contributors</a></h2>
<ul class="simple">
<li>Enric Tobella</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-9">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/etobella"><img alt="etobella" src="https://github.com/etobella.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-reconcile/tree/17.0/account_reconcile_oca">OCA/account-reconcile</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,146 @@
/** @odoo-module */
const {onMounted, onWillStart, useState, useSubEnv} = owl;
import {useBus, useService} from "@web/core/utils/hooks";
import {KanbanController} from "@web/views/kanban/kanban_controller";
import {View} from "@web/views/view";
import {formatMonetary} from "@web/views/fields/formatters";
export class ReconcileController extends KanbanController {
async setup() {
super.setup();
this.state = useState({
selectedRecordId: null,
journalBalance: 0,
currency: false,
});
useSubEnv({
parentController: this,
exposeController: this.exposeController.bind(this),
});
this.effect = useService("effect");
this.orm = useService("orm");
this.action = useService("action");
this.router = useService("router");
this.activeActions = this.props.archInfo.activeActions;
useBus(this.model.bus, "update", () => {
this.selectRecord();
});
onWillStart(() => {
this.updateJournalInfo();
});
onMounted(() => {
this.selectRecord();
});
}
get journalId() {
if (this.props.resModel === "account.bank.statement.line") {
return this.props.context.active_id;
}
return false;
}
async updateJournalInfo() {
var journalId = this.journalId;
if (!journalId) {
return;
}
var result = await this.orm.call("account.journal", "read", [
[journalId],
["current_statement_balance", "currency_id", "company_currency_id"],
]);
this.state.journalBalance = result[0].current_statement_balance;
this.state.currency = (result[0].currency_id ||
result[0].company_currency_id)[0];
}
get journalBalanceStr() {
if (!this.state.journalBalance) {
return "";
}
return formatMonetary(this.state.journalBalance, {
currencyId: this.state.currency,
});
}
exposeController(controller) {
this.form_controller = controller;
}
async onClickNewButton() {
const action = await this.orm.call(this.props.resModel, "action_new_line", [], {
context: this.props.context,
});
this.action.doAction(action, {
onClose: async () => {
await this.model.root.load();
this.render(true);
},
});
}
async setRainbowMan(message) {
this.effect.add({
message,
type: "rainbow_man",
});
}
get viewReconcileInfo() {
return {
resId: this.state.selectedRecordId,
type: "form",
noBreadcrumbs: true,
context: {
...(this.props.context || {}),
form_view_ref: this.props.context.view_ref,
},
display: {controlPanel: false},
mode: this.props.mode || "edit",
resModel: this.props.resModel,
};
}
async selectRecord(record) {
var resId = false;
if (record === undefined && this.props.resId) {
resId = this.props.resId;
} else if (record === undefined) {
var records = this.model.root.records.filter(
(modelRecord) =>
!modelRecord.data.is_reconciled || modelRecord.data.to_check
);
if (records.length === 0) {
records = this.model.root.records;
if (records.length === 0) {
this.state.selectedRecordId = false;
return;
}
}
resId = records[0].resId;
} else {
resId = record.resId;
}
if (this.state.selectedRecordId && this.state.selectedRecordId !== resId) {
if (this.form_controller.model.root.isDirty) {
await this.form_controller.model.root.save({
noReload: true,
stayInEdition: true,
useSaveErrorDialog: true,
});
await this.model.root.load();
await this.render(true);
}
}
if (!this.state.selectedRecordId || this.state.selectedRecordId !== resId) {
this.state.selectedRecordId = resId;
}
this.updateURL(resId);
}
async openRecord(record) {
this.selectRecord(record);
}
updateURL(resId) {
this.router.pushState({id: resId});
}
}
ReconcileController.components = {
...ReconcileController.components,
View,
};
ReconcileController.template = "account_reconcile_oca.ReconcileController";
ReconcileController.defaultProps = {};

View File

@@ -0,0 +1,14 @@
/** @odoo-module */
import {KanbanRecord} from "@web/views/kanban/kanban_record";
export class ReconcileKanbanRecord extends KanbanRecord {
getRecordClasses() {
var result = super.getRecordClasses();
if (this.props.selectedRecordId === this.props.record.resId) {
result += " o_kanban_record_reconcile_oca_selected";
}
return result;
}
}
ReconcileKanbanRecord.props = [...KanbanRecord.props, "selectedRecordId?"];

View File

@@ -0,0 +1,63 @@
/** @odoo-module */
import {KanbanRenderer} from "@web/views/kanban/kanban_renderer";
import {ReconcileKanbanRecord} from "./reconcile_kanban_record.esm.js";
import {formatMonetary} from "@web/views/fields/formatters";
import {useService} from "@web/core/utils/hooks";
export class ReconcileRenderer extends KanbanRenderer {
setup() {
super.setup();
this.action = useService("action");
this.orm = useService("orm");
}
getAggregates() {
if (
this.env.parentController.props.resModel !== "account.bank.statement.line"
) {
return [];
}
const {list} = this.props;
const aggregates = [];
for (const record of list.records) {
const aggregateId = record.data.aggregate_id && record.data.aggregate_id;
if (
aggregateId &&
(!aggregates.length || aggregates[0].id !== aggregateId)
) {
aggregates.push({
id: aggregateId,
name: record.data.aggregate_name,
balance: record.data.statement_balance_end_real,
balanceStr: formatMonetary(record.data.statement_balance_end_real, {
currencyId: record.data.currency_id[0],
}),
});
}
}
return aggregates;
}
async onClickStatement(statementId) {
const action = await this.orm.call(
"account.bank.statement",
"action_open_statement",
[[statementId]],
{
context: this.props.context,
}
);
const model = this.props.list.model;
this.action.doAction(action, {
async onClose() {
model.root.load();
},
});
}
}
ReconcileRenderer.components = {
...KanbanRenderer.components,
KanbanRecord: ReconcileKanbanRecord,
};
ReconcileRenderer.template = "account_reconcile_oca.ReconcileRenderer";
ReconcileRenderer.props = [...KanbanRenderer.props, "selectedRecordId?"];

View File

@@ -0,0 +1,16 @@
/** @odoo-module */
import {ReconcileController} from "./reconcile_controller.esm.js";
import {ReconcileRenderer} from "./reconcile_renderer.esm.js";
import {kanbanView} from "@web/views/kanban/kanban_view";
import {registry} from "@web/core/registry";
export const reconcileView = {
...kanbanView,
Renderer: ReconcileRenderer,
Controller: ReconcileController,
buttonTemplate: "account_reconcile.ReconcileView.Buttons",
searchMenuTypes: ["filter"],
};
registry.category("views").add("reconcile", reconcileView);

View File

@@ -0,0 +1,45 @@
/** @odoo-module */
import {FormController} from "@web/views/form/form_controller";
import {useService} from "@web/core/utils/hooks";
import {useViewButtons} from "@web/views/view_button/view_button_hook";
const {useRef} = owl;
export class ReconcileFormController extends FormController {
setup() {
super.setup(...arguments);
this.env.exposeController(this);
this.orm = useService("orm");
const rootRef = useRef("root");
useViewButtons(this.model, rootRef, {
reload: this.reloadFormController.bind(this),
beforeExecuteAction: this.beforeExecuteActionButton.bind(this),
afterExecuteAction: this.afterExecuteActionButton.bind(this),
});
}
displayName() {
return this.env.config.getDisplayName();
}
async reloadFormController() {
var is_reconciled = this.model.root.data.is_reconciled;
await this.model.root.load();
if (!is_reconciled && this.model.root.data.is_reconciled) {
// This only happens when we press the reconcile button
if (this.env.parentController) {
// Showing rainbow man
const message = await this.orm.call(
"account.journal",
"get_rainbowman_message",
[[this.model.root.data.journal_id[0]]]
);
if (message) {
this.env.parentController.setRainbowMan(message);
}
// Refreshing
await this.env.parentController.model.root.load();
await this.env.parentController.render(true);
this.env.parentController.selectRecord();
}
}
}
}

View File

@@ -0,0 +1,32 @@
/** @odoo-module */
import {Notebook} from "@web/core/notebook/notebook";
import {onWillDestroy} from "@odoo/owl";
export class ReconcileFormNotebook extends Notebook {
setup() {
super.setup(...arguments);
const onPageNavigate = this.onPageNavigate.bind(this);
this.env.bus.addEventListener("RECONCILE_PAGE_NAVIGATE", onPageNavigate);
onWillDestroy(() => {
this.env.bus.removeEventListener("RECONCILE_PAGE_NAVIGATE", onPageNavigate);
});
}
onPageNavigate(ev) {
for (const page of this.pages) {
if (
ev.detail.detail.name === page[1].name &&
this.state.currentPage !== page[0]
) {
ev.preventDefault();
ev.detail.detail.originalEv.preventDefault();
this.state.currentPage = page[0];
return;
}
}
}
}
ReconcileFormNotebook.props = {
...Notebook.props,
};

View File

@@ -0,0 +1,11 @@
/** @odoo-module */
import {FormRenderer} from "@web/views/form/form_renderer";
import {ReconcileFormNotebook} from "./reconcile_form_notebook.esm.js";
export class ReconcileFormRenderer extends FormRenderer {}
ReconcileFormRenderer.components = {
...ReconcileFormRenderer.components,
Notebook: ReconcileFormNotebook,
};

View File

@@ -0,0 +1,14 @@
/** @odoo-module */
import {ReconcileFormController} from "./reconcile_form_controller.esm.js";
import {ReconcileFormRenderer} from "./reconcile_form_renderer.esm.js";
import {formView} from "@web/views/form/form_view";
import {registry} from "@web/core/registry";
export const ReconcileFormView = {
...formView,
Controller: ReconcileFormController,
Renderer: ReconcileFormRenderer,
};
registry.category("views").add("reconcile_form", ReconcileFormView);

View File

@@ -0,0 +1,33 @@
/** @odoo-module */
import {FormController} from "@web/views/form/form_controller";
import {useViewButtons} from "@web/views/view_button/view_button_hook";
const {useRef} = owl;
export class ReconcileManualController extends FormController {
setup() {
super.setup(...arguments);
this.env.exposeController(this);
const rootRef = useRef("root");
useViewButtons(this.model, rootRef, {
reload: this.reloadFormController.bind(this),
beforeExecuteAction: this.beforeExecuteActionButton.bind(this),
afterExecuteAction: this.afterExecuteActionButton.bind(this),
});
}
displayName() {
return this.env.config.getDisplayName();
}
async reloadFormController() {
try {
await this.model.root.load();
} catch (error) {
// This should happen when we reconcile a line (no more possible data...)
if (this.env.parentController) {
await this.env.parentController.model.root.load();
await this.env.parentController.render(true);
this.env.parentController.selectRecord();
}
}
}
}

View File

@@ -0,0 +1,12 @@
/** @odoo-module */
import {ReconcileManualController} from "./reconcile_manual_controller.esm.js";
import {formView} from "@web/views/form/form_view";
import {registry} from "@web/core/registry";
export const FormManualReconcileView = {
...formView,
Controller: ReconcileManualController,
};
registry.category("views").add("reconcile_manual", FormManualReconcileView);

View File

@@ -0,0 +1,18 @@
/** @odoo-module */
import {ListController} from "@web/views/list/list_controller";
export class ReconcileMoveLineController extends ListController {
async openRecord(record) {
var data = {};
data[this.props.parentField] = [record.resId, record.display_name];
this.props.parentRecord.update(data);
}
}
ReconcileMoveLineController.template = `account_reconcile_oca.ReconcileMoveLineController`;
ReconcileMoveLineController.props = {
...ListController.props,
parentRecord: {type: Object, optional: true},
parentField: {type: String, optional: true},
};

View File

@@ -0,0 +1,22 @@
/** @odoo-module */
import {ListRenderer} from "@web/views/list/list_renderer";
export class ReconcileMoveLineRenderer extends ListRenderer {
getRowClass(record) {
var classes = super.getRowClass(record);
if (
this.props.parentRecord.data.reconcile_data_info.counterparts.includes(
record.resId
)
) {
classes += " o_field_account_reconcile_oca_move_line_selected table-info";
}
return classes;
}
}
ReconcileMoveLineRenderer.props = [
...ListRenderer.props,
"parentRecord",
"parentField",
];

View File

@@ -0,0 +1,15 @@
/** @odoo-module */
import {ReconcileMoveLineController} from "./reconcile_move_line_controller.esm.js";
import {ReconcileMoveLineRenderer} from "./reconcile_move_line_renderer.esm.js";
import {listView} from "@web/views/list/list_view";
import {registry} from "@web/core/registry";
export const ReconcileMoveLineView = {
...listView,
Controller: ReconcileMoveLineController,
Renderer: ReconcileMoveLineRenderer,
};
registry.category("views").add("reconcile_move_line", ReconcileMoveLineView);

View File

@@ -0,0 +1,22 @@
/** @odoo-module **/
// import {ChatterContainer} from "@mail/components/chatter_container/chatter_container";
// import {Chatter} from "@mail/core/web/chatter";
import {registry} from "@web/core/registry";
import {standardFieldProps} from "@web/views/fields/standard_field_props";
import {Chatter} from "@mail/core/web/chatter";
const {Component} = owl;
export class AccountReconcileChatterWidget extends Component {}
AccountReconcileChatterWidget.props = {...standardFieldProps};
AccountReconcileChatterWidget.template =
"account_reconcile_oca.AccountReconcileChatterWidget";
AccountReconcileChatterWidget.components = {...Component.components, Chatter};
export const AccountReconcileChatterWidgetField = {
component: AccountReconcileChatterWidget,
supportedTypes: [],
};
registry
.category("fields")
.add("account_reconcile_oca_chatter", AccountReconcileChatterWidgetField);

View File

@@ -0,0 +1,80 @@
/** @odoo-module **/
import {formatDate, parseDate} from "@web/core/l10n/dates";
import {formatMonetary} from "@web/views/fields/formatters";
import {registry} from "@web/core/registry";
const {Component} = owl;
export class AccountReconcileDataWidget extends Component {
setup() {
super.setup(...arguments);
this.foreignCurrency =
this.props &&
this.props.record &&
(this.props.record.data.foreign_currency_id ||
this.props.record.data.currency_id[0] !==
this.props.record.data.company_currency_id[0] ||
this.props.record.data[this.props.name].data.some(
(item) => item.line_currency_id !== item.currency_id
));
}
getReconcileLines() {
var data = this.props.record.data[this.props.name].data;
for (var line in data) {
data[line].amount_format = formatMonetary(data[line].amount, {
currencyId: data[line].currency_id,
});
data[line].debit_format = formatMonetary(data[line].debit, {
currencyId: data[line].currency_id,
});
data[line].credit_format = formatMonetary(data[line].credit, {
currencyId: data[line].currency_id,
});
data[line].amount_currency_format = formatMonetary(
data[line].currency_amount,
{
currencyId: data[line].line_currency_id,
}
);
if (data[line].original_amount) {
data[line].original_amount_format = formatMonetary(
data[line].original_amount,
{
currencyId: data[line].currency_id,
}
);
}
data[line].date_format = formatDate(
parseDate(data[line].date, undefined, {isUTC: true})
);
}
return data;
}
onTrashLine(ev, line) {
this.props.record.update({
manual_reference: line.reference,
manual_delete: true,
});
}
selectReconcileLine(ev, line) {
this.props.record.update({
manual_reference: line.reference,
});
const triggerEv = new CustomEvent("reconcile-page-navigate", {
detail: {
name: "manual",
originalEv: ev,
},
});
this.env.bus.trigger("RECONCILE_PAGE_NAVIGATE", triggerEv);
}
}
AccountReconcileDataWidget.template = "account_reconcile_oca.ReconcileDataWidget";
export const AccountReconcileDataWidgetField = {
component: AccountReconcileDataWidget,
supportedTypes: [],
};
registry
.category("fields")
.add("account_reconcile_oca_data", AccountReconcileDataWidgetField);

View File

@@ -0,0 +1,107 @@
/** @odoo-module **/
import {View} from "@web/views/view";
import {evaluateBooleanExpr} from "@web/core/py_js/py";
import {getFieldContext} from "@web/model/relational_model/utils";
import {registry} from "@web/core/registry";
import {standardFieldProps} from "@web/views/fields/standard_field_props";
const {Component, useSubEnv} = owl;
export class AccountReconcileMatchWidget extends Component {
setup() {
// Necessary in order to avoid a loop
useSubEnv({
config: {},
parentController: this.env.parentController,
});
}
getDomain() {
let domain = this.props.domain;
if (typeof domain === "function") {
domain = domain();
}
return domain;
}
get listViewProperties() {
return {
type: "list",
display: {
controlPanel: {
// Hiding the control panel buttons
"top-left": false,
"bottom-left": false,
layoutActions: false,
},
},
noBreadcrumbs: true,
resModel: this.props.record.fields[this.props.name].relation,
searchMenuTypes: ["filter"],
domain: this.getDomain(),
context: {
...this.props.context,
...getFieldContext(this.props.record, this.props.name),
},
// Disables selector
allowSelectors: false,
// We need to force the search view in order to show the right one
searchViewId: false,
parentRecord: this.props.record,
parentField: this.props.name,
};
}
}
AccountReconcileMatchWidget.props = {
...standardFieldProps,
placeholder: {type: String, optional: true},
canOpen: {type: Boolean, optional: true},
canCreate: {type: Boolean, optional: true},
canWrite: {type: Boolean, optional: true},
canQuickCreate: {type: Boolean, optional: true},
canCreateEdit: {type: Boolean, optional: true},
context: {type: String, optional: true},
domain: {type: [Array, Function], optional: true},
nameCreateField: {type: String, optional: true},
searchLimit: {type: Number, optional: true},
relation: {type: String, optional: true},
string: {type: String, optional: true},
canScanBarcode: {type: Boolean, optional: true},
update: {type: Function, optional: true},
value: {optional: true},
decorations: {type: Object, optional: true},
};
AccountReconcileMatchWidget.template = "account_reconcile_oca.ReconcileMatchWidget";
AccountReconcileMatchWidget.components = {
...AccountReconcileMatchWidget.components,
View,
};
export const AccountReconcileMatchWidgetField = {
component: AccountReconcileMatchWidget,
supportedTypes: [],
extractProps({attrs, context, decorations, options}, dynamicInfo) {
const hasCreatePermission = attrs.can_create
? evaluateBooleanExpr(attrs.can_create)
: true;
const hasWritePermission = attrs.can_write
? evaluateBooleanExpr(attrs.can_write)
: true;
const canCreate = options.no_create ? false : hasCreatePermission;
return {
placeholder: attrs.placeholder,
canOpen: !options.no_open,
canCreate,
canWrite: hasWritePermission,
canQuickCreate: canCreate && !options.no_quick_create,
canCreateEdit: canCreate && !options.no_create_edit,
context: context,
decorations,
domain: dynamicInfo.domain,
};
},
};
registry
.category("fields")
.add("account_reconcile_oca_match", AccountReconcileMatchWidgetField);

View File

@@ -0,0 +1,38 @@
/** @odoo-module **/
import {
BadgeSelectionField,
preloadSelection,
} from "@web/views/fields/badge_selection/badge_selection_field";
import {registry} from "@web/core/registry";
import {standardFieldProps} from "@web/views/fields/standard_field_props";
export class FieldSelectionBadgeUncheck extends BadgeSelectionField {
async onChange(value) {
var old_value = this.props.value;
if (this.props.type === "many2one") {
old_value = old_value[0];
}
if (value === old_value) {
this.props.update(false);
return;
}
super.onChange(...arguments);
}
}
FieldSelectionBadgeUncheck.props = {...standardFieldProps};
FieldSelectionBadgeUncheck.supportedTypes = ["many2one", "selection"];
FieldSelectionBadgeUncheck.additionalClasses = ["o_field_selection_badge"];
export const FieldSelectionBadgeUncheckField = {
component: FieldSelectionBadgeUncheck,
supportedTypes: ["many2one"],
};
registry
.category("fields")
.add("selection_badge_uncheck", FieldSelectionBadgeUncheckField);
registry.category("preloadedData").add("selection_badge_uncheck", {
loadOnTypes: ["many2one"],
preload: preloadSelection,
});

View File

@@ -0,0 +1,76 @@
.o_account_reconcile_oca {
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row wrap;
flex-flow: row wrap;
height: 100%;
.o_kanban_renderer.o_kanban_ungrouped .o_kanban_record {
&:hover {
.o_reconcile_create_statement {
opacity: 100;
}
}
margin: 0 0 0;
min-width: fit-content;
width: 100%;
.o_reconcile_create_statement {
position: absolute;
height: 4px;
margin: 0;
padding: 2px 0 0 0;
border: 0;
top: -14px;
opacity: 0;
}
> div {
border-right: thick solid rgba(0, 0, 0, 0);
}
&.o_kanban_record_reconcile_oca_selected > div {
border-right: thick solid $o-brand-primary;
}
}
.o_account_reconcile_oca_selector {
width: 30%;
height: 100%;
padding: 0;
position: relative;
border-right: 1px solid $o-gray-300;
}
.o_account_reconcile_oca_info {
width: 70%;
height: 100%;
}
.o_form_view {
.o_form_statusbar.o_account_reconcile_oca_statusbar {
height: 40px;
}
.o_field_account_reconcile_oca_data {
.o_field_account_reconcile_oca_balance_float {
.o_field_account_reconcile_oca_balance_original_float {
text-decoration: line-through;
}
}
}
.o_field_widget.o_field_account_reconcile_oca_match {
display: inline;
}
.o_field_account_reconcile_oca_move_line_selected {
background-color: rgba($o-brand-primary, 0.2);
color: #000;
}
.o_reconcile_widget_table {
.o_reconcile_widget_line {
&.liquidity {
font-weight: bold;
}
&.selected {
background-color: rgba($o-brand-primary, 0.2);
}
}
}
}
}
.o_field_account_reconcile_oca_chatter {
width: 100%;
}

View File

@@ -0,0 +1,192 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates>
<t
t-name="account_reconcile_oca.ReconcileRenderer"
t-inherit="web.KanbanRenderer"
t-inherit-mode="primary"
>
<xpath expr="//t[@t-as='groupOrRecord']" position="before">
<div class="m-2 d-flex w-100" t-if="env.parentController.journalId">
<span
class="flex-fill text-900 text-start ps-0 fw-bold fs-4 align-self-center"
>Global Balance</span>
<span
class="pe-0 fw-bold fs-4 align-self-center"
t-esc="env.parentController.journalBalanceStr"
/>
</div>
<t t-set="aggregates" t-value="getAggregates()" />
</xpath>
<xpath expr="//t[@t-else='']/KanbanRecord" position="before">
<t
t-if="aggregates.length and groupOrRecord.record.data.aggregate_id and aggregates[0].id == groupOrRecord.record.data.aggregate_id"
>
<t t-set="aggregate" t-value="aggregates.shift()" />
<div class="m-2 d-flex w-100">
<span
class="flex-fill text-900 text-start ps-0 fw-bold fs-4 align-self-center"
t-esc="aggregate.name"
/>
<span
t-if="groupOrRecord.record.data.reconcile_aggregate == 'statement'"
t-on-click="() => this.onClickStatement(aggregate.id)"
class="pe-0 fw-bold fs-4 align-self-center btn btn-link"
t-esc="aggregate.balanceStr"
/>
<!--
<span
t-if="groupOrRecord.record.data.reconcile_aggregate != 'statement'"
class="pe-0 fw-bold fs-4 align-self-center text-link"
t-esc="aggregate.balanceStr"
/>-->
</div>
</t>
</xpath>
<xpath expr="div[hasclass('o_kanban_renderer')]" position="attributes">
<attribute
name="class"
add="o_account_reconcile_oca_selector"
separator=" "
/>
</xpath>
<!-- Group by selector disabled on the view, so we need to find the one without group,
then we pass to the component the selected record -->
<xpath expr="//KanbanRecord[not(@group)]" position="attributes">
<attribute name="selectedRecordId">props.selectedRecordId</attribute>
</xpath>
</t>
<t
t-name="account_reconcile_oca.ReconcileController"
t-inherit="web.KanbanView"
t-inherit-mode="primary"
>
<!-- we pass to the component the selected record -->
<xpath expr="//Layout/t[2]" position="attributes">
<attribute name="selectedRecordId">state.selectedRecordId</attribute>
</xpath>
<xpath expr="//Layout" position="attributes">
<attribute
name="className"
>model.useSampleModel ? 'o_view_sample_data o_account_reconcile_oca' : 'o_account_reconcile_oca'</attribute>
</xpath>
<xpath expr="//Layout" position="inside">
<div class="o_account_reconcile_oca_info">
<t t-if="state.selectedRecordId">
<View t-props="viewReconcileInfo" t-key="state.selectedRecordId" />
</t>
</div>
</xpath>
</t>
<t t-name="account_reconcile.ReconcileView.Buttons">
<button
t-on-click="onClickNewButton"
class="btn btn-primary"
t-if="activeActions.create"
>Create</button>
</t>
<t t-name="account_reconcile_oca.ReconcileMatchWidget">
<View t-props="this.listViewProperties" />
</t>
<t t-name="account_reconcile_oca.ReconcileDataWidget">
<table
class="table table-sm position-relative mb-0 table-striped o_reconcile_widget_table"
style="table-layout: auto"
>
<thead>
<th>Account</th>
<th>Partner</th>
<th>Date</th>
<th>Label</th>
<th class="text-end" t-if="foreignCurrency">
Amount in currency
</th>
<th class="text-end">Debit</th>
<th class="text-end">Credit</th>
<th t-if="! props.record.data.is_reconciled" />
</thead>
<tbody>
<t
t-foreach="getReconcileLines()"
t-as="reconcile_line"
t-key="reconcile_line_index"
>
<tr
t-on-click="(ev) => this.selectReconcileLine(ev, reconcile_line)"
t-att-class="'o_reconcile_widget_line ' + reconcile_line.kind + (props.record.data.manual_reference == reconcile_line.reference ? ' selected ' : ' ')"
>
<td t-esc="reconcile_line.account_id[1]" />
<td>
<span
t-esc="reconcile_line.partner_id[1]"
t-if="reconcile_line.partner_id and reconcile_line.partner_id[1]"
/>
</td>
<td t-esc="reconcile_line.date_format" />
<td>
<span
t-esc="reconcile_line.name"
t-if="reconcile_line.name"
/>
</td>
<td
class="text-end o_field_account_reconcile_oca_balance_float"
t-if="foreignCurrency"
>
<span t-esc="reconcile_line.amount_currency_format" />
</td>
<td
class="text-end o_field_account_reconcile_oca_balance_float"
>
<div
t-esc="reconcile_line.debit_format"
t-if="reconcile_line.amount &gt; 0"
/>
<div
class="o_field_account_reconcile_oca_balance_original_float"
t-esc="reconcile_line.original_amount_format"
t-if="reconcile_line.amount &gt; 0 and reconcile_line.original_amount"
/>
</td>
<td
class="text-end o_field_account_reconcile_oca_balance_float"
>
<div
t-esc="reconcile_line.credit_format"
t-if="reconcile_line.amount &lt; 0"
/>
<div
class="o_field_account_reconcile_oca_balance_original_float"
t-esc="reconcile_line.original_amount_format"
t-if="reconcile_line.amount &lt; 0 and reconcile_line.original_amount"
/>
</td>
<td>
<button
class="btn fa fa-trash-o"
role="button"
t-on-click="(ev) => this.onTrashLine(ev, reconcile_line)"
t-if="reconcile_line.kind == 'other' &amp;&amp; ! props.record.data.is_reconciled"
/>
</td>
</tr>
</t>
</tbody>
</table>
</t>
<t t-name="account_reconcile_oca.AccountReconcileChatterWidget">
<Chatter
threadModel="this.props.record.fields[this.props.name].relation"
threadId="this.props.record.data[this.props.name][0]"
/>
</t>
<t
t-name="account_reconcile_oca.ReconcileMoveLineController"
t-inherit="web.ListView"
t-inherit-mode="primary"
>
<xpath expr="//t[@list='model.root']" position="attributes">
<attribute name="parentRecord">props.parentRecord</attribute>
<attribute name="parentField">props.parentField</attribute>
</xpath>
</t>
</templates>

View File

@@ -0,0 +1,2 @@
from . import test_bank_account_reconcile
from . import test_account_reconcile

View File

@@ -0,0 +1,310 @@
from odoo.tests import Form, tagged
from odoo.addons.account_reconcile_model_oca.tests.common import (
TestAccountReconciliationCommon,
)
@tagged("post_install", "-at_install")
class TestReconciliationWidget(TestAccountReconciliationCommon):
@classmethod
def _setup_context(cls):
return {**cls.env.context, "_test_account_reconcile_oca": True}
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
cls.env = cls.env(context=cls._setup_context())
cls.acc_bank_stmt_model = cls.env["account.bank.statement"]
cls.acc_bank_stmt_line_model = cls.env["account.bank.statement.line"]
cls.bank_journal_usd.suspense_account_id = (
cls.env.company.account_journal_suspense_account_id
)
cls.bank_journal_euro.suspense_account_id = (
cls.env.company.account_journal_suspense_account_id
)
cls.current_assets_account = (
cls.env["account.account"]
.search(
[
("account_type", "=", "asset_current"),
("company_id", "=", cls.env.company.id),
],
limit=1,
)
.copy()
)
cls.current_assets_account.reconcile = True
cls.asset_receivable_account = (
cls.env["account.account"]
.search(
[
("account_type", "=", "asset_receivable"),
("company_id", "=", cls.env.company.id),
],
limit=1,
)
.copy()
)
cls.asset_receivable_account.reconcile = True
cls.equity_account = (
cls.env["account.account"]
.search(
[
("account_type", "=", "equity"),
("company_id", "=", cls.env.company.id),
],
limit=1,
)
.copy()
)
cls.non_current_assets_account = (
cls.env["account.account"]
.search(
[
("account_type", "=", "asset_non_current"),
("company_id", "=", cls.env.company.id),
],
limit=1,
)
.copy()
)
cls.non_current_assets_account.reconcile = True
cls.move_1 = cls.env["account.move"].create(
{
"line_ids": [
(
0,
0,
{
"account_id": cls.current_assets_account.id,
"name": "DEMO",
"credit": 100,
},
),
(
0,
0,
{
"account_id": cls.non_current_assets_account.id,
"name": "DEMO",
"debit": 100,
},
),
]
}
)
cls.move_1.action_post()
cls.move_2 = cls.env["account.move"].create(
{
"line_ids": [
(
0,
0,
{
"account_id": cls.non_current_assets_account.id,
"name": "DEMO",
"credit": 50,
},
),
(
0,
0,
{
"account_id": cls.equity_account.id,
"name": "DEMO",
"debit": 50,
},
),
]
}
)
cls.move_2.action_post()
cls.move_3 = cls.env["account.move"].create(
{
"line_ids": [
(
0,
0,
{
"account_id": cls.non_current_assets_account.id,
"name": "DEMO",
"credit": 50,
},
),
(
0,
0,
{
"account_id": cls.equity_account.id,
"name": "DEMO",
"debit": 50,
},
),
]
}
)
cls.move_3.action_post()
def test_reconcile(self):
account = self.non_current_assets_account
reconcile_account = self.env["account.account.reconcile"].search(
[("account_id", "=", account.id)]
)
self.assertTrue(reconcile_account)
with Form(reconcile_account) as f:
f.add_account_move_line_id = self.move_1.line_ids.filtered(
lambda r: r.account_id == account
)
f.add_account_move_line_id = self.move_2.line_ids.filtered(
lambda r: r.account_id == account
)
reconcile_account.reconcile()
reconcile_account = self.env["account.account.reconcile"].search(
[("account_id", "=", account.id)]
)
self.assertTrue(reconcile_account)
with Form(reconcile_account) as f:
f.add_account_move_line_id = self.move_1.line_ids.filtered(
lambda r: r.account_id == account
)
f.add_account_move_line_id = self.move_3.line_ids.filtered(
lambda r: r.account_id == account
)
reconcile_account.reconcile()
reconcile_account = self.env["account.account.reconcile"].search(
[("account_id", "=", account.id)]
)
self.assertFalse(reconcile_account)
def test_clean_reconcile(self):
account = self.non_current_assets_account
reconcile_account = self.env["account.account.reconcile"].search(
[("account_id", "=", account.id)]
)
self.assertTrue(reconcile_account)
with Form(reconcile_account) as f:
f.add_account_move_line_id = self.move_1.line_ids.filtered(
lambda r: r.account_id == account
)
f.add_account_move_line_id = self.move_2.line_ids.filtered(
lambda r: r.account_id == account
)
self.assertTrue(reconcile_account.reconcile_data_info.get("counterparts"))
reconcile_account.clean_reconcile()
self.assertFalse(reconcile_account.reconcile_data_info.get("counterparts"))
def test_cannot_reconcile(self):
"""
There is not enough records to reconcile for this account
"""
reconcile_account = self.env["account.account.reconcile"].search(
[("account_id", "=", self.current_assets_account.id)]
)
self.assertFalse(reconcile_account)
def test_cannot_reconcile_different_partners(self):
"""
We can only reconcile lines with the same account and partner.
"""
reconcile_account = self.env["account.account.reconcile"].search(
[
("account_id", "=", self.asset_receivable_account.id),
]
)
self.assertFalse(reconcile_account)
move_1 = self.env["account.move"].create(
{
"line_ids": [
(
0,
0,
{
"account_id": self.current_assets_account.id,
"name": "DEMO",
"credit": 100,
},
),
(
0,
0,
{
"account_id": self.asset_receivable_account.id,
"partner_id": self.env.user.partner_id.id,
"name": "DEMO",
"debit": 100,
},
),
]
}
)
move_1.action_post()
self.env.flush_all()
move_2 = self.env["account.move"].create(
{
"line_ids": [
(
0,
0,
{
"account_id": self.current_assets_account.id,
"name": "DEMO",
"debit": 100,
},
),
(
0,
0,
{
"account_id": self.asset_receivable_account.id,
"partner_id": self.env.company.partner_id.id,
"name": "DEMO",
"credit": 100,
},
),
]
}
)
move_2.action_post()
self.env.flush_all()
reconcile_account = self.env["account.account.reconcile"].search(
[
("account_id", "=", self.asset_receivable_account.id),
]
)
self.assertFalse(reconcile_account)
move_3 = self.env["account.move"].create(
{
"line_ids": [
(
0,
0,
{
"account_id": self.current_assets_account.id,
"name": "DEMO",
"debit": 100,
},
),
(
0,
0,
{
"account_id": self.asset_receivable_account.id,
"partner_id": self.env.user.partner_id.id,
"name": "DEMO",
"credit": 100,
},
),
]
}
)
move_3.action_post()
self.env.flush_all()
reconcile_account = self.env["account.account.reconcile"].search(
[
("account_id", "=", self.asset_receivable_account.id),
]
)
self.assertTrue(reconcile_account)
self.assertEqual(reconcile_account.partner_id, self.env.user.partner_id)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Dixmit
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="view_account_list">
<field name="name">account.account.tree (in account_reconcile_oca)</field>
<field name="model">account.account</field>
<field name="inherit_id" ref="account.view_account_list" />
<field name="arch" type="xml">
<tree position="inside">
<button
type="action"
name="%(account_reconcile_oca.account_account_account_account_reconcile_act_window)s"
string="Reconcile"
class="float-end btn-secondary"
invisible="reconcile == False"
/>
</tree>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,168 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Dixmit
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="account_account_reconcile_form_view">
<field
name="name"
>account.account.reconcile.form (in account_reconcile_oca)</field>
<field name="model">account.account.reconcile</field>
<field name="arch" type="xml">
<form js_class="reconcile_manual" create="0">
<field name="manual_delete" invisible="1" />
<field name="manual_reference" invisible="1" />
<field name="company_currency_id" invisible="1" />
<field name="foreign_currency_id" invisible="1" />
<field name="currency_id" invisible="1" />
<div class="o_form_statusbar o_account_reconcile_oca_statusbar">
<div class="o_statusbar_buttons">
<button
name="reconcile"
type="object"
string="Reconcile"
class="btn btn-primary mx-1"
invisible="is_reconciled == True"
/>
<button
name="clean_reconcile"
type="object"
string="Clean"
class="btn btn-secondary mx-1"
invisible="is_reconciled == True"
/>
</div>
</div>
<field name="is_reconciled" invisible="1" />
<group>
<group>
<field name="partner_id" />
</group>
<group>
<field name="account_id" />
</group>
</group>
<field
name="reconcile_data_info"
nolabel="1"
widget="account_reconcile_oca_data"
class="w-100"
/>
<notebook>
<page
name="reconcile_line"
string="Reconcile"
invisible="is_reconciled == True"
>
<field
name="add_account_move_line_id"
widget="account_reconcile_oca_match"
domain="[('parent_state', '=', 'posted'), ('amount_residual', '!=', 0), ('account_id', '=', account_id)]"
context="{'search_default_partner_id': partner_id, 'tree_view_ref': 'account_reconcile_oca.account_move_line_tree_reconcile_view', 'search_view_ref': 'account_reconcile_oca.account_move_line_search_reconcile_view'}"
/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="account_account_reconcile_search_view">
<field
name="name"
>account.account.reconcile.search (in account_reconcile_oca)</field>
<field name="model">account.account.reconcile</field>
<field name="arch" type="xml">
<search>
<!-- TODO -->
</search>
</field>
</record>
<record model="ir.ui.view" id="account_account_reconcile_tree_view">
<field
name="name"
>account.account.reconcile.tree (in account_reconcile_oca)</field>
<field name="model">account.account.reconcile</field>
<field name="arch" type="xml">
<tree>
<!-- TODO -->
<field name="id" />
<field name="account_id" />
<field name="partner_id" />
</tree>
</field>
</record>
<record model="ir.ui.view" id="account_account_reconcile_kanban_view">
<field
name="name"
>account.account.reconcile.kanban (in account_reconcile_oca)</field>
<field name="model">account.account.reconcile</field>
<field name="arch" type="xml">
<kanban js_class="reconcile">
<templates>
<t t-name="kanban-box">
<div
t-attf-class="oe_kanban_card oe_kanban_global_click"
style="width:100%"
>
<div>
<field name="account_id" />
</div>
<div>
<field name="partner_id" />
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record model="ir.actions.act_window" id="account_account_reconcile_act_window">
<field name="name">Reconcile</field>
<field name="res_model">account.account.reconcile</field>
<field name="view_mode">kanban</field>
<field name="domain">[]</field>
<field
name="context"
>{'view_ref': 'account_reconcile_oca.account_account_reconcile_form_view'}</field>
</record>
<record
id="res_partner_account_account_reconcile_act_window"
model="ir.actions.act_window"
>
<field name="name">Reconcile</field>
<field name="res_model">account.account.reconcile</field>
<field name="view_mode">kanban</field>
<field name="domain">[("partner_id", "=", id)]</field>
<field
name="context"
>{'view_ref': 'account_reconcile_oca.account_account_reconcile_form_view'}</field>
<field name="binding_model_id" ref="base.model_res_partner" />
<field name="binding_view_types">form</field>
</record>
<record
id="account_account_account_account_reconcile_act_window"
model="ir.actions.act_window"
>
<field name="name">Reconcile</field>
<field name="res_model">account.account.reconcile</field>
<field name="view_mode">kanban</field>
<field name="domain">[("account_id", "=", id)]</field>
<field
name="context"
>{'view_ref': 'account_reconcile_oca.account_account_reconcile_form_view'}</field>
<field name="binding_model_id" ref="account.model_account_account" />
<field name="binding_view_types">form</field>
</record>
<record model="ir.ui.menu" id="account_account_reconcile_menu">
<field name="name">Reconcile</field>
<field name="parent_id" ref="account.menu_finance_entries_actions" />
<field name="action" ref="account_account_reconcile_act_window" />
<field name="sequence" eval="10" />
</record>
</odoo>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Dixmit
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="account_bank_statement_form_edit" model="ir.ui.view">
<field name="name">Edit Bank statement</field>
<field name="model">account.bank.statement</field>
<field name="priority">99</field>
<field name="arch" type="xml">
<form string="Bank Statement">
<div
class="alert alert-warning text-center"
role="alert"
invisible="is_valid and is_complete"
>
<field name="problem_description" />
<field name="is_valid" invisible="1" />
<field name="is_complete" invisible="1" />
</div>
<sheet>
<group>
<field name="name" required="1" />
<field name="balance_start" />
<field name="balance_end_real" />
<field name="attachment_ids" widget="many2many_binary" />
<field name="line_ids" invisible="1" />
</group>
</sheet>
</form>
</field>
</record>
<record id="account_bank_statement_action_edit" model="ir.actions.act_window">
<field name="name">Edit Bank Statement</field>
<field name="res_model">account.bank.statement</field>
<field name="view_mode">form</field>
<field
name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'form', 'view_id': ref('account_bank_statement_form_edit')})]"
/>
<field name="target">new</field>
</record>
</odoo>

View File

@@ -0,0 +1,429 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Dixmit
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="bank_statement_line_reconcile_view" model="ir.ui.view">
<field name="name">account.bank.statement.line.reconcile</field>
<field name="model">account.bank.statement.line</field>
<field name="arch" type="xml">
<kanban js_class="reconcile">
<field name="is_reconciled" />
<field name="currency_id" />
<field name="foreign_currency_id" />
<field name="statement_id" />
<field name="statement_balance_end_real" />
<field name="to_check" />
<field name="reconcile_aggregate" />
<field name="aggregate_id" />
<field name="aggregate_name" />
<templates>
<t t-name="kanban-box">
<div
t-if="record.reconcile_aggregate.raw_value == 'statement' and !record.statement_id.raw_value"
class="o_reconcile_create_statement text-center"
>
<a
role="button"
class="btn btn-secondary btn-sm"
tabindex="-1"
type="object"
name="add_statement"
>
Statement
</a>
</div>
<div
t-attf-class="oe_kanban_card oe_kanban_global_click"
style="width:100%"
>
<div class="row">
<div class="col-8">
<field name="date" />
</div>
<div class="col-4" style="text-align:right">
<field
name="amount"
t-if="! record.foreign_currency_id.raw_value"
/>
<field
name="amount_currency"
t-if="record.foreign_currency_id.raw_value"
widget="monetary"
options="{'currency_field': 'foreign_currency_id'}"
/>
</div>
</div>
<div>
<field name="partner_id" />
</div>
<div class="row">
<div class="col-8">
<field name="payment_ref" />
</div>
<div class="col-4" style="text-align:right">
<div
t-if="record.to_check.raw_value"
class="badge text-bg-warning"
>
To check
</div>
<div
t-if="record.is_reconciled.raw_value"
class="badge text-bg-success"
>
Reconciled
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="bank_statement_line_form_add_view" model="ir.ui.view">
<field
name="name"
>Simple form view to manually create an account.bank.statement.line</field>
<field name="model">account.bank.statement.line</field>
<field name="priority">99</field>
<field name="arch" type="xml">
<form>
<group>
<group>
<field name="suitable_journal_ids" invisible="1" />
<field name="state" invisible="1" />
<field name="currency_id" invisible="0" />
<field name="company_id" invisible="0" />
<field name="date" />
<field name="payment_ref" required="1" />
<field name="partner_id" />
<field
name="statement_id"
domain="[('journal_id', '=', journal_id)]"
/>
<field
name="journal_id"
invisible="context.get('default_journal_id')"
/>
</group>
<group>
<field name="amount" />
<field
name="foreign_currency_id"
domain="[('id', '!=', currency_id)]"
groups="base.group_multi_currency"
/>
<field
name="amount_currency"
groups="base.group_multi_currency"
/>
</group>
</group>
<footer>
<button
string="Save"
type="object"
name="save"
class="btn btn-primary"
/>
<button string="Cancel" class="btn-secondary" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="account_bank_statement_line_search" model="ir.ui.view">
<field name="name">account.bank.statement.line.search</field>
<field name="model">account.bank.statement.line</field>
<field
name="inherit_id"
ref="account_statement_base.account_bank_statement_line_search"
/>
<field name="arch" type="xml">
<field name="journal_id" position="after">
<field name="move_id" />
</field>
</field>
</record>
<record id="bank_statement_line_form_reconcile_view" model="ir.ui.view">
<field name="name">account.bank.statement.line.reconcile</field>
<field name="model">account.bank.statement.line</field>
<field name="priority">99</field>
<field name="arch" type="xml">
<form js_class="reconcile_form">
<div class="o_form_statusbar o_account_reconcile_oca_statusbar">
<div class="o_statusbar_buttons">
<button
name="reconcile_bank_line"
type="object"
string="Validate"
accesskey="v"
class="btn btn-primary mx-1"
invisible="is_reconciled == True or can_reconcile == False"
/>
<button
name="reconcile_bank_line"
type="object"
string="Reconcile"
class="btn btn-primary disabled mx-1"
invisible="is_reconciled == True or can_reconcile == True"
/>
<button
name="unreconcile_bank_line"
type="object"
string="Unreconcile"
accesskey="r"
class="btn btn-warning mx-1"
invisible="is_reconciled == False"
confirm="Are you sure that the move should be unreconciled?"
/>
<button
name="clean_reconcile"
type="object"
string="Reset reconciliation"
class="btn btn-secondary mx-1"
invisible="is_reconciled == True"
/>
<button
name="action_to_check"
string="To Check"
class="btn btn-secondary mx-1"
accesskey="c"
type="object"
invisible="to_check == True"
/>
<button
name="action_checked"
string="Set as Checked"
class="btn btn-secondary mx-1"
accesskey="c"
type="object"
invisible="to_check == False"
/>
<button
name="action_show_move"
type="object"
accesskey="m"
string="View move"
class="btn btn-info mx-1"
/>
</div>
</div>
<field name="id" invisible="1" />
<field name="name" invisible="1" />
<field name="can_reconcile" invisible="1" />
<field name="to_check" invisible="1" />
<field name="partner_id" invisible="1" />
<field name="company_id" invisible="1" />
<field name="journal_id" invisible="1" />
<field name="suitable_journal_ids" invisible="1" />
<field name="manual_reference" invisible="1" />
<field name="manual_delete" invisible="1" />
<field name="is_reconciled" invisible="1" />
<field name="foreign_currency_id" invisible="1" />
<field name="company_currency_id" invisible="1" />
<field name="currency_id" invisible="1" />
<field
name="reconcile_data_info"
nolabel="1"
widget="account_reconcile_oca_data"
class="w-100"
/>
<div>
<field
name="manual_model_id"
widget="selection_badge_uncheck"
nolabel="1"
invisible="is_reconciled == True"
/>
</div>
<notebook>
<page
name="reconcile_line"
string="Reconcile"
invisible="is_reconciled == True"
>
<field
name="add_account_move_line_id"
widget="account_reconcile_oca_match"
domain="[('parent_state', '=', 'posted'),('amount_residual', '!=', 0),('account_id.reconcile', '=', True), ('company_id', '=', company_id), ('statement_line_id', '!=', id)]"
context="{'search_default_partner_id': partner_id, 'tree_view_ref': 'account_reconcile_oca.account_move_line_tree_reconcile_view', 'search_view_ref': 'account_reconcile_oca.account_move_line_search_reconcile_view'}"
/>
</page>
<page name="manual" string="Manual operation">
<group>
<group>
<field name="manual_line_id" invisible="1" />
<field name="manual_kind" invisible="1" />
<field
name="manual_account_id"
string="Account"
readonly="manual_reference == False or is_reconciled == True or manual_line_id != False"
/>
<field
name="manual_partner_id"
string="Partner"
readonly="manual_reference == False or is_reconciled == True or (manual_line_id != False and manual_kind != 'liquidity')"
/>
<field
name="analytic_distribution"
widget="analytic_distribution"
groups="analytic.group_analytic_accounting"
options="{'account_field': 'manual_account_id', 'business_domain': 'general'}"
invisible="manual_kind == 'liquidity' or manual_reference == False"
readonly="is_reconciled == True"
/>
</group>
<group>
<field
name="manual_name"
string="Name"
readonly="manual_reference == False or is_reconciled == True or (manual_line_id != False and manual_kind != 'liquidity')"
/>
<field
name="manual_amount"
string="Amount"
readonly="manual_reference == False or is_reconciled == True"
/>
<field name="manual_currency_id" invisible="1" />
<field name="manual_original_amount" invisible="1" />
<field name="manual_move_type" invisible="1" />
<label
for="manual_move_id"
string=""
insible="manual_move_type not in ['in_invoice', 'in_refund', 'out_invoice', 'out_refund'] or manual_original_amount == 0"
/>
<div
insible="manual_move_type not in ['in_invoice', 'in_refund', 'out_invoice', 'out_refund'] or manual_original_amount == 0"
>
Invoice <field
class="oe_inline"
name="manual_move_id"
/>
with an open amount <field
class="oe_inline"
name="manual_original_amount"
/> will be reduced by <field
class="oe_inline"
name="manual_amount"
readonly="1"
/>.
<br />
You might want to set the invoice as <button
name="button_manual_reference_full_paid"
type="object"
method_args="[1]"
>fully paid</button>.
</div>
</group>
</group>
</page>
<page name="narration" string="Narration">
<field name="payment_ref" />
<field name="narration" />
</page>
<page name="chatter" string="Chatter">
<field name="move_id" widget="account_reconcile_oca_chatter" />
</page>
</notebook>
</form>
</field>
</record>
<record id="action_bank_statement_line_reconcile" model="ir.actions.act_window">
<field name="name">Statement lines</field>
<field name="res_model">account.bank.statement.line</field>
<field name="domain">[('journal_id', '=', active_id)]</field>
<field name="context">
{'default_journal_id': active_id, 'search_default_not_reconciled': True, 'view_ref': 'account_reconcile_oca.bank_statement_line_form_reconcile_view'}
</field>
<field name="view_mode">kanban,tree</field>
<field
name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'kanban', 'view_id': ref('bank_statement_line_reconcile_view')}),
(0, 0, {'view_mode': 'tree', 'view_id': ref('account_statement_base.account_bank_statement_line_tree')})]"
/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Nothing to reconcile
</p>
</field>
</record>
<record id="action_bank_statement_line_reconcile_all" model="ir.actions.act_window">
<field name="name">Reconcile bank statement lines</field>
<field name="res_model">account.bank.statement.line</field>
<field name="domain">[('journal_id', '=', active_id)]</field>
<field
name="context"
>{'default_journal_id': active_id, 'view_ref': 'account_reconcile_oca.bank_statement_line_form_reconcile_view'}</field>
<field name="view_mode">kanban,tree</field>
<field
name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'kanban', 'view_id': ref('bank_statement_line_reconcile_view')}),
(0, 0, {'view_mode': 'tree', 'view_id': ref('account_statement_base.account_bank_statement_line_tree')})]"
/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Nothing to reconcile
</p>
</field>
</record>
<record
id="action_bank_statement_line_reconcile_to_check"
model="ir.actions.act_window"
>
<field name="name">Reconcile bank statement lines</field>
<field name="res_model">account.bank.statement.line</field>
<field name="domain">[('journal_id', '=', active_id)]</field>
<field name="context">
{'default_journal_id': active_id, 'search_default_to_check': True, 'view_ref': 'account_reconcile_oca.bank_statement_line_form_reconcile_view'}
</field>
<field name="view_mode">kanban</field>
<field
name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'kanban', 'view_id': ref('bank_statement_line_reconcile_view')})]"
/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Nothing to check
</p>
</field>
</record>
<record
id="action_bank_statement_line_move_view_reconcile"
model="ir.actions.act_window"
>
<field name="name">Reconcile bank statement lines</field>
<field name="res_model">account.bank.statement.line</field>
<field name="context">{'search_default_move_id': active_id}</field>
<field name="view_mode">kanban</field>
<field
name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'kanban', 'view_id': ref('bank_statement_line_reconcile_view')})]"
/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Nothing to reconcile
</p>
</field>
</record>
<record id="action_bank_statement_line_create" model="ir.actions.act_window">
<field name="name">Add Bank Statement Line</field>
<field name="res_model">account.bank.statement.line</field>
<field name="view_mode">form</field>
<field
name="view_ids"
eval="[(5, 0, 0),
(0, 0, {'view_mode': 'form', 'view_id': ref('bank_statement_line_form_add_view')})]"
/>
<field name="target">new</field>
</record>
</odoo>

View File

@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Dixmit
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_account_journal_form" model="ir.ui.view">
<field name="name">account.journal.form.inherit</field>
<field name="model">account.journal</field>
<field name="inherit_id" ref="account.view_account_journal_form" />
<field name="arch" type="xml">
<field name="suspense_account_id" position="before">
<field
name="reconcile_mode"
required="type in ('bank', 'cash')"
invisible="type not in ('bank', 'cash')"
options="{'no_quick_create': True}"
groups="account.group_account_readonly"
/>
<field
name="reconcile_aggregate"
invisible="type not in ('bank', 'cash')"
groups="account.group_account_readonly"
/>
</field>
</field>
</record>
<record id="account_journal_dashboard_kanban_view" model="ir.ui.view">
<field name="name">account.journal.kanban.inherit</field>
<field name="model">account.journal</field>
<field name="inherit_id" ref="account.account_journal_dashboard_kanban_view" />
<field name="arch" type="xml">
<xpath
expr="//kanban/templates//div[@id='dashboard_bank_cash_left']/t[1]"
position="before"
>
<t t-if="dashboard.number_to_reconcile > 0">
<button
type="action"
name="%(account_reconcile_oca.action_bank_statement_line_reconcile)s"
class="btn btn-primary"
> Reconcile <t
t-esc="dashboard.number_to_reconcile"
/> Items</button>
</t>
</xpath>
<xpath
expr="//kanban/templates//div[@id='dashboard_bank_cash_right']"
position="inside"
>
<t t-if="dashboard.number_to_check > 0">
<div class="row">
<div class="col overflow-hidden text-left">
<a
type="action"
name="%(account_reconcile_oca.action_bank_statement_line_reconcile_to_check)s"
>
<t t-esc="dashboard.number_to_check" /> to check</a>
</div>
<div class="col-auto text-right">
<span>
<t t-esc="dashboard.to_check_balance" />
</span>
</div>
</div>
</t>
</xpath>
<xpath expr="//h5[@id='card_action_view_menus']" position="after">
<div>
<a
role="menuitem"
type="action"
name="%(account_reconcile_oca.action_bank_statement_line_reconcile_all)s"
>Transactions</a>
</div>
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Dixmit
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="account_move_form_view">
<field name="name">account.move.form (in account_reconcile_oca)</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<div name="button_box" position="inside">
<button
type="action"
name="%(account_reconcile_oca.action_bank_statement_line_move_view_reconcile)s"
string="Bank reconcile"
class="btn btn-primary"
icon="fa-list"
invisible="statement_line_id == False"
/>
</div>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Dixmit
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="account_move_line_tree_reconcile_view" model="ir.ui.view">
<field name="name">account.move.line.tree.reconcile</field>
<field name="model">account.move.line</field>
<field name="priority">99</field>
<field name="arch" type="xml">
<tree
js_class="reconcile_move_line"
create="0"
edit="0"
export_xlsx="false"
>
<field name="date" />
<field name="move_id" optional="show" />
<field name="invoice_due_date" optional="show" />
<field name="account_id" optional="show" />
<field name="partner_id" />
<field name="company_currency_id" column_invisible="1" />
<field name="currency_id" column_invisible="1" />
<field name="name" optional="show" />
<field name="amount_residual_currency" optional="hide" />
<field name="amount_residual" optional="show" />
<field name="debit" optional="hide" />
<field name="credit" optional="hide" />
<button
type="object"
name="action_open_business_doc"
string="View"
class="btn btn-secondary"
/>
</tree>
</field>
</record>
<record id="account_move_line_search_reconcile_view" model="ir.ui.view">
<field name="name">account.move.line.search.reconcile</field>
<field name="model">account.move.line</field>
<field name="priority">99</field>
<field name="arch" type="xml">
<search string="Search Journal Items">
<field
name="name"
string="Journal Item"
filter_domain="[ '|', '|', '|', ('name', 'ilike', self), ('ref', 'ilike', self), ('account_id', 'ilike', self), ('partner_id', 'ilike', self)]"
/>
<field name="name" />
<field name="ref" />
<field name="date" />
<field name="account_id" />
<field name="account_root_id" />
<field name="account_type" />
<field name="partner_id" domain="[('parent_id', '=', False)]" />
<field name="journal_id" />
<field
name="move_id"
string="Journal Entry"
filter_domain="[ '|', '|', ('move_id.name', 'ilike', self), ('move_id.ref', 'ilike', self), ('move_id.partner_id', 'ilike', self)]"
/>
<separator />
<filter
string="Sales"
name="sales"
domain="[('journal_id.type', '=', 'sale')]"
context="{'default_journal_type': 'sale'}"
/>
<filter
string="Purchases"
name="purchases"
domain="[('journal_id.type', '=', 'purchase')]"
context="{'default_journal_type': 'purchase'}"
/>
<filter
string="Bank"
name="bank"
domain="[('journal_id.type', '=', 'bank')]"
context="{'default_journal_type': 'bank'}"
/>
<filter
string="Cash"
name="cash"
domain="[('journal_id.type', '=', 'cash')]"
context="{'default_journal_type': 'cash'}"
/>
<filter
string="Miscellaneous"
domain="[('journal_id.type', '=', 'general')]"
name="misc_filter"
context="{'default_journal_type': 'general'}"
/>
<separator />
<filter
string="Payable"
domain="[('account_id.account_type', '=', 'liability_payable'), ('account_id.non_trade', '=', False)]"
help="From Trade Payable accounts"
name="trade_payable"
/>
<filter
string="Receivable"
domain="[('account_id.account_type', '=', 'asset_receivable'), ('account_id.non_trade', '=', False)]"
help="From Trade Receivable accounts"
name="trade_receivable"
/>
</search>
</field>
</record>
<record id="action_reconcile" model="ir.actions.server">
<field name="name">Reconcile</field>
<field name="model_id" ref="account.model_account_move_line" />
<field name="binding_model_id" ref="account.model_account_move_line" />
<field name="binding_view_types">list</field>
<field name="state">code</field>
<field name="code">action = records.action_reconcile_manually()</field>
</record>
</odoo>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2024 Dixmit
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="res_config_settings_form_view">
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="account.res_config_settings_view_form" />
<field name="arch" type="xml">
<block id="bank_cash" position="inside">
<setting
id="reconcile_aggregate"
title="Standard aggregation to use on bank reconciliation"
string="Reconcile aggregation"
>
<field name="reconcile_aggregate" />
</setting>
</block>
</field>
</record>
</odoo>