changeset 314ac23addbe in modules/stock_supply:default
details: 
https://hg.tryton.org/modules/stock_supply?cmd=changeset;node=314ac23addbe
description:
        Make order point's minimal quantity required

        issue8405
        review259611017
diffstat:

 CHANGELOG                                        |   2 +
 order_point.py                                   |   6 ++-
 tests/scenario_stock_supply_purchase_request.rst |  57 ++++++++++++++++++++++++
 tests/test_stock_supply.py                       |   1 +
 4 files changed, 65 insertions(+), 1 deletions(-)

diffs (107 lines):

diff -r cebaf61bb2d0 -r 314ac23addbe CHANGELOG
--- a/CHANGELOG Mon May 06 15:17:36 2019 +0200
+++ b/CHANGELOG Fri Jun 28 10:17:10 2019 +0200
@@ -1,3 +1,5 @@
+* Make order point's minimal quantity required
+
 Version 5.2.0 - 2019-05-06
 * Bug fixes (see mercurial logs for details)
 
diff -r cebaf61bb2d0 -r 314ac23addbe order_point.py
--- a/order_point.py    Mon May 06 15:17:36 2019 +0200
+++ b/order_point.py    Fri Jun 28 10:17:10 2019 +0200
@@ -71,11 +71,15 @@
         'Type', select=True, required=True)
     min_quantity = fields.Float('Minimal Quantity',
         digits=(16, Eval('unit_digits', 2)),
+        states={
+            # required for purchase and production types
+            'required': Eval('type') != 'internal',
+            },
         domain=['OR',
             ('min_quantity', '=', None),
             ('min_quantity', '<=', Eval('target_quantity', 0)),
             ],
-        depends=['unit_digits', 'target_quantity'])
+        depends=['unit_digits', 'target_quantity', 'type'])
     target_quantity = fields.Float('Target Quantity', required=True,
         digits=(16, Eval('unit_digits', 2)),
         domain=[
diff -r cebaf61bb2d0 -r 314ac23addbe 
tests/scenario_stock_supply_purchase_request.rst
--- a/tests/scenario_stock_supply_purchase_request.rst  Mon May 06 15:17:36 
2019 +0200
+++ b/tests/scenario_stock_supply_purchase_request.rst  Fri Jun 28 10:17:10 
2019 +0200
@@ -162,6 +162,63 @@
     >>> pr.quantity
     1.0
 
+Create an order point with negative minimal quantity::
+
+    >>> set_user(stock_admin_user)
+    >>> OrderPoint = Model.get('stock.order_point')
+    >>> order_point = OrderPoint()
+    >>> order_point.type = 'purchase'
+    >>> order_point.product = product
+    >>> order_point.warehouse_location = warehouse_loc
+    >>> order_point.min_quantity = -1
+    >>> order_point.target_quantity = 10
+    >>> order_point.save()
+
+Create production request::
+
+    >>> create_pr = Wizard('stock.supply')
+    >>> create_pr.execute('create_')
+
+There is no more production request::
+
+    >>> set_user(purchase_user)
+    >>> PurchaseRequest.find([])
+    []
+
+Set a postive minimal quantity on order point create purchase request::
+
+    >>> set_user(stock_admin_user)
+    >>> order_point.min_quantity = 5
+    >>> order_point.save()
+    >>> create_pr = Wizard('stock.supply')
+    >>> create_pr.execute('create_')
+
+There is now a draft purchase request::
+
+    >>> set_user(purchase_user)
+    >>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
+    >>> pr.product == product
+    True
+    >>> pr.quantity
+    11.0
+
+Using zero as minimal quantity on order point also creates purchase request::
+
+    >>> set_user(stock_admin_user)
+    >>> order_point.min_quantity = 0
+    >>> order_point.save()
+    >>> create_pr = Wizard('stock.supply')
+    >>> create_pr.execute('create_')
+
+There is now a draft purchase request::
+
+    >>> set_user(purchase_user)
+    >>> pr, = PurchaseRequest.find([('state', '=', 'draft')])
+    >>> pr.product == product
+    True
+    >>> pr.quantity
+    11.0
+
 Re-run with purchased request::
 
     >>> create_purchase = Wizard('purchase.request.create_purchase', [pr])
diff -r cebaf61bb2d0 -r 314ac23addbe tests/test_stock_supply.py
--- a/tests/test_stock_supply.py        Mon May 06 15:17:36 2019 +0200
+++ b/tests/test_stock_supply.py        Fri Jun 28 10:17:10 2019 +0200
@@ -148,6 +148,7 @@
                         'product': product.id,
                         'type': 'purchase',
                         'warehouse_location': warehouse.id,
+                        'min_quantity': 0.0,
                         'target_quantity': 5.0,
                         }])
 

Reply via email to