diff --git a/account_usability/account_view.xml b/account_usability/account_view.xml
index abc58ef..607358a 100644
--- a/account_usability/account_view.xml
+++ b/account_usability/account_view.xml
@@ -41,6 +41,10 @@
+
+
+ 1
+
{'invisible': [('state', 'not in', ('open', 'paid'))]}
diff --git a/sale_stock_usability/sale_stock.py b/sale_stock_usability/sale_stock.py
index a87b70c..30803db 100644
--- a/sale_stock_usability/sale_stock.py
+++ b/sale_stock_usability/sale_stock.py
@@ -1,9 +1,10 @@
# -*- coding: utf-8 -*-
-# © 2015-2016 Akretion (http://www.akretion.com)
+# Copyright 2015-2020 Akretion (http://www.akretion.com)
# @author Alexis de Lattre
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-from openerp import models, fields
+from odoo import fields, models
+from odoo.tools import float_compare, float_round
class SaleOrder(models.Model):
@@ -11,3 +12,36 @@ class SaleOrder(models.Model):
warehouse_id = fields.Many2one(track_visibility='onchange')
incoterm = fields.Many2one(track_visibility='onchange')
+
+ def report_qty_to_deliver(self):
+ # Can be useful for delivery report
+ self.ensure_one()
+ res = []
+ prec = self.env['decimal.precision'].precision_get(
+ 'Product Unit of Measure')
+ for l in self.order_line:
+ if (
+ l.product_id.type in ('product', 'consu') and
+ float_compare(
+ l.product_uom_qty, l.qty_delivered,
+ precision_digits=prec) > 0):
+ qty_to_deliver = float_round(
+ l.product_uom_qty - l.qty_delivered, precision_digits=prec)
+ res.append({
+ 'product': l.product_id,
+ 'name': l.name,
+ 'uom': l.product_uom,
+ 'qty_to_deliver': qty_to_deliver,
+ })
+ return res
+
+
+class StockPicking(models.Model):
+ _inherit = 'stock.picking'
+
+ def report_qty_to_deliver(self):
+ self.ensure_one()
+ res = []
+ if self.sale_id:
+ res = self.sale_id.report_qty_to_deliver()
+ return res
diff --git a/stock_usability/stock_view.xml b/stock_usability/stock_view.xml
index 6d85824..26e38dd 100644
--- a/stock_usability/stock_view.xml
+++ b/stock_usability/stock_view.xml
@@ -169,6 +169,7 @@
+