Adjust rice transplant plan to store installed box counts
This commit is contained in:
@@ -50,6 +50,7 @@ class RiceTransplantEntrySerializer(serializers.ModelSerializer):
|
||||
)
|
||||
planned_boxes = serializers.SerializerMethodField()
|
||||
planned_seed_kg = serializers.SerializerMethodField()
|
||||
default_seedling_boxes = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = RiceTransplantEntry
|
||||
@@ -58,20 +59,25 @@ class RiceTransplantEntrySerializer(serializers.ModelSerializer):
|
||||
'field',
|
||||
'field_name',
|
||||
'field_area_tan',
|
||||
'seedling_boxes_per_tan',
|
||||
'installed_seedling_boxes',
|
||||
'seed_grams_per_box',
|
||||
'default_seedling_boxes',
|
||||
'planned_boxes',
|
||||
'planned_seed_kg',
|
||||
]
|
||||
|
||||
def get_planned_boxes(self, obj):
|
||||
def get_default_seedling_boxes(self, obj):
|
||||
area = Decimal(str(obj.field.area_tan))
|
||||
return str((area * obj.seedling_boxes_per_tan).quantize(Decimal('0.01')))
|
||||
default_boxes_per_tan = obj.plan.variety.default_seedling_boxes_per_tan
|
||||
return str((area * default_boxes_per_tan).quantize(Decimal('0.01')))
|
||||
|
||||
def get_planned_boxes(self, obj):
|
||||
return str(obj.installed_seedling_boxes.quantize(Decimal('0.01')))
|
||||
|
||||
def get_planned_seed_kg(self, obj):
|
||||
area = Decimal(str(obj.field.area_tan))
|
||||
boxes = area * obj.seedling_boxes_per_tan
|
||||
seed_kg = (boxes * obj.seed_grams_per_box / Decimal('1000')).quantize(Decimal('0.001'))
|
||||
seed_kg = (
|
||||
obj.installed_seedling_boxes * obj.seed_grams_per_box / Decimal('1000')
|
||||
).quantize(Decimal('0.001'))
|
||||
return str(seed_kg)
|
||||
|
||||
|
||||
@@ -111,7 +117,7 @@ class RiceTransplantPlanSerializer(serializers.ModelSerializer):
|
||||
|
||||
def get_total_seedling_boxes(self, obj):
|
||||
total = sum(
|
||||
Decimal(str(entry.field.area_tan)) * entry.seedling_boxes_per_tan
|
||||
entry.installed_seedling_boxes
|
||||
for entry in obj.entries.all()
|
||||
)
|
||||
return str(total.quantize(Decimal('0.01')))
|
||||
@@ -119,8 +125,7 @@ class RiceTransplantPlanSerializer(serializers.ModelSerializer):
|
||||
def get_total_seed_kg(self, obj):
|
||||
total = sum(
|
||||
(
|
||||
Decimal(str(entry.field.area_tan))
|
||||
* entry.seedling_boxes_per_tan
|
||||
entry.installed_seedling_boxes
|
||||
* entry.seed_grams_per_box
|
||||
/ Decimal('1000')
|
||||
)
|
||||
@@ -186,6 +191,6 @@ class RiceTransplantPlanWriteSerializer(serializers.ModelSerializer):
|
||||
RiceTransplantEntry.objects.create(
|
||||
plan=plan,
|
||||
field_id=entry['field_id'],
|
||||
seedling_boxes_per_tan=entry['seedling_boxes_per_tan'],
|
||||
installed_seedling_boxes=entry['installed_seedling_boxes'],
|
||||
seed_grams_per_box=entry['seed_grams_per_box'],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user