forked from erp-dev/erp
feat: auto complete stock change
This commit is contained in:
@@ -1,21 +1,63 @@
|
||||
from django.contrib import admin
|
||||
from basic_info.services import CustomerVisibilityService
|
||||
from . import models
|
||||
|
||||
|
||||
class AdminBase(admin.ModelAdmin):
|
||||
"""管理员基础类,定义通用配置"""
|
||||
|
||||
def get_readonly_fields(self, request, obj = ...):
|
||||
readonly_fields = list(super().get_readonly_fields(request, obj))
|
||||
if request.user.is_superuser:
|
||||
readonly_fields.append('merchant')
|
||||
return readonly_fields
|
||||
|
||||
def get_list_display(self, request):
|
||||
result = super().get_list_display(request)
|
||||
result = list(result)
|
||||
|
||||
if 'id' not in result:
|
||||
result = ['id'] + result
|
||||
|
||||
if request.user.is_superuser and 'merchant' not in result:
|
||||
result = result + ['merchant']
|
||||
|
||||
return result
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
if not change:
|
||||
if not obj.merchant_id:
|
||||
obj.merchant_id = request.user.employee.merchant.id
|
||||
return super().save_model(request, obj, form, change)
|
||||
|
||||
|
||||
@admin.register(models.QuickInput)
|
||||
class QuickInputAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'value', 'group')
|
||||
list_filter = ('group',)
|
||||
|
||||
|
||||
@admin.register(models.Merchant)
|
||||
class MerchantAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'type', 'email', 'mobile', 'auto_complete_stock_change')
|
||||
search_fields = ('name', 'mobile')
|
||||
list_filter = ('type', 'auto_complete_stock_change')
|
||||
|
||||
|
||||
@admin.register(models.Supplier)
|
||||
class SupplierAdmin(admin.ModelAdmin):
|
||||
class SupplierAdmin(AdminBase):
|
||||
list_display = ('name', 'area', 'email', 'mobile')
|
||||
search_fields = ('name', 'area', 'email', 'mobile')
|
||||
|
||||
|
||||
@admin.register(models.ProductCategory)
|
||||
class ProductCategoryAdmin(admin.ModelAdmin):
|
||||
class ProductCategoryAdmin(AdminBase):
|
||||
list_display = ('name', 'product_prefix', 'description')
|
||||
search_fields = ('name',)
|
||||
|
||||
|
||||
@admin.register(models.Product)
|
||||
class ProductAdmin(admin.ModelAdmin):
|
||||
class ProductAdmin(AdminBase):
|
||||
list_display = (
|
||||
'name',
|
||||
'category',
|
||||
@@ -31,29 +73,35 @@ class ProductAdmin(admin.ModelAdmin):
|
||||
|
||||
|
||||
@admin.register(models.BankAccount)
|
||||
class BankAccountAdmin(admin.ModelAdmin):
|
||||
class BankAccountAdmin(AdminBase):
|
||||
list_display = ('name', 'auto_number')
|
||||
search_fields = ('name', 'auto_number')
|
||||
|
||||
|
||||
@admin.register(models.WareHouse)
|
||||
class WareHouseAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'location', 'area', 'mobile')
|
||||
search_fields = ('name', 'area')
|
||||
class WareHouseAdmin(AdminBase):
|
||||
list_display = ('name', 'location', 'area', 'mobile', 'mode')
|
||||
list_filter = ('area', 'mode')
|
||||
search_fields = ('name', 'location', 'mobile')
|
||||
|
||||
|
||||
@admin.register(models.Customer)
|
||||
class CustomerAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'area', 'email', 'mobile', 'total_debt')
|
||||
class CustomerAdmin(AdminBase):
|
||||
list_display = ('name', 'area', 'email', 'mobile', 'created_by', 'total_debt')
|
||||
search_fields = ('name', 'area', 'email', 'mobile')
|
||||
|
||||
def get_queryset(self, request):
|
||||
qs = super().get_queryset(request)
|
||||
qs = CustomerVisibilityService.filter_customers_for_employee(qs, request.user)
|
||||
return qs
|
||||
|
||||
@admin.display(boolean=False, description='累欠金额')
|
||||
def total_debt(self, obj):
|
||||
return '0 (动态逻辑字段待实现)'
|
||||
|
||||
|
||||
@admin.register(models.Employee)
|
||||
class EmployeeAdmin(admin.ModelAdmin):
|
||||
class EmployeeAdmin(AdminBase):
|
||||
list_display = ('name', 'mobile', 'status', 'job_type', 'sys_user')
|
||||
search_fields = ('name', 'mobile')
|
||||
list_filter = (
|
||||
@@ -63,20 +111,20 @@ class EmployeeAdmin(admin.ModelAdmin):
|
||||
|
||||
|
||||
@admin.register(models.DeviceInfo)
|
||||
class DeviceInfoAdmin(admin.ModelAdmin):
|
||||
class DeviceInfoAdmin(AdminBase):
|
||||
list_display = ('name', 'type', 'is_occupied', 'status')
|
||||
search_fields = ('name', 'start_working_at', 'stop_working_at')
|
||||
list_filter = ('type', 'status')
|
||||
|
||||
|
||||
@admin.register(models.VehicleType)
|
||||
class VehicleTypeAdmin(admin.ModelAdmin):
|
||||
class VehicleTypeAdmin(AdminBase):
|
||||
list_display = ('name', 'description')
|
||||
search_fields = ('name',)
|
||||
|
||||
|
||||
@admin.register(models.VehicleTransportRecord)
|
||||
class VehicleTransportRecordAdmin(admin.ModelAdmin):
|
||||
class VehicleTransportRecordAdmin(AdminBase):
|
||||
list_display = ('driver_name', 'contact_number', 'delivery_date')
|
||||
search_fields = ('driver_name', 'contact_number')
|
||||
list_filter = ('vehicle_type',)
|
||||
|
||||
Reference in New Issue
Block a user