完璧に動作しています。
テスト 結果 確定取消 API ✅ is_confirmed: false, confirmed_at: null USE トランザクション削除 ✅ current_stock が 27.5→32 に復帰 引当再作成 ✅ reserved_stock = 5.000 に復帰 追加した変更: stock_service.py:81-93 — unconfirm_spreading(): USE削除→確定フラグリセット→引当再作成 fertilizer/views.py — unconfirm アクション(POST /api/fertilizer/plans/{id}/unconfirm/) fertilizer/page.tsx — 一覧に「確定取消」ボタン(確定済み計画のみ表示) FertilizerEditPage.tsx — 編集画面ヘッダーに「確定取消」ボタン + 在庫情報再取得
This commit is contained in:
@@ -3,9 +3,25 @@ from .models import Fertilizer, FertilizationPlan, FertilizationEntry, Distribut
|
||||
|
||||
|
||||
class FertilizerSerializer(serializers.ModelSerializer):
|
||||
material_id = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Fertilizer
|
||||
fields = '__all__'
|
||||
fields = [
|
||||
'id',
|
||||
'name',
|
||||
'maker',
|
||||
'capacity_kg',
|
||||
'nitrogen_pct',
|
||||
'phosphorus_pct',
|
||||
'potassium_pct',
|
||||
'notes',
|
||||
'material',
|
||||
'material_id',
|
||||
]
|
||||
|
||||
def get_material_id(self, obj):
|
||||
return obj.material_id
|
||||
|
||||
|
||||
class FertilizationEntrySerializer(serializers.ModelSerializer):
|
||||
@@ -26,12 +42,15 @@ class FertilizationPlanSerializer(serializers.ModelSerializer):
|
||||
entries = FertilizationEntrySerializer(many=True, read_only=True)
|
||||
field_count = serializers.SerializerMethodField()
|
||||
fertilizer_count = serializers.SerializerMethodField()
|
||||
is_confirmed = serializers.BooleanField(read_only=True)
|
||||
confirmed_at = serializers.DateTimeField(read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = FertilizationPlan
|
||||
fields = [
|
||||
'id', 'name', 'year', 'variety', 'variety_name', 'crop_name',
|
||||
'calc_settings', 'entries', 'field_count', 'fertilizer_count', 'created_at', 'updated_at'
|
||||
'calc_settings', 'entries', 'field_count', 'fertilizer_count',
|
||||
'is_confirmed', 'confirmed_at', 'created_at', 'updated_at'
|
||||
]
|
||||
|
||||
def get_variety_name(self, obj):
|
||||
|
||||
Reference in New Issue
Block a user