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
+968 -326

No files matched your search

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