Skip to content
Snippets Groups Projects
Commit 0b3e1849 authored by Daniil Digtyar Vasilieva's avatar Daniil Digtyar Vasilieva :call_me:
Browse files

[REL] 14.0.2.0.0

Merge branch 'release/14.0.1.1.14' into '14.0'

See merge request !195
parents 24a264e5 3536744b
No related branches found
Tags v14.0.2.0.0
2 merge requests!239Draft: [REL] energy_communities: dependency energy_selfconsumption bump to,!195[REL] 14.0.2.0.0
Pipeline #52089 passed
Showing
with 868 additions and 67 deletions
.eslintrc 0 → 100644
{
"globals": {
"$": false,
"_": false,
"fuzzy": false,
"jQuery": false,
"moment": false,
"odoo": false,
"openerp": false,
"self": false
},
"env": {
"browser": true
},
"rules": {
"no-alert": "warn",
"no-array-constructor": "warn",
"no-bitwise": "off",
"no-caller": "warn",
"no-case-declarations": "warn",
"no-catch-shadow": "warn",
"no-class-assign": "warn",
"no-cond-assign": "warn",
"no-confusing-arrow": "warn",
"no-console": "off",
"no-const-assign": "warn",
"no-constant-condition": "warn",
"no-continue": "off",
"no-control-regex": "warn",
"no-debugger": "warn",
"no-delete-var": "warn",
"no-div-regex": "warn",
"no-dupe-args": "warn",
"no-dupe-class-members": "warn",
"no-dupe-keys": "warn",
"no-duplicate-case": "warn",
"no-duplicate-imports": "warn",
"no-else-return": "warn",
"no-empty": "warn",
"no-empty-character-class": "warn",
"no-empty-function": "warn",
"no-empty-pattern": "warn",
"no-eq-null": "warn",
"no-eval": "warn",
"no-ex-assign": "warn",
"no-extend-native": "warn",
"no-extra-bind": "warn",
"no-extra-boolean-cast": "warn",
"no-extra-label": "warn",
"no-extra-parens": "warn",
"no-extra-semi": "warn",
"no-fallthrough": "warn",
"no-floating-decimal": "warn",
"no-func-assign": "warn",
"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-invalid-this": "off",
"no-irregular-whitespace": "warn",
"no-iterator": "warn",
"no-label-var": "warn",
"no-labels": "warn",
"no-lone-blocks": "warn",
"no-lonely-if": "warn",
"no-loop-func": "off",
"no-magic-numbers": "off",
"no-mixed-operators": "warn",
"no-mixed-requires": "warn",
"no-mixed-spaces-and-tabs": "warn",
"no-multi-spaces": "warn",
"no-multi-str": "warn",
"no-multiple-empty-lines": "warn",
"no-native-reassign": "warn",
"no-negated-condition": "warn",
"no-negated-in-lhs": "warn",
"no-nested-ternary": "off",
"no-new": "warn",
"no-new-func": "warn",
"no-new-object": "warn",
"no-new-require": "warn",
"no-new-symbol": "warn",
"no-new-wrappers": "warn",
"no-obj-calls": "warn",
"no-octal": "warn",
"no-octal-escape": "warn",
"no-param-reassign": "warn",
"no-path-concat": "warn",
"no-plusplus": "off",
"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": "warn",
"no-script-url": "warn",
"no-self-assign": "warn",
"no-self-compare": "warn",
"no-sequences": "warn",
"no-shadow": "warn",
"no-shadow-restricted-names": "warn",
"no-whitespace-before-property": "warn",
"no-spaced-func": "warn",
"no-sparse-arrays": "warn",
"no-sync": "warn",
"no-tabs": "warn",
"no-ternary": "off",
"no-trailing-spaces": "warn",
"no-this-before-super": "warn",
"no-throw-literal": "warn",
"no-undef": "warn",
"no-undef-init": "warn",
"no-undefined": "off",
"no-unexpected-multiline": "warn",
"no-underscore-dangle": "off",
"no-unmodified-loop-condition": "warn",
"no-unneeded-ternary": "warn",
"no-unreachable": "warn",
"no-unsafe-finally": "warn",
"no-unused-expressions": "warn",
"no-unused-labels": "warn",
"no-unused-vars": "warn",
"no-use-before-define": "warn",
"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-var": "off",
"no-warning-comments": "off",
"no-with": "warn",
"array-bracket-spacing": "off",
"array-callback-return": "warn",
"arrow-body-style": "warn",
"arrow-parens": "warn",
"arrow-spacing": "off",
"accessor-pairs": "warn",
"block-scoped-var": "off",
"block-spacing": ["warn", "always"],
"brace-style": "warn",
"callback-return": "warn",
"camelcase": "off",
"capitalized-comments": [
"warn",
"always",
{
"ignoreConsecutiveComments": true,
"ignoreInlineComments": true
}
],
"comma-dangle": ["warn", "always-multiline"],
"comma-spacing": [
"warn",
{
"before": false,
"after": true
}
],
"comma-style": "warn",
"complexity": ["warn", 15],
"computed-property-spacing": "off",
"consistent-return": "off",
"consistent-this": "off",
"constructor-super": "warn",
"curly": "warn",
"default-case": "off",
"dot-location": ["warn", "property"],
"dot-notation": "warn",
"eol-last": "warn",
"eqeqeq": "warn",
"func-names": "off",
"func-style": "off",
"generator-star-spacing": "off",
"global-require": "warn",
"guard-for-in": "off",
"handle-callback-err": "warn",
"id-blacklist": "warn",
"id-length": "off",
"id-match": "warn",
"indent": "warn",
"init-declarations": "warn",
"jsx-quotes": "warn",
"key-spacing": "off",
"keyword-spacing": "warn",
"linebreak-style": ["warn", "unix"],
"lines-around-comment": "warn",
"max-depth": "warn",
"max-len": [
"warn",
{
"code": 88,
"ignorePattern": "odoo\\.define\\(",
"tabWidth": 4
}
],
"max-lines": "off",
"max-nested-callbacks": "warn",
"max-params": "off",
"max-statements": "off",
"max-statements-per-line": "warn",
"multiline-ternary": "off",
"new-cap": "off",
"new-parens": "warn",
"newline-after-var": "off",
"newline-before-return": "off",
"newline-per-chained-call": "off",
"object-curly-newline": ["warn", {"consistent": true}],
"object-curly-spacing": ["warn", "never"],
"object-property-newline": [
"warn",
{
"allowAllPropertiesOnSameLine": true
}
],
"object-shorthand": "off",
"one-var": "off",
"one-var-declaration-per-line": "off",
"operator-assignment": "warn",
"operator-linebreak": "warn",
"padded-blocks": "off",
"prefer-arrow-callback": "off",
"prefer-const": "warn",
"prefer-reflect": "off",
"prefer-rest-params": "off",
"prefer-spread": "off",
"prefer-template": "off",
"quote-props": "off",
"quotes": "off",
"radix": "warn",
"require-yield": "warn",
"rest-spread-spacing": "off",
"semi": ["warn", "always"],
"semi-spacing": "warn",
"sort-imports": "warn",
"sort-vars": "off",
"space-before-blocks": "warn",
"space-before-function-paren": "warn",
"space-in-parens": "off",
"space-infix-ops": "off",
"space-unary-ops": "off",
"spaced-comment": ["warn", "always"],
"strict": ["warn", "function"],
"template-curly-spacing": "off",
"unicode-bom": "warn",
"use-isnan": "warn",
"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",
"vars-on-top": "off",
"wrap-iife": "warn",
"wrap-regex": "warn",
"yield-star-spacing": "off",
"yoda": "warn"
},
"parserOptions": {
"ecmaVersion": 2017
}
}
env:
browser: true
# See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
parserOptions:
ecmaVersion: 2017
# Globals available in Odoo that shouldn't produce errorings
globals:
_: readonly
$: readonly
fuzzy: readonly
jQuery: readonly
moment: readonly
odoo: readonly
openerp: readonly
Promise: 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
.flake8 0 → 100644
[flake8]
max-line-length = 80
max-complexity = 16
# B = bugbear
# B9 = bugbear opinionated (incl line length)
select = C,E,F,W,B,B9
# E203: whitespace before ':' (black behaviour)
# E501: flake8 line length (covered by bugbear B950)
# W503: line break before binary operator (black behaviour)
ignore = E203,E501,W503
......@@ -6,8 +6,8 @@
# Note that environment variables can be set in several places
# See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
stages:
- test
- test
sast:
stage: test
include:
- template: Security/SAST.gitlab-ci.yml
- template: Security/SAST.gitlab-ci.yml
[settings]
; see https://github.com/psf/black
multi_line_output=3
include_trailing_comma=True
force_grid_wrap=0
combine_as_imports=True
use_parentheses=True
line_length=79
known_odoo=odoo
known_odoo_addons=odoo.addons
sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER
default_section=THIRDPARTY
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$|
# 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$|
# You don't usually want a bot to modify your legal texts
(LICENSE.*|COPYING.*)
default_language_version:
python: python3
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$"
- repo: https://github.com/oca/maintainer-tools
rev: 58557dd6b2c72e698dd2a0b4c5b435815e5d9d02
hooks:
# update the NOT INSTALLABLE ADDONS section above
- id: oca-update-pre-commit-excluded-addons
- id: oca-fix-manifest-website
args: ["https://coopdevs.org"]
- id: oca-gen-addon-readme
args:
- --addons-dir=.
- --org-name=OCA
- --repo-name=server-tools
- --branch=14.0
# This job could easily produce conflicts when it runs on every commit,
# so it's added as a manual job. If you automate it, beware.
# See https://pre-commit.com/#confining-hooks-to-run-at-certain-stages
- id: oca-gen-addons-table
stages: [manual]
- id: oca-gen-addon-icon
args:
- --addons-dir=.
- repo: https://github.com/myint/autoflake
rev: v2.2.0
hooks:
- id: autoflake
args: ["-i", "--ignore-init-module-imports"]
- repo: https://github.com/psf/black
rev: 23.7.0
hooks:
- id: black
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.0.1
hooks:
- id: prettier
name: prettier + plugin-xml
additional_dependencies:
- "prettier@2.4.1"
- "@prettier/plugin-xml@1.1.0"
args:
- --plugin=@prettier/plugin-xml
# - repo: https://github.com/pre-commit/mirrors-eslint
# rev: v7.8.1
# hooks:
# - id: eslint
# verbose: true
# args:
# - --color
# - --fix
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.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/asottile/pyupgrade
rev: v3.10.1
hooks:
- id: pyupgrade
- repo: https://github.com/PyCQA/isort
rev: 5.12.0
hooks:
- id: isort
name: isort except __init__.py
args:
- --settings=.
exclude: /__init__\.py$
- repo: https://github.com/acsone/setuptools-odoo
rev: 3.1.12
hooks:
- id: setuptools-odoo-make-default
- id: setuptools-odoo-get-requirements
args:
- --output
- requirements.txt
- --header
- "# generated from manifests external_dependencies"
- repo: https://github.com/PyCQA/pylint
rev: v3.0.0a6
hooks:
- id: pylint
name: pylint odoo with optional checks
args:
- --rcfile=.pylintrc
- --exit-zero
verbose: true
- id: pylint
name: pylint odoo with mandatory checks
args:
- --rcfile=.pylintrc-mandatory
# 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"
[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=
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=14.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-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,
# 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
[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=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=14.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-key,
manifest-version-format,
method-compute,
method-inverse,
method-required-super,
method-search,
openerp-exception-warning,
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
[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
output-format=colorized
reports=no
# -*- coding: utf-8 -*-
from . import models
# -*- coding: utf-8 -*-
{
"name": "Cooperator Account Banking Mandate",
"version": "14.0.1.0.5",
"version": "14.0.1.1.0",
"license": "AGPL-3",
"summary": """
This module adds mandate selection to cooperator subscription request.""",
"author": "Som IT Cooperatiu SCCL",
"category": "Banking addons",
"depends": ["cooperator", "cooperator_account_payment", "account_banking_mandate",
"account_banking_sepa_direct_debit"],
"website": "https://coopdevs.org",
"depends": [
"cooperator",
"cooperator_account_payment",
"account_banking_mandate",
"account_banking_sepa_direct_debit",
],
"data": [
"views/subscription_request_views.xml",
],
......
# -*- coding: utf-8 -*-
from . import subscription_request
from odoo import api, models, fields, _
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class SubscriptionRequest(models.Model):
_inherit = 'subscription.request'
_inherit = "subscription.request"
mandate_id = fields.Many2one(
"account.banking.mandate",
......@@ -16,53 +16,55 @@ class SubscriptionRequest(models.Model):
mandate_required = fields.Boolean(
related="payment_mode_id.payment_method_id.mandate_required",
)
mandate_approved = fields.Boolean(required=True, default=False, string="Approved creation of new mandate")
mandate_approved = fields.Boolean(
required=True, default=False, string="Approved creation of new mandate"
)
def create_invoice(self, partner):
if self.mandate_required and not self.mandate_id:
self.mandate_id = self.create_mandate()
return super(SubscriptionRequest, self).create_invoice(partner)
return super().create_invoice(partner)
def create_mandate(self):
if not self.partner_id:
raise ValidationError(_('Must assign a valid cooperator.'))
raise ValidationError(_("Must assign a valid cooperator."))
if not self.mandate_approved:
raise ValidationError(_('Must check the mandate creation.'))
return self.env['account.banking.mandate'].create(
self.get_mandate_values()
)
raise ValidationError(_("Must check the mandate creation."))
return self.env["account.banking.mandate"].create(self.get_mandate_values())
def get_invoice_vals(self, partner):
vals = super(SubscriptionRequest, self).get_invoice_vals(partner)
vals = super().get_invoice_vals(partner)
vals["mandate_id"] = self.mandate_id.id
return vals
def get_bank(self):
if not self.iban:
raise ValidationError(_('Must assign a valid iban.'))
bank_id = self.partner_id.bank_ids.search([('acc_number', '=', self.iban)]) # TODO normalize iban
raise ValidationError(_("Must assign a valid iban."))
bank_id = self.partner_id.bank_ids.search(
[("acc_number", "=", self.iban)]
) # TODO normalize iban
if bank_id:
return bank_id
return self.env['res.partner.bank'].create(
return self.env["res.partner.bank"].create(
{
'partner_id': self.partner_id.id,
'acc_number': self.iban,
"partner_id": self.partner_id.id,
"acc_number": self.iban,
}
)
def get_mandate_values(self):
bank_id = self.get_bank()
return {
'format': 'sepa',
'type': 'recurrent',
'state': 'valid',
'signature_date': self.date,
'partner_bank_id': bank_id.id,
'partner_id': self.partner_id.id,
'company_id': self.company_id.id,
"format": "sepa",
"type": "recurrent",
"state": "valid",
"signature_date": self.date,
"partner_bank_id": bank_id.id,
"partner_id": self.partner_id.id,
"company_id": self.company_id.id,
}
@api.onchange("partner_id")
def onchange_partner(self):
super(SubscriptionRequest, self).onchange_partner()
super().onchange_partner()
self.mandate_id = False
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="subscription_request_form_inherit" model="ir.ui.view">
<field name="name">cooperator_account_banking_mandate.subscription_request.form</field>
<field
name="name"
>cooperator_account_banking_mandate.subscription_request.form</field>
<field name="model">subscription.request</field>
<field name="inherit_id" ref="cooperator_account_payment.subscription_request_form_inherit"/>
<field name="priority" eval="8"/>
<field
name="inherit_id"
ref="cooperator_account_payment.subscription_request_form_inherit"
/>
<field name="priority" eval="8" />
<field name="arch" type="xml">
<xpath expr="//field[@name='payment_mode_id']" position="after">
<field
name="mandate_id"
attrs="{'invisible': [('mandate_required', '=', False)]}"
/>
<field name="mandate_required" invisible="1"/>
<field name="mandate_approved"/>
name="mandate_id"
attrs="{'invisible': [('mandate_required', '=', False)]}"
/>
<field name="mandate_required" invisible="1" />
<field name="mandate_approved" />
</xpath>
</field>
</record>
......
# -*- coding: utf-8 -*-
from . import models
# -*- coding: utf-8 -*-
{
"name": "Cooperator Account Payment",
"version": "14.0.1.0.2",
"version": "14.0.1.1.0",
"license": "AGPL-3",
"summary": """
This module adds support for payment mode to cooperator.""",
"author": "Som IT Cooperatiu SCCL",
"category": "Banking addons",
"website": "https://coopdevs.org",
"depends": ["cooperator", "account_payment_partner"],
"data": [
"views/product_template_views.xml",
......
# -*- coding: utf-8 -*-
from . import product_template
from . import subscription_request
from odoo import fields, models, api
from odoo import api, fields, models
class ProductTemplate(models.Model):
......
from odoo import api, models, fields
from odoo import api, fields, models
class SubscriptionRequest(models.Model):
_inherit = 'subscription.request'
_inherit = "subscription.request"
payment_mode_id = fields.Many2one(
comodel_name="account.payment.mode",
compute="_compute_payment_mode",
store=True,
readonly=False, # must be set False to compute
states={"block": [("readonly", True)],
"done": [("readonly", True)],
"waiting": [("readonly", True)],
"transfer": [("readonly", True)],
"cancelled": [("readonly", True)],
"paid": [("readonly", True)]},
states={
"block": [("readonly", True)],
"done": [("readonly", True)],
"waiting": [("readonly", True)],
"transfer": [("readonly", True)],
"cancelled": [("readonly", True)],
"paid": [("readonly", True)],
},
check_company=True,
domain="[('payment_type', '=', 'inbound')]",
)
......@@ -24,12 +26,15 @@ class SubscriptionRequest(models.Model):
for request in self:
request.payment_mode_id = request.share_product_id.payment_mode_id
def get_invoice_vals(self, partner):
vals = super(SubscriptionRequest, self).get_invoice_vals(partner)
vals = super().get_invoice_vals(partner)
if self.payment_mode_id:
vals['payment_mode_id'] = self.payment_mode_id.id
if (self.payment_mode_id.bank_account_link == "fixed" and
self.payment_mode_id.payment_method_id.code == "manual"):
vals["partner_bank_id"] = self.payment_mode_id.fixed_journal_id.bank_account_id.id
vals["payment_mode_id"] = self.payment_mode_id.id
if (
self.payment_mode_id.bank_account_link == "fixed"
and self.payment_mode_id.payment_method_id.code == "manual"
):
vals[
"partner_bank_id"
] = self.payment_mode_id.fixed_journal_id.bank_account_id.id
return vals
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="product_template_form_inherit" model="ir.ui.view">
<field name="name">energy_communities.product_template.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="cooperator.product_template_form_view"/>
<field name="priority" eval="8"/>
<field name="inherit_id" ref="cooperator.product_template_form_view" />
<field name="priority" eval="8" />
<field name="arch" type="xml">
<xpath expr="//field[@name='minimum_quantity']" position="after">
<field name="payment_mode_id"/>
<field name="payment_mode_id" />
</xpath>
</field>
</record>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment