details:   https://code.tryton.org/tryton/commit/5d25b7c181fe
branch:    7.0
user:      Adrià Tarroja Caubet <[email protected]>
date:      Fri Jul 24 10:12:57 2026 +0200
description:
        Do not create a production request when quantities are the same

        If the available quantity is exactly the same as the quantity sold, 
there is no
        need to create a production request.

        Closes #14585
        (grafted from 61abfaa01954f661128f014171686a6512ffe630)
diffstat:

 modules/sale_supply_production/sale.py                                         
      |   2 +-
 
modules/sale_supply_production/tests/scenario_sale_supply_production_stock_first.rst
 |  18 ++++++++++
 2 files changed, 19 insertions(+), 1 deletions(-)

diffs (37 lines):

diff -r 8bf121028fc7 -r 5d25b7c181fe modules/sale_supply_production/sale.py
--- a/modules/sale_supply_production/sale.py    Fri Jul 17 11:40:28 2026 +0200
+++ b/modules/sale_supply_production/sale.py    Fri Jul 24 10:12:57 2026 +0200
@@ -89,7 +89,7 @@
             available_qty = Uom.compute_qty(
                 product.default_uom, available_qty, self.unit,
                 round=False)
-            if quantity < available_qty:
+            if quantity <= available_qty:
                 product_quantities[product] -= Uom.compute_qty(
                     self.unit, quantity, product.default_uom, round=False)
                 return
diff -r 8bf121028fc7 -r 5d25b7c181fe 
modules/sale_supply_production/tests/scenario_sale_supply_production_stock_first.rst
--- 
a/modules/sale_supply_production/tests/scenario_sale_supply_production_stock_first.rst
      Fri Jul 17 11:40:28 2026 +0200
+++ 
b/modules/sale_supply_production/tests/scenario_sale_supply_production_stock_first.rst
      Fri Jul 24 10:12:57 2026 +0200
@@ -109,3 +109,21 @@
     >>> move, = line.moves
     >>> move.state
     'staging'
+
+Sale remaining 2 products without production request::
+
+    >>> sale = Sale()
+    >>> sale.party = customer
+    >>> line = sale.lines.new()
+    >>> line.product = product
+    >>> line.quantity = 2
+    >>> sale.click('quote')
+    >>> sale.click('confirm')
+    >>> sale.state
+    'processing'
+    >>> line, = sale.lines
+    >>> len(line.productions)
+    0
+    >>> move, = line.moves
+    >>> move.state
+    'draft'

Reply via email to