diff --git a/caremyway/api/serializers.py b/caremyway/api/serializers.py index b9a3037..42e9232 100644 --- a/caremyway/api/serializers.py +++ b/caremyway/api/serializers.py @@ -309,3 +309,17 @@ class RecordSheetSerializer(serializers.Serializer): phone_number = serializers.CharField() sin = serializers.CharField() record = RecordSerializer(many=True) + +class PayStubSerializer(serializers.Serializer): + management = serializers.CharField() + client = serializers.CharField() + provider = serializers.CharField() + payday = serializers.DateField() + reg_pay = serializers.DecimalField(max_digits=10, decimal_places=2) + vac_pay = serializers.DecimalField(max_digits=10, decimal_places=2) + earnings = serializers.DecimalField(max_digits=10, decimal_places=2) + cpp = serializers.DecimalField(max_digits=10, decimal_places=2) + ei = serializers.DecimalField(max_digits=10, decimal_places=2) + income_tax = serializers.DecimalField(max_digits=10, decimal_places=2) + total_deductions = serializers.DecimalField(max_digits=10, decimal_places=2) + net_pay = serializers.DecimalField(max_digits=10, decimal_places=2) diff --git a/caremyway/api/views.py b/caremyway/api/views.py index d756dd6..ee1691d 100644 --- a/caremyway/api/views.py +++ b/caremyway/api/views.py @@ -12,7 +12,7 @@ from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.renderers import StaticHTMLRenderer -from caremyway.api.serializers import UserSerializer, UserInfoSerializer, ClientSerializer, ProviderSerializer, WorkTypeSerializer, EmployeeSerializer, EmployerSerializer, PriceSerializer, CShiftSerializer, PShiftSerializer, TimeSheetSerializer, RecordSheetSerializer +from caremyway.api.serializers import UserSerializer, UserInfoSerializer, ClientSerializer, ProviderSerializer, WorkTypeSerializer, EmployeeSerializer, EmployerSerializer, PriceSerializer, CShiftSerializer, PShiftSerializer, TimeSheetSerializer, RecordSheetSerializer, PayStubSerializer class UserViewSet(viewsets.ModelViewSet): lookup_field = 'username' @@ -415,6 +415,31 @@ def gen_recordsheets(user, payday, manage): return list(recordsheets) +def gen_paystubs(user, payday, manage): + recordsheets = gen_recordsheets(user, payday, manage) + print(recordsheets) + paystubs = [] + + for recordsheet in recordsheets: + lastrecord = recordsheet['record'][-1] + + paystub = {} + paystub['management'] = recordsheet['management'] + paystub['client'] = recordsheet['client'] + paystub['provider'] = recordsheet['provider'] + paystub['payday'] = lastrecord['payday'] + paystub['reg_pay'] = lastrecord['reg_pay'] + paystub['vac_pay'] = lastrecord['vac_pay'] + paystub['earnings'] = lastrecord['earnings'] + paystub['cpp'] = lastrecord['cpp'] + paystub['ei'] = lastrecord['ei'] + paystub['income_tax'] = lastrecord['income_tax'] + paystub['total_deductions'] = lastrecord['total_deductions'] + paystub['net_pay'] = lastrecord['net_pay'] + paystubs.append(paystub) + + return list(paystubs) + class ReportView(APIView): def get(self, request, *args, **kwargs): response = [] @@ -438,6 +463,14 @@ class ReportView(APIView): response = RecordSheetSerializer(recordsheets, many=True).data + elif report_type == 'paystub': + payday = validate_param(qp.get('payday'), serializers.DateField()) + manage = validate_param(qp.get('manage'), serializers.UUIDField(allow_null=True)) + + paystubs = gen_paystubs(request.user, payday, manage) + + response = PayStubSerializer(paystubs, many=True).data + return Response(response, status=status.HTTP_200_OK) @api_view()