Add employee paystub generation API route
This commit is contained in:
parent
80cc811049
commit
870e48a516
|
@ -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…
Reference in New Issue
Block a user