Merge pull request #120 from Noviat/18.0

Syncing from upstream Noviat/account_ebics (18.0)
This commit is contained in:
braintec authored and GitHub committed 2026-10-27 06:29:24 +01:00
commit a6742bcf80
60 files changed
+958 -316

No files matched your search

+2 -1
View File
@@ -1,5 +1,5 @@
# Do NOT update manually; changes here will be overwritten by Copier
_commit: v5.0
_commit: v8.0.2
_src_path: git@github.com:Noviat-CI/addons-repo-template.git
ci_disable_autoinstall_modules: account_asset
odoo_test_flavor: Both
@@ -9,4 +9,5 @@ rebel_module_groups: []
repo_name: Modules dedicated to manage the EBICS protocol
repo_slug: account_ebics
repo_type: customer
weblate_project_name: ''
+29
View File
@@ -0,0 +1,29 @@
name: Check module version bump
on:
pull_request:
branches:
- "18.0*"
jobs:
check-version-bump:
runs-on: ubuntu-latest
name: Check module version bump
steps:
- uses: actions/checkout@v7
with:
# HEAD is the PR merge commit, HEAD^1 the tip of the base branch
fetch-depth: 2
persist-credentials: false
- name: Configure git authentication
# Header instead of URL credentials, see test.yml
env:
TOKEN: ${{ secrets.PRIVATE_TOKEN }}
run: |
git config --global http.https://github.com/.extraheader "AUTHORIZATION: basic $(printf 'x-access-token:%s' "$TOKEN" | base64 -w0)"
- name: Add Noviat CI Tools to PATH
run: |
git clone https://github.com/Noviat-CI/noviat-ci-tools.git /opt/noviat-ci-tools
echo "/opt/noviat-ci-tools" >> $GITHUB_PATH
- name: Check module version bump
run: check_module_version_bump
+10 -4
View File
@@ -8,17 +8,23 @@ on:
branches:
- "18.0"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
pre-commit:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: "3.11"
cache: 'pip'
cache-dependency-path: '.pre-commit-config.yaml'
- name: Get python version
run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
- uses: actions/cache@v4
- uses: actions/cache@v6
with:
path: ~/.cache/pre-commit
key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
+42 -13
View File
@@ -8,18 +8,23 @@ on:
branches:
- "18.0"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
unreleased-deps:
runs-on: ubuntu-latest
name: Detect unreleased dependencies
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
- run: |
for reqfile in requirements.txt test-requirements.txt ; do
if [ -f ${reqfile} ] ; then
result=0
# reject non-comment lines that contain a / (i.e. URLs, relative paths)
grep "^[^#].*/" ${reqfile} || result=$?
# unless they have a "# SKIP TEST" comment
grep "^[^#].*/" ${reqfile} | grep -v "# SKIP TEST" || result=$?
if [ $result -eq 0 ] ; then
echo "Unreleased dependencies found in ${reqfile}."
exit 1
@@ -27,7 +32,7 @@ jobs:
fi
done
test:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
container: ${{ matrix.container }}
name: ${{ matrix.name }}
permissions:
@@ -49,7 +54,7 @@ jobs:
makepot: "true"
services:
postgres:
image: postgres:12.0
image: postgres:12
env:
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo
@@ -60,20 +65,34 @@ jobs:
INSTALL_ADDONS_DIR: "/tmp/addons-merged"
ADDITIONAL_ADDONS_DIR: "/tmp/additional-addons"
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
persist-credentials: false
- name: Configure git authentication
env:
TOKEN: ${{ secrets.PRIVATE_TOKEN }}
run: |
git config --global http.https://github.com/.extraheader "AUTHORIZATION: basic $(printf 'x-access-token:%s' "$TOKEN" | base64 -w0)"
- name: Set pip constraints (pyOpenSSL / cryptography)
run: |
cat > /tmp/constraints.txt <<'EOF'
pyOpenSSL == 22.1.0
cryptography == 38.0.4
EOF
echo "PIP_CONSTRAINT=/tmp/constraints.txt" >> $GITHUB_ENV
- name: Upgrade pip in container
run: python -m pip install --upgrade pip
- name: Install Odoo upgrade util
run: python -m pip install git+https://github.com/odoo/upgrade-util@master
- name: Add Noviat CI Tools to PATH
run: |
git clone https://${{ secrets.PRIVATE_TOKEN }}@github.com/Noviat-CI/noviat-ci-tools.git /opt/noviat-ci-tools
git clone https://github.com/Noviat-CI/noviat-ci-tools.git /opt/noviat-ci-tools
echo "/opt/noviat-ci-tools" >> $GITHUB_PATH
- name: Clone Odoo Enterprise
if: ${{ matrix.odoo_enterprise == 1 }}
run : |
git clone https://${{ secrets.PRIVATE_TOKEN }}@github.com/odoo/enterprise.git --depth 1 -b 18.0 /opt/enterprise
git clone https://github.com/odoo/enterprise.git --depth 1 -b 18.0 /opt/enterprise
- name: Clone Noviat Dependencies
env:
PRIVATE_TOKEN: ${{ secrets.PRIVATE_TOKEN }}
run: clone_oca_dependencies_by_noviat
- name: Create addons path
run: |
@@ -97,21 +116,30 @@ jobs:
run: |
echo "server_wide_modules = web,module_change_auto_install" >> ${ODOO_RC}
echo "ODOO_MODULES_AUTO_INSTALL_DISABLED=${{ matrix.EXCLUDE_MODULES }}" >> $GITHUB_ENV
- name: Inject GitHub token for Noviat orgs in test-requirements.txt
run: |
sed -i -E "s#https://github.com/(Noviat-(Projects|Generic|ARP|Internal))#https://${{ secrets.PRIVATE_TOKEN }}@github.com/\1#g" test-requirements.txt
- name: Install addons and dependencies
run: |
(ADDONS_PATH=${ADDONS_PATH} ADDONS_DIR=${INSTALL_ADDONS_DIR} oca_install_addons)
- name: Install external dependencies of core addons (not in Odoo requirements.txt)
run: |
(ADDONS_DIR=${INSTALL_ADDONS_DIR} noviat_install_odoo_external_dependencies)
- name: Initialize test db
run: oca_init_test_database
- name: Run tests
run: oca_run_tests
- name: Generate coverage files
id: coverage
run: |
# oca_run_tests exits early without coverage data when there is no
# addon to test (e.g. a freshly scaffolded version branch).
if [ -z "$(oca_list_addons_to_test)" ]; then
echo "No addon to test, skipping coverage report."
exit 0
fi
coverage report -m
coverage xml -o coverage.xml
echo "report=true" >> "$GITHUB_OUTPUT"
- name: Code Coverage Summary Report
if: steps.coverage.outputs.report == 'true'
uses: irongut/CodeCoverageSummary@v1.3.0
with:
filename: 'coverage.xml'
@@ -120,7 +148,8 @@ jobs:
output: 'both'
hide_complexity: true
- name: Write to Job Summary
if: steps.coverage.outputs.report == 'true'
run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
- name: Update .pot files
run: noviat_export_and_push_pot https://x-access-token:${{ secrets.PRIVATE_TOKEN }}@github.com/${{ github.repository }}
run: noviat_export_and_push_pot https://github.com/${{ github.repository }}
if: ${{ matrix.makepot == 'true' && github.event_name == 'push' }}
+42
View File
@@ -0,0 +1,42 @@
name: Update addons table after merge
on:
push:
branches:
- "18.0"
paths-ignore:
- "README.md"
permissions:
contents: write
jobs:
gen-addons-table:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
persist-credentials: false
fetch-depth: 0
- uses: actions/setup-python@v7
with:
python-version: "3.11"
- name: Install pre-commit
run: pip install pre-commit
- name: Run the manual hook to (re)generate the addons table
run: pre-commit run -a --hook-stage manual oca-gen-addons-table
continue-on-error: true
- name: Commit & push if changed
env:
TOKEN: ${{ secrets.PRIVATE_TOKEN }}
run: |
if ! git diff --quiet; then
git config user.name "noviat-ci-bot"
git config user.email "bot+ci@noviat.com"
git add -A
git commit -m "update addons table"
# Header instead of URL credentials, see test.yml
git config http.https://github.com/.extraheader "AUTHORIZATION: basic $(printf 'x-access-token:%s' "$TOKEN" | base64 -w0)"
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git push origin HEAD:18.0
fi
+35 -14
View File
@@ -22,7 +22,7 @@ exclude: |
(LICENSE.*|COPYING.*)
default_language_version:
python: python3
node: "22.9.0"
node: "22.23.3"
repos:
- repo: local
hooks:
@@ -39,25 +39,38 @@ repos:
language: fail
files: '[a-zA-Z0-9_]*/i18n/en\.po$'
- repo: https://github.com/sbidoul/whool
rev: v1.2
rev: v1.3
hooks:
- id: whool-init
additional_dependencies:
# force a fresh pre-commit env: up-to-date core addons lists and
# Odoo 20 support (since v1.16.0)
- manifestoo-core>=1.16.1
- repo: https://github.com/oca/maintainer-tools
rev: b89f767503be6ab2b11e4f50a7557cb20066e667
rev: b8311a95009805a6e5593f0390f52c0fa350117f
hooks:
# update the NOT INSTALLABLE ADDONS section above
- id: oca-update-pre-commit-excluded-addons
- id: oca-fix-manifest-website
args: ["https://www.noviat.com/"]
- id: oca-gen-external-dependencies
additional_dependencies:
# an outdated manifestoo-core ignores recent core addons, and wipes
# requirements.txt on an Odoo series it does not know
- manifestoo-core>=1.16.1
- id: oca-gen-addons-table
stages: [manual]
- repo: https://github.com/OCA/odoo-pre-commit-hooks
rev: v0.0.33
rev: v0.2.27
hooks:
- id: oca-checks-odoo-module
- id: oca-checks-odoo-module-fixit
args:
- --disable=use-header-comments
- id: oca-checks-po
args:
- --disable=po-pretty-format
- --fix
- repo: local
hooks:
- id: prettier
@@ -71,8 +84,8 @@ repos:
files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$
language: node
additional_dependencies:
- "prettier@3.3.3"
- "@prettier/plugin-xml@3.4.1"
- "prettier@3.9.9"
- "@prettier/plugin-xml@3.4.2"
- repo: local
hooks:
- id: eslint
@@ -85,10 +98,11 @@ repos:
types: [javascript]
language: node
additional_dependencies:
- "eslint@9.12.0"
- "eslint-plugin-jsdoc@50.3.1"
- "eslint@10.11.0"
- "eslint-plugin-jsdoc@65.0.0"
- "globals@17.12.0"
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
rev: v6.0.0
hooks:
- id: trailing-whitespace
# exclude autogenerated files
@@ -97,8 +111,6 @@ repos:
# exclude autogenerated files
exclude: /README\.rst$|\.pot?$
- id: debug-statements
- id: fix-encoding-pragma
args: ["--remove"]
- id: check-case-conflict
- id: check-docstring-first
- id: check-executables-have-shebangs
@@ -109,21 +121,30 @@ repos:
- id: check-xml
- id: mixed-line-ending
args: ["--fix=lf"]
- repo: https://github.com/asottile/pyupgrade
rev: v3.21.2
hooks:
- id: pyupgrade
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.8
rev: v0.16.9
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
# markdown is prettier's job (ruff >= 0.16 also formats its code blocks)
types_or: [python, pyi, jupyter]
- repo: https://github.com/OCA/pylint-odoo
rev: v9.1.3
rev: v10.0.11
hooks:
- id: pylint_odoo
name: pylint with optional checks
name: pylint (optional, core only)
args:
- --rcfile=.pylintrc
- --exit-zero
verbose: true
- id: pylint_odoo
name: pylint-odoo (mandatory, blocking)
args:
- --disable=missing-readme
- --rcfile=.pylintrc-mandatory
verbose: true
+42 -47
View File
@@ -1,9 +1,11 @@
[MASTER]
ignore-patterns=["^.*/TODO/.*$"]
load-plugins=pylint_odoo
score=n
[IMPORTS]
deprecated-modules=pdb,pudb,ipdb,bs4
[ODOOLINT]
#readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
manifest-required-authors=Noviat
@@ -22,22 +24,15 @@ disable=all
# .pylintrc-mandatory containing only mandatory checks is used the pre-commit
# config as a blocking check.
enable=anomalous-backslash-in-string,
api-one-deprecated,
api-one-multi-together,
enable =
anomalous-backslash-in-string,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
deprecated-module,
development-status-allowed,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
license-allowed,
manifest-author-string,
manifest-deprecated-key,
@@ -48,73 +43,73 @@ enable=anomalous-backslash-in-string,
method-inverse,
method-required-super,
method-search,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error,
# >= 15
attribute-string-redundant,
character-not-valid-in-resource-link,
consider-merging-classes-inherited,
context-overridden,
create-user-wo-reset-password,
dangerous-filter-wo-user,
dangerous-qweb-replace-wo-priority,
deprecated-data-xml-node,
deprecated-openerp-xml-node,
duplicate-po-message-definition,
except-pass,
file-not-used,
invalid-commit,
manifest-external-assets,
manifest-maintainers-list,
missing-newline-extrafiles,
# missing-readme,
missing-readme,
missing-return,
odoo-addons-relative-import,
old-api7-method-defined,
po-msgstr-variables,
po-syntax-error,
odoo-exception-warning,
renamed-field-parameter,
resource-not-exist,
str-format-used,
test-folder-imported,
translation-contains-variable,
translation-positional-used,
unnecessary-utf8-coding-comment,
website-manifest-key-not-valid-uri,
xml-attribute-translatable,
xml-deprecated-qweb-directive,
xml-deprecated-tree-attribute,
# >= 16
external-request-timeout,
# >= 19
bad-builtin-groupby,
category-allowed,
deprecated-name-get,
deprecated-odoo-model-method,
deprecated-self-cr,
inheritable-method-lambda,
inheritable-method-string,
invalid-email,
manifest-behind-migrations,
manifest-data-duplicated,
missing-odoo-file,
no-raise-unlink,
no-search-all,
no-wizard-in-models,
prohibited-method-override,
prefer-env-translation,
translation-format-interpolation,
translation-format-truncated,
translation-injection,
translation-fstring-interpolation,
translation-not-lazy,
translation-too-few-args,
translation-too-many-args,
translation-unsupported-format,
no-write-in-compute,
odoolint,
# >= 20
manifest-summary-multiline,
# messages that do not cause the lint step to fail
consider-merging-classes-inherited,
create-user-wo-reset-password,
dangerous-filter-wo-user,
deprecated-module,
file-not-used,
invalid-commit,
missing-manifest-dependency,
missing-newline-extrafiles,
# missing-readme,
no-utf8-coding-comment,
missing-readme,
odoo-addons-relative-import,
old-api7-method-defined,
redefined-builtin,
too-complex,
unnecessary-utf8-coding-comment
redefined-builtin
[REPORTS]
+41 -35
View File
@@ -3,6 +3,9 @@ ignore-patterns=["^.*/TODO/.*$"]
load-plugins=pylint_odoo
score=n
[IMPORTS]
deprecated-modules=pdb,pudb,ipdb,bs4
[ODOOLINT]
#readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
manifest-required-authors=Noviat
@@ -14,22 +17,15 @@ valid-odoo-versions=18.0
[MESSAGES CONTROL]
disable=all
enable=anomalous-backslash-in-string,
api-one-deprecated,
api-one-multi-together,
enable =
anomalous-backslash-in-string,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
deprecated-module,
development-status-allowed,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
license-allowed,
manifest-author-string,
manifest-deprecated-key,
@@ -40,57 +36,67 @@ enable=anomalous-backslash-in-string,
method-inverse,
method-required-super,
method-search,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error,
# >= 15
attribute-string-redundant,
character-not-valid-in-resource-link,
consider-merging-classes-inherited,
context-overridden,
create-user-wo-reset-password,
dangerous-filter-wo-user,
dangerous-qweb-replace-wo-priority,
deprecated-data-xml-node,
deprecated-openerp-xml-node,
duplicate-po-message-definition,
except-pass,
file-not-used,
invalid-commit,
manifest-external-assets,
manifest-maintainers-list,
missing-newline-extrafiles,
# missing-readme,
missing-readme,
missing-return,
odoo-addons-relative-import,
old-api7-method-defined,
po-msgstr-variables,
po-syntax-error,
odoo-exception-warning,
renamed-field-parameter,
resource-not-exist,
str-format-used,
test-folder-imported,
translation-contains-variable,
translation-positional-used,
unnecessary-utf8-coding-comment,
website-manifest-key-not-valid-uri,
xml-attribute-translatable,
xml-deprecated-qweb-directive,
xml-deprecated-tree-attribute,
external-request-timeout
# >= 16
external-request-timeout,
# >= 19
bad-builtin-groupby,
category-allowed,
deprecated-name-get,
deprecated-odoo-model-method,
deprecated-self-cr,
inheritable-method-lambda,
inheritable-method-string,
invalid-email,
manifest-behind-migrations,
manifest-data-duplicated,
missing-odoo-file,
no-raise-unlink,
no-search-all,
no-wizard-in-models,
prohibited-method-override,
prefer-env-translation,
translation-format-interpolation,
translation-format-truncated,
translation-injection,
translation-fstring-interpolation,
translation-not-lazy,
translation-too-few-args,
translation-too-many-args,
translation-unsupported-format,
no-write-in-compute,
odoolint,
# >= 20
manifest-summary-multiline
[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
+8 -1
View File
@@ -3,7 +3,14 @@ target-version = "py310"
fix = true
[lint]
extend-select = [
# Explicit rule set: ruff >= 0.16 enables 413 rules by default, many of which go
# against Odoo idioms (naive UTC datetimes, `self = self.with_context()`, list
# `_inherit`). "E4", "E7", "E9" and "F" are the defaults of ruff < 0.16.
select = [
"E4",
"E7",
"E9",
"F",
"B",
"C90",
"E501", # line too long (default 88)
+6 -7
View File
@@ -1,6 +1,5 @@
[![Pre-commit Status](https://github.com/Noviat/account_ebics/actions/workflows/pre-commit.yml/badge.svg?branch=18.0)](https://github.com/Noviat/account_ebics/actions/workflows/pre-commit.yml?query=branch%3A18.0)
[![Build Status](https://github.com/Noviat/account_ebics/actions/workflows/test.yml/badge.svg?branch=18.0)](https://github.com/Noviat/account_ebics/actions/workflows/test.yml?query=branch%3A18.0)
<!-- /!\ do not modify above this line -->
# Modules dedicated to manage the EBICS protocol
@@ -15,12 +14,12 @@ Available addons
----------------
addon | version | maintainers | summary
--- | --- | --- | ---
[account_ebics](account_ebics/) | 18.0.1.2.2 | | Download bank statements and upload payment files directly from Odoo, using the European EBICS standard
[account_ebics_batch](account_ebics_batch/) | 18.0.1.0.1 | | Download and process your EBICS files automatically, on a schedule
[account_ebics_batch_payment](account_ebics_batch_payment/) | 18.0.1.2.0 | | Send an Odoo Enterprise batch payment to the bank over EBICS
[account_ebics_oca_statement_import](account_ebics_oca_statement_import/) | 18.0.1.0.1 | | Process EBICS statement files with the OCA bank statement import
[account_ebics_oe](account_ebics_oe/) | 18.0.1.0.0 | | Place the EBICS menus in the Odoo Enterprise accounting application
[account_ebics_payment_order](account_ebics_payment_order/) | 18.0.1.2.0 | | Send an OCA payment order to the bank over EBICS
[account_ebics](account_ebics/) | 18.0.1.3.0 | | Download bank statements and upload payment files directly from Odoo, using the European EBICS standard
[account_ebics_batch](account_ebics_batch/) | 18.0.1.0.2 | | Download and process your EBICS files automatically, on a schedule
[account_ebics_batch_payment](account_ebics_batch_payment/) | 18.0.1.3.0 | | Send an Odoo Enterprise batch payment to the bank over EBICS
[account_ebics_oca_statement_import](account_ebics_oca_statement_import/) | 18.0.1.0.2 | | Process EBICS statement files with the OCA bank statement import
[account_ebics_oe](account_ebics_oe/) | 18.0.1.0.1 | | Place the EBICS menus in the Odoo Enterprise accounting application
[account_ebics_payment_order](account_ebics_payment_order/) | 18.0.1.3.0 | | Send an OCA payment order to the bank over EBICS
[//]: # (end addons)
+22
View File
@@ -1,5 +1,8 @@
import functools
import logging
from odoo import api
_logger = logging.getLogger(__name__)
try:
@@ -7,3 +10,22 @@ try:
from . import wizards
except Exception:
_logger.warning("Import Error, check if fintech lib has been installed")
@functools.cached_property
def neutralized(self):
return bool(
self["ir.config_parameter"].sudo().get_param("database.is_neutralized")
or self["ir.ui.view"]
.sudo()
.search_count(
[
("key", "in", ("web.neutralize_banner", "website.neutralize_ribbon")),
("active", "=", True),
]
)
)
api.Environment.neutralized = neutralized
neutralized.__set_name__(api.Environment, "neutralized")
+1 -2
View File
@@ -7,7 +7,7 @@
"Download bank statements and upload payment files directly from Odoo, "
"using the European EBICS standard"
),
"version": "18.0.1.2.2",
"version": "18.0.1.3.0",
"license": "LGPL-3",
"author": "Noviat",
"website": "https://www.noviat.com/",
@@ -26,7 +26,6 @@
"wizards/ebics_admin_order.xml",
"views/menu.xml",
],
"installable": True,
"application": True,
"external_dependencies": {
"python": [
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo noupdate="1">
<!-- Download formats -->
+36 -14
View File
@@ -25,6 +25,13 @@ msgstr ""
msgid "%(st_cnt)s bank statement%(sp)s been imported: "
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid ""
"'%(filename)s' has been uploaded via EBICS (OrderID: %(order_number)s)."
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,help:account_ebics.field_ebics_file__date_from
msgid "'Date From' as entered in the download wizard."
@@ -368,6 +375,7 @@ msgstr ""
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_config__state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__draft
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_file_view_search
@@ -420,6 +428,16 @@ msgstr ""
msgid "EBICS Administrative Orders"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "EBICS Configs"
msgstr ""
#. module: account_ebics
#: model:ir.actions.act_window,name:account_ebics.ebics_config_action
#: model:ir.model,name:account_ebics.model_ebics_config
@@ -593,7 +611,7 @@ msgstr ""
#. odoo-python
#: code:addons/account_ebics/models/ebics_config.py:0
msgid ""
"EBICS Keys Root Directory %s is not available.\n"
"EBICS Keys Root Directory %(dir)s is not available.\n"
"Please contact your system administrator."
msgstr ""
@@ -608,9 +626,8 @@ msgid "EBICS Mark as Downloaded"
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid "EBICS OrderID: %s"
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics
@@ -794,16 +811,6 @@ msgstr ""
msgid "EBICS version mismatch."
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "Ebics Config"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "Ebics Configs"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_userid__ebics_keys_fn
msgid "Ebics Keys Fn"
@@ -856,6 +863,11 @@ msgid ""
"statement."
msgstr ""
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__error
msgid "Error"
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
@@ -1242,6 +1254,11 @@ msgstr ""
msgid "Origin: %s"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__pain_state
msgid "Pain State"
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
@@ -1645,6 +1662,11 @@ msgstr ""
msgid "Upload Only"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__uploaded
msgid "Uploaded"
msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
msgid ""
+57 -18
View File
@@ -31,6 +31,12 @@ msgstr " wurde"
msgid "%(st_cnt)s bank statement%(sp)s been imported: "
msgstr "%(st_cnt)s Kontoauszug%(sp)s importiert: "
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid "'%(filename)s' has been uploaded via EBICS (OrderID: %(order_number)s)."
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,help:account_ebics.field_ebics_file__date_from
msgid "'Date From' as entered in the download wizard."
@@ -391,6 +397,7 @@ msgstr "Download und Upload"
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_config__state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__draft
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_file_view_search
@@ -456,6 +463,16 @@ msgstr "Ergebnis des EBICS-Verwaltungsauftrags"
msgid "EBICS Administrative Orders"
msgstr "EBICS-Verwaltungsaufträge"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "EBICS Configs"
msgstr ""
#. module: account_ebics
#: model:ir.actions.act_window,name:account_ebics.ebics_config_action
#: model:ir.model,name:account_ebics.model_ebics_config
@@ -642,11 +659,9 @@ msgstr "EBICS-Schlüsselstammverzeichnis"
#. odoo-python
#: code:addons/account_ebics/models/ebics_config.py:0
msgid ""
"EBICS Keys Root Directory %s is not available.\n"
"EBICS Keys Root Directory %(dir)s is not available.\n"
"Please contact your system administrator."
msgstr ""
"Das Stammverzeichnis der EBICS-Schlüssel %s ist nicht verfügbar.\n"
"Bitte wenden Sie sich an Ihren Systemadministrator."
#. module: account_ebics
#: model:res.groups,name:account_ebics.group_ebics_manager
@@ -659,10 +674,9 @@ msgid "EBICS Mark as Downloaded"
msgstr "EBICS als heruntergeladen markieren"
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid "EBICS OrderID: %s"
msgstr "EBICS-OrderID: %s"
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_config__ebics_partner
@@ -852,16 +866,6 @@ msgstr "EBICS-Version 3"
msgid "EBICS version mismatch."
msgstr "EBICS-Versionskonflikt."
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "Ebics Config"
msgstr "EBICS-Konfiguration"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "Ebics Configs"
msgstr "EBICS-Konfigurationen"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_userid__ebics_keys_fn
msgid "Ebics Keys Fn"
@@ -917,6 +921,11 @@ msgstr ""
"Schaltfläche 'Verarbeiten'. Geben Sie z. B. camt.053 an, um eine camt.053-"
"Datei zu importieren und einen Kontoauszug zu erstellen."
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__error
msgid "Error"
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
@@ -1332,6 +1341,11 @@ msgstr ""
msgid "Origin: %s"
msgstr "Herkunft: %s"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__pain_state
msgid "Pain State"
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
@@ -1791,6 +1805,11 @@ msgstr "Upload-Format"
msgid "Upload Only"
msgstr "Nur Upload"
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__uploaded
msgid "Uploaded"
msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
msgid ""
@@ -1832,7 +1851,6 @@ msgstr "Benutzer"
#: model:ir.model.fields,help:account_ebics.field_ebics_userid__user_ids
msgid "Users who are allowed to use this EBICS UserID for bank transactions."
msgstr ""
"Benutzer, die diese EBICS-UserID für Banktransaktionen verwenden dürfen."
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__to_verify
@@ -1930,6 +1948,27 @@ msgstr ""
"urlopen-Fehler:\n"
" URL '%(url)s' - %(val)s"
#~ msgid ""
#~ "EBICS Keys Root Directory %s is not available.\n"
#~ "Please contact your system administrator."
#~ msgstr ""
#~ "Das Stammverzeichnis der EBICS-Schlüssel %s ist nicht verfügbar.\n"
#~ "Bitte wenden Sie sich an Ihren Systemadministrator."
#~ msgid "EBICS OrderID: %s"
#~ msgstr "EBICS-OrderID: %s"
#~ msgid "Ebics Config"
#~ msgstr "EBICS-Konfiguration"
#~ msgid "Ebics Configs"
#~ msgstr "EBICS-Konfigurationen"
#~ msgid ""
#~ "Users who are allowed to use this EBICS UserID for bank transactions."
#~ msgstr ""
#~ "Benutzer, die diese EBICS-UserID für Banktransaktionen verwenden dürfen."
#~ msgid "3SKey Certficate"
#~ msgstr "3SKey-Zertifikat"
+58 -19
View File
@@ -32,6 +32,12 @@ msgstr " a"
msgid "%(st_cnt)s bank statement%(sp)s been imported: "
msgstr "%(st_cnt)s relevé bancaire%(sp)s été importé : "
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid "'%(filename)s' has been uploaded via EBICS (OrderID: %(order_number)s)."
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,help:account_ebics.field_ebics_file__date_from
msgid "'Date From' as entered in the download wizard."
@@ -392,6 +398,7 @@ msgstr "Téléchargement et envoi"
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_config__state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__draft
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_file_view_search
@@ -457,6 +464,16 @@ msgstr "Résultat de l'ordre administratif EBICS"
msgid "EBICS Administrative Orders"
msgstr "Ordres administratifs EBICS"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "EBICS Configs"
msgstr ""
#. module: account_ebics
#: model:ir.actions.act_window,name:account_ebics.ebics_config_action
#: model:ir.model,name:account_ebics.model_ebics_config
@@ -642,11 +659,9 @@ msgstr "Racine des clés EBICS"
#. odoo-python
#: code:addons/account_ebics/models/ebics_config.py:0
msgid ""
"EBICS Keys Root Directory %s is not available.\n"
"EBICS Keys Root Directory %(dir)s is not available.\n"
"Please contact your system administrator."
msgstr ""
"Le répertoire racine des clés EBICS %s n'est pas disponible.\n"
"Veuillez contacter votre administrateur système."
#. module: account_ebics
#: model:res.groups,name:account_ebics.group_ebics_manager
@@ -659,10 +674,9 @@ msgid "EBICS Mark as Downloaded"
msgstr "Marquer EBICS comme téléchargé"
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid "EBICS OrderID: %s"
msgstr "ID de commande EBICS : %s"
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_config__ebics_partner
@@ -850,16 +864,6 @@ msgstr "EBICS version 3"
msgid "EBICS version mismatch."
msgstr "Incompatibilité de version EBICS."
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "Ebics Config"
msgstr "Configuration EBICS"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "Ebics Configs"
msgstr "Configurations EBICS"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_userid__ebics_keys_fn
msgid "Ebics Keys Fn"
@@ -915,6 +919,11 @@ msgstr ""
"'Traiter'. Par exemple, spécifiez camt.053 pour importer un fichier camt.053 "
"et créer un relevé bancaire."
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__error
msgid "Error"
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
@@ -1331,6 +1340,11 @@ msgstr ""
msgid "Origin: %s"
msgstr "Origine : %s"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__pain_state
msgid "Pain State"
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
@@ -1789,6 +1803,11 @@ msgstr "Format de téléversement"
msgid "Upload Only"
msgstr "Téléversement uniquement"
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__uploaded
msgid "Uploaded"
msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
msgid ""
@@ -1828,8 +1847,6 @@ msgstr "Utilisateurs"
#: model:ir.model.fields,help:account_ebics.field_ebics_userid__user_ids
msgid "Users who are allowed to use this EBICS UserID for bank transactions."
msgstr ""
"Utilisateurs autorisés à utiliser cet UserID EBICS pour les transactions "
"bancaires."
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__to_verify
@@ -1928,6 +1945,28 @@ msgstr ""
"erreur urlopen :\n"
" url '%(url)s' - %(val)s"
#~ msgid ""
#~ "EBICS Keys Root Directory %s is not available.\n"
#~ "Please contact your system administrator."
#~ msgstr ""
#~ "Le répertoire racine des clés EBICS %s n'est pas disponible.\n"
#~ "Veuillez contacter votre administrateur système."
#~ msgid "EBICS OrderID: %s"
#~ msgstr "ID de commande EBICS : %s"
#~ msgid "Ebics Config"
#~ msgstr "Configuration EBICS"
#~ msgid "Ebics Configs"
#~ msgstr "Configurations EBICS"
#~ msgid ""
#~ "Users who are allowed to use this EBICS UserID for bank transactions."
#~ msgstr ""
#~ "Utilisateurs autorisés à utiliser cet UserID EBICS pour les transactions "
#~ "bancaires."
#~ msgid "3SKey Certficate"
#~ msgstr "Certificat 3SKey"
+57 -18
View File
@@ -32,6 +32,12 @@ msgstr " heeft"
msgid "%(st_cnt)s bank statement%(sp)s been imported: "
msgstr "%(st_cnt)s rekeninguittreksel%(sp)s geïmporteerd: "
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid "'%(filename)s' has been uploaded via EBICS (OrderID: %(order_number)s)."
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,help:account_ebics.field_ebics_file__date_from
msgid "'Date From' as entered in the download wizard."
@@ -391,6 +397,7 @@ msgstr "Downloaden en uploaden"
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_config__state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__state__draft
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__draft
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_file_view_search
@@ -456,6 +463,16 @@ msgstr "Resultaat EBICS administratieve order"
msgid "EBICS Administrative Orders"
msgstr "EBICS administratieve orders"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "EBICS Configs"
msgstr ""
#. module: account_ebics
#: model:ir.actions.act_window,name:account_ebics.ebics_config_action
#: model:ir.model,name:account_ebics.model_ebics_config
@@ -641,11 +658,9 @@ msgstr "Hoofdmap EBICS-sleutels"
#. odoo-python
#: code:addons/account_ebics/models/ebics_config.py:0
msgid ""
"EBICS Keys Root Directory %s is not available.\n"
"EBICS Keys Root Directory %(dir)s is not available.\n"
"Please contact your system administrator."
msgstr ""
"De hoofdmap van de EBICS-sleutels %s is niet beschikbaar.\n"
"Neem contact op met uw systeembeheerder."
#. module: account_ebics
#: model:res.groups,name:account_ebics.group_ebics_manager
@@ -658,10 +673,9 @@ msgid "EBICS Mark as Downloaded"
msgstr "EBICS markeren als gedownload"
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
msgid "EBICS OrderID: %s"
msgstr "EBICS-order-ID: %s"
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_config__ebics_partner
@@ -850,16 +864,6 @@ msgstr "EBICS versie 3"
msgid "EBICS version mismatch."
msgstr "EBICS-versie komt niet overeen."
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_id
msgid "Ebics Config"
msgstr "EBICS-configuratie"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_account_journal__ebics_config_ids
msgid "Ebics Configs"
msgstr "EBICS-configuraties"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_userid__ebics_keys_fn
msgid "Ebics Keys Fn"
@@ -915,6 +919,11 @@ msgstr ""
"knop 'Verwerken'. Geef bijv. camt.053 op om een camt.053-bestand te "
"importeren en een rekeninguittreksel aan te maken."
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__error
msgid "Error"
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/wizards/ebics_xfer.py:0
@@ -1331,6 +1340,11 @@ msgstr ""
msgid "Origin: %s"
msgstr "Oorsprong: %s"
#. module: account_ebics
#: model:ir.model.fields,field_description:account_ebics.field_ebics_file__pain_state
msgid "Pain State"
msgstr ""
#. module: account_ebics
#. odoo-python
#: code:addons/account_ebics/models/ebics_userid.py:0
@@ -1785,6 +1799,11 @@ msgstr "Uploadformaat"
msgid "Upload Only"
msgstr "Alleen uploaden"
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_file__pain_state__uploaded
msgid "Uploaded"
msgstr ""
#. module: account_ebics
#: model_terms:ir.ui.view,arch_db:account_ebics.ebics_userid_view_form
msgid ""
@@ -1823,7 +1842,6 @@ msgstr "Gebruikers"
#: model:ir.model.fields,help:account_ebics.field_ebics_userid__user_ids
msgid "Users who are allowed to use this EBICS UserID for bank transactions."
msgstr ""
"Gebruikers die deze EBICS-UserID mogen gebruiken voor banktransacties."
#. module: account_ebics
#: model:ir.model.fields.selection,name:account_ebics.selection__ebics_userid__state__to_verify
@@ -1921,6 +1939,27 @@ msgstr ""
"urlopen-fout:\n"
" url '%(url)s' - %(val)s"
#~ msgid ""
#~ "EBICS Keys Root Directory %s is not available.\n"
#~ "Please contact your system administrator."
#~ msgstr ""
#~ "De hoofdmap van de EBICS-sleutels %s is niet beschikbaar.\n"
#~ "Neem contact op met uw systeembeheerder."
#~ msgid "EBICS OrderID: %s"
#~ msgstr "EBICS-order-ID: %s"
#~ msgid "Ebics Config"
#~ msgstr "EBICS-configuratie"
#~ msgid "Ebics Configs"
#~ msgstr "EBICS-configuraties"
#~ msgid ""
#~ "Users who are allowed to use this EBICS UserID for bank transactions."
#~ msgstr ""
#~ "Gebruikers die deze EBICS-UserID mogen gebruiken voor banktransacties."
#~ msgid "3SKey Certficate"
#~ msgstr "3SKey-certificaat"
@@ -3,7 +3,7 @@
import os
from openupgradelib import openupgrade # pylint: disable=W7936
from openupgradelib import openupgrade # pylint: disable=E0401
@openupgrade.migrate()
+2 -2
View File
@@ -11,13 +11,13 @@ class AccountJournal(models.Model):
comodel_name="ebics.config",
relation="account_journal_ebics_config_rel",
readonly=True,
string="Ebics Configs",
string="EBICS Configs",
)
ebics_config_id = fields.Many2one(
comodel_name="ebics.config",
compute="_compute_ebics_config_id",
compute_sudo=True,
string="Ebics Config",
string="EBICS Config",
)
@api.depends("ebics_config_ids")
+7 -8
View File
@@ -8,7 +8,7 @@ import re
from odoo import api, fields, models
from odoo.exceptions import UserError
_logger = logging.getLogger(__name__)
_logger = logging.getLogger(__name__) # lint-ignore=unused-logger
class EbicsConfig(models.Model):
@@ -160,13 +160,12 @@ class EbicsConfig(models.Model):
for rec in self:
rec.company_ids = rec.journal_ids.mapped("company_id")
def unlink(self):
for ebics_config in self:
if ebics_config.state == "active":
@api.ondelete(at_uninstall=False)
def _unlink_except_active(self):
if any(rec.state == "active" for rec in self):
raise UserError(
self.env._("You cannot remove active EBICS configurations.")
)
return super().unlink()
def set_to_draft(self):
return self.write({"state": "draft"})
@@ -199,8 +198,8 @@ class EbicsConfig(models.Model):
if not os.path.exists(dirname):
raise UserError(
self.env._(
"EBICS Keys Root Directory %s is not available."
"\nPlease contact your system administrator."
"EBICS Keys Root Directory %(dir)s is not available."
"\nPlease contact your system administrator.",
dir=dirname,
)
% dirname
)
+18 -11
View File
@@ -9,12 +9,12 @@ from traceback import format_exception
from lxml import etree
from odoo import fields, models
from odoo import api, fields, models
from odoo.exceptions import UserError
from odoo.addons.base.models.res_bank import sanitize_account_number
_logger = logging.getLogger(__name__)
_logger = logging.getLogger(__name__) # lint-ignore=unused-logger
DUP_CHECK_FORMATS = ["cfonb120", "camt053"]
@@ -63,7 +63,6 @@ class EbicsFile(models.Model):
)
user_id = fields.Many2one(
comodel_name="res.users",
string="User",
default=lambda self: self.env.user,
readonly=True,
)
@@ -74,6 +73,12 @@ class EbicsFile(models.Model):
readonly=True,
)
note = fields.Text(string="Notes")
ebics_order_number = fields.Char(string="EBICS OrderID", readonly=True)
pain_state = fields.Selection(
[("draft", "Draft"), ("uploaded", "Uploaded"), ("error", "Error")],
default="draft",
readonly=True,
)
note_process = fields.Text(
string="Process Notes",
readonly=True,
@@ -85,13 +90,16 @@ class EbicsFile(models.Model):
help="Companies sharing this EBICS file.",
)
def unlink(self):
ff_methods = self._file_format_methods()
for ebics_file in self:
if ebics_file.state == "done":
@api.ondelete(at_uninstall=False)
def _unlink_except_done(self):
if any(rec.state == "done" for rec in self):
raise UserError(
self.env._("You can only remove EBICS files in state 'Draft'.")
)
def unlink(self):
ff_methods = self._file_format_methods()
for ebics_file in self:
# execute format specific actions
ff = ebics_file.format_id.download_process_method
if ff in ff_methods:
@@ -379,8 +387,7 @@ class EbicsFile(models.Model):
file_data = base64.b64decode(self.data).replace(b"\n", b"").replace(b"\r", b"")
if len(file_data) % 120:
message = self.env._(
"Incorrect CFONB120 file:\n"
"the file is not divisible in 120 char lines"
"Incorrect CFONB120 file:\nthe file is not divisible in 120 char lines"
)
res["notifications"].append({"type": "error", "message": message})
return datas
@@ -644,7 +651,7 @@ class EbicsFile(models.Model):
self.env._(
"The current version of the 'account_ebics' module "
"has no support to automatically process EBICS files "
"with format %s."
"with format %s.",
self.format_id.name,
)
% self.format_id.name
)
+4 -6
View File
@@ -69,8 +69,7 @@ class EbicsUserID(models.Model):
string="Users",
required=True,
domain=[("share", "=", False)],
help="Users who are allowed to use this EBICS UserID for "
" bank transactions.",
help="Users who are allowed to use this EBICS UserID for bank transactions.",
)
signature_class = fields.Selection(
selection=[("E", "Single signature"), ("T", "Transport signature")],
@@ -149,7 +148,7 @@ class EbicsUserID(models.Model):
# create self-signed X.509 certificates
ebics_key_x509 = fields.Boolean(
string="X509 support",
help="Set this flag in order to work with " "self-signed X.509 certificates",
help="Set this flag in order to work with self-signed X.509 certificates",
)
ebics_key_x509_dn_cn = fields.Char(
string="Common Name [CN]",
@@ -417,7 +416,7 @@ class EbicsUserID(models.Model):
if not ebics_config_bank:
raise UserError(
self.env._(
"No bank defined for the financial journal " "of the EBICS Config"
"No bank defined for the financial journal of the EBICS Config"
)
)
try:
@@ -476,8 +475,7 @@ class EbicsUserID(models.Model):
if cc in ["FR", "DE"]:
lang = cc
else:
lang = self.env.user.lang or self.env["res.lang"].search([])[0].code
lang = lang[:2]
lang = self.env.user.lang[:2]
lang = lang.lower()
lang = lang if lang in INI_LETTER_LANGS else "en"
fn_date = fields.Date.today().isoformat()
+2 -2
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record model="res.groups" id="group_ebics_manager">
<record id="group_ebics_manager" model="res.groups">
<field name="name">EBICS Manager</field>
<field name="category_id" ref="base.module_category_hidden" />
</record>
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="ebics_config_view_list" model="ir.ui.view">
<field name="name">ebics.config.list</field>
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="ebics_file_format_view_search" model="ir.ui.view">
<field name="name">ebics.file.format.search</field>
+7 -3
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="ebics_file_view_search" model="ir.ui.view">
<field name="name">ebics.file.search</field>
@@ -81,7 +81,7 @@
<record id="ebics_file_view_form" model="ir.ui.view">
<field name="name">ebics.file.form</field>
<field name="model">ebics.file</field>
<field name="priority">1</field>
<field name="priority" eval="1" />
<field name="arch" type="xml">
<form create="false">
<header>
@@ -135,6 +135,10 @@
string="Upload Date"
invisible="context.get('ebics_mode') == 'down'"
/>
<field
name="ebics_order_number"
invisible="context.get('ebics_mode') != 'up'"
/>
<field name="user_id" />
<field name="ebics_userid_id" />
</group>
@@ -173,7 +177,7 @@
<record id="ebics_file_view_form_result" model="ir.ui.view">
<field name="name">ebics.file.process.result</field>
<field name="model">ebics.file</field>
<field name="priority">100</field>
<field name="priority" eval="100" />
<field name="arch" type="xml">
<form string="Process EBICS File">
<separator colspan="4" string="Results :" />
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="ebics_userid_view_list" model="ir.ui.view">
<field name="name">ebics.userid.list</field>
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<menuitem
id="ebics_processing_menu"
+3 -3
View File
@@ -37,9 +37,9 @@ class EbicsAdminOrder(models.TransientModel):
self.ensure_one()
client = self._setup_client()
if not client:
self.note += (
self.env._("EBICS client setup failed for connection '%s'")
% self.ebics_config_id.name
self.note += self.env._(
"EBICS client setup failed for connection '%s'",
self.ebics_config_id.name,
)
else:
try:
+3 -3
View File
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="ebics_admin_order_view_form" model="ir.ui.view">
<field name="name">EBICS Administrative Order</field>
<field name="model">ebics.admin.order</field>
<field name="inherit_id" ref="ebics_xfer_view_form_download" />
<field name="priority">1</field>
<field name="priority" eval="1" />
<field name="arch" type="xml">
<field name="date_from" position="attributes">
<attribute name="invisible">1</attribute>
@@ -31,7 +31,7 @@
<record id="ebics_admin_order_view_form_result" model="ir.ui.view">
<field name="name">EBICS Administrative Order result</field>
<field name="model">ebics.admin.order</field>
<field name="priority">2</field>
<field name="priority" eval="2" />
<field name="arch" type="xml">
<form string="EBICS Administrative Order result">
<separator colspan="4" string="Results :" />
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="ebics_change_passphrase_view_form" model="ir.ui.view">
<field name="name">EBICS Keys Change Passphrase</field>
<field name="model">ebics.change.passphrase</field>
<field name="priority">1</field>
<field name="priority" eval="1" />
<field name="arch" type="xml">
<form string="EBICS Keys Change Passphrase">
<group>
@@ -40,7 +40,7 @@
<record id="ebics_change_passphrase_view_form_result" model="ir.ui.view">
<field name="name">EBICS Keys Change Passphrase</field>
<field name="model">ebics.change.passphrase</field>
<field name="priority">2</field>
<field name="priority" eval="2" />
<field name="arch" type="xml">
<form string="EBICS Keys Change Passphrase">
<separator colspan="4" string="Results :" />
+36 -23
View File
@@ -224,9 +224,9 @@ class EbicsXfer(models.TransientModel):
client = self._setup_client()
if not client:
err_cnt += 1
self.note += (
self.env._("EBICS client setup failed for connection '%s'")
% self.ebics_config_id.name
self.note += self.env._(
"EBICS client setup failed for connection '%s'",
self.ebics_config_id.name,
)
else:
download_formats = (
@@ -336,11 +336,8 @@ class EbicsXfer(models.TransientModel):
if ebics_files:
self.note += "\n"
for f in ebics_files:
self.note += (
self.env._(
"EBICS File '%s' is available for further processing."
)
% f.name
self.note += self.env._(
"EBICS File '%s' is available for further processing.", f.name
)
self.note += "\n"
@@ -406,15 +403,12 @@ class EbicsXfer(models.TransientModel):
OrderID = client.upload(order_type, upload_data)
if OrderID:
self.note += "\n"
self.note += (
self.env._("EBICS File has been uploaded (OrderID %s).")
% OrderID
self.note += self.env._(
"EBICS File has been uploaded (OrderID %s).", OrderID
)
ef_note = self.env._("EBICS OrderID: %s") % OrderID
ef_note = ""
if self.env.context.get("origin"):
ef_note += (
"\n" + self.env._("Origin: %s") % self._context["origin"]
)
ef_note = self.env._("Origin: %s", self.env.context["origin"])
suffix = self.format_id.suffix
fn = self.upload_fname
if suffix and not fn.endswith(suffix):
@@ -434,6 +428,9 @@ class EbicsXfer(models.TransientModel):
}
self._update_ef_vals(ef_vals)
ebics_file = self.env["ebics.file"].create(ef_vals)
ebics_file.write(
{"ebics_order_number": OrderID, "pain_state": "uploaded"}
)
except EbicsFunctionalError:
e = exc_info()
@@ -462,16 +459,32 @@ class EbicsXfer(models.TransientModel):
OrderID = self.ebics_config_id._get_order_number()
self.ebics_config_id.sudo()._update_order_number(OrderID)
ebics_file and self._payment_order_postprocess(ebics_file)
ebics_file and self._payment_upload_postprocess(ebics_file)
return ebics_file
def _payment_order_postprocess(self, ebics_file):
active_model = self.env.context.get("model")
def _payment_upload_postprocess(self, ebics_file):
ctx = self.env.context
active_model = ctx.get("model")
active_id = ctx.get("id")
payment_doc = None
if active_model == "account.payment.order":
order = self.env["account.payment.order"].browse(
self.env.context["active_id"]
payment_doc = self.env["account.payment.order"].browse(active_id)
payment_doc.generated2uploaded()
elif active_model == "account.batch.payment":
payment_doc = self.env["account.batch.payment"].browse(active_id)
if payment_doc:
payment_doc.ebics_file_id = ebics_file
self._payment_upload_chatter_message(payment_doc, ebics_file)
def _payment_upload_chatter_message(self, payment_doc, ebics_file):
payment_doc.message_post(
body=self.env._(
"'%(filename)s' has been uploaded via EBICS"
" (OrderID: %(order_number)s).",
filename=ebics_file.name,
order_number=ebics_file.ebics_order_number,
)
)
order.generated2uploaded()
def _setup_client(self):
self.ebics_config_id._check_ebics_keys()
@@ -602,9 +615,9 @@ class EbicsXfer(models.TransientModel):
self.env._(
"EBICS File with name '%s' has already been downloaded."
"\nPlease check this file and rename in case there is "
"no risk on duplicate transactions."
"no risk on duplicate transactions.",
fn,
)
% fn
)
data = base64.encodebytes(data)
ef_vals = {
+5 -5
View File
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="ebics_xfer_view_form_download" model="ir.ui.view">
<field name="name">EBICS File Download</field>
<field name="model">ebics.xfer</field>
<field name="priority">1</field>
<field name="priority" eval="1" />
<field name="arch" type="xml">
<form string="EBICS File Download">
<group>
@@ -55,7 +55,7 @@
<record id="ebics_xfer_view_form_upload" model="ir.ui.view">
<field name="name">EBICS File Upload</field>
<field name="model">ebics.xfer</field>
<field name="priority">1</field>
<field name="priority" eval="1" />
<field name="arch" type="xml">
<form string="EBICS File Upload">
<group>
@@ -120,7 +120,7 @@
<record id="ebics_xfer_view_form_result" model="ir.ui.view">
<field name="name">EBICS File Transfer</field>
<field name="model">ebics.xfer</field>
<field name="priority">2</field>
<field name="priority" eval="2" />
<field name="arch" type="xml">
<form string="EBICS File Transfer">
<separator colspan="4" string="Results :" />
@@ -148,7 +148,7 @@
<record id="ebics_xfer_view_form_mark_as_downloaded" model="ir.ui.view">
<field name="name">Mark EBICS files as Downloaded</field>
<field name="model">ebics.xfer</field>
<field name="priority">1</field>
<field name="priority" eval="1" />
<field name="arch" type="xml">
<form string="EBICS Mark as Downloaded">
<div class="alert alert-warning" role="alert">
+1 -2
View File
@@ -3,7 +3,7 @@
{
"name": "EBICS - Scheduled File Import",
"version": "18.0.1.0.1",
"version": "18.0.1.0.2",
"license": "AGPL-3",
"author": "Noviat",
"website": "https://www.noviat.com/",
@@ -16,6 +16,5 @@
"views/ebics_batch_log_views.xml",
"views/menu.xml",
],
"installable": True,
"images": ["static/description/banner.png"],
}
+1 -1
View File
@@ -6,7 +6,7 @@
<field name="state">code</field>
<field name="code">model._batch_import()</field>
<field name="user_id" ref="base.user_root" />
<field name="interval_number">1</field>
<field name="interval_number" eval="1" />
<field name="interval_type">days</field>
<field name="active" eval="False" />
</record>
@@ -46,13 +46,12 @@ class EbicsBatchLog(models.Model):
rec.has_draft_files = "draft" in rec.file_ids.mapped("state")
rec.file_count = len(rec.file_ids)
def unlink(self):
for log in self:
if log.state != "draft":
@api.ondelete(at_uninstall=False)
def _unlink_except_draft(self):
if any(log.state != "draft" for log in self):
raise UserError(
self.env._("Only log objects in state 'draft' can be deleted !")
)
return super().unlink()
def button_draft(self):
self.state = "draft"
@@ -93,9 +92,8 @@ class EbicsBatchLog(models.Model):
)
ebics_file_ids = []
for config in configs:
err_msg = (
self.env._("Error while processing EBICS connection '%s' :\n")
% config.name
err_msg = self.env._(
"Error while processing EBICS connection '%s' :\n", config.name
)
if config.state == "draft":
import_dict["errors"].append(
@@ -1,4 +1,4 @@
<?xml version="1.0" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="ebics_batch_log_view_search" model="ir.ui.view">
<field name="name">ebics.batch.log.search</field>
+1 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<menuitem
id="ebics_batch_log_menu"
+1 -2
View File
@@ -4,7 +4,7 @@
{
"name": "EBICS - Batch Payments (Odoo Enterprise)",
"summary": "Send an Odoo Enterprise batch payment to the bank over EBICS",
"version": "18.0.1.2.0",
"version": "18.0.1.3.0",
"license": "LGPL-3",
"author": "Noviat",
"website": "https://www.noviat.com/",
@@ -14,6 +14,5 @@
"views/account_journal_views.xml",
"views/account_batch_payment_views.xml",
],
"installable": True,
"images": ["static/description/banner.png"],
}
@@ -21,12 +21,21 @@ msgid "Batch Payment"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
msgid "EBICS File Format"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics_batch_payment
#. odoo-python
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
@@ -34,6 +43,16 @@ msgstr ""
msgid "EBICS Upload"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_file_id
msgid "EBICS Upload File"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_pain_state
msgid "EBICS Upload Status"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
@@ -42,6 +61,16 @@ msgid ""
"this payment method."
msgstr ""
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "EBICS upload info"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
msgid "Ebics File Format"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__hide_ebics_upload
msgid "Hide Ebics Upload"
@@ -63,3 +92,13 @@ msgstr ""
#: model:ir.model,name:account_ebics_batch_payment.model_account_payment_method_line
msgid "Payment Methods"
msgstr ""
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "Upload File"
msgstr ""
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "Upload Status"
msgstr ""
+40 -1
View File
@@ -27,12 +27,21 @@ msgid "Batch Payment"
msgstr "Sammelzahlung"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
msgid "EBICS File Format"
msgstr "EBICS-Dateiformat"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics_batch_payment
#. odoo-python
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
@@ -40,6 +49,16 @@ msgstr "EBICS-Dateiformat"
msgid "EBICS Upload"
msgstr "EBICS-Upload"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_file_id
msgid "EBICS Upload File"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_pain_state
msgid "EBICS Upload Status"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
@@ -50,6 +69,16 @@ msgstr ""
"EBICS-Dateiformat, das beim Hochladen einer Stapelzahlung mit dieser "
"Zahlungsmethode vorausgewählt wird."
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "EBICS upload info"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
msgid "Ebics File Format"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__hide_ebics_upload
msgid "Hide Ebics Upload"
@@ -71,3 +100,13 @@ msgstr "Keine aktive EBICS-Konfiguration für die ausgewählte Bank verfügbar."
#: model:ir.model,name:account_ebics_batch_payment.model_account_payment_method_line
msgid "Payment Methods"
msgstr "Zahlungsmethoden"
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "Upload File"
msgstr ""
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "Upload Status"
msgstr ""
+40 -1
View File
@@ -28,12 +28,21 @@ msgid "Batch Payment"
msgstr "Paiement par lot"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
msgid "EBICS File Format"
msgstr "Format de fichier EBICS"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics_batch_payment
#. odoo-python
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
@@ -41,6 +50,16 @@ msgstr "Format de fichier EBICS"
msgid "EBICS Upload"
msgstr "Téléversement EBICS"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_file_id
msgid "EBICS Upload File"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_pain_state
msgid "EBICS Upload Status"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
@@ -51,6 +70,16 @@ msgstr ""
"Format de fichier EBICS à présélectionner lors du téléversement d'un "
"paiement groupé utilisant ce mode de paiement."
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "EBICS upload info"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
msgid "Ebics File Format"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__hide_ebics_upload
msgid "Hide Ebics Upload"
@@ -73,3 +102,13 @@ msgstr ""
#: model:ir.model,name:account_ebics_batch_payment.model_account_payment_method_line
msgid "Payment Methods"
msgstr "Modes de paiement"
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "Upload File"
msgstr ""
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "Upload Status"
msgstr ""
+42 -3
View File
@@ -28,12 +28,21 @@ msgid "Batch Payment"
msgstr "Batchbetaling"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
msgid "EBICS File Format"
msgstr "EBICS-bestandsformaat"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics_batch_payment
#. odoo-python
#: code:addons/account_ebics_batch_payment/models/account_batch_payment.py:0
@@ -41,6 +50,16 @@ msgstr "EBICS-bestandsformaat"
msgid "EBICS Upload"
msgstr "EBICS-upload"
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_file_id
msgid "EBICS Upload File"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__ebics_pain_state
msgid "EBICS Upload Status"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method__ebics_file_format_id
#: model:ir.model.fields,help:account_ebics_batch_payment.field_account_payment_method_line__ebics_file_format_id
@@ -48,8 +67,18 @@ msgid ""
"EBICS file format to pre-select when uploading a batch payment that uses "
"this payment method."
msgstr ""
"EBICS-bestandsformaat dat vooraf wordt geselecteerd bij het uploaden van een"
" batchbetaling die deze betaalmethode gebruikt."
"EBICS-bestandsformaat dat vooraf wordt geselecteerd bij het uploaden van een "
"batchbetaling die deze betaalmethode gebruikt."
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "EBICS upload info"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_journal__ebics_file_format_ids
msgid "Ebics File Format"
msgstr ""
#. module: account_ebics_batch_payment
#: model:ir.model.fields,field_description:account_ebics_batch_payment.field_account_batch_payment__hide_ebics_upload
@@ -73,3 +102,13 @@ msgstr ""
#: model:ir.model,name:account_ebics_batch_payment.model_account_payment_method_line
msgid "Payment Methods"
msgstr "Betaalmethodes"
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "Upload File"
msgstr ""
#. module: account_ebics_batch_payment
#: model_terms:ir.ui.view,arch_db:account_ebics_batch_payment.view_batch_payment_form
msgid "Upload Status"
msgstr ""
@@ -8,19 +8,47 @@ from odoo.exceptions import UserError
class AccountBatchPayment(models.Model):
_inherit = "account.batch.payment"
ebics_config_id = fields.Many2one(
comodel_name="ebics.config",
related="journal_id.ebics_config_id",
)
ebics_file_id = fields.Many2one(
comodel_name="ebics.file",
string="EBICS Upload File",
readonly=True,
)
ebics_pain_state = fields.Selection(
related="ebics_file_id.pain_state",
string="EBICS Upload Status",
)
ebics_order_number = fields.Char(
related="ebics_file_id.ebics_order_number",
string="EBICS OrderID",
)
hide_ebics_upload = fields.Boolean(
compute="_compute_hide_ebics_upload", default=True
)
@api.depends("journal_id.ebics_config_id", "file_generation_enabled", "state")
@api.depends(
"journal_id.ebics_config_id",
"file_generation_enabled",
"state",
"ebics_file_id.pain_state",
)
def _compute_hide_ebics_upload(self):
for rec in self:
rec.hide_ebics_upload = (
not rec.journal_id.ebics_config_id
self.env.neutralized
or not rec.journal_id.ebics_config_id
or not rec.file_generation_enabled
or rec.state != "sent"
or rec.ebics_pain_state == "uploaded"
)
def export_batch_payment(self):
self.filtered("ebics_file_id").write({"ebics_file_id": False})
return super().export_batch_payment()
def ebics_upload(self):
self.ensure_one()
ctx = self.env.context.copy()
@@ -38,6 +66,8 @@ class AccountBatchPayment(models.Model):
"default_upload_data": self.export_file,
"default_upload_fname": self.export_filename,
"origin": origin,
"model": self._name,
"id": self.id,
}
)
@@ -1,7 +1,7 @@
# Copyright 2026 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lgpl).
from odoo import fields, models
from odoo import api, fields, models
class AccountJournal(models.Model):
@@ -9,5 +9,11 @@ class AccountJournal(models.Model):
ebics_file_format_ids = fields.Many2many(
comodel_name="ebics.file.format",
related="ebics_config_id.ebics_file_format_ids",
compute="_compute_ebics_file_format_ids",
)
@api.depends("ebics_config_ids.ebics_file_format_ids", "ebics_config_ids.state")
def _compute_ebics_file_format_ids(self):
for rec in self:
config = rec.ebics_config_ids.filtered(lambda r: r.state == "confirm")[:1]
rec.ebics_file_format_ids = config.ebics_file_format_ids
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_batch_payment_form" model="ir.ui.view">
<field name="name">account.batch.payment.form</field>
@@ -14,6 +14,19 @@
class="oe_highlight"
/>
</button>
<notebook position="inside">
<page
string="EBICS upload info"
name="ebics"
invisible="not ebics_config_id"
>
<group name="ebics_info">
<field name="ebics_file_id" string="Upload File" />
<field name="ebics_pain_state" string="Upload Status" />
<field name="ebics_order_number" />
</group>
</page>
</notebook>
</field>
</record>
</odoo>
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_account_journal_form_ebics_payment_method" model="ir.ui.view">
<field name="name">account.journal.form.ebics.payment.method</field>
@@ -4,7 +4,7 @@
{
"name": "EBICS - Bank Statement Import (OCA)",
"summary": "Process EBICS statement files with the OCA bank statement import",
"version": "18.0.1.0.1",
"version": "18.0.1.0.2",
"author": "Noviat",
"website": "https://www.noviat.com/",
"category": "Hidden",
@@ -13,7 +13,6 @@
"account_ebics",
"account_statement_import_file",
],
"installable": True,
"auto_install": True,
"images": ["static/description/banner.png"],
}
@@ -4,7 +4,7 @@
import logging
from datetime import date, datetime
from odoo import _, models
from odoo import models
from odoo.addons.base.models.res_bank import sanitize_account_number
@@ -39,8 +39,7 @@ class AccountStatementImport(models.TransientModel):
sanitized_number = sanitize_account_number(account_number)
check_curr = sanitized_number[-3:]
if check_curr.isalpha():
all_currencies = self.env["res.currency"].search([])
if check_curr in all_currencies.mapped("name"):
if self.env["res.currency"].search([("name", "=", check_curr)], limit=1):
sanitized_number = sanitized_number[:-3]
return sanitized_number
@@ -49,7 +48,7 @@ class AccountStatementImport(models.TransientModel):
if self.env.context.get("active_model") == "ebics.file":
message = False
if len(stmts_vals) == 0:
message = _("This file doesn't contain any statement.")
message = self.env._("This file doesn't contain any statement.")
if not message:
no_st_line = True
for vals in stmts_vals:
@@ -57,10 +56,10 @@ class AccountStatementImport(models.TransientModel):
no_st_line = False
break
if no_st_line:
message = _("This file doesn't contain any transaction.")
message = self.env._("This file doesn't contain any transaction.")
if message:
log_msg = (
_("Error detected while processing an EBICS File")
self.env._("Error detected while processing an EBICS File")
+ ":\n"
+ message
)
@@ -99,7 +98,7 @@ class AccountStatementImport(models.TransientModel):
else:
st_date = st_vals["date"]
messages.append(
_(
self.env._(
"Statement %(st_name)s dated %(date)s "
"has already been imported.",
st_name=st_vals["name"],
@@ -108,7 +107,9 @@ class AccountStatementImport(models.TransientModel):
)
if not transactions:
messages.append(_("This file doesn't contain any transaction."))
messages.append(
self.env._("This file doesn't contain any transaction.")
)
if messages:
result["notifications"].append(
{"type": "warning", "message": "\n".join(messages)}
+1 -2
View File
@@ -4,7 +4,7 @@
{
"name": "EBICS - Odoo Enterprise Integration",
"summary": "Place the EBICS menus in the Odoo Enterprise accounting application",
"version": "18.0.1.0.0",
"version": "18.0.1.0.1",
"author": "Noviat",
"website": "https://www.noviat.com/",
"category": "Hidden",
@@ -14,7 +14,6 @@
"accountant",
],
"data": ["views/account_ebics_menu.xml"],
"installable": True,
"auto_install": True,
"images": ["static/description/banner.png"],
}
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="account_ebics.ebics_processing_menu" model="ir.ui.menu">
<field name="parent_id" eval="ref('accountant.menu_accounting')" />
+1 -2
View File
@@ -4,7 +4,7 @@
{
"name": "EBICS - Payment Orders (OCA)",
"summary": "Send an OCA payment order to the bank over EBICS",
"version": "18.0.1.2.0",
"version": "18.0.1.3.0",
"license": "LGPL-3",
"author": "Noviat",
"website": "https://www.noviat.com/",
@@ -15,5 +15,4 @@
"views/account_payment_mode_views.xml",
],
"images": ["static/description/banner.png"],
"installable": True,
}
@@ -13,11 +13,21 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
msgid "EBICS File Format"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
@@ -25,6 +35,16 @@ msgstr ""
msgid "EBICS Upload"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_file_id
msgid "EBICS Upload File"
msgstr ""
#. module: account_ebics_payment_order
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
msgid "EBICS upload info"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__hide_ebics_upload
msgid "Hide Ebics Upload"
@@ -74,3 +94,8 @@ msgid ""
"This payment order doesn't contain attachments.\n"
"Please generate first the Payment Order file."
msgstr ""
#. module: account_ebics_payment_order
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
msgid "Upload File"
msgstr ""
+25
View File
@@ -18,11 +18,21 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
msgid "EBICS File Format"
msgstr "EBICS-Dateiformat"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
@@ -30,6 +40,16 @@ msgstr "EBICS-Dateiformat"
msgid "EBICS Upload"
msgstr "EBICS-Upload"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_file_id
msgid "EBICS Upload File"
msgstr ""
#. module: account_ebics_payment_order
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
msgid "EBICS upload info"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__hide_ebics_upload
msgid "Hide Ebics Upload"
@@ -86,6 +106,11 @@ msgstr ""
"Dieser Zahlungsauftrag enthält keine Anhänge.\n"
"Bitte erstellen Sie zuerst die Zahlungsauftragsdatei."
#. module: account_ebics_payment_order
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
msgid "Upload File"
msgstr ""
#~ msgid ""
#~ "This payment order doesn't contains attachments.\n"
#~ "Please generate first the Payment Order file."
+25
View File
@@ -19,11 +19,21 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
msgid "EBICS File Format"
msgstr "Format de fichier EBICS"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
@@ -31,6 +41,16 @@ msgstr "Format de fichier EBICS"
msgid "EBICS Upload"
msgstr "Téléversement EBICS"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_file_id
msgid "EBICS Upload File"
msgstr ""
#. module: account_ebics_payment_order
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
msgid "EBICS upload info"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__hide_ebics_upload
msgid "Hide Ebics Upload"
@@ -89,6 +109,11 @@ msgstr ""
"Cet ordre de paiement ne contient aucune pièce jointe.\n"
"Veuillez d'abord générer le fichier de l'ordre de paiement."
#. module: account_ebics_payment_order
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
msgid "Upload File"
msgstr ""
#~ msgid ""
#~ "This payment order doesn't contains attachments.\n"
#~ "Please generate first the Payment Order file."
+25
View File
@@ -19,11 +19,21 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.9.1\n"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_config_id
msgid "EBICS Config"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_mode__ebics_format_id
msgid "EBICS File Format"
msgstr "EBICS-bestandsformaat"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_order_number
msgid "EBICS OrderID"
msgstr ""
#. module: account_ebics_payment_order
#. odoo-python
#: code:addons/account_ebics_payment_order/models/account_payment_order.py:0
@@ -31,6 +41,16 @@ msgstr "EBICS-bestandsformaat"
msgid "EBICS Upload"
msgstr "EBICS-upload"
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__ebics_file_id
msgid "EBICS Upload File"
msgstr ""
#. module: account_ebics_payment_order
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
msgid "EBICS upload info"
msgstr ""
#. module: account_ebics_payment_order
#: model:ir.model.fields,field_description:account_ebics_payment_order.field_account_payment_order__hide_ebics_upload
msgid "Hide Ebics Upload"
@@ -88,6 +108,11 @@ msgstr ""
"Deze betalingsopdracht bevat geen bijlagen.\n"
"Genereer eerst het betalingsopdrachtbestand."
#. module: account_ebics_payment_order
#: model_terms:ir.ui.view,arch_db:account_ebics_payment_order.account_payment_order_form
msgid "Upload File"
msgstr ""
#~ msgid ""
#~ "This payment order doesn't contains attachments.\n"
#~ "Please generate first the Payment Order file."
@@ -8,6 +8,19 @@ from odoo.exceptions import UserError
class AccountPaymentOrder(models.Model):
_inherit = "account.payment.order"
ebics_config_id = fields.Many2one(
comodel_name="ebics.config",
related="journal_id.ebics_config_id",
)
ebics_file_id = fields.Many2one(
comodel_name="ebics.file",
string="EBICS Upload File",
readonly=True,
)
ebics_order_number = fields.Char(
related="ebics_file_id.ebics_order_number",
string="EBICS OrderID",
)
hide_ebics_upload = fields.Boolean(
compute="_compute_hide_ebics_upload", default=True
)
@@ -16,7 +29,9 @@ class AccountPaymentOrder(models.Model):
def _compute_hide_ebics_upload(self):
for rec in self:
rec.hide_ebics_upload = (
not rec.journal_id.ebics_config_id or rec.state != "generated"
self.env.neutralized
or not rec.journal_id.ebics_config_id
or rec.state != "generated"
)
def ebics_upload(self):
@@ -29,7 +44,8 @@ class AccountPaymentOrder(models.Model):
)
ctx.update(
{
"active_model": self._name,
"model": self._name,
"id": self.id,
"default_format_id": ebics_format_id.id,
}
)
@@ -57,8 +73,7 @@ class AccountPaymentOrder(models.Model):
if not self.journal_id.ebics_config_id:
raise UserError(
self.env._(
"No active EBICS configuration available "
"for the selected bank."
"No active EBICS configuration available for the selected bank."
)
)
ctx.update(
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="account_payment_mode_form" model="ir.ui.view">
<field name="name">account.payment.mode.form</field>
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="account_payment_order_form" model="ir.ui.view">
<field name="name">account.payment.order.form</field>
@@ -17,6 +17,18 @@
class="oe_highlight"
/>
</button>
<notebook position="inside">
<page
string="EBICS upload info"
name="ebics"
invisible="not ebics_config_id"
>
<group name="ebics_info">
<field name="ebics_file_id" string="Upload File" />
<field name="ebics_order_number" />
</group>
</page>
</notebook>
</field>
</record>
</odoo>
+1 -1
View File
@@ -1,3 +1,3 @@
odoo-addon-module_change_auto_install
openupgradelib
cryptography<37
lxml_html_clean