Coverage for src/backend/InvenTree/order/admin.py: 100%
78 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
1"""Admin functionality for the 'order' app."""
3from django.contrib import admin
5from order import models
8class GeneralExtraLineAdmin:
9 """Admin class template for the 'ExtraLineItem' models."""
11 list_display = ('order', 'quantity', 'reference')
13 search_fields = ['order__reference', 'order__customer__name', 'reference']
15 autocomplete_fields = ('order',)
18class GeneralExtraLineMeta:
19 """Metaclass template for the 'ExtraLineItem' models."""
21 skip_unchanged = True
22 report_skipped = False
23 clean_model_instances = True
26class PurchaseOrderLineItemInlineAdmin(admin.StackedInline):
27 """Inline admin class for the PurchaseOrderLineItem model."""
29 autocomplete_fields = ['part', 'destination', 'build_order']
31 model = models.PurchaseOrderLineItem
32 extra = 0
35@admin.register(models.PurchaseOrder)
36class PurchaseOrderAdmin(admin.ModelAdmin):
37 """Admin class for the PurchaseOrder model."""
39 exclude = ['reference_int']
41 list_display = ('reference', 'supplier', 'status', 'description', 'creation_date')
43 search_fields = ['reference', 'supplier__name', 'description']
45 inlines = [PurchaseOrderLineItemInlineAdmin]
47 autocomplete_fields = [
48 'address',
49 'contact',
50 'created_by',
51 'destination',
52 'supplier',
53 'project_code',
54 'received_by',
55 'responsible',
56 ]
59class SalesOrderLineItemInlineAdmin(admin.StackedInline):
60 """Inline admin class for the SalesOrderLineItem model."""
62 model = models.SalesOrderLineItem
63 extra = 0
65 autocomplete_fields = ['part']
68@admin.register(models.SalesOrder)
69class SalesOrderAdmin(admin.ModelAdmin):
70 """Admin class for the SalesOrder model."""
72 exclude = ['reference_int']
74 list_display = ('reference', 'customer', 'status', 'description', 'creation_date')
76 search_fields = ['reference', 'customer__name', 'description']
78 inlines = [SalesOrderLineItemInlineAdmin]
80 autocomplete_fields = [
81 'address',
82 'contact',
83 'created_by',
84 'customer',
85 'project_code',
86 'responsible',
87 'shipped_by',
88 ]
91@admin.register(models.PurchaseOrderLineItem)
92class PurchaseOrderLineItemAdmin(admin.ModelAdmin):
93 """Admin class for the PurchaseOrderLine model."""
95 list_display = ('order', 'part', 'quantity', 'reference')
97 search_fields = ('reference',)
99 autocomplete_fields = ('order', 'part', 'destination')
102@admin.register(models.PurchaseOrderExtraLine)
103class PurchaseOrderExtraLineAdmin(GeneralExtraLineAdmin, admin.ModelAdmin):
104 """Admin class for the PurchaseOrderExtraLine model."""
107@admin.register(models.SalesOrderLineItem)
108class SalesOrderLineItemAdmin(admin.ModelAdmin):
109 """Admin class for the SalesOrderLine model."""
111 list_display = ('order', 'part', 'quantity', 'reference')
113 search_fields = [
114 'part__name',
115 'order__reference',
116 'order__customer__name',
117 'reference',
118 ]
120 autocomplete_fields = ('order', 'part')
123@admin.register(models.SalesOrderExtraLine)
124class SalesOrderExtraLineAdmin(GeneralExtraLineAdmin, admin.ModelAdmin):
125 """Admin class for the SalesOrderExtraLine model."""
128@admin.register(models.SalesOrderShipment)
129class SalesOrderShipmentAdmin(admin.ModelAdmin):
130 """Admin class for the SalesOrderShipment model."""
132 list_display = ['order', 'shipment_date', 'reference']
134 search_fields = ['reference', 'order__reference', 'order__customer__name']
136 autocomplete_fields = ('order', 'checked_by')
139@admin.register(models.SalesOrderAllocation)
140class SalesOrderAllocationAdmin(admin.ModelAdmin):
141 """Admin class for the SalesOrderAllocation model."""
143 list_display = ('line', 'item', 'quantity')
145 autocomplete_fields = ('line', 'shipment', 'item')
148@admin.register(models.ReturnOrder)
149class ReturnOrderAdmin(admin.ModelAdmin):
150 """Admin class for the ReturnOrder model."""
152 exclude = ['reference_int']
154 list_display = ['reference', 'customer', 'status']
156 search_fields = ['reference', 'customer__name', 'description']
158 autocomplete_fields = ['customer', 'project_code', 'contact', 'address']
161@admin.register(models.ReturnOrderLineItem)
162class ReturnOrderLineItemAdmin(admin.ModelAdmin):
163 """Admin class for ReturnOrderLine model."""
165 list_display = ['order', 'item', 'reference']
167 autocomplete_fields = ['item', 'order']
170@admin.register(models.ReturnOrderExtraLine)
171class ReturnOrdeerExtraLineAdmin(GeneralExtraLineAdmin, admin.ModelAdmin):
172 """Admin class for the ReturnOrderExtraLine model."""
175class TransferOrderLineItemInlineAdmin(admin.StackedInline):
176 """Inline admin class for the TransferOrderLineItem model."""
178 autocomplete_fields = ['part']
180 model = models.TransferOrderLineItem
181 extra = 0
184@admin.register(models.TransferOrder)
185class TransferOrderAdmin(admin.ModelAdmin):
186 """Admin class for the TransferOrder model."""
188 exclude = ['reference_int', 'address', 'contact']
190 list_display = (
191 'reference',
192 'status',
193 'description',
194 'take_from',
195 'destination',
196 'consume',
197 'creation_date',
198 )
200 search_fields = ['reference', 'description']
202 inlines = [TransferOrderLineItemInlineAdmin]
204 autocomplete_fields = [
205 'created_by',
206 'take_from',
207 'destination',
208 'project_code',
209 'responsible',
210 ]