55 lines
2.3 KiB
Python
55 lines
2.3 KiB
Python
from django.contrib import admin
|
|
from .models import Category, Product, StockMovement
|
|
|
|
@admin.register(Category)
|
|
class CategoryAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'parent', 'is_active', 'created_at')
|
|
list_filter = ('is_active', 'parent', 'created_at')
|
|
search_fields = ('name', 'description')
|
|
ordering = ('name',)
|
|
|
|
fieldsets = (
|
|
(None, {'fields': ('name', 'description', 'parent')}),
|
|
('Status', {'fields': ('is_active',)}),
|
|
)
|
|
|
|
@admin.register(Product)
|
|
class ProductAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'code', 'category', 'current_stock', 'cost_price',
|
|
'selling_price', 'unit', 'is_active', 'is_manufactured')
|
|
list_filter = ('category', 'unit', 'is_active', 'is_manufactured', 'created_at')
|
|
search_fields = ('name', 'code', 'description')
|
|
ordering = ('name',)
|
|
|
|
fieldsets = (
|
|
('Basic Information', {'fields': ('name', 'code', 'description', 'category', 'unit')}),
|
|
('Stock Information', {'fields': ('current_stock', 'min_stock_level', 'max_stock_level')}),
|
|
('Pricing', {'fields': ('cost_price', 'selling_price')}),
|
|
('Product Details', {'fields': ('weight', 'dimensions')}),
|
|
('Status', {'fields': ('is_active', 'is_manufactured')}),
|
|
)
|
|
|
|
readonly_fields = ('current_stock',)
|
|
|
|
def get_queryset(self, request):
|
|
return super().get_queryset(request).select_related('category')
|
|
|
|
@admin.register(StockMovement)
|
|
class StockMovementAdmin(admin.ModelAdmin):
|
|
list_display = ('product', 'movement_type', 'quantity', 'unit_price',
|
|
'total_value', 'date', 'created_by')
|
|
list_filter = ('movement_type', 'date', 'created_by', 'product__category')
|
|
search_fields = ('product__name', 'product__code', 'notes', 'reference_note')
|
|
ordering = ('-date', '-created_at')
|
|
|
|
fieldsets = (
|
|
('Movement Details', {'fields': ('product', 'movement_type', 'quantity', 'unit_price')}),
|
|
('Reference Information', {'fields': ('reference_type', 'reference_id', 'reference_note')}),
|
|
('Additional Information', {'fields': ('date', 'notes', 'created_by')}),
|
|
)
|
|
|
|
readonly_fields = ('total_value',)
|
|
|
|
def get_queryset(self, request):
|
|
return super().get_queryset(request).select_related('product', 'created_by')
|