Add employee paystub generation API route

master
Tanner Collin 7 years ago
parent 80cc811049
commit 870e48a516
  1. 14
      caremyway/api/serializers.py
  2. 35
      caremyway/api/views.py

@ -309,3 +309,17 @@ class RecordSheetSerializer(serializers.Serializer):
phone_number = serializers.CharField() phone_number = serializers.CharField()
sin = serializers.CharField() sin = serializers.CharField()
record = RecordSerializer(many=True) 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)

@ -12,7 +12,7 @@ from rest_framework.decorators import api_view
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.views import APIView from rest_framework.views import APIView
from rest_framework.renderers import StaticHTMLRenderer 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): class UserViewSet(viewsets.ModelViewSet):
lookup_field = 'username' lookup_field = 'username'
@ -415,6 +415,31 @@ def gen_recordsheets(user, payday, manage):
return list(recordsheets) 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): class ReportView(APIView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
response = [] response = []
@ -438,6 +463,14 @@ class ReportView(APIView):
response = RecordSheetSerializer(recordsheets, many=True).data 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) return Response(response, status=status.HTTP_200_OK)
@api_view() @api_view()

Loading…
Cancel
Save