added net weight, user, date etc. generates new document number with year as a prefix, restarts numbering every year
This commit is contained in:
+13
-1
@@ -2,7 +2,7 @@ from rest_framework import viewsets, status
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.permissions import IsAuthenticated, AllowAny
|
||||
from .models import ComPortReading, User, Report
|
||||
from .models import ComPortReading, User, Report, generate_doc_number
|
||||
from .serializers import (
|
||||
ComPortReadingSerializer, UserSerializer, UserDetailSerializer,
|
||||
ChangePasswordSerializer, VehicleSerializer, NomenclatureSerializer,
|
||||
@@ -111,6 +111,16 @@ class ComPortReadingViewSet(viewsets.ModelViewSet):
|
||||
serializer.save(source_ip=self.get_client_ip(self.request))
|
||||
|
||||
|
||||
def _maybe_finalize(vehicle, user):
|
||||
"""If both tare and gross are set and net hasn't been calculated yet, compute net and assign doc_number."""
|
||||
if vehicle.tare is not None and vehicle.gross is not None and vehicle.net is None:
|
||||
vehicle.net = vehicle.gross - vehicle.tare
|
||||
vehicle.net_date = timezone.now()
|
||||
vehicle.net_user = user
|
||||
vehicle.doc_number = generate_doc_number(timezone.now().year)
|
||||
vehicle.save()
|
||||
|
||||
|
||||
class VehicleViewSet(viewsets.ModelViewSet):
|
||||
"""
|
||||
API endpoint for vehicle management.
|
||||
@@ -183,6 +193,7 @@ class VehicleViewSet(viewsets.ModelViewSet):
|
||||
vehicle.tare_date = timezone.now()
|
||||
vehicle.tare_user = request.user
|
||||
vehicle.save()
|
||||
_maybe_finalize(vehicle, request.user)
|
||||
|
||||
serializer = self.get_serializer(vehicle)
|
||||
sse_broadcast_update('vehicle', 'updated', serializer.data)
|
||||
@@ -204,6 +215,7 @@ class VehicleViewSet(viewsets.ModelViewSet):
|
||||
vehicle.gross_date = timezone.now()
|
||||
vehicle.gross_user = request.user
|
||||
vehicle.save()
|
||||
_maybe_finalize(vehicle, request.user)
|
||||
|
||||
serializer = self.get_serializer(vehicle)
|
||||
sse_broadcast_update('vehicle', 'updated', serializer.data)
|
||||
|
||||
Reference in New Issue
Block a user