Skip to content

Commit

Permalink
[ADD] procurement_auto_create_group: init
Browse files Browse the repository at this point in the history
  • Loading branch information
AurelijaNorvaisaite committed Sep 23, 2024
1 parent db3bea9 commit 6264f1d
Show file tree
Hide file tree
Showing 10 changed files with 460 additions and 0 deletions.
111 changes: 111 additions & 0 deletions procurement_auto_create_group/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
=============================
Procurement Auto Create Group
=============================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:469639cf06197ad827f2cea50416bd52aad40a8c93ab583b87e760755b1f8916
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status
:alt: Production/Stable
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--warehouse-lightgray.png?logo=github
:target: https://github.com/OCA/stock-logistics-warehouse/tree/17.0/procurement_auto_create_group
:alt: OCA/stock-logistics-warehouse
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-17-0/stock-logistics-warehouse-17-0-procurement_auto_create_group
: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/stock-logistics-warehouse&target_branch=17.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows the system to propose automatically new procurement
groups during the procurement run.

This capability is important when you want to make sure that all the
stock moves resulting from a procurement run will never be mixed with
moves from other groups in stock transfers.

The stock transfers resulting from the procurement run will only contain
stock moves created in that run.

**Table of contents**

.. contents::
:local:

Configuration
=============

1. Go to *Inventory / Configuration / Settings* and check the option
'Multi-Step Routes' and press the 'Save' button.
2. Activate the developer mode.
3. Go to *Inventory / Configuration / Warehouse Management / Routes* and
select the route you want to change. Select the rule you wish to
change, and in case of a Pull rule or Push & Pull rule Select
'Propagation of Procurement Group': 'Propagate'. The checkbox
'Auto-create Procurement Group' will then appear and you can set it
if you want to procurement group to be automatically created.

Usage
=====

1. Run a new procurement and make sure that it determines a rule with
the option 'Auto-create Procurement Group' set.
2. When the procurement rule is executed, a procurement group with
format 'PG/000001' will be created. You can find this procurement
group in 'Additional info' tab of a transfer.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-logistics-warehouse/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/stock-logistics-warehouse/issues/new?body=module:%20procurement_auto_create_group%0Aversion:%2017.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
-------

* ForgeFlow
* BCIM

Contributors
------------

- Jordi Ballester <[email protected]>
- Lois Rilo <[email protected]>
- Héctor Villarreal Ortega <[email protected]>
- Jacques-Etienne Baudoux (BCIM) <[email protected]>
- Bernat Puig <[email protected]>
- Laurent Mignon <[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.

This module is part of the `OCA/stock-logistics-warehouse <https://github.com/OCA/stock-logistics-warehouse/tree/17.0/procurement_auto_create_group>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions procurement_auto_create_group/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from . import models
17 changes: 17 additions & 0 deletions procurement_auto_create_group/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2017-2020 ForgeFlow, S.L.
# Copyright 2021 Jacques-Etienne Baudoux (BCIM) <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "Procurement Auto Create Group",
"version": "17.0.1.0.0",
"development_status": "Production/Stable",
"license": "AGPL-3",
"summary": "Allows to configure the system to propose automatically new "
"procurement groups during the procurement run.",
"author": "ForgeFlow, BCIM, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/stock-logistics-warehouse",
"category": "Warehouse",
"depends": ["stock"],
"data": ["views/procurement_view.xml"],
"installable": True,
}
4 changes: 4 additions & 0 deletions procurement_auto_create_group/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from . import stock_rule
from . import procurement_group
25 changes: 25 additions & 0 deletions procurement_auto_create_group/models/procurement_group.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright 2017-2020 ForgeFlow, S.L.
# Copyright 2021 Jacques-Etienne Baudoux (BCIM) <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from odoo import api, models


class ProcurementGroup(models.Model):
_inherit = "procurement.group"

@api.model
def _get_rule(self, product_id, location_id, values):
rule = super()._get_rule(product_id, location_id, values)
# If there isn't a date planned in the values it means that this
# method has been called outside of a procurement process.
if (
rule
and not values.get("group_id")
and rule.auto_create_group
and values.get("date_planned")
):
group_data = rule._prepare_auto_procurement_group_data()
group = self.env["procurement.group"].create(group_data)
values["group_id"] = group
return rule
34 changes: 34 additions & 0 deletions procurement_auto_create_group/models/stock_rule.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright 2017-2020 ForgeFlow, S.L.
# Copyright 2021 Jacques-Etienne Baudoux (BCIM) <[email protected]>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from odoo import _, api, fields, models
from odoo.exceptions import UserError


class StockRule(models.Model):
_inherit = "stock.rule"

auto_create_group = fields.Boolean(string="Auto-create Procurement Group")

@api.onchange("group_propagation_option")
def _onchange_group_propagation_option(self):
if self.group_propagation_option != "propagate":
self.auto_create_group = False

def _push_prepare_move_copy_values(self, move_to_copy, new_date):
new_move_vals = super()._push_prepare_move_copy_values(move_to_copy, new_date)
if self.auto_create_group:
group_data = self._prepare_auto_procurement_group_data()
group = self.env["procurement.group"].create(group_data)
new_move_vals["group_id"] = group.id
return new_move_vals

def _prepare_auto_procurement_group_data(self):
name = self.env["ir.sequence"].next_by_code("procurement.group") or False
if not name:
raise UserError(_("No sequence defined for procurement group."))
return {
"name": name,
"partner_id": self.partner_address_id.id,
}
3 changes: 3 additions & 0 deletions procurement_auto_create_group/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
3 changes: 3 additions & 0 deletions procurement_auto_create_group/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from . import test_auto_create
Loading

0 comments on commit 6264f1d

Please sign in to comment.