From 81751f152e91d0f530941f1ac31c90b5b7c0e3b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Lodeiros?= Date: Tue, 22 Feb 2022 22:34:51 +0100 Subject: [PATCH] [IMP]pms: qty to invoice to 0 if total amount is 0 --- pms/models/folio_sale_line.py | 4 ++-- pms/models/pms_folio.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pms/models/folio_sale_line.py b/pms/models/folio_sale_line.py index fa0e333e7..30d9f3b9b 100644 --- a/pms/models/folio_sale_line.py +++ b/pms/models/folio_sale_line.py @@ -506,7 +506,7 @@ class FolioSaleLine(models.Model): "Product Unit of Measure" ) for line in self: - if line.state == "draft": + if line.state == "draft" or line.price_total == 0.0: line.invoice_status = "no" # REVIEW: if qty_to_invoice < 0 (invoice qty > sale qty), # why status to_invoice?? this behavior is copied from sale order @@ -625,7 +625,7 @@ class FolioSaleLine(models.Model): Otherwise, the quantity delivered is used. """ for line in self: - if line.folio_id.state not in ["draft"]: + if line.folio_id.state not in ["draft"] and line.price_total > 0.0: line.qty_to_invoice = line.product_uom_qty - line.qty_invoiced else: line.qty_to_invoice = 0 diff --git a/pms/models/pms_folio.py b/pms/models/pms_folio.py index 6f3302fdb..533202454 100644 --- a/pms/models/pms_folio.py +++ b/pms/models/pms_folio.py @@ -814,9 +814,10 @@ class PmsFolio(models.Model): - to_invoice: if any SO line is 'to_invoice', the whole SO is 'to_invoice' - invoiced: if all SO lines are invoiced, the SO is invoiced. """ - unconfirmed_orders = self.filtered(lambda so: so.state in ["draft"]) + unconfirmed_orders = self.filtered(lambda folio: folio.state in ["draft"]) unconfirmed_orders.invoice_status = "no" - confirmed_orders = self - unconfirmed_orders + zero_orders = self.filtered(lambda folio: folio.amount_total == 0) + confirmed_orders = self - unconfirmed_orders - zero_orders if not confirmed_orders: return line_invoice_status_all = [