diff --git a/purchase_stock_ux/README.rst b/purchase_stock_ux/README.rst
index 87cba5dd..bedcf368 100644
--- a/purchase_stock_ux/README.rst
+++ b/purchase_stock_ux/README.rst
@@ -18,12 +18,11 @@ Several Improvements to purchases.
On purchase orders:
-#. Add delivery status on purchases
#. Add a to filter by PO with billable returns.
On purchase lines:
-#. Add delivery status on purchase lines
+#. Add receipt status on purchase lines
#. Add button on purchase lines to allow cancelling of remaining qty to be received
#. Add return quantity when you return products with "To Refund" option.
diff --git a/purchase_stock_ux/i18n/es.po b/purchase_stock_ux/i18n/es.po
index 64174ae2..09459706 100644
--- a/purchase_stock_ux/i18n/es.po
+++ b/purchase_stock_ux/i18n/es.po
@@ -81,14 +81,9 @@ msgstr ""
"de la moneda seteada en el producto."
#. module: purchase_stock_ux
-#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.view_purchase_order_filter
-msgid "Delivery Satus"
-msgstr "Estado de la recepción"
-
-#. module: purchase_stock_ux
-#: model:ir.model.fields,field_description:purchase_stock_ux.field_purchase_order__delivery_status
-#: model:ir.model.fields,field_description:purchase_stock_ux.field_purchase_order_line__delivery_status
-msgid "Delivery Status"
+#: model:ir.model.fields,field_description:purchase_stock_ux.field_purchase_order__receipt_status
+#: model:ir.model.fields,field_description:purchase_stock_ux.field_purchase_order_line__receipt_status
+msgid "Receipt Status"
msgstr "Estado de la recepción"
#. module: purchase_stock_ux
@@ -121,13 +116,6 @@ msgstr ""
msgid "Minimum Inventory Rule"
msgstr "Regla de inventario mínimo"
-#. module: purchase_stock_ux
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__delivery_status__no
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__force_delivered_status__no
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__delivery_status__no
-msgid "Not purchased"
-msgstr "Nada para recibir"
-
#. module: purchase_stock_ux
#: model:ir.model.fields,field_description:purchase_stock_ux.field_purchase_order_line__qty_on_voucher
msgid "On Voucher"
@@ -188,12 +176,12 @@ msgid "Purchase orders with billable returns"
msgstr "Órdenes de compra con devoluciones facturables"
#. module: purchase_stock_ux
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__delivery_status__received
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__force_delivered_status__received
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__delivery_status__received
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__receipt_status__full
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__force_delivered_status__full
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__receipt_status__full
#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.view_purchase_order_filter
-msgid "Received"
+msgid "full"
msgstr "Recibido"
#. module: purchase_stock_ux
@@ -227,8 +215,8 @@ msgstr ""
"deshacer. ¿Estás seguro de continuar?"
#. module: purchase_stock_ux
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__delivery_status__to_receive
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__delivery_status__to_receive
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__receipt_status__to_receive
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__receipt_status__to_receive
#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.view_purchase_order_filter
msgid "To Receive"
diff --git a/purchase_stock_ux/i18n/purchase_stock_ux.pot b/purchase_stock_ux/i18n/purchase_stock_ux.pot
index 7e07ed8c..4d55a436 100644
--- a/purchase_stock_ux/i18n/purchase_stock_ux.pot
+++ b/purchase_stock_ux/i18n/purchase_stock_ux.pot
@@ -65,13 +65,7 @@ msgstr ""
#. module: purchase_stock_ux
#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.view_purchase_order_filter
-msgid "Delivery Satus"
-msgstr ""
-
-#. module: purchase_stock_ux
-#: model:ir.model.fields,field_description:purchase_stock_ux.field_purchase_order__delivery_status
-#: model:ir.model.fields,field_description:purchase_stock_ux.field_purchase_order_line__delivery_status
-msgid "Delivery Status"
+msgid "Receipt Status"
msgstr ""
#. module: purchase_stock_ux
@@ -105,9 +99,9 @@ msgid "Minimum Inventory Rule"
msgstr ""
#. module: purchase_stock_ux
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__delivery_status__no
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__receipt_status__no
#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__force_delivered_status__no
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__delivery_status__no
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__receipt_status__no
msgid "Not purchased"
msgstr ""
@@ -167,12 +161,12 @@ msgid "Purchase orders with billable returns"
msgstr ""
#. module: purchase_stock_ux
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__delivery_status__received
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__force_delivered_status__received
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__delivery_status__received
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__receipt_status__full
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__force_delivered_status__full
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__receipt_status__full
#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.view_purchase_order_filter
-msgid "Received"
+msgid "full"
msgstr ""
#. module: purchase_stock_ux
@@ -203,8 +197,8 @@ msgid ""
msgstr ""
#. module: purchase_stock_ux
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__delivery_status__to_receive
-#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__delivery_status__to_receive
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order__receipt_status__to_receive
+#: model:ir.model.fields.selection,name:purchase_stock_ux.selection__purchase_order_line__receipt_status__to_receive
#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_stock_ux.view_purchase_order_filter
msgid "To Receive"
diff --git a/purchase_stock_ux/models/purchase_order.py b/purchase_stock_ux/models/purchase_order.py
index 9ac2ef8b..a192cb2e 100644
--- a/purchase_stock_ux/models/purchase_order.py
+++ b/purchase_stock_ux/models/purchase_order.py
@@ -4,7 +4,6 @@
##############################################################################
from odoo import _, api, fields, models
from odoo.exceptions import UserError
-from odoo.tools.float_utils import float_compare
class PurchaseOrder(models.Model):
@@ -12,24 +11,13 @@ class PurchaseOrder(models.Model):
force_delivered_status = fields.Selection(
[
- ("no", "Not purchased"),
- ("received", "Received"),
+ ("pending", "Not Received"),
+ ("partial", "Partially Received"),
+ ("full", "Fully Received"),
],
tracking=True,
copy=False,
)
- delivery_status = fields.Selection(
- [
- ("no", "Not purchased"),
- ("to receive", "To Receive"),
- ("received", "Received"),
- ],
- compute="_compute_delivery_status",
- store=True,
- readonly=True,
- copy=False,
- default="no",
- )
with_returns = fields.Boolean(
compute="_compute_with_returns",
@@ -44,39 +32,14 @@ def _compute_with_returns(self):
else:
order.with_returns = False
- @api.depends(
- "state",
- "order_line.qty_received",
- "order_line.qty_returned",
- "order_line.product_qty",
- "force_delivered_status",
- )
- def _compute_delivery_status(self):
- precision = self.env["decimal.precision"].precision_get("Product Unit of Measure")
+ @api.depends("picking_ids", "picking_ids.state", "force_delivered_status")
+ def _compute_receipt_status(self):
+ super()._compute_receipt_status()
for order in self:
- if order.state not in ("purchase", "done"):
- order.delivery_status = "no"
- continue
-
if order.force_delivered_status:
- order.delivery_status = order.force_delivered_status
+ order.receipt_status = order.force_delivered_status
continue
- if any(
- float_compare((line.qty_received + line.qty_returned), line.product_qty, precision_digits=precision)
- == -1
- for line in order.order_line
- ):
- order.delivery_status = "to receive"
- elif all(
- float_compare((line.qty_received + line.qty_returned), line.product_qty, precision_digits=precision)
- >= 0
- for line in order.order_line
- ):
- order.delivery_status = "received"
- else:
- order.delivery_status = "no"
-
def write(self, values):
self = self.with_context(cancel_from_order=True)
self.check_force_delivered_status(values)
diff --git a/purchase_stock_ux/models/purchase_order_line.py b/purchase_stock_ux/models/purchase_order_line.py
index 134ccbbd..30c7da6a 100644
--- a/purchase_stock_ux/models/purchase_order_line.py
+++ b/purchase_stock_ux/models/purchase_order_line.py
@@ -16,18 +16,18 @@
class PurchaseOrderLine(models.Model):
_inherit = "purchase.order.line"
- delivery_status = fields.Selection(
+ receipt_status = fields.Selection(
[
- ("no", "Not purchased"),
- ("to receive", "To Receive"),
- ("received", "Received"),
+ ("pending", "Not Received"),
+ ("partial", "Partially Received"),
+ ("full", "Fully Received"),
],
- compute="_compute_delivery_status",
+ compute="_compute_receipt_status",
store=True,
readonly=True,
copy=False,
- default="no",
)
+
vouchers = fields.Char(compute="_compute_vouchers")
qty_on_voucher = fields.Float(
@@ -111,27 +111,23 @@ def _compute_vouchers(self):
rec.vouchers = ", ".join(vouchers)
@api.depends("order_id.state", "qty_received", "qty_returned", "product_qty", "order_id.force_delivered_status")
- def _compute_delivery_status(self):
+ def _compute_receipt_status(self):
precision = self.env["decimal.precision"].precision_get("Product Unit of Measure")
for line in self:
if line.state not in ("purchase", "done"):
- line.delivery_status = "no"
+ line.receipt_status = False
continue
if line.order_id.force_delivered_status:
- line.delivery_status = line.order_id.force_delivered_status
+ line.receipt_status = line.order_id.force_delivered_status
continue
- if (
- float_compare((line.qty_received + line.qty_returned), line.product_qty, precision_digits=precision)
- == -1
- ):
- line.delivery_status = "to receive"
- elif (
- float_compare((line.qty_received + line.qty_returned), line.product_qty, precision_digits=precision)
- >= 0
- ):
- line.delivery_status = "received"
+
+ qty_total = line.qty_received + line.qty_returned
+ if float_is_zero(qty_total, precision_digits=precision):
+ line.receipt_status = "pending"
+ elif float_compare(qty_total, line.product_qty, precision_digits=precision) >= 0:
+ line.receipt_status = "full"
else:
- line.delivery_status = "no"
+ line.receipt_status = "partial"
@api.onchange("product_qty")
def _onchange_product_qty(self):
@@ -159,7 +155,7 @@ def _compute_qty_returned(self):
for move in line.move_ids.filtered(
lambda m: m.state == "done" and m.location_id.usage != "supplier" and m.to_refund
):
- qty += move.product_uom._compute_quantity(move.product_uom_qty, line.product_uom)
+ qty += move.product_uom._compute_quantity(move.product_uom_qty, line.product_uom_id)
line.qty_returned = qty
# Overwrite the origin method to introduce the qty_on_voucher
diff --git a/purchase_stock_ux/views/purchase_line_views.xml b/purchase_stock_ux/views/purchase_line_views.xml
index 2f846eb8..56ca85ee 100644
--- a/purchase_stock_ux/views/purchase_line_views.xml
+++ b/purchase_stock_ux/views/purchase_line_views.xml
@@ -23,8 +23,8 @@
-
-
+
+
diff --git a/purchase_stock_ux/views/purchase_order_views.xml b/purchase_stock_ux/views/purchase_order_views.xml
index 244d1c5f..373e3a36 100644
--- a/purchase_stock_ux/views/purchase_order_views.xml
+++ b/purchase_stock_ux/views/purchase_order_views.xml
@@ -13,8 +13,8 @@
-
-
+
+
@@ -31,12 +31,13 @@
-
-
+
+
+
-
+
@@ -47,10 +48,10 @@
-