Skip to content

Commit

Permalink
[16.0][ADD] purchase_split_by_route
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieudelva committed Dec 20, 2024
1 parent f2f46d5 commit 46f6e9f
Show file tree
Hide file tree
Showing 15 changed files with 772 additions and 0 deletions.
85 changes: 85 additions & 0 deletions purchase_split_by_route/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
====================
Purchase Split Route
====================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:1679d1ffb6e608db2dac3887451673e17077113039e4bb701b2159d3bf55b06c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |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%2Fpurchase--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/purchase-workflow/tree/16.0/purchase_split_by_route
:alt: OCA/purchase-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_split_by_route
: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/purchase-workflow&target_branch=16.0
:alt: Try me on Runboat

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

This module allows you to separate automatic purchases by sale order route

**Table of contents**

.. contents::
:local:

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/purchase-workflow/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/purchase-workflow/issues/new?body=module:%20purchase_split_by_route%0Aversion:%2016.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
~~~~~~~

* Akretion

Contributors
~~~~~~~~~~~~

* `Akretion <https://akretion.com>`_:
* Mathieu DELVA <[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-mathieudelva| image:: https://github.com/mathieudelva.png?size=40px
:target: https://github.com/mathieudelva
:alt: mathieudelva

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-mathieudelva|

This module is part of the `OCA/purchase-workflow <https://github.com/OCA/purchase-workflow/tree/16.0/purchase_split_by_route>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions purchase_split_by_route/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
19 changes: 19 additions & 0 deletions purchase_split_by_route/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2024 Akretion France (http://www.akretion.com/)
# @author: Mathieu Delva <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Purchase Split Route",
"summary": """""",
"version": "16.0.1.0.0",
"license": "AGPL-3",
"maintainers": ["mathieudelva"],
"author": "Akretion,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/purchase-workflow",
"depends": [
"purchase_stock",
"sale_order_global_stock_route",
"stock_mts_mto_rule",
],
"data": ["views/stock_route.xml"],
}
3 changes: 3 additions & 0 deletions purchase_split_by_route/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import purchase_order
from . import stock_route
from . import stock_rule
36 changes: 36 additions & 0 deletions purchase_split_by_route/models/purchase_order.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Copyright 2024 Akretion France (http://www.akretion.com/)
# @author: Mathieu Delva <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

import re

from odoo import api, fields, models


class PurchaseOrder(models.Model):
_inherit = "purchase.order"

default_route_id = fields.Many2one("stock.route", store=True)


class PurchaseOrderLine(models.Model):
_inherit = "purchase.order.line"

@api.model
def _prepare_purchase_order_line_from_procurement(
self, product_id, product_qty, product_uom, company_id, values, po
):
vals = super()._prepare_purchase_order_line_from_procurement(
product_id, product_qty, product_uom, company_id, values, po
)
origin = values["move_dest_ids"].origin
if origin:
origin = re.search(r"S\d+", origin)
if origin:
order_id = self.env["sale.order"].search([("name", "=", origin[0])])
if order_id:
po.default_route_id = order_id.route_id.id
elif "orderpoint_id" in values:
po.default_route_id = values["orderpoint_id"].route_id.id

return vals
11 changes: 11 additions & 0 deletions purchase_split_by_route/models/stock_route.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Copyright 2024 Akretion France (http://www.akretion.com/)
# @author: Mathieu Delva <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import fields, models


class StockRoute(models.Model):
_inherit = "stock.route"

split_purchase_by_route = fields.Boolean()
29 changes: 29 additions & 0 deletions purchase_split_by_route/models/stock_rule.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Copyright (C) 2024 Akretion (<http://www.akretion.com>).
# @author Mathieu Delva <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import models


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

def _make_po_get_domain(self, company_id, values, partner):
""" """
domain = super()._make_po_get_domain(company_id, values, partner)
if "move_dest_ids" in values:
origin = values["move_dest_ids"].origin
order_id = self.env["sale.order"].search([("name", "=", origin)])
if order_id:
values["group_id"] = False
default_route_id = order_id.route_id
if not default_route_id.split_purchase_by_route:
domain = tuple(filter(lambda r: r[0] != "group_id", domain))
domain += (
(
"default_route_id",
"=",
default_route_id.id,
),
)
return domain
2 changes: 2 additions & 0 deletions purchase_split_by_route/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
* `Akretion <https://akretion.com>`_:
* Mathieu DELVA <[email protected]>
1 change: 1 addition & 0 deletions purchase_split_by_route/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This module allows you to separate automatic purchases by sale order route
Loading

0 comments on commit 46f6e9f

Please sign in to comment.