@@ -20,25 +20,27 @@ class PurchaseOrderLine(models.Model):
20
20
"for lead times." ,
21
21
)
22
22
23
- @api .multi
24
23
@api .depends ("order_id.state" )
25
24
def _compute_predicted_arrival_late (self ):
26
25
"""Colour the lines in red if the products are predicted to arrive
27
26
late."""
28
27
for line in self :
29
- seller = line .product_id ._select_seller (
30
- partner_id = line .partner_id ,
31
- quantity = line .product_qty ,
32
- date = line .order_id .date_order .date (),
33
- uom_id = line .product_uom ,
34
- )
35
- order_date = line .order_id .date_order
36
- po_lead = line .order_id .company_id .po_lead
37
- delta = po_lead + seller .delay if seller else po_lead
38
- date_expected = order_date + relativedelta (days = delta )
39
- line .predicted_arrival_late = (
40
- date_expected > line .date_planned and line .order_id .state == "draft"
41
- )
28
+ if line .product_id :
29
+ seller = line .product_id ._select_seller (
30
+ partner_id = line .partner_id ,
31
+ quantity = line .product_qty ,
32
+ date = line .order_id .date_order .date (),
33
+ uom_id = line .product_uom ,
34
+ )
35
+ order_date = line .order_id .date_order
36
+ po_lead = line .order_id .company_id .po_lead
37
+ delta = po_lead + seller .delay if seller else po_lead
38
+ date_expected = order_date + relativedelta (days = delta )
39
+ line .predicted_arrival_late = (
40
+ date_expected > line .date_planned and line .order_id .state == "draft"
41
+ )
42
+ else :
43
+ line .predicted_arrival_late = False
42
44
43
45
@api .model
44
46
def _get_date_planned (self , seller , po = False ):
@@ -48,7 +50,6 @@ def _get_date_planned(self, seller, po=False):
48
50
else :
49
51
return super (PurchaseOrderLine , self )._get_date_planned (seller , po )
50
52
51
- @api .multi
52
53
def action_delayed_line (self ):
53
54
raise UserError (
54
55
_ (
@@ -58,25 +59,27 @@ def action_delayed_line(self):
58
59
% Dt .to_string (Dt .context_timestamp (self , self .date_planned ))
59
60
)
60
61
61
- def _merge_in_existing_line (
62
- self , product_id , product_qty , product_uom , location_id , name , origin , values
63
- ):
64
- if self .date_planned == values .get ("date_planned" ):
65
- return super (PurchaseOrderLine , self )._merge_in_existing_line (
66
- product_id , product_qty , product_uom , location_id , name , origin , values
67
- )
68
- return False
69
-
70
-
71
- class StockRule (models .Model ):
72
- _inherit = "stock.rule"
73
-
74
- def _prepare_purchase_order_line (
75
- self , product_id , product_qty , product_uom , values , po , supplier
62
+ def _find_candidate (
63
+ self ,
64
+ product_id ,
65
+ product_qty ,
66
+ product_uom ,
67
+ location_id ,
68
+ name ,
69
+ origin ,
70
+ company_id ,
71
+ values ,
76
72
):
77
- res = super (StockRule , self )._prepare_purchase_order_line (
78
- product_id , product_qty , product_uom , values , po , supplier
73
+ date_planned = values .get ("date_planned" )
74
+ if date_planned :
75
+ self = self .filtered (lambda line : line .date_planned == date_planned )
76
+ return super ()._find_candidate (
77
+ product_id ,
78
+ product_qty ,
79
+ product_uom ,
80
+ location_id ,
81
+ name ,
82
+ origin ,
83
+ company_id ,
84
+ values ,
79
85
)
80
- if values .get ("date_planned" ):
81
- res ["date_planned" ] = values .get ("date_planned" )
82
- return res
0 commit comments