From d3e086aace14e75b74e534c419e6de5dedfe112d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 5 Jan 2024 15:33:57 +0100 Subject: [PATCH] Order cancelled document without number last Closes #12899 --- modules/account_invoice/invoice.py | 4 +++- modules/production/production.py | 5 ++++- modules/purchase/purchase.py | 6 ++++-- modules/purchase_blanket_agreement/purchase.py | 5 ++++- modules/purchase_request_quotation/purchase.py | 5 ++++- modules/purchase_requisition/purchase.py | 5 ++++- modules/sale/sale.py | 5 ++++- modules/sale_blanket_agreement/sale.py | 5 ++++- modules/sale_complaint/complaint.py | 5 ++++- modules/sale_point/sale.py | 6 ++++-- modules/sale_subscription/subscription.py | 4 +++- modules/stock/inventory.py | 5 ++++- modules/stock/shipment.py | 4 +++- 13 files changed, 49 insertions(+), 15 deletions(-) diff --git a/modules/account_invoice/invoice.py b/modules/account_invoice/invoice.py index 4596b6829b..33ebc1f55c 100644 --- a/modules/account_invoice/invoice.py +++ b/modules/account_invoice/invoice.py @@ -490,7 +490,9 @@ class Invoice(Workflow, ModelSQL, ModelView, TaxableMixin, InvoiceReportMixin): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @staticmethod def default_type(): diff --git a/modules/production/production.py b/modules/production/production.py index c6b4e36874..2af38a5a06 100644 --- a/modules/production/production.py +++ b/modules/production/production.py @@ -5,6 +5,7 @@ from datetime import timedelta from decimal import Decimal from itertools import chain, groupby +from sql import Null from sql.conditionals import Coalesce from sql.functions import CharLength @@ -282,7 +283,9 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @classmethod def order_effective_date(cls, tables): diff --git a/modules/purchase/purchase.py b/modules/purchase/purchase.py index e1ea687c97..579c0b16d4 100644 --- a/modules/purchase/purchase.py +++ b/modules/purchase/purchase.py @@ -5,7 +5,7 @@ from collections import defaultdict from decimal import Decimal from itertools import chain, groupby -from sql import Literal +from sql import Literal, Null from sql.aggregate import Count from sql.functions import CharLength @@ -349,7 +349,9 @@ class Purchase( @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @classmethod def default_warehouse(cls): diff --git a/modules/purchase_blanket_agreement/purchase.py b/modules/purchase_blanket_agreement/purchase.py index 3083b8836a..6a91d392f8 100644 --- a/modules/purchase_blanket_agreement/purchase.py +++ b/modules/purchase_blanket_agreement/purchase.py @@ -5,6 +5,7 @@ import functools from decimal import Decimal from itertools import groupby +from sql import Null from sql.functions import CharLength from trytond.i18n import gettext @@ -250,7 +251,9 @@ class BlanketAgreement(Workflow, ModelSQL, ModelView): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.state == Null)), + CharLength(table.number), table.number] @classmethod def default_currency(cls, **pattern): diff --git a/modules/purchase_request_quotation/purchase.py b/modules/purchase_request_quotation/purchase.py index 419ea930a2..3e71aab4d0 100644 --- a/modules/purchase_request_quotation/purchase.py +++ b/modules/purchase_request_quotation/purchase.py @@ -4,6 +4,7 @@ import datetime from functools import wraps from itertools import groupby +from sql import Null from sql.conditionals import Case from sql.functions import CharLength @@ -178,7 +179,9 @@ class Quotation(Workflow, ModelSQL, ModelView): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @classmethod def default_company(cls): diff --git a/modules/purchase_requisition/purchase.py b/modules/purchase_requisition/purchase.py index b80e9e9f47..80c9369a8b 100644 --- a/modules/purchase_requisition/purchase.py +++ b/modules/purchase_requisition/purchase.py @@ -3,6 +3,7 @@ from decimal import Decimal from itertools import chain +from sql import Null from sql.functions import CharLength from trytond.i18n import gettext @@ -206,7 +207,9 @@ class PurchaseRequisition(Workflow, ModelSQL, ModelView): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @classmethod def default_state(cls): diff --git a/modules/sale/sale.py b/modules/sale/sale.py index 701727445a..cff4d5f6e5 100644 --- a/modules/sale/sale.py +++ b/modules/sale/sale.py @@ -6,6 +6,7 @@ from decimal import Decimal from functools import partial from itertools import chain, groupby +from sql import Null from sql.functions import CharLength from trytond.i18n import gettext @@ -391,7 +392,9 @@ class Sale( @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @classmethod def default_payment_term(cls, **pattern): diff --git a/modules/sale_blanket_agreement/sale.py b/modules/sale_blanket_agreement/sale.py index a6baaecd07..a44407768b 100644 --- a/modules/sale_blanket_agreement/sale.py +++ b/modules/sale_blanket_agreement/sale.py @@ -5,6 +5,7 @@ import functools from decimal import Decimal from itertools import groupby +from sql import Null from sql.functions import CharLength from trytond.i18n import gettext @@ -251,7 +252,9 @@ class BlanketAgreement(Workflow, ModelSQL, ModelView): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @classmethod def default_currency(cls, **pattern): diff --git a/modules/sale_complaint/complaint.py b/modules/sale_complaint/complaint.py index bea78e13b3..419e1964d3 100644 --- a/modules/sale_complaint/complaint.py +++ b/modules/sale_complaint/complaint.py @@ -4,6 +4,7 @@ from collections import defaultdict from decimal import Decimal +from sql import Null from sql.functions import CharLength from trytond.i18n import gettext @@ -215,7 +216,9 @@ class Complaint(Workflow, ModelSQL, ModelView): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @staticmethod def default_date(): diff --git a/modules/sale_point/sale.py b/modules/sale_point/sale.py index 4f8af29458..e153252891 100644 --- a/modules/sale_point/sale.py +++ b/modules/sale_point/sale.py @@ -3,7 +3,7 @@ from collections import defaultdict from decimal import Decimal -from sql import Literal, Union +from sql import Literal, Null, Union from sql.aggregate import Sum from sql.conditionals import Coalesce from sql.functions import CharLength @@ -208,7 +208,9 @@ class POSSale(Workflow, ModelSQL, ModelView, TaxableMixin): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @classmethod def default_company(cls): diff --git a/modules/sale_subscription/subscription.py b/modules/sale_subscription/subscription.py index 766012da55..d5c02676b8 100644 --- a/modules/sale_subscription/subscription.py +++ b/modules/sale_subscription/subscription.py @@ -226,7 +226,9 @@ class Subscription(Workflow, ModelSQL, ModelView): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @classmethod def default_company(cls): diff --git a/modules/stock/inventory.py b/modules/stock/inventory.py index c0f36ed32c..db30e9c878 100644 --- a/modules/stock/inventory.py +++ b/modules/stock/inventory.py @@ -2,6 +2,7 @@ # this repository contains the full copyright notices and license terms. from collections import defaultdict +from sql import Null from sql.functions import CharLength from trytond.i18n import gettext @@ -115,7 +116,9 @@ class Inventory(Workflow, ModelSQL, ModelView): @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @staticmethod def default_state(): diff --git a/modules/stock/shipment.py b/modules/stock/shipment.py index 5b09ac4454..b166ce2ebd 100644 --- a/modules/stock/shipment.py +++ b/modules/stock/shipment.py @@ -76,7 +76,9 @@ class ShipmentMixin: @classmethod def order_number(cls, tables): table, _ = tables[None] - return [CharLength(table.number), table.number] + return [ + ~((table.state == 'cancelled') & (table.number == Null)), + CharLength(table.number), table.number] @classmethod def order_effective_date(cls, tables):