1
0
forked from erp-dev/erp

fix: rebuild stock change record

This commit is contained in:
2025-11-05 16:57:54 +08:00
parent d88bf367f8
commit a759030cdc
16 changed files with 1116 additions and 66 deletions

View File

@@ -1,5 +1,6 @@
from django.contrib import admin
from django.contrib.admin import action
from django.utils.safestring import mark_safe
from . import models, services
@@ -58,29 +59,43 @@ class StockSnapshotAdmin(admin.ModelAdmin):
def has_delete_permission(self, request, obj = ...):
# 禁止通过admin界面删除库存快照
return False
return True
def get_readonly_fields(self, request, obj = ...):
# 所有字段均为只读
return [field.name for field in self.model._meta.fields]
@admin.register(models.StockChangeDetail)
class StockChangeDetailAdmin(admin.ModelAdmin):
list_display = (
'id',
'stock_change_record',
'product',
'quantity',
'unit',
)
search_fields = ('stock_change_record__id', 'product__name')
list_filter = ('stock_change_record', 'stock_change_record__type')
ordering = ('-created_at',)
@admin.register(models.StockChangeRecord)
class StockChangeRecordAdmin(admin.ModelAdmin):
list_display = (
'id',
'type',
'product',
'warehouse',
'quantity',
'details',
'source_type',
'source_id',
'num_of_rolls',
'is_finished',
'finished_at',
'created_by',
'created_at',
)
search_fields = ('product__name', 'warehouse__name', 'source_id')
search_fields = ('warehouse__name', 'source_id')
list_filter = ('type', 'source_type', 'type', 'is_finished', 'created_at')
ordering = ('-created_at', '-updated_at')
readonly_fields = ('created_by', 'is_finished', 'finished_at')
@@ -103,4 +118,17 @@ class StockChangeRecordAdmin(admin.ModelAdmin):
record = queryset.first()
services.make_stock_change_completed(record)
@admin.display(description='匹数')
def num_of_rolls(self, obj: models.StockChangeRecord):
return obj.num_of_rolls
@admin.display(description='明细概览')
def details(self, obj):
details = obj.details.all()
detail_list = [
f'{detail.product.name}, {detail.quantity}/{detail.get_unit_display()}'
for detail in details
]
return mark_safe('<br>'.join(detail_list))
actions = [make_selected_stock_changes_completed]