We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Bug: Order filter not working with payment status 
### What are you trying to achieve?

I'm trying to filter orders with `Fully refunded` payment status. 

### Steps to reproduce the problem

1. Create an order and fully refund it

### What did you expect to happen?

I should get orders all orders with fully refund payment status

### Logs

_No response_

### Environment

Saleor version: 3.9+



--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `saleor/graphql/order/filters.py`
Content:
```
1 from uuid import UUID
2 
3 import django_filters
4 import graphene
5 from django.db.models import Exists, OuterRef, Q
6 from django.utils import timezone
7 from graphql.error import GraphQLError
8 
9 from ...giftcard import GiftCardEvents
10 from ...giftcard.models import GiftCardEvent
11 from ...order.models import Order, OrderLine
12 from ...order.search import search_orders
13 from ...product.models import ProductVariant
14 from ..core.filters import (
15     GlobalIDMultipleChoiceFilter,
16     ListObjectTypeFilter,
17     MetadataFilterBase,
18     ObjectTypeFilter,
19 )
20 from ..core.types import DateRangeInput, DateTimeRangeInput
21 from ..core.utils import from_global_id_or_error
22 from ..payment.enums import PaymentChargeStatusEnum
23 from ..utils import resolve_global_ids_to_primary_keys
24 from ..utils.filters import filter_range_field
25 from .enums import OrderAuthorizeStatusEnum, OrderChargeStatusEnum, OrderStatusFilter
26 
27 
28 def filter_payment_status(qs, _, value):
29     if value:
30         qs = qs.filter(payments__is_active=True, payments__charge_status__in=value)
31     return qs
32 
33 
34 def filter_authorize_status(qs, _, value):
35     if value:
36         qs = qs.filter(authorize_status__in=value)
37     return qs
38 
39 
40 def filter_charge_status(qs, _, value):
41     if value:
42         qs = qs.filter(charge_status__in=value)
43     return qs
44 
45 
46 def get_payment_id_from_query(value):
47     try:
48         return from_global_id_or_error(value, only_type="Payment")[1]
49     except Exception:
50         return None
51 
52 
53 def filter_order_by_payment(qs, payment_id):
54     if payment_id:
55         qs = qs.filter(payments__pk=payment_id)
56     return qs
57 
58 
59 def filter_status(qs, _, value):
60     query_objects = qs.none()
61 
62     if value:
63         query_objects |= qs.filter(status__in=value)
64 
65     if OrderStatusFilter.READY_TO_FULFILL in value:
66         query_objects |= qs.ready_to_fulfill()
67 
68     if OrderStatusFilter.READY_TO_CAPTURE in value:
69         query_objects |= qs.ready_to_capture()
70 
71     return qs & query_objects
72 
73 
74 def filter_customer(qs, _, value):
75     qs = qs.filter(
76         Q(user_email__ilike=value)
77         | Q(user__email__trigram_similar=value)
78         | Q(user__first_name__trigram_similar=value)
79         | Q(user__last_name__trigram_similar=value)
80     )
81     return qs
82 
83 
84 def filter_created_range(qs, _, value):
85     return filter_range_field(qs, "created_at__date", value)
86 
87 
88 def filter_updated_at_range(qs, _, value):
89     return filter_range_field(qs, "updated_at", value)
90 
91 
92 def filter_order_search(qs, _, value):
93     return search_orders(qs, value)
94 
95 
96 def filter_channels(qs, _, values):
97     if values:
98         _, channels_ids = resolve_global_ids_to_primary_keys(values, "Channel")
99         qs = qs.filter(channel_id__in=channels_ids)
100     return qs
101 
102 
103 def filter_is_click_and_collect(qs, _, values):
104     if values is not None:
105         lookup = Q(collection_point__isnull=False) | Q(
106             collection_point_name__isnull=False
107         )
108         qs = qs.filter(lookup) if values is True else qs.exclude(lookup)
109     return qs
110 
111 
112 def filter_is_preorder(qs, _, values):
113     if values is not None:
114         variants = ProductVariant.objects.filter(
115             Q(is_preorder=True)
116             & (
117                 Q(preorder_end_date__isnull=True)
118                 | Q(preorder_end_date__gte=timezone.now())
119             )
120         ).values("id")
121         lines = OrderLine.objects.filter(
122             Exists(variants.filter(id=OuterRef("variant_id")))
123         )
124         lookup = Exists(lines.filter(order_id=OuterRef("id")))
125         qs = qs.filter(lookup) if values is True else qs.exclude(lookup)
126     return qs
127 
128 
129 def filter_gift_card_used(qs, _, value):
130     return filter_by_gift_card(qs, value, GiftCardEvents.USED_IN_ORDER)
131 
132 
133 def filter_gift_card_bought(qs, _, value):
134     return filter_by_gift_card(qs, value, GiftCardEvents.BOUGHT)
135 
136 
137 def filter_by_gift_card(qs, value, gift_card_type):
138     gift_card_events = GiftCardEvent.objects.filter(type=gift_card_type).values(
139         "order_id"
140     )
141     lookup = Exists(gift_card_events.filter(order_id=OuterRef("id")))
142     return qs.filter(lookup) if value is True else qs.exclude(lookup)
143 
144 
145 def filter_order_by_id(qs, _, value):
146     if not value:
147         return qs
148     _, obj_pks = resolve_global_ids_to_primary_keys(value, "Order")
149     pks = []
150     old_pks = []
151     for pk in obj_pks:
152         try:
153             pks.append(UUID(pk))
154         except ValueError:
155             old_pks.append(pk)
156     return qs.filter(Q(id__in=pks) | (Q(use_old_id=True) & Q(number__in=old_pks)))
157 
158 
159 def filter_by_order_number(qs, _, values):
160     if not values:
161         return qs
162     return qs.filter(number__in=values)
163 
164 
165 class DraftOrderFilter(MetadataFilterBase):
166     customer = django_filters.CharFilter(method=filter_customer)
167     created = ObjectTypeFilter(input_class=DateRangeInput, method=filter_created_range)
168     search = django_filters.CharFilter(method=filter_order_search)
169     channels = GlobalIDMultipleChoiceFilter(method=filter_channels)
170 
171     class Meta:
172         model = Order
173         fields = ["customer", "created", "search"]
174 
175 
176 class OrderFilter(DraftOrderFilter):
177     payment_status = ListObjectTypeFilter(
178         input_class=PaymentChargeStatusEnum, method=filter_payment_status
179     )
180     authorize_status = ListObjectTypeFilter(
181         input_class=OrderAuthorizeStatusEnum, method=filter_authorize_status
182     )
183     charge_status = ListObjectTypeFilter(
184         input_class=OrderChargeStatusEnum, method=filter_charge_status
185     )
186     status = ListObjectTypeFilter(input_class=OrderStatusFilter, method=filter_status)
187     customer = django_filters.CharFilter(method=filter_customer)
188     created = ObjectTypeFilter(input_class=DateRangeInput, method=filter_created_range)
189     updated_at = ObjectTypeFilter(
190         input_class=DateTimeRangeInput, method=filter_updated_at_range
191     )
192     search = django_filters.CharFilter(method=filter_order_search)
193     channels = GlobalIDMultipleChoiceFilter(method=filter_channels)
194     is_click_and_collect = django_filters.BooleanFilter(
195         method=filter_is_click_and_collect
196     )
197     is_preorder = django_filters.BooleanFilter(method=filter_is_preorder)
198     ids = GlobalIDMultipleChoiceFilter(method=filter_order_by_id)
199     gift_card_used = django_filters.BooleanFilter(method=filter_gift_card_used)
200     gift_card_bought = django_filters.BooleanFilter(method=filter_gift_card_bought)
201     numbers = ListObjectTypeFilter(
202         input_class=graphene.String, method=filter_by_order_number
203     )
204 
205     class Meta:
206         model = Order
207         fields = ["payment_status", "status", "customer", "created", "search"]
208 
209     def is_valid(self):
210         if "ids" in self.data and "numbers" in self.data:
211             raise GraphQLError(
212                 message="'ids' and 'numbers` are not allowed to use together in filter."
213             )
214         return super().is_valid()
215
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/saleor/graphql/order/filters.py b/saleor/graphql/order/filters.py
--- a/saleor/graphql/order/filters.py
+++ b/saleor/graphql/order/filters.py
@@ -10,6 +10,7 @@
 from ...giftcard.models import GiftCardEvent
 from ...order.models import Order, OrderLine
 from ...order.search import search_orders
+from ...payment import ChargeStatus
 from ...product.models import ProductVariant
 from ..core.filters import (
     GlobalIDMultipleChoiceFilter,
@@ -27,7 +28,10 @@
 
 def filter_payment_status(qs, _, value):
     if value:
-        qs = qs.filter(payments__is_active=True, payments__charge_status__in=value)
+        lookup = Q(payments__is_active=True, payments__charge_status__in=value)
+        if ChargeStatus.FULLY_REFUNDED in value:
+            lookup |= Q(payments__charge_status=ChargeStatus.FULLY_REFUNDED)
+        qs = qs.filter(lookup)
     return qs

{"golden_diff": "diff --git a/saleor/graphql/order/filters.py b/saleor/graphql/order/filters.py\n--- a/saleor/graphql/order/filters.py\n+++ b/saleor/graphql/order/filters.py\n@@ -10,6 +10,7 @@\n from ...giftcard.models import GiftCardEvent\n from ...order.models import Order, OrderLine\n from ...order.search import search_orders\n+from ...payment import ChargeStatus\n from ...product.models import ProductVariant\n from ..core.filters import (\n     GlobalIDMultipleChoiceFilter,\n@@ -27,7 +28,10 @@\n \n def filter_payment_status(qs, _, value):\n     if value:\n-        qs = qs.filter(payments__is_active=True, payments__charge_status__in=value)\n+        lookup = Q(payments__is_active=True, payments__charge_status__in=value)\n+        if ChargeStatus.FULLY_REFUNDED in value:\n+            lookup |= Q(payments__charge_status=ChargeStatus.FULLY_REFUNDED)\n+        qs = qs.filter(lookup)\n     return qs\n", "issue": "Bug: Order filter not working with payment status \n### What are you trying to achieve?\n\nI'm trying to filter orders with `Fully refunded` payment status. \n\n### Steps to reproduce the problem\n\n1. Create an order and fully refund it\n\n### What did you expect to happen?\n\nI should get orders all orders with fully refund payment status\n\n### Logs\n\n_No response_\n\n### Environment\n\nSaleor version: 3.9+\r\n\r\n\n", "before_files": [{"content": "from uuid import UUID\n\nimport django_filters\nimport graphene\nfrom django.db.models import Exists, OuterRef, Q\nfrom django.utils import timezone\nfrom graphql.error import GraphQLError\n\nfrom ...giftcard import GiftCardEvents\nfrom ...giftcard.models import GiftCardEvent\nfrom ...order.models import Order, OrderLine\nfrom ...order.search import search_orders\nfrom ...product.models import ProductVariant\nfrom ..core.filters import (\n    GlobalIDMultipleChoiceFilter,\n    ListObjectTypeFilter,\n    MetadataFilterBase,\n    ObjectTypeFilter,\n)\nfrom ..core.types import DateRangeInput, DateTimeRangeInput\nfrom ..core.utils import from_global_id_or_error\nfrom ..payment.enums import PaymentChargeStatusEnum\nfrom ..utils import resolve_global_ids_to_primary_keys\nfrom ..utils.filters import filter_range_field\nfrom .enums import OrderAuthorizeStatusEnum, OrderChargeStatusEnum, OrderStatusFilter\n\n\ndef filter_payment_status(qs, _, value):\n    if value:\n        qs = qs.filter(payments__is_active=True, payments__charge_status__in=value)\n    return qs\n\n\ndef filter_authorize_status(qs, _, value):\n    if value:\n        qs = qs.filter(authorize_status__in=value)\n    return qs\n\n\ndef filter_charge_status(qs, _, value):\n    if value:\n        qs = qs.filter(charge_status__in=value)\n    return qs\n\n\ndef get_payment_id_from_query(value):\n    try:\n        return from_global_id_or_error(value, only_type=\"Payment\")[1]\n    except Exception:\n        return None\n\n\ndef filter_order_by_payment(qs, payment_id):\n    if payment_id:\n        qs = qs.filter(payments__pk=payment_id)\n    return qs\n\n\ndef filter_status(qs, _, value):\n    query_objects = qs.none()\n\n    if value:\n        query_objects |= qs.filter(status__in=value)\n\n    if OrderStatusFilter.READY_TO_FULFILL in value:\n        query_objects |= qs.ready_to_fulfill()\n\n    if OrderStatusFilter.READY_TO_CAPTURE in value:\n        query_objects |= qs.ready_to_capture()\n\n    return qs & query_objects\n\n\ndef filter_customer(qs, _, value):\n    qs = qs.filter(\n        Q(user_email__ilike=value)\n        | Q(user__email__trigram_similar=value)\n        | Q(user__first_name__trigram_similar=value)\n        | Q(user__last_name__trigram_similar=value)\n    )\n    return qs\n\n\ndef filter_created_range(qs, _, value):\n    return filter_range_field(qs, \"created_at__date\", value)\n\n\ndef filter_updated_at_range(qs, _, value):\n    return filter_range_field(qs, \"updated_at\", value)\n\n\ndef filter_order_search(qs, _, value):\n    return search_orders(qs, value)\n\n\ndef filter_channels(qs, _, values):\n    if values:\n        _, channels_ids = resolve_global_ids_to_primary_keys(values, \"Channel\")\n        qs = qs.filter(channel_id__in=channels_ids)\n    return qs\n\n\ndef filter_is_click_and_collect(qs, _, values):\n    if values is not None:\n        lookup = Q(collection_point__isnull=False) | Q(\n            collection_point_name__isnull=False\n        )\n        qs = qs.filter(lookup) if values is True else qs.exclude(lookup)\n    return qs\n\n\ndef filter_is_preorder(qs, _, values):\n    if values is not None:\n        variants = ProductVariant.objects.filter(\n            Q(is_preorder=True)\n            & (\n                Q(preorder_end_date__isnull=True)\n                | Q(preorder_end_date__gte=timezone.now())\n            )\n        ).values(\"id\")\n        lines = OrderLine.objects.filter(\n            Exists(variants.filter(id=OuterRef(\"variant_id\")))\n        )\n        lookup = Exists(lines.filter(order_id=OuterRef(\"id\")))\n        qs = qs.filter(lookup) if values is True else qs.exclude(lookup)\n    return qs\n\n\ndef filter_gift_card_used(qs, _, value):\n    return filter_by_gift_card(qs, value, GiftCardEvents.USED_IN_ORDER)\n\n\ndef filter_gift_card_bought(qs, _, value):\n    return filter_by_gift_card(qs, value, GiftCardEvents.BOUGHT)\n\n\ndef filter_by_gift_card(qs, value, gift_card_type):\n    gift_card_events = GiftCardEvent.objects.filter(type=gift_card_type).values(\n        \"order_id\"\n    )\n    lookup = Exists(gift_card_events.filter(order_id=OuterRef(\"id\")))\n    return qs.filter(lookup) if value is True else qs.exclude(lookup)\n\n\ndef filter_order_by_id(qs, _, value):\n    if not value:\n        return qs\n    _, obj_pks = resolve_global_ids_to_primary_keys(value, \"Order\")\n    pks = []\n    old_pks = []\n    for pk in obj_pks:\n        try:\n            pks.append(UUID(pk))\n        except ValueError:\n            old_pks.append(pk)\n    return qs.filter(Q(id__in=pks) | (Q(use_old_id=True) & Q(number__in=old_pks)))\n\n\ndef filter_by_order_number(qs, _, values):\n    if not values:\n        return qs\n    return qs.filter(number__in=values)\n\n\nclass DraftOrderFilter(MetadataFilterBase):\n    customer = django_filters.CharFilter(method=filter_customer)\n    created = ObjectTypeFilter(input_class=DateRangeInput, method=filter_created_range)\n    search = django_filters.CharFilter(method=filter_order_search)\n    channels = GlobalIDMultipleChoiceFilter(method=filter_channels)\n\n    class Meta:\n        model = Order\n        fields = [\"customer\", \"created\", \"search\"]\n\n\nclass OrderFilter(DraftOrderFilter):\n    payment_status = ListObjectTypeFilter(\n        input_class=PaymentChargeStatusEnum, method=filter_payment_status\n    )\n    authorize_status = ListObjectTypeFilter(\n        input_class=OrderAuthorizeStatusEnum, method=filter_authorize_status\n    )\n    charge_status = ListObjectTypeFilter(\n        input_class=OrderChargeStatusEnum, method=filter_charge_status\n    )\n    status = ListObjectTypeFilter(input_class=OrderStatusFilter, method=filter_status)\n    customer = django_filters.CharFilter(method=filter_customer)\n    created = ObjectTypeFilter(input_class=DateRangeInput, method=filter_created_range)\n    updated_at = ObjectTypeFilter(\n        input_class=DateTimeRangeInput, method=filter_updated_at_range\n    )\n    search = django_filters.CharFilter(method=filter_order_search)\n    channels = GlobalIDMultipleChoiceFilter(method=filter_channels)\n    is_click_and_collect = django_filters.BooleanFilter(\n        method=filter_is_click_and_collect\n    )\n    is_preorder = django_filters.BooleanFilter(method=filter_is_preorder)\n    ids = GlobalIDMultipleChoiceFilter(method=filter_order_by_id)\n    gift_card_used = django_filters.BooleanFilter(method=filter_gift_card_used)\n    gift_card_bought = django_filters.BooleanFilter(method=filter_gift_card_bought)\n    numbers = ListObjectTypeFilter(\n        input_class=graphene.String, method=filter_by_order_number\n    )\n\n    class Meta:\n        model = Order\n        fields = [\"payment_status\", \"status\", \"customer\", \"created\", \"search\"]\n\n    def is_valid(self):\n        if \"ids\" in self.data and \"numbers\" in self.data:\n            raise GraphQLError(\n                message=\"'ids' and 'numbers` are not allowed to use together in filter.\"\n            )\n        return super().is_valid()\n", "path": "saleor/graphql/order/filters.py"}], "after_files": [{"content": "from uuid import UUID\n\nimport django_filters\nimport graphene\nfrom django.db.models import Exists, OuterRef, Q\nfrom django.utils import timezone\nfrom graphql.error import GraphQLError\n\nfrom ...giftcard import GiftCardEvents\nfrom ...giftcard.models import GiftCardEvent\nfrom ...order.models import Order, OrderLine\nfrom ...order.search import search_orders\nfrom ...payment import ChargeStatus\nfrom ...product.models import ProductVariant\nfrom ..core.filters import (\n    GlobalIDMultipleChoiceFilter,\n    ListObjectTypeFilter,\n    MetadataFilterBase,\n    ObjectTypeFilter,\n)\nfrom ..core.types import DateRangeInput, DateTimeRangeInput\nfrom ..core.utils import from_global_id_or_error\nfrom ..payment.enums import PaymentChargeStatusEnum\nfrom ..utils import resolve_global_ids_to_primary_keys\nfrom ..utils.filters import filter_range_field\nfrom .enums import OrderAuthorizeStatusEnum, OrderChargeStatusEnum, OrderStatusFilter\n\n\ndef filter_payment_status(qs, _, value):\n    if value:\n        lookup = Q(payments__is_active=True, payments__charge_status__in=value)\n        if ChargeStatus.FULLY_REFUNDED in value:\n            lookup |= Q(payments__charge_status=ChargeStatus.FULLY_REFUNDED)\n        qs = qs.filter(lookup)\n    return qs\n\n\ndef filter_authorize_status(qs, _, value):\n    if value:\n        qs = qs.filter(authorize_status__in=value)\n    return qs\n\n\ndef filter_charge_status(qs, _, value):\n    if value:\n        qs = qs.filter(charge_status__in=value)\n    return qs\n\n\ndef get_payment_id_from_query(value):\n    try:\n        return from_global_id_or_error(value, only_type=\"Payment\")[1]\n    except Exception:\n        return None\n\n\ndef filter_order_by_payment(qs, payment_id):\n    if payment_id:\n        qs = qs.filter(payments__pk=payment_id)\n    return qs\n\n\ndef filter_status(qs, _, value):\n    query_objects = qs.none()\n\n    if value:\n        query_objects |= qs.filter(status__in=value)\n\n    if OrderStatusFilter.READY_TO_FULFILL in value:\n        query_objects |= qs.ready_to_fulfill()\n\n    if OrderStatusFilter.READY_TO_CAPTURE in value:\n        query_objects |= qs.ready_to_capture()\n\n    return qs & query_objects\n\n\ndef filter_customer(qs, _, value):\n    qs = qs.filter(\n        Q(user_email__ilike=value)\n        | Q(user__email__trigram_similar=value)\n        | Q(user__first_name__trigram_similar=value)\n        | Q(user__last_name__trigram_similar=value)\n    )\n    return qs\n\n\ndef filter_created_range(qs, _, value):\n    return filter_range_field(qs, \"created_at__date\", value)\n\n\ndef filter_updated_at_range(qs, _, value):\n    return filter_range_field(qs, \"updated_at\", value)\n\n\ndef filter_order_search(qs, _, value):\n    return search_orders(qs, value)\n\n\ndef filter_channels(qs, _, values):\n    if values:\n        _, channels_ids = resolve_global_ids_to_primary_keys(values, \"Channel\")\n        qs = qs.filter(channel_id__in=channels_ids)\n    return qs\n\n\ndef filter_is_click_and_collect(qs, _, values):\n    if values is not None:\n        lookup = Q(collection_point__isnull=False) | Q(\n            collection_point_name__isnull=False\n        )\n        qs = qs.filter(lookup) if values is True else qs.exclude(lookup)\n    return qs\n\n\ndef filter_is_preorder(qs, _, values):\n    if values is not None:\n        variants = ProductVariant.objects.filter(\n            Q(is_preorder=True)\n            & (\n                Q(preorder_end_date__isnull=True)\n                | Q(preorder_end_date__gte=timezone.now())\n            )\n        ).values(\"id\")\n        lines = OrderLine.objects.filter(\n            Exists(variants.filter(id=OuterRef(\"variant_id\")))\n        )\n        lookup = Exists(lines.filter(order_id=OuterRef(\"id\")))\n        qs = qs.filter(lookup) if values is True else qs.exclude(lookup)\n    return qs\n\n\ndef filter_gift_card_used(qs, _, value):\n    return filter_by_gift_card(qs, value, GiftCardEvents.USED_IN_ORDER)\n\n\ndef filter_gift_card_bought(qs, _, value):\n    return filter_by_gift_card(qs, value, GiftCardEvents.BOUGHT)\n\n\ndef filter_by_gift_card(qs, value, gift_card_type):\n    gift_card_events = GiftCardEvent.objects.filter(type=gift_card_type).values(\n        \"order_id\"\n    )\n    lookup = Exists(gift_card_events.filter(order_id=OuterRef(\"id\")))\n    return qs.filter(lookup) if value is True else qs.exclude(lookup)\n\n\ndef filter_order_by_id(qs, _, value):\n    if not value:\n        return qs\n    _, obj_pks = resolve_global_ids_to_primary_keys(value, \"Order\")\n    pks = []\n    old_pks = []\n    for pk in obj_pks:\n        try:\n            pks.append(UUID(pk))\n        except ValueError:\n            old_pks.append(pk)\n    return qs.filter(Q(id__in=pks) | (Q(use_old_id=True) & Q(number__in=old_pks)))\n\n\ndef filter_by_order_number(qs, _, values):\n    if not values:\n        return qs\n    return qs.filter(number__in=values)\n\n\nclass DraftOrderFilter(MetadataFilterBase):\n    customer = django_filters.CharFilter(method=filter_customer)\n    created = ObjectTypeFilter(input_class=DateRangeInput, method=filter_created_range)\n    search = django_filters.CharFilter(method=filter_order_search)\n    channels = GlobalIDMultipleChoiceFilter(method=filter_channels)\n\n    class Meta:\n        model = Order\n        fields = [\"customer\", \"created\", \"search\"]\n\n\nclass OrderFilter(DraftOrderFilter):\n    payment_status = ListObjectTypeFilter(\n        input_class=PaymentChargeStatusEnum, method=filter_payment_status\n    )\n    authorize_status = ListObjectTypeFilter(\n        input_class=OrderAuthorizeStatusEnum, method=filter_authorize_status\n    )\n    charge_status = ListObjectTypeFilter(\n        input_class=OrderChargeStatusEnum, method=filter_charge_status\n    )\n    status = ListObjectTypeFilter(input_class=OrderStatusFilter, method=filter_status)\n    customer = django_filters.CharFilter(method=filter_customer)\n    created = ObjectTypeFilter(input_class=DateRangeInput, method=filter_created_range)\n    updated_at = ObjectTypeFilter(\n        input_class=DateTimeRangeInput, method=filter_updated_at_range\n    )\n    search = django_filters.CharFilter(method=filter_order_search)\n    channels = GlobalIDMultipleChoiceFilter(method=filter_channels)\n    is_click_and_collect = django_filters.BooleanFilter(\n        method=filter_is_click_and_collect\n    )\n    is_preorder = django_filters.BooleanFilter(method=filter_is_preorder)\n    ids = GlobalIDMultipleChoiceFilter(method=filter_order_by_id)\n    gift_card_used = django_filters.BooleanFilter(method=filter_gift_card_used)\n    gift_card_bought = django_filters.BooleanFilter(method=filter_gift_card_bought)\n    numbers = ListObjectTypeFilter(\n        input_class=graphene.String, method=filter_by_order_number\n    )\n\n    class Meta:\n        model = Order\n        fields = [\"payment_status\", \"status\", \"customer\", \"created\", \"search\"]\n\n    def is_valid(self):\n        if \"ids\" in self.data and \"numbers\" in self.data:\n            raise GraphQLError(\n                message=\"'ids' and 'numbers` are not allowed to use together in filter.\"\n            )\n        return super().is_valid()\n", "path": "saleor/graphql/order/filters.py"}]}