From f664183482e0d5b14a546547cc6b561cf057beff Mon Sep 17 00:00:00 2001 From: Manuel Florido Date: Wed, 10 Jul 2024 13:11:35 +0200 Subject: [PATCH 1/2] [T-5944][ADD] Repository changes --- .copier-answers.yml | 26 +++++ .editorconfig | 20 ++++ .eslintrc.yml | 188 +++++++++++++++++++++++++++++++ .github/workflows/pre-commit.yml | 46 ++++++++ .github/workflows/stale.yml | 69 ++++++++++++ .github/workflows/test.yml | 71 ++++++++++++ .gitignore | 27 ++++- .pre-commit-config.yaml | 125 ++++++++++++++++++++ .prettierrc.yml | 8 ++ .pylintrc | 123 ++++++++++++++++++++ .pylintrc-mandatory | 98 ++++++++++++++++ .ruff.toml | 30 +++++ LICENSE | 4 +- README.md | 34 +++++- 14 files changed, 861 insertions(+), 8 deletions(-) create mode 100644 .copier-answers.yml create mode 100644 .editorconfig create mode 100644 .eslintrc.yml create mode 100644 .github/workflows/pre-commit.yml create mode 100644 .github/workflows/stale.yml create mode 100644 .github/workflows/test.yml create mode 100644 .pre-commit-config.yaml create mode 100644 .prettierrc.yml create mode 100644 .pylintrc create mode 100644 .pylintrc-mandatory create mode 100644 .ruff.toml diff --git a/.copier-answers.yml b/.copier-answers.yml new file mode 100644 index 0000000..176fdaa --- /dev/null +++ b/.copier-answers.yml @@ -0,0 +1,26 @@ +# Do NOT update manually; changes here will be overwritten by Copier +_commit: v1.24 +_src_path: https://github.com/OCA/oca-addons-repo-template.git +additional_ruff_rules: [] +ci: GitHub +convert_readme_fragments_to_markdown: true +generate_requirements_txt: true +github_check_license: true +github_ci_extra_env: {} +github_enable_codecov: true +github_enable_makepot: false +github_enable_stale_action: true +github_enforce_dev_status_compatibility: true +include_wkhtmltopdf: false +odoo_test_flavor: Both +odoo_version: 16.0 +org_name: Sygel, Odoo Community Association (OCA) +org_slug: sygel-technology +rebel_module_groups: [] +repo_description: Odoo Invoicing reports +repo_name: sy-account-invoice-reporting +repo_slug: sy-account-invoice-reporting +repo_website: https://github.com/sygel-technology/sy-account-invoice-reporting +use_pyproject_toml: true +use_ruff: true + diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..bfd7ac5 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,20 @@ +# Configuration for known file extensions +[*.{css,js,json,less,md,py,rst,sass,scss,xml,yaml,yml}] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{json,yml,yaml,rst,md}] +indent_size = 2 + +# Do not configure editor for libs and autogenerated content +[{*/static/{lib,src/lib}/**,*/static/description/index.html,*/readme/../README.rst}] +charset = unset +end_of_line = unset +indent_size = unset +indent_style = unset +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 0000000..fed88d7 --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,188 @@ +env: + browser: true + es6: true + +# See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449 +parserOptions: + ecmaVersion: 2019 + +overrides: + - files: + - "**/*.esm.js" + parserOptions: + sourceType: module + +# Globals available in Odoo that shouldn't produce errorings +globals: + _: readonly + $: readonly + fuzzy: readonly + jQuery: readonly + moment: readonly + odoo: readonly + openerp: readonly + owl: readonly + luxon: readonly + +# Styling is handled by Prettier, so we only need to enable AST rules; +# see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890 +rules: + accessor-pairs: warn + array-callback-return: warn + callback-return: warn + capitalized-comments: + - warn + - always + - ignoreConsecutiveComments: true + ignoreInlineComments: true + complexity: + - warn + - 15 + constructor-super: warn + dot-notation: warn + eqeqeq: warn + global-require: warn + handle-callback-err: warn + id-blacklist: warn + id-match: warn + init-declarations: error + max-depth: warn + max-nested-callbacks: warn + max-statements-per-line: warn + no-alert: warn + no-array-constructor: warn + no-caller: warn + no-case-declarations: warn + no-class-assign: warn + no-cond-assign: error + no-const-assign: error + no-constant-condition: warn + no-control-regex: warn + no-debugger: error + no-delete-var: warn + no-div-regex: warn + no-dupe-args: error + no-dupe-class-members: error + no-dupe-keys: error + no-duplicate-case: error + no-duplicate-imports: error + no-else-return: warn + no-empty-character-class: warn + no-empty-function: error + no-empty-pattern: error + no-empty: warn + no-eq-null: error + no-eval: error + no-ex-assign: error + no-extend-native: warn + no-extra-bind: warn + no-extra-boolean-cast: warn + no-extra-label: warn + no-fallthrough: warn + no-func-assign: error + no-global-assign: error + no-implicit-coercion: + - warn + - allow: ["~"] + no-implicit-globals: warn + no-implied-eval: warn + no-inline-comments: warn + no-inner-declarations: warn + no-invalid-regexp: warn + no-irregular-whitespace: warn + no-iterator: warn + no-label-var: warn + no-labels: warn + no-lone-blocks: warn + no-lonely-if: error + no-mixed-requires: error + no-multi-str: warn + no-native-reassign: error + no-negated-condition: warn + no-negated-in-lhs: error + no-new-func: warn + no-new-object: warn + no-new-require: warn + no-new-symbol: warn + no-new-wrappers: warn + no-new: warn + no-obj-calls: warn + no-octal-escape: warn + no-octal: warn + no-param-reassign: warn + no-path-concat: warn + no-process-env: warn + no-process-exit: warn + no-proto: warn + no-prototype-builtins: warn + no-redeclare: warn + no-regex-spaces: warn + no-restricted-globals: warn + no-restricted-imports: warn + no-restricted-modules: warn + no-restricted-syntax: warn + no-return-assign: error + no-script-url: warn + no-self-assign: warn + no-self-compare: warn + no-sequences: warn + no-shadow-restricted-names: warn + no-shadow: warn + no-sparse-arrays: warn + no-sync: warn + no-this-before-super: warn + no-throw-literal: warn + no-undef-init: warn + no-undef: error + no-unmodified-loop-condition: warn + no-unneeded-ternary: error + no-unreachable: error + no-unsafe-finally: error + no-unused-expressions: error + no-unused-labels: error + no-unused-vars: error + no-use-before-define: error + no-useless-call: warn + no-useless-computed-key: warn + no-useless-concat: warn + no-useless-constructor: warn + no-useless-escape: warn + no-useless-rename: warn + no-void: warn + no-with: warn + operator-assignment: [error, always] + prefer-const: warn + radix: warn + require-yield: warn + sort-imports: warn + spaced-comment: [error, always] + strict: [error, function] + use-isnan: error + valid-jsdoc: + - warn + - prefer: + arg: param + argument: param + augments: extends + constructor: class + exception: throws + func: function + method: function + prop: property + return: returns + virtual: abstract + yield: yields + preferType: + array: Array + bool: Boolean + boolean: Boolean + number: Number + object: Object + str: String + string: String + requireParamDescription: false + requireReturn: false + requireReturnDescription: false + requireReturnType: false + valid-typeof: warn + yoda: warn diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 0000000..38b0ba1 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,46 @@ +name: pre-commit + +on: + pull_request: + branches: + - "16.0*" + push: + branches: + - "16.0" + - "16.0-ocabot-*" + +jobs: + pre-commit: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v2 + with: + python-version: "3.11" + - name: Get python version + run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV + - uses: actions/cache@v1 + with: + path: ~/.cache/pre-commit + key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }} + - name: Install pre-commit + run: pip install pre-commit + - name: Run pre-commit + run: pre-commit run --all-files --show-diff-on-failure --color=always + env: + # Consider valid a PR that changes README fragments but doesn't + # change the README.rst file itself. It's not really a problem + # because the bot will update it anyway after merge. This way, we + # lower the barrier for functional contributors that want to fix the + # readme fragments, while still letting developers get README + # auto-generated (which also helps functionals when using runboat). + # DOCS https://pre-commit.com/#temporarily-disabling-hooks + SKIP: oca-gen-addon-readme + - name: Check that all files generated by pre-commit are in git + run: | + newfiles="$(git ls-files --others --exclude-from=.gitignore)" + if [ "$newfiles" != "" ] ; then + echo "Please check-in the following files:" + echo "$newfiles" + exit 1 + fi diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 0000000..fa17fcd --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,69 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: "0 12 * * 0" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - name: Stale PRs and issues policy + uses: actions/stale@v9 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + # General settings. + ascending: true + remove-stale-when-updated: true + # Pull Requests settings. + # 120+30 day stale policy for PRs + # * Except PRs marked as "no stale" + days-before-pr-stale: 120 + days-before-pr-close: 30 + exempt-pr-labels: "no stale" + stale-pr-label: "stale" + stale-pr-message: > + There hasn't been any activity on this pull request in the past 4 months, so + it has been marked as stale and it will be closed automatically if no + further activity occurs in the next 30 days. + + If you want this PR to never become stale, please ask a PSC member to apply + the "no stale" label. + # Issues settings. + # 180+30 day stale policy for open issues + # * Except Issues marked as "no stale" + days-before-issue-stale: 180 + days-before-issue-close: 30 + exempt-issue-labels: "no stale,needs more information" + stale-issue-label: "stale" + stale-issue-message: > + There hasn't been any activity on this issue in the past 6 months, so it has + been marked as stale and it will be closed automatically if no further + activity occurs in the next 30 days. + + If you want this issue to never become stale, please ask a PSC member to + apply the "no stale" label. + + # 15+30 day stale policy for issues pending more information + # * Issues that are pending more information + # * Except Issues marked as "no stale" + - name: Needs more information stale issues policy + uses: actions/stale@v9 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + ascending: true + only-labels: "needs more information" + exempt-issue-labels: "no stale" + days-before-stale: 15 + days-before-close: 30 + days-before-pr-stale: -1 + days-before-pr-close: -1 + remove-stale-when-updated: true + stale-issue-label: "stale" + stale-issue-message: > + This issue needs more information and there hasn't been any activity + recently, so it has been marked as stale and it will be closed automatically + if no further activity occurs in the next 30 days. + + If you think this is a mistake, please ask a PSC member to remove the "needs + more information" label. diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..e3e62e8 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,71 @@ +name: tests + +on: + pull_request: + branches: + - "16.0*" + push: + branches: + - "16.0" + - "16.0-ocabot-*" + +jobs: + unreleased-deps: + runs-on: ubuntu-latest + name: Detect unreleased dependencies + steps: + - uses: actions/checkout@v3 + - run: | + for reqfile in requirements.txt test-requirements.txt ; do + if [ -f ${reqfile} ] ; then + result=0 + # reject non-comment lines that contain a / (i.e. URLs, relative paths) + grep "^[^#].*/" ${reqfile} || result=$? + if [ $result -eq 0 ] ; then + echo "Unreleased dependencies found in ${reqfile}." + exit 1 + fi + fi + done + test: + runs-on: ubuntu-22.04 + container: ${{ matrix.container }} + name: ${{ matrix.name }} + strategy: + fail-fast: false + matrix: + include: + - container: ghcr.io/oca/oca-ci/py3.10-odoo16.0:latest + name: test with Odoo + - container: ghcr.io/oca/oca-ci/py3.10-ocb16.0:latest + name: test with OCB + makepot: "false" + services: + postgres: + image: postgres:12.0 + env: + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + POSTGRES_DB: odoo + ports: + - 5432:5432 + steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false + - name: Install addons and dependencies + run: oca_install_addons + - name: Check licenses + run: manifestoo -d . check-licenses + - name: Check development status + run: manifestoo -d . check-dev-status --default-dev-status=Beta + - name: Initialize test db + run: oca_init_test_database + - name: Run tests + run: oca_run_tests + - uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + - name: Update .pot files + run: oca_export_and_push_pot https://x-access-token:${{ secrets.GIT_PUSH_TOKEN }}@github.com/${{ github.repository }} + if: ${{ matrix.makepot == 'true' && github.event_name == 'push' && github.repository_owner == 'sygel-technology' }} diff --git a/.gitignore b/.gitignore index 3d2dac1..2b045db 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] +/.venv +/.pytest_cache +/.ruff_cache # C extensions *.so @@ -13,7 +16,6 @@ build/ develop-eggs/ dist/ eggs/ -lib/ lib64/ parts/ sdist/ @@ -21,6 +23,16 @@ var/ *.egg-info/ .installed.cfg *.egg +*.eggs + +# Debian packages +*.deb + +# Redhat packages +*.rpm + +# MacOS packages +*.dmg # Installer logs pip-log.txt @@ -40,10 +52,19 @@ coverage.xml # Pycharm .idea +# Eclipse +.settings + # Visual Studio cache/options directory .vs/ .vscode +# OSX Files +.DS_Store + +# Django stuff: +*.log + # Mr Developer .mr.developer.cfg .project @@ -59,5 +80,5 @@ docs/_build/ *~ *.swp -# Compiled formats, cache, temporary files, git garbage -**.DS_Store \ No newline at end of file +# OCA rules +!static/lib/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..0502e88 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,125 @@ +exclude: | + (?x) + # NOT INSTALLABLE ADDONS + # END NOT INSTALLABLE ADDONS + # Files and folders generated by bots, to avoid loops + ^setup/|/static/description/index\.html$| + # We don't want to mess with tool-generated files + .svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|^.github/| + # Maybe reactivate this when all README files include prettier ignore tags? + ^README\.md$| + # Library files can have extraneous formatting (even minimized) + /static/(src/)?lib/| + # Repos using Sphinx to generate docs don't need prettying + ^docs/_templates/.*\.html$| + # Don't bother non-technical authors with formatting issues in docs + readme/.*\.(rst|md)$| + # Ignore build and dist directories in addons + /build/|/dist/| + # Ignore test files in addons + /tests/samples/.*| + # You don't usually want a bot to modify your legal texts + (LICENSE.*|COPYING.*) +default_language_version: + python: python3 + node: "16.17.0" +repos: + - repo: local + hooks: + # These files are most likely copier diff rejection junks; if found, + # review them manually, fix the problem (if needed) and remove them + - id: forbidden-files + name: forbidden files + entry: found forbidden files; remove them + language: fail + files: "\\.rej$" + - id: en-po-files + name: en.po files cannot exist + entry: found a en.po file + language: fail + files: '[a-zA-Z0-9_]*/i18n/en\.po$' + - repo: https://github.com/sbidoul/whool + rev: v0.5 + hooks: + - id: whool-init + - repo: https://github.com/oca/maintainer-tools + rev: d5fab7ee87fceee858a3d01048c78a548974d935 + hooks: + # update the NOT INSTALLABLE ADDONS section above + - id: oca-update-pre-commit-excluded-addons + - id: oca-fix-manifest-website + args: ["https://github.com/sygel-technology/sy-account-invoice-reporting"] + - id: oca-gen-addon-readme + args: + - --addons-dir=. + - --branch=16.0 + - --org-name=sygel-technology + - --repo-name=sy-account-invoice-reporting + - --if-source-changed + - --keep-source-digest + - --convert-fragments-to-markdown + - id: oca-gen-external-dependencies + - repo: https://github.com/OCA/odoo-pre-commit-hooks + rev: v0.0.25 + hooks: + - id: oca-checks-odoo-module + - id: oca-checks-po + - repo: https://github.com/pre-commit/mirrors-prettier + rev: v2.7.1 + hooks: + - id: prettier + name: prettier (with plugin-xml) + additional_dependencies: + - "prettier@2.7.1" + - "@prettier/plugin-xml@2.2.0" + args: + - --plugin=@prettier/plugin-xml + files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$ + - repo: https://github.com/pre-commit/mirrors-eslint + rev: v8.24.0 + hooks: + - id: eslint + verbose: true + args: + - --color + - --fix + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: trailing-whitespace + # exclude autogenerated files + exclude: /README\.rst$|\.pot?$ + - id: end-of-file-fixer + # exclude autogenerated files + exclude: /README\.rst$|\.pot?$ + - id: debug-statements + - id: fix-encoding-pragma + args: ["--remove"] + - id: check-case-conflict + - id: check-docstring-first + - id: check-executables-have-shebangs + - id: check-merge-conflict + # exclude files where underlines are not distinguishable from merge conflicts + exclude: /README\.rst$|^docs/.*\.rst$ + - id: check-symlinks + - id: check-xml + - id: mixed-line-ending + args: ["--fix=lf"] + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.1.3 + hooks: + - id: ruff + args: [--fix, --exit-non-zero-on-fix] + - id: ruff-format + - repo: https://github.com/OCA/pylint-odoo + rev: v8.0.19 + hooks: + - id: pylint_odoo + name: pylint with optional checks + args: + - --rcfile=.pylintrc + - --exit-zero + verbose: true + - id: pylint_odoo + args: + - --rcfile=.pylintrc-mandatory diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 0000000..5b6d4b3 --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1,8 @@ +# Defaults for all prettier-supported languages. +# Prettier will complete this with settings from .editorconfig file. +bracketSpacing: false +printWidth: 88 +proseWrap: always +semi: true +trailingComma: "es5" +xmlWhitespaceSensitivity: "strict" diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000..d4ed9f6 --- /dev/null +++ b/.pylintrc @@ -0,0 +1,123 @@ + + +[MASTER] +load-plugins=pylint_odoo +score=n + +[ODOOLINT] +readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst" +manifest-required-authors=Sygel, Odoo Community Association (OCA) +manifest-required-keys=license +manifest-deprecated-keys=description,active +license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 +valid-odoo-versions=16.0 + +[MESSAGES CONTROL] +disable=all + +# This .pylintrc contains optional AND mandatory checks and is meant to be +# loaded in an IDE to have it check everything, in the hope this will make +# optional checks more visible to contributors who otherwise never look at a +# green travis to see optional checks that failed. +# .pylintrc-mandatory containing only mandatory checks is used the pre-commit +# config as a blocking check. + +enable=anomalous-backslash-in-string, + api-one-deprecated, + api-one-multi-together, + assignment-from-none, + attribute-deprecated, + class-camelcase, + dangerous-default-value, + dangerous-view-replace-wo-priority, + development-status-allowed, + duplicate-id-csv, + duplicate-key, + duplicate-xml-fields, + duplicate-xml-record-id, + eval-referenced, + eval-used, + incoherent-interpreter-exec-perm, + license-allowed, + manifest-author-string, + manifest-deprecated-key, + manifest-required-author, + manifest-required-key, + manifest-version-format, + method-compute, + method-inverse, + method-required-super, + method-search, + openerp-exception-warning, + pointless-statement, + pointless-string-statement, + print-used, + redundant-keyword-arg, + redundant-modulename-xml, + reimported, + relative-import, + return-in-init, + rst-syntax-error, + sql-injection, + too-few-format-args, + translation-field, + translation-required, + unreachable, + use-vim-comment, + wrong-tabs-instead-of-spaces, + xml-syntax-error, + attribute-string-redundant, + character-not-valid-in-resource-link, + consider-merging-classes-inherited, + context-overridden, + create-user-wo-reset-password, + dangerous-filter-wo-user, + dangerous-qweb-replace-wo-priority, + deprecated-data-xml-node, + deprecated-openerp-xml-node, + duplicate-po-message-definition, + except-pass, + file-not-used, + invalid-commit, + manifest-maintainers-list, + missing-newline-extrafiles, + missing-readme, + missing-return, + odoo-addons-relative-import, + old-api7-method-defined, + po-msgstr-variables, + po-syntax-error, + renamed-field-parameter, + resource-not-exist, + str-format-used, + test-folder-imported, + translation-contains-variable, + translation-positional-used, + unnecessary-utf8-coding-comment, + website-manifest-key-not-valid-uri, + xml-attribute-translatable, + xml-deprecated-qweb-directive, + xml-deprecated-tree-attribute, + external-request-timeout, + # messages that do not cause the lint step to fail + consider-merging-classes-inherited, + create-user-wo-reset-password, + dangerous-filter-wo-user, + deprecated-module, + file-not-used, + invalid-commit, + missing-manifest-dependency, + missing-newline-extrafiles, + missing-readme, + no-utf8-coding-comment, + odoo-addons-relative-import, + old-api7-method-defined, + redefined-builtin, + too-complex, + unnecessary-utf8-coding-comment + + +[REPORTS] +msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg} +output-format=colorized +reports=no diff --git a/.pylintrc-mandatory b/.pylintrc-mandatory new file mode 100644 index 0000000..7b91601 --- /dev/null +++ b/.pylintrc-mandatory @@ -0,0 +1,98 @@ + +[MASTER] +load-plugins=pylint_odoo +score=n + +[ODOOLINT] +readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst" +manifest-required-authors=Sygel, Odoo Community Association (OCA) +manifest-required-keys=license +manifest-deprecated-keys=description,active +license-allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 +valid-odoo-versions=16.0 + +[MESSAGES CONTROL] +disable=all + +enable=anomalous-backslash-in-string, + api-one-deprecated, + api-one-multi-together, + assignment-from-none, + attribute-deprecated, + class-camelcase, + dangerous-default-value, + dangerous-view-replace-wo-priority, + development-status-allowed, + duplicate-id-csv, + duplicate-key, + duplicate-xml-fields, + duplicate-xml-record-id, + eval-referenced, + eval-used, + incoherent-interpreter-exec-perm, + license-allowed, + manifest-author-string, + manifest-deprecated-key, + manifest-required-author, + manifest-required-key, + manifest-version-format, + method-compute, + method-inverse, + method-required-super, + method-search, + openerp-exception-warning, + pointless-statement, + pointless-string-statement, + print-used, + redundant-keyword-arg, + redundant-modulename-xml, + reimported, + relative-import, + return-in-init, + rst-syntax-error, + sql-injection, + too-few-format-args, + translation-field, + translation-required, + unreachable, + use-vim-comment, + wrong-tabs-instead-of-spaces, + xml-syntax-error, + attribute-string-redundant, + character-not-valid-in-resource-link, + consider-merging-classes-inherited, + context-overridden, + create-user-wo-reset-password, + dangerous-filter-wo-user, + dangerous-qweb-replace-wo-priority, + deprecated-data-xml-node, + deprecated-openerp-xml-node, + duplicate-po-message-definition, + except-pass, + file-not-used, + invalid-commit, + manifest-maintainers-list, + missing-newline-extrafiles, + missing-readme, + missing-return, + odoo-addons-relative-import, + old-api7-method-defined, + po-msgstr-variables, + po-syntax-error, + renamed-field-parameter, + resource-not-exist, + str-format-used, + test-folder-imported, + translation-contains-variable, + translation-positional-used, + unnecessary-utf8-coding-comment, + website-manifest-key-not-valid-uri, + xml-attribute-translatable, + xml-deprecated-qweb-directive, + xml-deprecated-tree-attribute, + external-request-timeout + +[REPORTS] +msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg} +output-format=colorized +reports=no diff --git a/.ruff.toml b/.ruff.toml new file mode 100644 index 0000000..0240c75 --- /dev/null +++ b/.ruff.toml @@ -0,0 +1,30 @@ + +target-version = "py310" +fix = true + +[lint] +extend-select = [ + "B", + "C90", + "E501", # line too long (default 88) + "I", # isort + "UP", # pyupgrade +] +exclude = ["setup/*"] + +[format] +exclude = ["setup/*"] + +[per-file-ignores] +"__init__.py" = ["F401", "I001"] # ignore unused and unsorted imports in __init__.py +"__manifest__.py" = ["B018"] # useless expression + +[isort] +section-order = ["future", "standard-library", "third-party", "odoo", "odoo-addons", "first-party", "local-folder"] + +[isort.sections] +"odoo" = ["odoo"] +"odoo-addons" = ["odoo.addons"] + +[mccabe] +max-complexity = 16 diff --git a/LICENSE b/LICENSE index 0ad25db..be3f7b2 100644 --- a/LICENSE +++ b/LICENSE @@ -633,8 +633,8 @@ the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, diff --git a/README.md b/README.md index 479a237..8629267 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,40 @@ + + +[![Pre-commit Status](https://github.com/sygel-technology/sy-account-invoice-reporting/actions/workflows/pre-commit.yml/badge.svg?branch=16.0)](https://github.com/sygel-technology/sy-account-invoice-reporting/actions/workflows/pre-commit.yml?query=branch%3A16.0) +[![Build Status](https://github.com/sygel-technology/sy-account-invoice-reporting/actions/workflows/test.yml/badge.svg?branch=16.0)](https://github.com/sygel-technology/sy-account-invoice-reporting/actions/workflows/test.yml?query=branch%3A16.0) +[![codecov](https://codecov.io/gh/sygel-technology/sy-account-invoice-reporting/branch/16.0/graph/badge.svg)](https://codecov.io/gh/sygel-technology/sy-account-invoice-reporting) + + + + # sy-account-invoice-reporting + Odoo Invoicing reports + + + + [//]: # (addons) Available addons ---------------- -addon | version | summary ---- | --- | --- -[delete_payment_reference_invoice_report](delete_payment_reference_invoice_report/) | 16.0.1.0.0 | Remove the payment reference message from the outgoing +addon | version | maintainers | summary +--- | --- | --- | --- +[account_invoice_report_grouped_by_picking_hide_pickings](account_invoice_report_grouped_by_picking_hide_pickings/) | 16.0.1.0.0 | | Hide pickings on the account invoice report grouped by pickings +[delete_payment_reference_invoice_report](delete_payment_reference_invoice_report/) | 16.0.1.0.0 | | Delete payment reference from invoice reports [//]: # (end addons) + + + +## Licenses + +This repository is licensed under [AGPL-3.0](LICENSE). + +However, each module can have a totally different license, as long as they adhere to Sygel, Odoo Community Association (OCA) +policy. Consult each module's `__manifest__.py` file, which contains a `license` key +that explains its license. + +---- + From 688c91c09b959c57d9046e82e70b289b939a5141 Mon Sep 17 00:00:00 2001 From: Manuel Florido Date: Wed, 10 Jul 2024 13:12:16 +0200 Subject: [PATCH 2/2] [T-5944][IMP] delete_payment_reference_invoice_report,account_invoice_report_grouped_by_picking_hide_pickings:pre-commit auto fixes --- .../__manifest__.py | 27 +++++++++---------- .../models/account_move.py | 5 +--- .../models/stock_picking.py | 2 +- .../pyproject.toml | 3 +++ .../views/stock_picking_views.xml | 7 +++-- .../wizards/stock_picking_return.py | 22 +++++++-------- .../wizards/stock_picking_return_views.xml | 4 +-- .../README.rst | 0 .../__manifest__.py | 6 ++--- .../report/report_invoice.xml | 8 ++++-- 10 files changed, 40 insertions(+), 44 deletions(-) create mode 100644 account_invoice_report_grouped_by_picking_hide_pickings/pyproject.toml mode change 100755 => 100644 delete_payment_reference_invoice_report/README.rst diff --git a/account_invoice_report_grouped_by_picking_hide_pickings/__manifest__.py b/account_invoice_report_grouped_by_picking_hide_pickings/__manifest__.py index 210b821..b9e8046 100644 --- a/account_invoice_report_grouped_by_picking_hide_pickings/__manifest__.py +++ b/account_invoice_report_grouped_by_picking_hide_pickings/__manifest__.py @@ -1,20 +1,17 @@ # Copyright 2024 Alberto Martínez # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { - 'name': 'Account Invoice Report Grouped By Picking Hide Pickings', - 'summary': 'Hide pickings on the account invoice report grouped by pickings', - 'version': '16.0.1.0.0', - 'category': 'Accounting & Finance', - 'website': 'https://sygel.es', - 'author': 'Sygel, Odoo Community Association (OCA)', - 'license': 'AGPL-3', - 'application': False, - 'installable': True, - 'depends': [ - 'account_invoice_report_grouped_by_picking', - ], - 'data': [ - 'views/stock_picking_views.xml', - 'wizards/stock_picking_return_views.xml' + "name": "Account Invoice Report Grouped By Picking Hide Pickings", + "summary": "Hide pickings on the account invoice report grouped by pickings", + "version": "16.0.1.0.0", + "category": "Accounting & Finance", + "website": "https://github.com/sygel-technology/sy-account-invoice-reporting", + "author": "Sygel, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": [ + "account_invoice_report_grouped_by_picking", ], + "data": ["views/stock_picking_views.xml", "wizards/stock_picking_return_views.xml"], } diff --git a/account_invoice_report_grouped_by_picking_hide_pickings/models/account_move.py b/account_invoice_report_grouped_by_picking_hide_pickings/models/account_move.py index dd1da66..5875f3a 100644 --- a/account_invoice_report_grouped_by_picking_hide_pickings/models/account_move.py +++ b/account_invoice_report_grouped_by_picking_hide_pickings/models/account_move.py @@ -9,10 +9,7 @@ class AccountMove(models.Model): def lines_grouped_by_picking(self): res = super().lines_grouped_by_picking() - to_remove = list(filter( - lambda g: g['picking'].hide_on_invoice, - res - )) + to_remove = list(filter(lambda g: g["picking"].hide_on_invoice, res)) for i in to_remove: res.remove(i) return res diff --git a/account_invoice_report_grouped_by_picking_hide_pickings/models/stock_picking.py b/account_invoice_report_grouped_by_picking_hide_pickings/models/stock_picking.py index dcc031d..20c18e0 100644 --- a/account_invoice_report_grouped_by_picking_hide_pickings/models/stock_picking.py +++ b/account_invoice_report_grouped_by_picking_hide_pickings/models/stock_picking.py @@ -8,6 +8,6 @@ class StockPicking(models.Model): _inherit = "stock.picking" hide_on_invoice = fields.Boolean( - string='Hide on Invoice', + string="Hide on Invoice", default=False, ) diff --git a/account_invoice_report_grouped_by_picking_hide_pickings/pyproject.toml b/account_invoice_report_grouped_by_picking_hide_pickings/pyproject.toml new file mode 100644 index 0000000..4231d0c --- /dev/null +++ b/account_invoice_report_grouped_by_picking_hide_pickings/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/account_invoice_report_grouped_by_picking_hide_pickings/views/stock_picking_views.xml b/account_invoice_report_grouped_by_picking_hide_pickings/views/stock_picking_views.xml index 09fbb90..08f28af 100644 --- a/account_invoice_report_grouped_by_picking_hide_pickings/views/stock_picking_views.xml +++ b/account_invoice_report_grouped_by_picking_hide_pickings/views/stock_picking_views.xml @@ -1,15 +1,14 @@ - + - stock.picking.form.hide.on.invoice stock.picking - + - + diff --git a/account_invoice_report_grouped_by_picking_hide_pickings/wizards/stock_picking_return.py b/account_invoice_report_grouped_by_picking_hide_pickings/wizards/stock_picking_return.py index 0e4ee48..dbb4044 100644 --- a/account_invoice_report_grouped_by_picking_hide_pickings/wizards/stock_picking_return.py +++ b/account_invoice_report_grouped_by_picking_hide_pickings/wizards/stock_picking_return.py @@ -12,17 +12,15 @@ class ReturnPicking(models.TransientModel): ) is_full_return = fields.Boolean( - string="Is Full Return", - compute="_compute_is_full_return" + string="Is Full Return", compute="_compute_is_full_return" ) @api.depends("product_return_moves", "product_return_moves.quantity") def _compute_is_full_return(self): - self.is_full_return = ( - len(self.picking_id.move_ids) == len(self.product_return_moves) - and False not in self.product_return_moves.mapped( - lambda m: m.move_id and m.quantity == m.move_id.quantity_done - ) + self.is_full_return = len(self.picking_id.move_ids) == len( + self.product_return_moves + ) and False not in self.product_return_moves.mapped( + lambda m: m.move_id and m.quantity == m.move_id.quantity_done ) def create_returns(self): @@ -30,11 +28,9 @@ def create_returns(self): if self.is_internal_return: if self.is_full_return: new_picking = self.env["stock.picking"].browse(res["res_id"]) - (self.picking_id | new_picking).write({ - "hide_on_invoice": True - }) + (self.picking_id | new_picking).write({"hide_on_invoice": True}) else: - raise exceptions.ValidationError(_( - "You can only mark full returns as internal" - )) + raise exceptions.ValidationError( + _("You can only mark full returns as internal") + ) return res diff --git a/account_invoice_report_grouped_by_picking_hide_pickings/wizards/stock_picking_return_views.xml b/account_invoice_report_grouped_by_picking_hide_pickings/wizards/stock_picking_return_views.xml index 1692bd2..ca8c908 100644 --- a/account_invoice_report_grouped_by_picking_hide_pickings/wizards/stock_picking_return_views.xml +++ b/account_invoice_report_grouped_by_picking_hide_pickings/wizards/stock_picking_return_views.xml @@ -1,8 +1,8 @@ - + stock.return.picking - + diff --git a/delete_payment_reference_invoice_report/README.rst b/delete_payment_reference_invoice_report/README.rst old mode 100755 new mode 100644 diff --git a/delete_payment_reference_invoice_report/__manifest__.py b/delete_payment_reference_invoice_report/__manifest__.py index f109a8b..6b8507f 100644 --- a/delete_payment_reference_invoice_report/__manifest__.py +++ b/delete_payment_reference_invoice_report/__manifest__.py @@ -6,14 +6,14 @@ "summary": "Delete payment reference from invoice reports", "version": "16.0.1.0.0", "category": "Custom", - "website": "https://www.sygel.es", + "website": "https://github.com/sygel-technology/sy-account-invoice-reporting", "author": "Sygel, Odoo Community Association (OCA)", "license": "AGPL-3", "application": False, "installable": True, "depends": [ - 'base', - 'web', + "base", + "web", ], "data": [ "report/report_invoice.xml", diff --git a/delete_payment_reference_invoice_report/report/report_invoice.xml b/delete_payment_reference_invoice_report/report/report_invoice.xml index a2ce060..eb79861 100644 --- a/delete_payment_reference_invoice_report/report/report_invoice.xml +++ b/delete_payment_reference_invoice_report/report/report_invoice.xml @@ -1,8 +1,12 @@ - + -