Adjust rice transplant plan to store installed box counts
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('plans', '0005_crop_seed_inventory_variety_seedling_boxes_and_rice_transplant'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='ricetransplantentry',
|
||||
old_name='seedling_boxes_per_tan',
|
||||
new_name='installed_seedling_boxes',
|
||||
),
|
||||
]
|
||||
@@ -97,10 +97,10 @@ class RiceTransplantEntry(models.Model):
|
||||
related_name='rice_transplant_entries',
|
||||
verbose_name='圃場',
|
||||
)
|
||||
seedling_boxes_per_tan = models.DecimalField(
|
||||
max_digits=6,
|
||||
installed_seedling_boxes = models.DecimalField(
|
||||
max_digits=8,
|
||||
decimal_places=2,
|
||||
verbose_name='反当苗箱枚数',
|
||||
verbose_name='設置苗箱枚数',
|
||||
)
|
||||
seed_grams_per_box = models.DecimalField(
|
||||
max_digits=8,
|
||||
@@ -115,4 +115,4 @@ class RiceTransplantEntry(models.Model):
|
||||
ordering = ['field__display_order', 'field__id']
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.plan} / {self.field} / {self.seedling_boxes_per_tan}枚/反'
|
||||
return f'{self.plan} / {self.field} / {self.installed_seedling_boxes}枚'
|
||||
|
||||
@@ -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