Coverage for modules\erp\admin.py: 100%

38 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-09-05 09:19 +0800

1from django.contrib import admin 

2from .models import Account, JournalEntry, JournalItem, Product, Warehouse, StockMove, Invoice, InvoiceLine, Shipment 

3 

4class JournalItemInline(admin.TabularInline): 

5 model = JournalItem 

6 extra = 2 

7 

8@admin.register(Account) 

9class AccountAdmin(admin.ModelAdmin): 

10 list_display = ('code', 'name', 'type', 'currency', 'is_active', 'tenant_id') 

11 list_filter = ('type', 'is_active', 'tenant_id') 

12 search_fields = ('code', 'name') 

13 

14@admin.register(JournalEntry) 

15class JournalEntryAdmin(admin.ModelAdmin): 

16 list_display = ('entry_number', 'date', 'status', 'reference_type', 'posted_at', 'tenant_id') 

17 list_filter = ('status', 'reference_type', 'tenant_id') 

18 inlines = [JournalItemInline] 

19 

20@admin.register(Product) 

21class ProductAdmin(admin.ModelAdmin): 

22 list_display = ('sku', 'name', 'category', 'cost_price', 'selling_price', 'current_stock', 'is_active', 'tenant_id') 

23 search_fields = ('sku', 'name') 

24 list_filter = ('category', 'is_active', 'tenant_id') 

25 

26@admin.register(StockMove) 

27class StockMoveAdmin(admin.ModelAdmin): 

28 list_display = ('product', 'move_type', 'quantity', 'unit_cost', 'source_warehouse', 'dest_warehouse', 'created_at', 'tenant_id') 

29 list_filter = ('move_type', 'tenant_id') 

30 

31class InvoiceLineInline(admin.TabularInline): 

32 model = InvoiceLine 

33 extra = 1 

34 

35@admin.register(Invoice) 

36class InvoiceAdmin(admin.ModelAdmin): 

37 list_display = ('invoice_number', 'customer_name', 'issue_date', 'due_date', 'status', 'total_amount', 'amount_paid', 'tenant_id') 

38 list_filter = ('status', 'tenant_id') 

39 search_fields = ('invoice_number', 'customer_name') 

40 inlines = [InvoiceLineInline] 

41 

42 

43@admin.register(Shipment) 

44class ShipmentAdmin(admin.ModelAdmin): 

45 list_display = ('reference_number', 'customer_name', 'shipment_type', 'status', 'origin', 'destination', 'estimated_arrival', 'tenant_id') 

46 list_filter = ('shipment_type', 'status', 'tenant_id') 

47 search_fields = ('reference_number', 'customer_name', 'tracking_number', 'bill_of_lading')