From bedf89c28dba15e9cdc85b2fbf784671491e7656 Mon Sep 17 00:00:00 2001
From: Juliana <juliana@le-filament.com>
Date: Thu, 16 Feb 2023 16:21:21 +0100
Subject: [PATCH] [ADD]Init module 16.0

---
 .editorconfig                |  20 ++
 .eslintrc.yml                | 187 ++++++++++
 .flake8                      |  12 +
 .isort.cfg                   |  13 +
 .pre-commit-config.yaml      | 128 +++++++
 .prettierrc.yml              |   8 +
 .pylintrc                    | 123 +++++++
 .pylintrc-mandatory          |  98 ++++++
 LICENSE                      | 661 +++++++++++++++++++++++++++++++++++
 README.rst                   |  39 +++
 __init__.py                  |   2 -
 __manifest__.py              |  51 ++-
 models/__init__.py           |   5 +-
 models/sale.py               |  41 +++
 models/sale_order.py         |   8 -
 security/ir.model.access.csv |   3 +-
 static/description/icon.png  | Bin 0 -> 9161 bytes
 views/sale_views.xml         |  17 +
 views/views.xml              |  61 ----
 19 files changed, 1374 insertions(+), 103 deletions(-)
 create mode 100644 .editorconfig
 create mode 100644 .eslintrc.yml
 create mode 100644 .flake8
 create mode 100644 .isort.cfg
 create mode 100644 .pre-commit-config.yaml
 create mode 100644 .prettierrc.yml
 create mode 100644 .pylintrc
 create mode 100644 .pylintrc-mandatory
 create mode 100644 LICENSE
 create mode 100644 README.rst
 create mode 100644 models/sale.py
 delete mode 100644 models/sale_order.py
 create mode 100755 static/description/icon.png
 create mode 100644 views/sale_views.xml
 delete mode 100644 views/views.xml

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..9429bc6
--- /dev/null
+++ b/.eslintrc.yml
@@ -0,0 +1,187 @@
+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
+
+# 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/.flake8 b/.flake8
new file mode 100644
index 0000000..e397e8e
--- /dev/null
+++ b/.flake8
@@ -0,0 +1,12 @@
+[flake8]
+max-line-length = 88
+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
+per-file-ignores=
+    __init__.py:F401
diff --git a/.isort.cfg b/.isort.cfg
new file mode 100644
index 0000000..0ec187e
--- /dev/null
+++ b/.isort.cfg
@@ -0,0 +1,13 @@
+[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=88
+known_odoo=odoo
+known_odoo_addons=odoo.addons
+sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER
+default_section=THIRDPARTY
+ensure_newline_before_comments = True
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..c575299
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,128 @@
+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$|
+  # 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/oca/maintainer-tools
+    rev: 4cd2b852214dead80822e93e6749b16f2785b2fe
+    hooks:
+      # update the NOT INSTALLABLE ADDONS section above
+      - id: oca-update-pre-commit-excluded-addons
+      - id: oca-fix-manifest-website
+        args: ["https://le-filament.com"]
+  - repo: https://github.com/myint/autoflake
+    rev: v1.6.1
+    hooks:
+      - id: autoflake
+        args:
+          - --expand-star-imports
+          - --ignore-init-module-imports
+          - --in-place
+          - --remove-all-unused-imports
+          - --remove-duplicate-keys
+          - --remove-unused-variables
+  - repo: https://github.com/psf/black
+    rev: 22.8.0
+    hooks:
+      - id: black
+  - 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/asottile/pyupgrade
+    rev: v2.38.2
+    hooks:
+      - id: pyupgrade
+        args: ["--keep-percent-format"]
+  - repo: https://github.com/PyCQA/isort
+    rev: 5.10.1
+    hooks:
+      - id: isort
+        name: isort except __init__.py
+        args:
+          - --settings=.
+        exclude: /__init__\.py$
+  - repo: https://gitlab.com/PyCQA/flake8
+    rev: 3.9.2
+    hooks:
+      - id: flake8
+        name: flake8
+        additional_dependencies: ["flake8-bugbear==21.9.2"]
+  - repo: https://github.com/OCA/pylint-odoo
+    rev: 7.0.2
+    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..71c476d
--- /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=Le Filament
+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..ed2c217
--- /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=Le Filament
+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/LICENSE b/LICENSE
new file mode 100644
index 0000000..3ffc567
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,661 @@
+GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+  A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate.  Many developers of free software are heartened and
+encouraged by the resulting cooperation.  However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+  The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community.  It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server.  Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+  An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals.  This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU Affero General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Remote Network Interaction; Use with the GNU General Public License.
+
+  Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software.  This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time.  Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU Affero General Public License for more details.
+
+    You should have received a copy of the GNU Affero General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source.  For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code.  There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
\ No newline at end of file
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..e7e07f6
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,39 @@
+.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
+   :target: http://www.gnu.org/licenses/agpl.html
+   :alt: License: AGPL-3
+
+
+===================
+AGAP - Sale / Stock
+===================
+
+Description
+===========
+
+Ce module hérite les modules *sale* et *stock* et ajoute le champ Quantité disponible de l'article sur les lignes de vente.
+
+Exemple
+=======
+
+
+
+Credits
+=======
+
+Le développement de ce module a été financé par / The development of this module has been financially supported by:
+ - CLIENT (https://website-client)
+
+Contributors
+------------
+
+* Juiana Poudou <juliana@le-filament.com>
+
+
+Maintainer
+----------
+
+.. image:: https://le-filament.com/img/logo-lefilament.png
+   :alt: Le Filament
+   :target: https://le-filament.com
+
+This module is maintained by Le Filament
diff --git a/__init__.py b/__init__.py
index cde864b..0650744 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,3 +1 @@
-# -*- coding: utf-8 -*-
-
 from . import models
diff --git a/__manifest__.py b/__manifest__.py
index 7ecd005..60dce24 100644
--- a/__manifest__.py
+++ b/__manifest__.py
@@ -1,30 +1,25 @@
-# -*- coding: utf-8 -*-
 {
-    'name': "Agap - Sale",
-
-    'summary': """
-        Module d'ajout de champ personnalisé dans les pieces commerciales
-        """,
-
-    'description': """
-
-    """,
-
-    'author': "Scopea",
-    'website': "https://scopea.fr",
-
-    # Categories can be used to filter modules in modules listing
-    # Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml
-    # for the full list
-    'category': 'Sales',
-    'version': '11.0.001',
-
-    # any module necessary for this one to work correctly
-    'depends': ['sale_management','stock'],
-
-    # always loaded
-    'data': [
-        # 'security/ir.model.access.csv',
-        'views/views.xml',
+    "name": "AGAP - Sale / Stock",
+    "summary": "Vente et stocks",
+    "author": "Le Filament",
+    "website": "https://le-filament.com",
+    "version": "16.0.1.0.0",
+    "license": "AGPL-3",
+    "depends": ["sale", "stock"],
+    "data": [
+        # datas
+        # views
+        "views/sale_views.xml",
+        # views menu
+        # wizard
     ],
- }
+    "assets": {
+        "web._assets_primary_variables": [],
+        "web._assets_frontend_helpers": [],
+        "web.assets_frontend": [],
+        "web.assets_tests": [],
+        "web.assets_qweb": [],
+    },
+    "installable": True,
+    "auto_install": False,
+}
diff --git a/models/__init__.py b/models/__init__.py
index 6064afe..6002934 100644
--- a/models/__init__.py
+++ b/models/__init__.py
@@ -1,3 +1,4 @@
-# -*- coding: utf-8 -*-
+# Copyright 2023 Le Filament (https://le-filament.com)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
 
-from . import sale_order
+from . import sale
diff --git a/models/sale.py b/models/sale.py
new file mode 100644
index 0000000..7d7b986
--- /dev/null
+++ b/models/sale.py
@@ -0,0 +1,41 @@
+# Copyright 2023 Le Filament (https://le-filament.com)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
+
+from odoo import models, fields
+
+
+class SaleOrderLine(models.Model):
+    _inherit = "sale.order.line"
+
+    # ------------------------------------------------------
+    # Fields declaration
+    # ------------------------------------------------------
+    virtual_available = fields.Float(
+        string='Qté Dispo', related='product_id.virtual_available', store=False)
+    # ------------------------------------------------------
+    # SQL Constraints
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Default methods
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Computed fields / Search Fields
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Onchange / Constraints
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # CRUD methods (ORM overrides)
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Actions
+    # ------------------------------------------------------
+
+    # ------------------------------------------------------
+    # Business methods
+    # ------------------------------------------------------
diff --git a/models/sale_order.py b/models/sale_order.py
deleted file mode 100644
index 8efcea2..0000000
--- a/models/sale_order.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- coding: utf-8 -*-
-
-from odoo import models, fields, api
-
-class AgapSaleOrder(models.Model):
-    _inherit = "sale.order.line"
-
-    s_qtedispo = fields.Float(string='Qté Dispo', related='product_id.virtual_available', store=False)
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index be1ea3f..301b7da 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -1,2 +1 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_mymodule_mymodule,mymodule.mymodule,model_mymodule_mymodule,,1,0,0,0
\ No newline at end of file
+id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
diff --git a/static/description/icon.png b/static/description/icon.png
new file mode 100755
index 0000000000000000000000000000000000000000..82ef47760a441cf229b5009f0a18ccf3842fbfa5
GIT binary patch
literal 9161
zcmeAS@N?(olHy`uVBq!ia0y~yU^oH79Bd2>3~M9S&0}C-U`coMb!1@J*w6hZk(Ggg
zK_S^A$d`ekN{xY`p@o6r7Xt%B!wUw6QUeBtR|yOZRx=nF#0%!^3bbKhVBjq9h%9Dc
z;1&j9Muu5)Bp4VNBQrxHN+NuHtdjF{^%7I^lT!66atjzhz^1~gBDWwnwIorYA~z?m
z*s8)-39P~@uh<GCtgoa1R#K8}s}$iIpx~Tel&WB=XQF4IWXGkTpkPy!l4cd;;s(`T
zl#*tvlu=SrV5P5LUS6(OZmgGIl&)`RX=$l%V5Dzkq+67drdwQ@SCUwvn^&w1F$89g
zOKNd)QD#9&W`3Rm$lS!F{L&IzB_)tW3NQe1XGvxn!lt}psJD{ybM-+o`i6Q2`f#&B
z#)Cwy{EISE^GXsy=Gz(CfK{T1LG7{82U(8f7>G~7qCqZhc3d|4;4lG&j~$oKA@xWG
z2E|*RE{-7;jBjJv_lR8G`G4Eldv%OUJ4&YZDY-7baWUd^z(%!SaYETTmHSqB`t(Tk
zKD{ZFZSaCSYmwd2F4L|BO{^@U0#g<>EMnrix2^p5v)|`*&z!L|w%)yY`<plAb^EK!
zpIPTVtA94z@_EhK?N66nlzec6!+^<)<&T$^uq30KgTeuxL;Ot23C#?~9lREEj&c|@
ze=t74aYNw%PZBd<x*^jUg+Dw7OlBMg%{LkjNA@rnbJ#QYH1IN=Q80T@Af|kP=g@hE
zL9d-9_mhP-H`Btx-_8XuG(76I2?=T6I~g=<bGIO4+5{W-wSQVZFL*VDo1w|^go?00
zWeuClym=GTvt!ooRyq*8#>P$ULb*VQO!=||zE$tI+ZH7KvJ|*cy4@z~vDRHlkO^+b
z!{b=@O-Nhul6!iiS>>w6W9moy8H_#Tl4so7BN%jhn}_M?Z}wa@Q8QiAojxiZ;F)y%
zM(QkS#eFYISEd!5DB$S*+32Eg=2URQVujUftrh!Ts9pGGyXl7B{sq@h^Gs5ov#~tB
z)yE`h&D+n8KOV?GTy!LTiTK6Hf)g1l{=SV3sJpT<pzV85^~tjWb`R{kUhr{MuRNnr
z`DkX$e?t|!zaFb(ZzcPG2>m+Yg{z~(v2_+toj!bjv-fdP;q-NXP6U_FnSMji*kd2_
zJU{1>gWW~B_Ks0=;stX592A&W&`{$)^HQ(KIUXf@zCO*5s-G1%<}F=VQ}fa0gh`(H
zg|3H3#JQZ0cBV74q+E>n()+yYp_tVZsZ<lICDQq3vode6ecc|*BzpOr(B(--RxK5%
zeJa?XRP#71xUc!biM>l3z1BqXZDc*~{Uu1zpm~SP%P-e_FI4>Bsu%t8(JPJ1n)9m`
z)d-$cahW%ZbLNapV<)|rkzD>8ZLGJP%Rdty#`#aq+EX;i`+n1pOO--<r*NE6SZZ=h
z?E9?DRnxBp&8*;2I)8`1VYcAXITc-@rxxEYd;e0z#I}a}#~(Y6UJ3q}ZB`vN=G>FA
z?Q*mOH|^i2tKO@3*LKe&*|OKt-><)EVY;Ap;>hA_tzH`K`xR78ZusSy#{Qo>IY~9R
z?Ye@h@s*mzKNSw}OybXqS)L;BKr>97XRCe;Ut?@rL;drA0xvde|9i*uZ&lQX@2`?W
zN?h))DEa$+LZ^wtuiyEKf8SnrIy)~#|7HGur=Kpx;xV<Er6+kVc|Mkvun}@vtk!5&
zrNqL<+s<%Gwr1+p%CGa*-PbFd6%?P}aO72g!S+naCHrF9eN=9*cyg67Jj=bIeB-T!
z8h;x1r^jFTW+`*%_g?`gXZNP{i&lM@yJg#qTbnp1y$)ZT@ZQ&BO_h95eC@Tw+NnW@
z&nU<m-1;}StZ|d_g?Wz-Bo}gB-OpULA>Zio6^72O+6v$9#dPS;WPh1^|3>(O7;lyt
zjyelZ+BUy&IMr__{B@Qe!+*cp;`{~7SxdI(xBl2vu4wh$^Uo%ocMWoT?y4AjG#(58
zeK0Vf^43v-JEa|u#f&>G^bQr;HeOzQW!u^v68S7f&(E4%W6qHJksWByb@e>+-YV|g
z#3U>GSH2ThFPtN+C3nm&hGXJQV}+f0k>{>@Z)Gy>I6d)uXo&OClj4p?4VN?jVE(pt
zp;XPQ+4>57Ssy(^l>OI5^F3j3@>qLu`?S<UWv$|(Yh@%0B=kOg7vOu{#9ZF~V8Pvk
z;e9@j4N_;#R`_(te&NrXzgv&oN!&U~_ZZKkq!%ao!@lkecjhQx_C_f8;xYR}ndfE~
zvjnHidiAEu`n<DgX?_2_7aB?N7rx!$cdG7bcG%z8_iFOag2QLB6}LVVc7N)<RlwL|
zp0d1*A!C-_u7lqieHLdgcp+W9;OAEL0;#XA^K32GyH$laZt3KIUvH9;tiJt3XwIt3
zUrq1SGanJ(pB21n%jOx5pCsyY-#ah(b?9|L?*;G3+1JFH4CmD{EDw>Ml4>>U#d}+Z
zEuHNSHx(}{Y`L9r`klv(8y2s_I`(~=kvcQzTmsw4!Y|Ir-<xN7=L=8D554+i+1CqS
z`fn@#`xg^hw*2ymYc@3>J_Z#2Ij?x3ykS>;%z^9o%XN=DvtM~mKQZgUr;B^nYd-va
z{^d1hW_O3P>+@P2&d;6tHR=7i);8<<yL-zzFI-dpdGok{vwQi!S8)#K-Y#jG7qO-A
zw?olmE05a0JEz2+Vo4KdU;O_4RsO8{QfU@;p3rL@HvjoEoNj;ddHns<pLJ@J?80j<
zX75NAbAQewd?5W(oYU@<g@M9~{|+*pFcFy_KCSQ2^sSY16}tKTMc;+7w)al*UhJ9m
zSh?Kka<jRUn&9NmyCqw<mA`(!hsonso*(0s%^`D(Mf0S~=Xmw(JpZol9M7YKmQ(#!
z%!h>egQoTD`M{r1_scFdu3Yul{c6_o_3MtW?>uwi)(lUHQxC=Oe!XP<ch?NZO%8H*
zYV}vlsav-x<n!zE51RgnrN))39}_#%xa{VM8(i{nPwj13_fLDg>$h&nsjr63HxBj$
zuRe9Ter1SvfBhdjle4=vuGm{=Vs9<H==~pWrvu?}jakOxntOG;T5bJKIIleZxZ_3M
z`Zo>o58s{JXXSNT(es$}`~Q<K%${UqJ-K1x+9v1Y9FMgHr?Zr=3A$g~Y#sP|E~i@I
zUzg}h3-2E1I;{J5X?FEn{##2{I$Yiu<ab6vY_WgP%TJm1#!){4Bj-#qu`QIB(pbB3
z#ZAkU+((HTw=KA@dLQ%3|MjITB-fGm-m~WyOV9rb-6lTe-Y->`d2=|gK9A4c6MpB{
zT8nQzV#f<Le&}3160FlbQT<_5L3pLNdE4y;7kBnYUwI`{bo2}Nf@elGpZjI>4cTKG
z<)50Qvdgn?t)Ib}+CF#A*F}r+ZMi%B?IxURZF}Dty??T5m8RefN0G&Eog1Tm@;_zQ
zzAV#t;{Sc#30_)RrF@z-7fe>zd}R`}Fp2K}H*4MspGws!vURI!1OGUgEaZ>NJlMBs
z(x$`9ZeRaep=aEY)Npt*f3TKfP{_(B>DnTun<jgFo_;07<G0y;m&^OSxNPTovuM|x
z(5^4yTy>&<!&|eRMS>I5%Zo1^Tfl4U_Eq=l5uPNu%BpO+sy#EcdS)sW%T0N4lOv@r
zy7Zm=!sosHPW{^H4*k+{tU+aG)LZ#&1K0Yuc7Og-K6~mR`&Y-~Lz$<l&&|KBdUJ`(
zb6e%9AHUy_bb8D`<;7B`1UAFol8hhs1n%VabaDyQzGn5P{kYO)yK;boe-!%^`NE*?
zKw+c!1>f}oekR|sIu{z%YaRCRWV_ehi(A&e+jctPcfNmX?)14Fz5I9Am9Q`IwcvQ4
z?Z0y0Jcm^pTb$GVZn2~Z7^|sPuY36AlnnD+m2<1Mua@;#XuF(aZTwZI`G4YnYGuD!
z<z316M`)!8@8Zw%on=?oKWyF``r}mAyw40K|333&+A2QU;cw-V74EOFeeuWC_b)vk
zS(ucF+`92z>7sYzfp~$t8k2P#mj+FW*vm6%zIA*x%P-!xSD)88zP%~8>sq<Yq?@_x
zxEh~?cgviU6v`7ja<A^B!=lMAR`)MVdl%IyC$-W1-1ax^Hv42GkEp~hzoB?=;WabW
zAa^;X8;hSVlrAmOHeu!bGBH;ziTk5siIh6C_=TzVJFi^2%Wu1*m;c_HIczs$m2b|U
z9sFvyZpP(x8$w)uf4lMf^Vy?{76lSNF08w&ry91WndyRBvf!TO4<<}>i|U+X*!+Uc
z$|S4liJ?lboSTsLlg##YvmOS_Zs~jU&GLwYu=<IFiRtMFzhD0&GHG?{%;uPb9v{EI
z%U5|Ix$}$X_1vj1Ts+nt)}Qy%`vG_OmI|-HYZ;2mw&xyO-><{MyJ*W^5n*GG+bbSl
zQSLaHd`5F;qUo%&>&z!#eSX93=f&lZP1F>gnxFkQJ0RywY1Y+i0&iVr21_YBN7mjv
zanD9L*DTDj+|lmN)J?uSl&3}f-WZ~Cfq#3|W}ov*yyO%Nnz!&RTEB+tZgbzHHj_rL
zPCwzyf2)*^9-FT3RN7ZP*Gzf(Va>i%xtc4dL@WzonyH?8;v4IQT7jQePfhZeetOQI
zt50Hf&!73`XK~tuYl?h}oHOfl{U0|x7E#?9CN@u!`>h4{`|6e=cAZaG?k{OCb=Ng_
zFFSa!rqbM}u1@vYr9<ml=2XV}h=-@JWy&@jV2ELvz0B?9u3RVMYZoOJ_B3xvI@|f|
zbLZ4^*A1Tis+>Q0%iMn@nv=aa8<+PjvGK`2{xVW0?ZjeP6K#FHwkA32M7B)X3kTLY
zFInhoUeho1YQ5^NE{CT54Nf}^`xZ`FdyR8d8JFwl(C<fHhO}<9ydzfjXiMLl>&7Oo
zm(^!IOTEc>S^WDcLt~HE9>1zjSp{wJesblU%>`-Zhcm=4C3Us!_KcnIXYVhs?pHi{
z|ChbqbX?)gm3(H884@h-54OLa5afME!Q{~nYv)<(pG~>-YwFCD%6IBNJ2Si7&aDWR
z5M8AmRPaGAXnW?A*(phaoq1|0M;^s(-Dl``^UT*h73X-G7Qf=o@?yVm==83`f!~7*
zWG>IKm+f6}VeP?0?n)8kla^m}TiQ-edjCXRBX)c7q_z1C{j5x96j+>Re=oW0{4mAp
zQkd%z@f_>Szp9-jZ7HIy9+^LT_0}3j{a*O?#({>!p!Hge3qm+J?c{C6R;_QX;a&AB
zZc*j&Ct_P;Ykz6-?TbC?bh)#OW7qQ#P5w#C);v~`({jz6y?xK3Ewfs3mx!Lbv!-mS
z(~F4cOU#EegR}M;=cdH#atU8dY_&`+xV-2}&_!d8nJsPnmU1R0_E+tnC|U5nd#--1
zmgi!)oM@p%4*PWz+fBNwPb@iL{><f6zsii$F21{bpEa@CU00J=^8a3N+G^u7XLs9)
z0hiuXPP`Ikv~k7aUvXL?S9p}(=+@P?2c7b17P+x=e#c$MjmEG3m8>fjxsejn62%sL
z!^E>7!}ybk=BYU+YWosyF}chSt#lG;EdFqMWqkOAs9oE>Gd}ZX>|%d(MK_D#aM0wc
zJ$4htf5a@C^J~}9nwTru6Fy8?tUJ@$USrE*VX58g=cU-F{cL#j*5l&hIckX+DYMS~
z3^Y^nEuCYQp{4$1osUWU0h6^y{(P8{oO1s2k8k~Zzt38^?Q7=gzBwN+o_NsaEEUT&
zHOgpFKu&r7CDToNYi4hCaI0~AqB$w+VeVD-ql^<%)K<tyguGFU+?wdF{&244&r_#(
zcZD7by*P3C%<hL@K6#gT{axm=U5SNVYg>nBM%F^hoU47}FI>+mTr{7zdCTEz{C=N4
z`(F%tmuq{nq9?y@(yZB&JC;8z$erZK7?ahlV}4OhPG>FqnZFj6;dz#qouo>a+zR^n
zF<tv@fX0_bVa{C{?6*bUwcL`*{kv4+P1@JWU_t+RVqc|HI=j#9nyq)p^_NKv$KRys
z%Y0p%l#a0d;y)<yFnWQc_{*7WQ}}K#+2W+(5id}GeqZ0Cp2?S+Rq{Ak*x#kSXwC6)
zs+Q&G<e$6$ATRHhc^#T!wXCH)tN%Am=+yst#Z*1%&x<=Z(>6V=EV$sY)Lop*DynPc
z3dt5WosTDfKRW;R!Nj}m70$2Z4lo!-?myTk(ekTbcUCvw?Yfkjj@J77-3#-0^(Mu#
zybn1UtWhNrTbyt}?uFz>smw&*>n>)mSFX2P?CkD&JAKufi9N43AGwv<_o{krK%oCd
zE=viK*3NBhyqwns4xPH-u*I(Pak$gd=&mKVrl!Yety~nbUFA6k+sP%ol22lqn98oj
z)v;H3zsx_eSU9TM<orz4i)%TQVs8J?3@Ur|n)gR(oa)8f93lO2DvkdRN6oRmaK-=o
zqD<}Zp8c->Sv5soh^)8iY%(d@zS2LjX0hA6nJ>@GRx*lsa&o`p+x!cwJK{1rd8f(S
z$=a8{IQU_r{c}}u&&f=Rz8k-AmY&e^xAXsNkaXvu+LydZ_x44`AO2=xl2>1HPT}^v
z<MuHc`3_sQxm>JUU027-@|#cOy5g4|7r1?dW_I<QU6gP0`pm>_Z>N^Vs?|H*+HidB
zy&qk!x#@5BH#+X-?(cZpqQm}?|C#gWKbEJ0Qu?Al&#rE9FH2>#R<bL}oSJg~k*{p!
zKgEu{pBKe;AG1l>wn^E4>WtoftG1j7SB($lpL6T4;0x}TtJjD{zx$`P$>t67tr;g@
zuznH`_<ehK_bs7`k}l?-3O}(l<;T^2TBxw@(GKIUD!-F!PP@zf<?b-;U8HhU|9#<C
z<{#JoG9NQhH@DgJch@4RA1BrBEL@cM`Ofl%FF)=MIU8|lOJ}g+p6hi%bxBW!PA^!}
z7~AHND13%@g1H#4u5P#KM-gxHqLZcaj!9qLoqnxTX7+rvwYI-RM!R{=4%0h-t9v@C
zrH{Qkz<ztmi`?kCFPQ;mUs(*-dasM_+&_OoaYygl*9wzT*b8ns1<!l%;Gxsc3HQ!z
z>s%Ik{%jM6A$y(RT(w_97jDa4(7H5X!p+(7wN6I+bG4nnduA)oSG#>_%hZMOg1cS(
zH5MfcE4h|Dl`UMU!M~7Q$)sx0#?m=;A%Cww4cIPdJI8`&@|>9cLa*}oi>%V$$$D6W
z$8g*As%OrUZ5)OPQQtMV(-oI(tK;?Mzd!HxmQ`ENp1NGuS-0NJ!}iF>*ApYG;umcf
zycBKjc=_@V(<2!nTFZq(`b>C=1cSD1y&GFs8|^2R8}+kvy7%i@uNTP9yk&o9{hhsD
zYhoEoug`xTvApx$f&1wSA@fUBGlWzAu5h}exYM;aQDW<fH<IV>3cs|{v;JeU!tOWM
z%h!(C{kx>~TaFY-GiGO7KlwVbY~zV7GxqhVB=9ceR=wokz3)$k<F<#T)9<WoKcm34
zBQt&3@%QN(y(><1mLA@_zkH9Jz*+A8kLr#`IqlC|rH9A#>1zH`i#s2?f17UdRL_lW
ztIqEX+7^49>+E`4&ff2_siCIUbIthA?9RKHUAkMS@wEH*eamjghKk2eD7ezV$F=3+
z<R#h*zcQR#Rmg43?yst`f58r=joae|R~arj;4$f+(+RFg@pXJ3%i|}mGnQWX=EBP#
zslR3SvH0}KZb*8yns-Orp@>&27DT-2lsxi?)1zjWNR!4wJ}sTkTP6x$xK^`y?FXN$
zIyYNY!uIlSG=JV9(X_-)Z%c>gOQHKao*mWMX}feQtL}s3?&qAB6E+ujURid&pzG-z
z$0JRDzIZR_TJ$|j<AU+hl4RMsiFNG@<pMT02!Bwz`%3YE?$u+z*R%dVSDRWNz9VD(
zznl3j^TLyEGOZTVdHKYmu_krv&(m3j7lSo@U%ue=Ym3Nz=fynzZs)Coi*;_Foz)n;
z_toe1tsnLUPj$_-z5L_*?2oU1tTWm#(y7C~QSxia-R&1XTwl$iJfr*KI^VCA;S2TG
z+&vp<IbWDLV9U)b$NYKgU+OM1;N(kH3ln!(rSQ;`U3>FM)quzU@3zEmPoMI0saFcy
zNuy6+E?oQnHLGUw>CYb>=EpAlwdnQ5_>lEFYfJibgsN6uvn|Q*HU59)>BZ{Z>|V!K
zC$JelT4<vj`t?|Qp6Klv&zPR%O=)`S;bc~P&}oi#d27f$_bYQ%3u6=e6kOLeyvp0l
zvS__^cxU+bcfMNsmt_02Gk-fd9G<H?SwQf0ck3SgjzSl!f_HuS|2G}>pT@IjlE&;#
z{dw6txZ_p5?s!hhOVgMVtYXj<q9!FO^x?+t^^TXB%^k81tGE5C*~H8kx8(f+rPqNe
z-)sdOj`O9qFKV2o8S3|2(k^55=SeBEX9dlh<gKj9B0bG#p`(QAt+|)fWZ53d%P=~I
zZ1Bmw*P^BV{lU7MNfYmX)9>X|QSx7)#ij1fVbE;Rv~sJ!zNymbcRPX}J8ERQyE@l8
z-JYm*=cZTPPQB+DJAS3D=`+^wR^)an=1O$Ax2kxZqrX}(kC|eMywHnc=9>De^;TsE
za`R@NFDyHt@T85w(m!KHq3D&kLVY8yTMjQK?SFo5hulu7SL>{APvnn@z5300QtO4h
z;A#`~Icl93m|t|cKedmL-d|rG``K{;zY%BF9jmVa`RmR<Kci4-%barPmceJMEl+-T
zFIgriwNX68$6lUyao+izxw(%P26QsnB+A}Md+zv}Bc{IN!j)W;<+{nSQ>~SkU)?FQ
zZ@EOv9{~@YXb#{0yUO}48+U$6uDg@;dZP2?Euk^3tK^rQQnHbrww;6Ts9~kv$*Gnb
z@-Hp-T6g>`t6!z^0iH?bB|jMUeKBwe+<$6LhF3`CucMF7=AYYa#s5V<E5bQq>S;Ii
z(1|yG=R4fZozCUUVD$Ov6nmyUY$xTdr*tndD0-Xgz@7TJ%0+rNe~Y?&-|i@V%U6nj
z--avM%$ge88mg?qcz(kDyXWm0H_7_1i8)gh5|;4PG2PNbZo$jd7Z%yx4Y<GP{*w7@
z4-H)_yL2lKPAr{&VQ1Iz!YnhssX~E|e6#s~Ip1vk;rv&>xJy4)LFIvO|9#$#mHrDe
z-xQs=lHRY7n%91Qt>6Rw4pXzf;uDrme;zz`Fy48F^WkB?c}|bK<I1mueeUL8`1Nk|
z19g7IBQjGyXp7!^uc2X|RCRjiyZX=B{u`1O^7Z#wq_AnStkRJ0JX0xPQZ%9W(}Zs=
z`F}q&9=A#pSmmy^mu++0l>=-4d{lkwyG@qE^oQxvmuJ@UHlO=3b^q<T7gw|Y_E=NF
z{%G|yukvNRccdS8f1mimk5lyWIk(c^hCv@$c4;WBv{>Hf+90_k;K!pV#c$tETQ754
z`*u?QiU%B%uiQ<X|FF5wedej1L7AJx#qYT-kx>(oVoaOBq$Cw@B%d++>V$%gep35)
zE;+D3Frf6?)kF7MZ064h&besgv9451_f*XE^To~%=85OlDovjzs9-+-q^Y(FzuLit
z*TNc96m;zWh-`^@(|)k*f_9?+pGONeExcNmU-f&tK;;|0m)@%Jyun<J48|Uc0avz8
zbl6(4xm#W^y=4ufFJrw%Q|Q_H`#iG_Enc|p<TvL;A?w#^CGR&coO_I2wwu9!BUjIQ
zt#celg}!`$q5D-t#_XD9aYE05wwc!-Td_aYnq$Sw_^(Ms;#CRrI!BMTh2m0d7p5_9
zEm^um;GbvegbBa0Y)$Mcw2w?b7o2LmmRT@?P19h9WXzJwdXwu4eeX$~Eat4)eD6Xu
z*WI516+0dT+<dDp>XR46zp+)n)8Ja>v<cE1Uat{Oo6w|uSBuen`)UK(<?Z|a=}&iL
zJt}r5bwYse@>m0|h{-=H42{lvg$J%YGyTBxouE{2ofes;VbPcs@u7Ev?#}P!x`_fl
z-9L0>3(M3M4s?HEYW7iFdi(2&TepsV?cl$zxUF;MVX=AZPNlGE8hlbpb5lyon0ifl
z->gR;=BDl_uuJSd<Ydn*qAzQpwZ<}2n9pT%WTaM}-t_C1S|-1;%b4olGrG#Y(^+5r
z{(;vXHcf*AN^!rAnJ!pZtx&5qze>sL#CHe%_Y%HYkE0adc-MdDoxq&E>DTEc7yGAn
za4n5L{NPaQoxdy>>{_<9G)sBizG!T7YvzxOoy?pH%wM|Y<W44>j=#-a8)v$B-nE>J
zDv{hrC#SVc)@GUE7;|v>I+_0oin|_8WPZl+TVRWzAm>cQ$zF_xA-}4>e3EliznW3g
z$|MrISXa)s=7dO!%hUH8gS8JosAAhMwaSGtM{C(%kw@|iOBJ&uii_GCq*BXsr`5cb
zIQClMIB%M9470(HhTkvvud7EU^Gj)2Sse6jd~m>ahNFzb)U_P?mo_U-aktadH9NC|
zZMnb1?LFN>Cxa|@x;IE3v28mgrg6;eF7N&W2h2YgN~PYp8Wg4>FmYMdMDc%}eyi?l
z1#~aH%X3`gP0L4qKIhvdUy6hdO~`xl_Ck2usqPo8ffnfnH|=YeUb>&#c4XF5rIu15
z*}%=lS<@H1T4mh);=qd@=lC5=r~GaBwfbzCW4p9OBsRyexc2$her9#+`|I#$>AoYf
zhV2ViZZ<i4lZ&Nd;yQ+<i#-l1E?)Ra{r}}fkJerPw)N$NnD%Acat^V6PZGRuurZG{
z;EAT++-3%2kLM3~7Jg)RJj*KadBgG?@uYn%Jh$pp!t~wU3%H}Eh?yt-;rlirqitpI
zxtWeujL#lS2n=Xmc*|o#`pf`v?TuBEMn`Y&*f5{lq|_){A?m8?=_3aYJlwI?#)Csz
zSo>abzj|20Q;&4ElY$%ObT3}B_|cVa-I>j0bCcemJt~ml@0j$~J%eS^iF>XdhcmV(
zE4Dmbaa7)I-`CKq+iovVxyYM&_kY}xME*_6Gq<uBdxUk|5#{(I%W`XmXOQxiuhP}e
z;{__;y;s__HpIc-L5=&%ecsmk-H-il9JzLPL#(d&&w~q<0|P46Ol)g5?-R8<#|)ZV
zbU3|~>nOL%?2_Ux-5N<L`5k<{OJ?y#rc`=-dwpp4$%e!itIPdUdhQ<R-xa&l<Bn^O
zp!4aPN&HM_6n-w4<}DjktG?86^54peQ-Kz~Qmu7cUfqsfoEvX{EdKjdg~<=5XufYT
z`?%5d+#km0cilTfQrKQTX!LtHEk~%i`qCEn`5x@uO;1IP0{46_`D>Oj@3%;medWFh
zzSDD}&nU>+d|9$kx-w7f*Zy5AAJ|^BYBOmRUOnx>{h%$0@v2G9DL!n`tnYWUNTsm7
zY&qDcTO&8?7k}d^;q%)<g3D_px5)1K7yL!yzuKxT`*~M>eR1R9mcGI}V&Z4I7(hYC
z6~J(vW#aMohqnK=(y;$k!ohprINeR~_CfFaO*dwr=Qb_-=OvO5BV%%KR|KDfR)*l6
zO}u<^oChC1Zgov4_`q@D*xTfrthKU>xZ~QMiOZkcC!2GVEB#3~L%riCSH1gH8J;u#
z<h1@+thP#j&&5qkkDOAy@Z*H+gg+&nsgmbjM6k?ov=WQIeGN2|vWdBW;^_xg%AX!7
zAL_PVub)z3HTe+FrI{JCe{uO+M(q^Kta|odpz_Q4WtVDhiE?akO$=Y)SG!2K?ZSt>
zOYRA0hdX?JQ>|(xyo-%7ZNj>Pu@R!Hc$Q`So>snMS4M!yU880VhnFUk{M+pBZgKv)
z<np>^>rE~Wa*C%H%?b2iF*@6OC@A2*TC1<eBa!al?~V<UOI9Ca+Fm_dZWrs@Q}!ZU
z-7C+=J3U?#ZE)-%du*xeo%KwNVj@}&FMWi5zE%xiG*d%M>RRpXnX$$3d;$-0<Jc8S
zQv{<XEH}%4b3$)Nt~kdBk<+XdF;{<c7&KSZ_x$9GRXD)&h{<N%t6G*Bj(hBn)wJsg
zB(N1S%7uTmV>+X7Pd<5{vp9!A^A3jo)m8G0X#(&24eu}H1{HY?$3yq_GZ=S#KR)CA
z1<;6@-hs!f?tu!O-^pjnUobJI35Y)^41KSBfalR)!)MkdjSR*e+#hzV`YxEj_VJ&@
kXW3m24U$KOzH|OaUs{&XsPMF<542#$)78&qol`;+07{kiQ~&?~

literal 0
HcmV?d00001

diff --git a/views/sale_views.xml b/views/sale_views.xml
new file mode 100644
index 0000000..14123f0
--- /dev/null
+++ b/views/sale_views.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+    <data>
+
+        <record id="view_order_form" model="ir.ui.view">
+            <field name="name">sale.order.form</field>
+            <field name="model">sale.order</field>
+            <field name="inherit_id" ref="sale.view_order_form"/>
+            <field name="arch" type="xml">
+                <xpath position="after" expr="//tree/field[@name='product_uom_qty']">
+                    <field name="virtual_available"/>
+                </xpath>
+            </field>
+        </record>
+
+    </data>
+</odoo>
diff --git a/views/views.xml b/views/views.xml
deleted file mode 100644
index 2cbcf70..0000000
--- a/views/views.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<odoo>
-  <data>
-    <!-- explicit list view definition -->
-
-    <record model="ir.ui.view" id="agap_sale_order_list">
-      <field name="name">agap list</field>
-      <field name="model">sale.order</field>
-      <field name="inherit_id" ref="sale.view_order_form"/>
-      <field name="mode">extension</field>
-      <field name="priority">90</field>
-        <field name="arch" type="xml">
-            <xpath position="after" expr="//tree/field[@name='product_uom_qty']">
-                <field name="s_qtedispo"/>
-            </xpath>
-        </field>
-    </record>
-
-
-    <!-- actions opening views on models -->
-    <!--
-    <record model="ir.actions.act_window" id="mymodule.action_window">
-      <field name="name">mymodule window</field>
-      <field name="res_model">mymodule.mymodule</field>
-      <field name="view_mode">tree,form</field>
-    </record>
-    -->
-
-    <!-- server action to the one above -->
-    <!--
-    <record model="ir.actions.server" id="mymodule.action_server">
-      <field name="name">mymodule server</field>
-      <field name="model_id" ref="model_mymodule_mymodule"/>
-      <field name="state">code</field>
-      <field name="code">
-        action = {
-          "type": "ir.actions.act_window",
-          "view_mode": "tree,form",
-          "res_model": self._name,
-        }
-      </field>
-    </record>
-    -->
-
-    <!-- Top menu item -->
-    <!--
-    <menuitem name="mymodule" id="mymodule.menu_root"/>
-    -->
-    <!-- menu categories -->
-    <!--
-    <menuitem name="Menu 1" id="mymodule.menu_1" parent="mymodule.menu_root"/>
-    <menuitem name="Menu 2" id="mymodule.menu_2" parent="mymodule.menu_root"/>
-    -->
-    <!-- actions -->
-    <!--
-    <menuitem name="List" id="mymodule.menu_1_list" parent="mymodule.menu_1"
-              action="mymodule.action_window"/>
-    <menuitem name="Server to list" id="mymodule" parent="mymodule.menu_2"
-              action="mymodule.action_server"/>
-    -->
-  </data>
-</odoo>
-- 
GitLab