Skip to content
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

[16.0][IMP] purchase_vendor_promotion: auto assign supplier with promotion #2

Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
3a66297
[IMP] purchase_vendor_promotion: auto assign supplier with promotion
trisdoan Jun 6, 2024
17fe120
Translated using Weblate (Italian)
mymage May 15, 2024
991069e
Translated using Weblate (Italian)
mymage May 15, 2024
9c8f6f9
Translated using Weblate (Portuguese (Brazil))
May 20, 2024
2250296
Translated using Weblate (Portuguese (Brazil))
May 20, 2024
a4cc5ae
Translated using Weblate (Portuguese (Brazil))
May 20, 2024
3de114a
Translated using Weblate (Portuguese (Brazil))
May 21, 2024
14cbe0b
Translated using Weblate (Portuguese (Brazil))
May 21, 2024
5b7b4b4
Translated using Weblate (Portuguese (Brazil))
May 21, 2024
4ac08eb
Translated using Weblate (Portuguese (Brazil))
May 21, 2024
ae5326c
Translated using Weblate (Portuguese (Brazil))
May 22, 2024
6249b16
Translated using Weblate (Portuguese (Brazil))
May 22, 2024
b24a0ca
Translated using Weblate (Portuguese (Brazil))
May 22, 2024
198cac8
[FIX] purchase_request: changes in report layout
ced-adhoc Apr 3, 2024
60e86ba
[BOT] post-merge updates
OCA-git-bot May 27, 2024
e7e715d
Translated using Weblate (Portuguese (Brazil))
May 29, 2024
6c7d330
Translated using Weblate (Portuguese (Brazil))
May 29, 2024
98c177e
Translated using Weblate (Portuguese (Brazil))
May 29, 2024
9642ea3
Translated using Weblate (Portuguese (Brazil))
May 29, 2024
fb3cf23
Translated using Weblate (Portuguese (Brazil))
May 29, 2024
a6765bd
[16.0][ADD] product_supplierinfo_purchase_contact: Add Purchase conta…
carolinafernandez-tecnativa May 30, 2024
07d42eb
[UPD] Update product_supplierinfo_purchase_contact.pot
Jun 3, 2024
ed1720e
[BOT] post-merge updates
OCA-git-bot Jun 3, 2024
f9ebf37
Update translation files
weblate Jun 3, 2024
0f26a77
Added translation using Weblate (Italian)
mymage Jun 4, 2024
e09002d
Translated using Weblate (Italian)
mymage Jun 4, 2024
49a8852
[FIX] purchase_discount : transmits correctly discount value to accou…
legalsylvain Jun 5, 2024
e5e1633
[BOT] post-merge updates
OCA-git-bot Jun 10, 2024
bd93941
purchase_date_planned_manual
LoisRForgeFlow Apr 3, 2017
e89cabb
purchase_date_planned_manual: add tests
LoisRForgeFlow Jun 20, 2017
90f9f56
OCA Transbot updated translations from Transifex
oca-transbot Jun 24, 2017
c87da82
[MIG] purchase_date_planned_manual: Migration to 10.0
MiquelRForgeFlow Jun 26, 2017
fbdd8a4
[11.0][MIG] purchase_date_planned_manual
LoisRForgeFlow Oct 18, 2018
8d72214
Update translation files
oca-transbot Dec 2, 2018
c72f86f
[IMP] Avoid merging lines with different date_planned
MiquelRForgeFlow Jun 27, 2019
6f403dc
[MIG] purchase_date_planned_manual: Migration to 12.0
HviorForgeFlow Jul 30, 2019
840dfd9
[IMP] Update predicted_arrival_late when po change state
MiquelRForgeFlow Jul 31, 2019
7b942db
Update translation files
oca-transbot Sep 13, 2019
7cb611e
Translated using Weblate (Chinese (Simplified))
liweijie0812 Sep 17, 2019
650b28a
Translated using Weblate (Portuguese (Brazil))
Nov 24, 2019
878c940
Translated using Weblate (Slovenian)
sysadminmatmoz Feb 24, 2021
72c6a5f
Translated using Weblate (Portuguese (Brazil))
douglascstd Oct 3, 2022
fd4c4e4
Translated using Weblate (Italian)
francesco-ooops Feb 14, 2023
dcdd94a
Update translation files
weblate Oct 9, 2023
288dd79
[IMP] purchase_date_planned_manual: pre-commit auto fixes
chaule97 May 27, 2024
6c58d11
[MIG] purchase_date_planned_manual: Migration to 16.0
chaule97 May 27, 2024
7f121dd
[UPD] Update purchase_date_planned_manual.pot
Jun 10, 2024
7b7ad88
[BOT] post-merge updates
OCA-git-bot Jun 10, 2024
158f17b
[ADD] purchase_sign
ByteMeAsap May 7, 2024
80b508c
[UPD] Update purchase_sign.pot
Jun 11, 2024
cfd7b75
[BOT] post-merge updates
OCA-git-bot Jun 11, 2024
006b8ff
Added translation using Weblate (Italian)
mymage Jun 12, 2024
1fe3e9f
[16.0][IMP] purchase_discount: improve visual of purchase order line
aliciagaarzo Apr 23, 2024
2e7180d
[BOT] post-merge updates
OCA-git-bot Jun 14, 2024
cc7ecec
Translated using Weblate (Italian)
mymage Jun 15, 2024
3d4b4ff
[UPD] Update purchase_vendor_promotion.pot
Jun 17, 2024
d4f8375
[BOT] post-merge updates
OCA-git-bot Jun 17, 2024
501c3d9
Added translation using Weblate (Italian)
mymage Jun 17, 2024
c19c71f
Translated using Weblate (Italian)
mymage Jun 24, 2024
d76efc5
Added translation using Weblate (Swedish)
jakobkrabbe Jun 26, 2024
6c78d2e
Added translation using Weblate (Swedish)
jakobkrabbe Jun 26, 2024
1dabf28
Added translation using Weblate (Swedish)
jakobkrabbe Jun 26, 2024
ddebe5a
Added translation using Weblate (Swedish)
jakobkrabbe Jun 26, 2024
3c68b3b
Translated using Weblate (Swedish)
jakobkrabbe Jun 26, 2024
a10a6c0
Translated using Weblate (Swedish)
jakobkrabbe Jun 26, 2024
6d61b1b
Added translation using Weblate (Swedish)
jakobkrabbe Jun 27, 2024
81f9a8a
Added translation using Weblate (Swedish)
jakobkrabbe Jun 27, 2024
c34d359
Translated using Weblate (Swedish)
jakobkrabbe Jun 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions purchase_vendor_promotion/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@
Purchase Vendor Promotion
=========================

.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d9b1b88cbcd184f9d7419231e529d3ca7b29ad1e59a9a0cdb3842a60ddc46126
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
Expand All @@ -20,13 +23,14 @@ Purchase Vendor Promotion
:target: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_vendor_promotion
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/webui/builds.html?repo=OCA/purchase-workflow&target_branch=16.0
: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|
|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows you to visualise the start and end date of a vendor promotion during replenishment.
This module allows you to visualise the start and end date of a vendor promotion during replenishment, in `Inventory > Operations > Replenishment` or `Inventory > Configuration > Products > Reordering Rules`.
A vendor price is considered as a promotion if product supplier info is flagged as a `promotion`.
If "Buy" is chosen as the Preferred Route, the vendor having the best active or upcoming promotion for the product will be automatically chosen. If no promotion is available, then first vendor will be chosen.

**Table of contents**

Expand All @@ -38,7 +42,7 @@ 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 smashing it by providing a detailed and welcomed
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_vendor_promotion%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.
Expand All @@ -55,6 +59,8 @@ Contributors
~~~~~~~~~~~~

* Telmo Santos <[email protected]>
* Tris Doan <[email protected]>


Maintainers
~~~~~~~~~~~
Expand Down
2 changes: 2 additions & 0 deletions purchase_vendor_promotion/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@
"license": "AGPL-3",
"depends": ["purchase_stock"],
"data": [
"data/stock_route.xml",
"views/product_views.xml",
"views/stock_orderpoint_views.xml",
"views/purchase_order_views.xml",
"views/stock_route.xml",
],
"installable": True,
"auto_install": False,
Expand Down
5 changes: 5 additions & 0 deletions purchase_vendor_promotion/data/stock_route.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<odoo>
<record id="purchase_stock.route_warehouse0_buy" model="stock.route">
<field name="force_vendor_with_best_promotion">True</field>
</record>
</odoo>
1 change: 1 addition & 0 deletions purchase_vendor_promotion/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from . import stock_route
from . import purchase_order_line
from . import product_supplierinfo
from . import stock_warehouse_orderpoint
11 changes: 11 additions & 0 deletions purchase_vendor_promotion/models/product_supplierinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,14 @@ def _check_promotion_dates(self):
raise ValidationError(
_("Promotion start date must be before end date.")
)

def _is_promotion_active_or_upcoming(self, date=None):
"""
Consider Promotion is active if it's within start and end date or it's in the future
"""
self.ensure_one()
if not self.is_promotion:
return False
if not date:
date = fields.Date.today()
return date <= self.date_start or (self.date_start <= date <= self.date_end)
10 changes: 10 additions & 0 deletions purchase_vendor_promotion/models/stock_route.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright 2024 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from odoo import fields, models


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

force_vendor_with_best_promotion = fields.Boolean(default=False)
16 changes: 16 additions & 0 deletions purchase_vendor_promotion/models/stock_warehouse_orderpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,22 @@ class StockWarehouseOrderpoint(models.Model):
)
promotion_date_start = fields.Date(compute="_compute_promotion", store=True)
promotion_date_end = fields.Date(compute="_compute_promotion", store=True)
supplier_id = fields.Many2one(
compute="_compute_supplier_id", readonly=False, store=True
)

@api.depends("route_id", "route_id.force_vendor_with_best_promotion")
def _compute_supplier_id(self):
for rec in self:
if rec.route_id and rec.route_id.force_vendor_with_best_promotion:
suppliers = rec.product_id._prepare_sellers(False)
promotion_suppliers = suppliers.filtered(
lambda x: x._is_promotion_active_or_upcoming()
)
if promotion_suppliers:
rec.supplier_id = promotion_suppliers[0].id
elif suppliers:
rec.supplier_id = suppliers[0].id

@api.depends("supplier_id")
def _compute_promotion(self):
Expand Down
2 changes: 2 additions & 0 deletions purchase_vendor_promotion/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
* Telmo Santos <[email protected]>
* Tris Doan <[email protected]>

5 changes: 3 additions & 2 deletions purchase_vendor_promotion/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
This module allows you to visualise the start and end date of a vendor promotion during replenishment.
A vendor price is considered as a promotion if product supplier info is flagged as a `promotion`.
This module allows you to visualise the start and end date of a vendor promotion during replenishment, in `Inventory > Operations > Replenishment` or `Inventory > Configuration > Products > Reordering Rules`.
A vendor price is considered as a promotion if product supplier info is flagged as a `promotion`.
If "Buy" is chosen as the Preferred Route, the vendor having the best active or upcoming promotion for the product will be automatically chosen. If no promotion is available, then first vendor will be chosen.
48 changes: 27 additions & 21 deletions purchase_vendor_promotion/static/description/index.html
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: http://docutils.sourceforge.net/" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Purchase Vendor Promotion</title>
<style type="text/css">

/*
:Author: David Goodger ([email protected])
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.

See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/

Expand Down Expand Up @@ -275,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }

pre.code .ln { color: grey; } /* line numbers */
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
Expand All @@ -301,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -366,48 +366,54 @@ <h1 class="title">Purchase Vendor Promotion</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d9b1b88cbcd184f9d7419231e529d3ca7b29ad1e59a9a0cdb3842a60ddc46126
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external" href="https://github.com/OCA/purchase-workflow/tree/16.0/purchase_vendor_promotion"><img alt="OCA/purchase-workflow" src="https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_vendor_promotion"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runboat.odoo-community.org/webui/builds.html?repo=OCA/purchase-workflow&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows you to visualise the start and end date of a vendor promotion during replenishment.
A vendor price is considered as a promotion if product supplier info is flagged as a <cite>promotion</cite>.</p>
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/purchase-workflow/tree/16.0/purchase_vendor_promotion"><img alt="OCA/purchase-workflow" src="https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_vendor_promotion"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows you to visualise the start and end date of a vendor promotion during replenishment, in <cite>Inventory &gt; Operations &gt; Replenishment</cite> or <cite>Inventory &gt; Configuration &gt; Products &gt; Reordering Rules</cite>.
A vendor price is considered as a promotion if product supplier info is flagged as a <cite>promotion</cite>.
If “Buy” is chosen as the Preferred Route, the vendor having the best active or upcoming promotion for the product will be automatically chosen. If no promotion is available, then first vendor will be chosen.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#bug-tracker" id="id1">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id2">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id3">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id4">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id5">Maintainers</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-1">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-2">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-3">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-4">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-5">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id1">Bug Tracker</a></h1>
<h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/purchase-workflow/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/purchase-workflow/issues/new?body=module:%20purchase_vendor_promotion%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#id2">Credits</a></h1>
<h1><a class="toc-backref" href="#toc-entry-2">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id3">Authors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
<ul class="simple">
<li>Camptocamp</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id4">Contributors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
<ul class="simple">
<li>Telmo Santos &lt;<a class="reference external" href="mailto:telmo.santos&#64;camptocamp.com">telmo.santos&#64;camptocamp.com</a>&gt;</li>
<li>Tris Doan &lt;<a class="reference external" href="mailto:tridm&#64;trobz.com">tridm&#64;trobz.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id5">Maintainers</a></h2>
<h2><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
Expand Down
52 changes: 39 additions & 13 deletions purchase_vendor_promotion/tests/test_vendor_promotion.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# Copyright 2024 Camptocamp (<https://www.camptocamp.com>).
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from freezegun import freeze_time

from odoo import Command
from odoo.exceptions import ValidationError
from odoo.tests import TransactionCase, tagged


@freeze_time("2024-01-02 03:21:34")
@tagged("post_install", "-at_install")
class TestVendorPromotion(TransactionCase):
@classmethod
Expand Down Expand Up @@ -55,6 +58,20 @@ def setUpClass(cls):
},
]
)
cls.buy_route = cls.env.ref(
"purchase_stock.route_warehouse0_buy", raise_if_not_found=False
)
cls.test_orderpoint = (
cls.env["stock.warehouse.orderpoint"]
.with_company(cls.company_a)
.create(
{
"product_id": cls.product.id,
"product_min_qty": 1,
"route_id": cls.buy_route.id,
}
)
)

def test_promotion_dates_validation(self):
with self.assertRaises(ValidationError):
Expand Down Expand Up @@ -89,17 +106,26 @@ def test_purchase_vendor_promotion(self):
self.assertTrue(purchase_order.order_line.is_promotion)

def test_orderpoint_promotion(self):
orderpoint = (
self.env["stock.warehouse.orderpoint"]
.with_company(self.company_a)
.create(
{
"product_id": self.product.id,
"product_min_qty": 1,
"warehouse_id": self.warehouse_a.id,
"location_id": self.stock_location_a.id,
"supplier_id": self.product.seller_ids[1].id,
}
)
self.assertEqual(
self.test_orderpoint.promotion_period, "2024-01-01 - 2024-12-31"
)

def test_default_supplier_01(self):
"""Assign promotion supplier, even if his price is not the best"""
default_vendor = self.product.seller_ids.filtered(
lambda x: x.partner_id == self.vendor2
)
self.assertEqual(self.test_orderpoint.supplier_id, default_vendor)

# If promotion is in the future, consider it as active too
default_vendor.date_end = "2025-12-31"
default_vendor.date_start = "2025-01-01"
self.assertEqual(self.test_orderpoint.supplier_id, default_vendor)

def test_default_supplier_02(self):
"""If no promotion supplier in the product, assign first vendor as default supplier"""
promotion_vendor = self.product.seller_ids.filtered(
lambda x: x.partner_id == self.vendor2
)
self.assertEqual(orderpoint.promotion_period, "2024-01-01 - 2024-12-31")
promotion_vendor.write({"is_promotion": False})
self.assertTrue(self.test_orderpoint.supplier_id)
11 changes: 11 additions & 0 deletions purchase_vendor_promotion/views/stock_route.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<odoo>
<record model="ir.ui.view" id="stock_route_form_view">
<field name="model">stock.route</field>
<field name="inherit_id" ref="stock.stock_location_route_form_view" />
<field name="arch" type="xml">
<field name="active" position="after">
<field name="force_vendor_with_best_promotion" />
</field>
</field>
</record>
</odoo>
Loading