1- # Copyright (C) 2019 - TODAY, Open Source Integrators
1+ # Copyright (C) 2022 - TODAY, Open Source Integrators
22# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
33
44from odoo import api , fields , models
5- from odoo .tools import DEFAULT_SERVER_DATETIME_FORMAT
65
76
87class SaleOrder (models .Model ):
98 _inherit = "sale.order"
109
1110 last_date_delivered = fields .Datetime (
12- string = "Last Date Delivered" , compute = "_compute_last_date_delivered" , store = True
11+ string = "Date Delivered" , compute = "_compute_last_date_delivered" , store = True
1312 )
1413 last_bill_date = fields .Datetime (
15- string = "Last Bill Date" , compute = "_compute_last_bill_date" , store = True
14+ string = "Bill Date" , compute = "_compute_last_bill_date" , store = True
1615 )
17- uigd_value = fields .Monetary (
18- string = "UIGD Value" , compute = "_compute_uigd_value" , store = True
16+ uninvoiced_goods_delivered_value = fields .Monetary (
17+ string = "UIGD Value" ,
18+ compute = "_compute_uigd_value" ,
19+ store = True ,
20+ help = "Un-Invoiced Goods Delivered Value" ,
1921 )
2022 bo_value = fields .Monetary (
2123 string = "Backorder Value" , compute = "_compute_bo_value" , store = True
2224 )
2325
24- @api .depends ("order_line.uigd_qty" , "order_line.price_unit " )
26+ @api .depends ("order_line.uninvoiced_goods_delivered_value " )
2527 def _compute_uigd_value (self ):
2628 for order in self :
27- total = 0
28- for line in order .order_line :
29- total += line .uigd_value
30- order .uigd_value = total
29+ order .uninvoiced_goods_delivered_value = sum (
30+ order .order_line .mapped ("uninvoiced_goods_delivered_value" )
31+ )
3132
32- @api .depends ("order_line.bo_qty" , "order_line.price_unit " )
33+ @api .depends ("order_line.bo_value " )
3334 def _compute_bo_value (self ):
3435 for order in self :
35- total = 0
36- for line in order .order_line :
37- total += line .bo_value
38- order .bo_value = total
36+ order .bo_value = sum (order .order_line .mapped ("bo_value" ))
3937
4038 @api .depends (
4139 "order_line.last_date_delivered" ,
@@ -62,77 +60,3 @@ def _compute_last_bill_date(self):
6260 if line .last_bill_date :
6361 max_date = line .last_bill_date
6462 order .last_bill_date = max_date
65-
66-
67- class SaleOrderLine (models .Model ):
68- _inherit = "sale.order.line"
69-
70- last_date_delivered = fields .Datetime (
71- string = "Last Date Delivered" , compute = "_compute_last_date_delivered" , store = True
72- )
73- last_bill_date = fields .Datetime (
74- string = "Last Bill Date" , compute = "_compute_last_bill_date" , store = True
75- )
76- uigd_qty = fields .Float (string = "UIGD Qty" , compute = "_compute_uigd_qty" , store = True )
77- bo_qty = fields .Float (string = "Backorder Qty" , compute = "_compute_bo_qty" , store = True )
78- uigd_value = fields .Monetary (
79- string = "UIGD Value" , compute = "_compute_uigd_value" , store = True
80- )
81- bo_value = fields .Monetary (
82- string = "Backorder Value" , compute = "_compute_bo_value" , store = True
83- )
84- product_type = fields .Selection (
85- string = "Product Type" , related = "product_id.product_tmpl_id.type"
86- )
87-
88- @api .depends ("qty_delivered" , "product_uom_qty" )
89- def _compute_bo_qty (self ):
90- for line in self :
91- line .bo_qty = line .product_uom_qty - line .qty_delivered
92-
93- @api .depends ("qty_delivered" , "qty_invoiced" )
94- def _compute_uigd_qty (self ):
95- for line in self :
96- line .uigd_qty = line .qty_delivered - line .qty_invoiced
97-
98- @api .depends ("uigd_qty" , "price_unit" )
99- def _compute_uigd_value (self ):
100- for line in self :
101- line .uigd_value = line .uigd_qty * line .price_unit
102-
103- @api .depends ("bo_qty" , "price_unit" )
104- def _compute_bo_value (self ):
105- for line in self :
106- line .bo_value = line .bo_qty * line .price_unit
107-
108- @api .depends ("qty_delivered" , "qty_invoiced" )
109- def _compute_last_date_delivered (self ):
110- for line in self :
111- max_date = False
112- for move in line .move_ids :
113- if (
114- move .state == "done"
115- and move .location_dest_id .usage == "customer"
116- and move .to_refund
117- ):
118- continue
119- else :
120- max_date = move .date
121- line .last_date_delivered = max_date
122-
123- @api .depends ("qty_delivered" , "qty_invoiced" )
124- def _compute_last_bill_date (self ):
125- for line in self :
126- max_date = False
127- for inv_line in line .invoice_lines :
128- if (
129- inv_line .move_id .state != "cancel"
130- and inv_line .move_id .move_type == "out_invoice"
131- and inv_line .move_id .date
132- ):
133- max_date = inv_line .move_id .date
134- elif inv_line .move_id .move_type == "out_refund" :
135- continue
136- line .last_bill_date = (
137- max_date and max_date .strftime (DEFAULT_SERVER_DATETIME_FORMAT ) or False
138- )
0 commit comments