-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[15.0][MIG] base_sequence_option #2275
Changes from all commits
06f6a7b
483ab37
a41bd34
4cf6308
0b0531b
9c842ec
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
==================== | ||
Base Sequence Option | ||
==================== | ||
|
||
.. | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! This file is generated by oca-gen-addon-readme !! | ||
!! changes will be overwritten. !! | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! source digest: sha256:75d8946f5cd25aef8d9c21b2bff8cba31e807609628e4899a2daca87ecd92196 | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
|
||
.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png | ||
:target: https://odoo-community.org/page/development-status | ||
:alt: Alpha | ||
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png | ||
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html | ||
:alt: License: LGPL-3 | ||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github | ||
:target: https://github.com/OCA/server-tools/tree/15.0/base_sequence_option | ||
:alt: OCA/server-tools | ||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png | ||
:target: https://translation.odoo-community.org/projects/server-tools-15-0/server-tools-15-0-base_sequence_option | ||
:alt: Translate me on Weblate | ||
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png | ||
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=15.0 | ||
:alt: Try me on Runboat | ||
|
||
|badge1| |badge2| |badge3| |badge4| |badge5| | ||
|
||
This module allow user to add optional sequences to some document model. | ||
On which sequence is used, is based on domain matching with document values | ||
(and original sequence will be bypassed). | ||
|
||
For example, it is now possible to, | ||
|
||
* Avoid using Odoo automatic sequence on invoice and vendor bill with old style sequence. | ||
* Customer payment and vendor payment to run on different sequence. | ||
* Assign different sales order sequence based on customer region. | ||
|
||
This is a base module and does nothing by itself. Following are modules | ||
that will allow managing sequence options for each type of documents, I.e., | ||
|
||
* Purchase Order: purchase_sequence_option | ||
* Invoice / Bill / Refund / Payment: account_sequence_option | ||
* Others: create a new module with few lines of code | ||
|
||
.. IMPORTANT:: | ||
This is an alpha version, the data model and design can change at any time without warning. | ||
Only for development or testing purpose, do not use in production. | ||
`More details on development status <https://odoo-community.org/page/development-status>`_ | ||
|
||
**Table of contents** | ||
|
||
.. contents:: | ||
:local: | ||
|
||
Usage | ||
===== | ||
|
||
To use this module, you need to: | ||
|
||
1. Go to *Settings > Technical > Sequences & Identifier > Manage Sequence Options*. | ||
2. Based on extended module installed, different document types will be listed, i.e., Purchase Order. | ||
3. Activite "Use sequence options" to use, if not, fall back to normal sequence. | ||
4. For each option, provide, | ||
* Name: i.e., Customer Invoice for Cust A., Customer Payment, etc. | ||
* Apply On: a filter domain to test whether a document match this option. | ||
* Sequence: select underlining sequence to perform | ||
|
||
**Note:** | ||
|
||
* If no options matches the document, fall back to normal sequence. | ||
* If there are multiple sequence options that match same document, error will be raised. | ||
|
||
Bug Tracker | ||
=========== | ||
|
||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_. | ||
In case of trouble, please check there if your issue has already been reported. | ||
If you spotted it first, help us to smash it by providing a detailed and welcomed | ||
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20base_sequence_option%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
|
||
Do not contact contributors directly about support or help with technical issues. | ||
|
||
Credits | ||
======= | ||
|
||
Authors | ||
~~~~~~~ | ||
|
||
* Ecosoft | ||
|
||
Contributors | ||
~~~~~~~~~~~~ | ||
|
||
* Kitti U. <[email protected]> | ||
|
||
Maintainers | ||
~~~~~~~~~~~ | ||
|
||
This module is maintained by the OCA. | ||
|
||
.. image:: https://odoo-community.org/logo.png | ||
:alt: Odoo Community Association | ||
:target: https://odoo-community.org | ||
|
||
OCA, or the Odoo Community Association, is a nonprofit organization whose | ||
mission is to support the collaborative development of Odoo features and | ||
promote its widespread use. | ||
|
||
.. |maintainer-kittiu| image:: https://github.com/kittiu.png?size=40px | ||
:target: https://github.com/kittiu | ||
:alt: kittiu | ||
|
||
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__: | ||
|
||
|maintainer-kittiu| | ||
|
||
This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/15.0/base_sequence_option>`_ project on GitHub. | ||
|
||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th) | ||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). | ||
|
||
from . import models |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,22 @@ | ||||||
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th) | ||||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). | ||||||
|
||||||
{ | ||||||
"name": "Base Sequence Option", | ||||||
"summary": "Alternative sequence options for specific models", | ||||||
"version": "15.0.1.0.0", | ||||||
"author": "Ecosoft, Odoo Community Association (OCA)", | ||||||
"maintainers": ["kittiu"], | ||||||
"development_status": "Alpha", | ||||||
"website": "https://github.com/OCA/server-tools", | ||||||
"category": "Tools", | ||||||
"depends": ["base"], | ||||||
"external_dependencies": {"python": ["odoo_test_helper"]}, | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You don't need to add this here, just add it to test-requirements.txt (or create it if it does not exist 😄 ) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. OK, line removed. The |
||||||
"data": [ | ||||||
"security/ir.model.access.csv", | ||||||
"security/sequence_option_security.xml", | ||||||
"views/sequence_option_view.xml", | ||||||
], | ||||||
"license": "LGPL-3", | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
This module should AGPL-3 ? |
||||||
"installable": True, | ||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,209 @@ | ||
# Translation of Odoo Server. | ||
# This file contains the translation of the following modules: | ||
# * base_sequence_option | ||
# | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Odoo Server 14.0\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"Last-Translator: \n" | ||
"Language-Team: \n" | ||
"MIME-Version: 1.0\n" | ||
"Content-Type: text/plain; charset=UTF-8\n" | ||
"Content-Transfer-Encoding: \n" | ||
"Plural-Forms: \n" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__filter_domain | ||
msgid "Apply On" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__model | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__model | ||
msgid "Apply On Model" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__base_id | ||
msgid "Base" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__company_id | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__company_id | ||
msgid "Company" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,help:base_sequence_option.field_ir_sequence_option__company_id | ||
#: model:ir.model.fields,help:base_sequence_option.field_ir_sequence_option_line__company_id | ||
msgid "Company related to this sequence option" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__create_uid | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__create_uid | ||
msgid "Created by" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__create_date | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__create_date | ||
msgid "Created on" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__name | ||
msgid "Description" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence__display_name | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__display_name | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__display_name | ||
msgid "Display Name" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model_terms:ir.ui.view,arch_db:base_sequence_option.view_ir_sequence_option_form | ||
#: model_terms:ir.ui.view,arch_db:base_sequence_option.view_ir_sequence_option_line_tree | ||
msgid "Doctype Sequence" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,help:base_sequence_option.field_ir_sequence_option_line__filter_domain | ||
msgid "Find matching option by document values" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence__id | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__id | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__id | ||
msgid "ID" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,help:base_sequence_option.field_ir_sequence_option__use_sequence_option | ||
#: model:ir.model.fields,help:base_sequence_option.field_ir_sequence_option_line__use_sequence_option | ||
msgid "" | ||
"If checked, Odoo will try to find the new matching sequence first, if not " | ||
"found, fall back to use the original Odoo sequence." | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__implementation | ||
msgid "Implementation" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence____last_update | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option____last_update | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line____last_update | ||
msgid "Last Modified on" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__write_uid | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__write_uid | ||
msgid "Last Updated by" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__write_date | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__write_date | ||
msgid "Last Updated on" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.actions.act_window,name:base_sequence_option.action_ir_sequence_option | ||
#: model:ir.ui.menu,name:base_sequence_option.menu_ir_sequence_option | ||
#: model_terms:ir.ui.view,arch_db:base_sequence_option.view_ir_sequence_option_tree | ||
msgid "Manage Sequence Options" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model_terms:ir.ui.view,arch_db:base_sequence_option.view_ir_sequence_option_form | ||
msgid "Matching Domain" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: code:addons/base_sequence_option/models/ir_sequence_option.py:0 | ||
#, python-format | ||
msgid "Multiple optional sequences found for this model!" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__name | ||
#: model_terms:ir.ui.view,arch_db:base_sequence_option.view_ir_sequence_option_form | ||
msgid "Name" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__prefix | ||
msgid "Prefix" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,help:base_sequence_option.field_ir_sequence_option_line__prefix | ||
msgid "Prefix value of the record for the sequence" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model,name:base_sequence_option.model_ir_sequence | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__sequence_id | ||
msgid "Sequence" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model,name:base_sequence_option.model_ir_sequence_option | ||
msgid "Sequence Option Base Model" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model,name:base_sequence_option.model_ir_sequence_option_line | ||
msgid "Sequence Option Line" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__option_ids | ||
msgid "Sequence Options" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence__smart_search | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__smart_search | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__smart_search | ||
msgid "Smart Search" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__suffix | ||
msgid "Suffix" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,help:base_sequence_option.field_ir_sequence_option_line__suffix | ||
msgid "Suffix value of the record for the sequence" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model_terms:ir.ui.view,arch_db:base_sequence_option.view_ir_sequence_option_form | ||
msgid "Use Sequence" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option__use_sequence_option | ||
#: model:ir.model.fields,field_description:base_sequence_option.field_ir_sequence_option_line__use_sequence_option | ||
msgid "Use sequence options" | ||
msgstr "" | ||
|
||
#. module: base_sequence_option | ||
#: model:ir.model.fields,help:base_sequence_option.field_ir_sequence_option_line__implementation | ||
msgid "" | ||
"While assigning a sequence number to a record, the 'no gap' sequence " | ||
"implementation ensures that each previous sequence number has been assigned " | ||
"already. While this sequence implementation will not skip any sequence " | ||
"number upon assignment, there can still be gaps in the sequence if records " | ||
"are deleted. The 'no gap' implementation is slower than the standard one." | ||
msgstr "" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th) | ||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). | ||
|
||
from . import ir_sequence_option | ||
from . import ir_sequence |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th) | ||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). | ||
|
||
from odoo import api, models | ||
|
||
|
||
class IrSequence(models.Model): | ||
_inherit = "ir.sequence" | ||
|
||
def next_by_id(self, sequence_date=None): | ||
sequence_id = self.env.context.get("sequence_option_id", False) | ||
if sequence_id: | ||
self = self.browse(sequence_id) | ||
return super().next_by_id(sequence_date=sequence_date) | ||
|
||
@api.model | ||
def next_by_code(self, sequence_code, sequence_date=None): | ||
sequence_id = self.env.context.get("sequence_option_id", False) | ||
if sequence_id: | ||
self = self.browse(sequence_id) | ||
return super().next_by_id(sequence_date=sequence_date) | ||
return super().next_by_code(sequence_code, sequence_date=sequence_date) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All of license should agpl?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Saran440 according to https://www.odoo-community.org/resources/faq AGPLv3, LGPLv3 or GPLv3 are possible. Also: I am not in a position to just "change" license of existing module I'm migrating. Only authors can do I believe.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
okay, i will change it next PR.
cc: @kittiu