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

1"""Admin functionality for the 'order' app.""" 

2 

3from django.contrib import admin 

4 

5from order import models 

6 

7 

8class GeneralExtraLineAdmin: 

9 """Admin class template for the 'ExtraLineItem' models.""" 

10 

11 list_display = ('order', 'quantity', 'reference') 

12 

13 search_fields = ['order__reference', 'order__customer__name', 'reference'] 

14 

15 autocomplete_fields = ('order',) 

16 

17 

18class GeneralExtraLineMeta: 

19 """Metaclass template for the 'ExtraLineItem' models.""" 

20 

21 skip_unchanged = True 

22 report_skipped = False 

23 clean_model_instances = True 

24 

25 

26class PurchaseOrderLineItemInlineAdmin(admin.StackedInline): 

27 """Inline admin class for the PurchaseOrderLineItem model.""" 

28 

29 autocomplete_fields = ['part', 'destination', 'build_order'] 

30 

31 model = models.PurchaseOrderLineItem 

32 extra = 0 

33 

34 

35@admin.register(models.PurchaseOrder) 

36class PurchaseOrderAdmin(admin.ModelAdmin): 

37 """Admin class for the PurchaseOrder model.""" 

38 

39 exclude = ['reference_int'] 

40 

41 list_display = ('reference', 'supplier', 'status', 'description', 'creation_date') 

42 

43 search_fields = ['reference', 'supplier__name', 'description'] 

44 

45 inlines = [PurchaseOrderLineItemInlineAdmin] 

46 

47 autocomplete_fields = [ 

48 'address', 

49 'contact', 

50 'created_by', 

51 'destination', 

52 'supplier', 

53 'project_code', 

54 'received_by', 

55 'responsible', 

56 ] 

57 

58 

59class SalesOrderLineItemInlineAdmin(admin.StackedInline): 

60 """Inline admin class for the SalesOrderLineItem model.""" 

61 

62 model = models.SalesOrderLineItem 

63 extra = 0 

64 

65 autocomplete_fields = ['part'] 

66 

67 

68@admin.register(models.SalesOrder) 

69class SalesOrderAdmin(admin.ModelAdmin): 

70 """Admin class for the SalesOrder model.""" 

71 

72 exclude = ['reference_int'] 

73 

74 list_display = ('reference', 'customer', 'status', 'description', 'creation_date') 

75 

76 search_fields = ['reference', 'customer__name', 'description'] 

77 

78 inlines = [SalesOrderLineItemInlineAdmin] 

79 

80 autocomplete_fields = [ 

81 'address', 

82 'contact', 

83 'created_by', 

84 'customer', 

85 'project_code', 

86 'responsible', 

87 'shipped_by', 

88 ] 

89 

90 

91@admin.register(models.PurchaseOrderLineItem) 

92class PurchaseOrderLineItemAdmin(admin.ModelAdmin): 

93 """Admin class for the PurchaseOrderLine model.""" 

94 

95 list_display = ('order', 'part', 'quantity', 'reference') 

96 

97 search_fields = ('reference',) 

98 

99 autocomplete_fields = ('order', 'part', 'destination') 

100 

101 

102@admin.register(models.PurchaseOrderExtraLine) 

103class PurchaseOrderExtraLineAdmin(GeneralExtraLineAdmin, admin.ModelAdmin): 

104 """Admin class for the PurchaseOrderExtraLine model.""" 

105 

106 

107@admin.register(models.SalesOrderLineItem) 

108class SalesOrderLineItemAdmin(admin.ModelAdmin): 

109 """Admin class for the SalesOrderLine model.""" 

110 

111 list_display = ('order', 'part', 'quantity', 'reference') 

112 

113 search_fields = [ 

114 'part__name', 

115 'order__reference', 

116 'order__customer__name', 

117 'reference', 

118 ] 

119 

120 autocomplete_fields = ('order', 'part') 

121 

122 

123@admin.register(models.SalesOrderExtraLine) 

124class SalesOrderExtraLineAdmin(GeneralExtraLineAdmin, admin.ModelAdmin): 

125 """Admin class for the SalesOrderExtraLine model.""" 

126 

127 

128@admin.register(models.SalesOrderShipment) 

129class SalesOrderShipmentAdmin(admin.ModelAdmin): 

130 """Admin class for the SalesOrderShipment model.""" 

131 

132 list_display = ['order', 'shipment_date', 'reference'] 

133 

134 search_fields = ['reference', 'order__reference', 'order__customer__name'] 

135 

136 autocomplete_fields = ('order', 'checked_by') 

137 

138 

139@admin.register(models.SalesOrderAllocation) 

140class SalesOrderAllocationAdmin(admin.ModelAdmin): 

141 """Admin class for the SalesOrderAllocation model.""" 

142 

143 list_display = ('line', 'item', 'quantity') 

144 

145 autocomplete_fields = ('line', 'shipment', 'item') 

146 

147 

148@admin.register(models.ReturnOrder) 

149class ReturnOrderAdmin(admin.ModelAdmin): 

150 """Admin class for the ReturnOrder model.""" 

151 

152 exclude = ['reference_int'] 

153 

154 list_display = ['reference', 'customer', 'status'] 

155 

156 search_fields = ['reference', 'customer__name', 'description'] 

157 

158 autocomplete_fields = ['customer', 'project_code', 'contact', 'address'] 

159 

160 

161@admin.register(models.ReturnOrderLineItem) 

162class ReturnOrderLineItemAdmin(admin.ModelAdmin): 

163 """Admin class for ReturnOrderLine model.""" 

164 

165 list_display = ['order', 'item', 'reference'] 

166 

167 autocomplete_fields = ['item', 'order'] 

168 

169 

170@admin.register(models.ReturnOrderExtraLine) 

171class ReturnOrdeerExtraLineAdmin(GeneralExtraLineAdmin, admin.ModelAdmin): 

172 """Admin class for the ReturnOrderExtraLine model.""" 

173 

174 

175class TransferOrderLineItemInlineAdmin(admin.StackedInline): 

176 """Inline admin class for the TransferOrderLineItem model.""" 

177 

178 autocomplete_fields = ['part'] 

179 

180 model = models.TransferOrderLineItem 

181 extra = 0 

182 

183 

184@admin.register(models.TransferOrder) 

185class TransferOrderAdmin(admin.ModelAdmin): 

186 """Admin class for the TransferOrder model.""" 

187 

188 exclude = ['reference_int', 'address', 'contact'] 

189 

190 list_display = ( 

191 'reference', 

192 'status', 

193 'description', 

194 'take_from', 

195 'destination', 

196 'consume', 

197 'creation_date', 

198 ) 

199 

200 search_fields = ['reference', 'description'] 

201 

202 inlines = [TransferOrderLineItemInlineAdmin] 

203 

204 autocomplete_fields = [ 

205 'created_by', 

206 'take_from', 

207 'destination', 

208 'project_code', 

209 'responsible', 

210 ]