Skip to content

Commit 7750e99

Browse files
authored
Merge pull request #201 from ixaxtav/master
add employee count
2 parents 0dd4a69 + 9a336ba commit 7750e99

File tree

4 files changed

+37
-9
lines changed

4 files changed

+37
-9
lines changed

api/management/commands/calculate_total_payments.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def handle(self, *args, **options):
1616
payments = PayrollPeriod.objects.annotate(total=Count('payments')).all()
1717
for payment in payments:
1818
payment.total_payments = payment.payments.count()
19+
payment.total_employees =
1920
payment.save()
2021

2122
self.stdout.write(self.style.SUCCESS("Successfully updated all total_payments on every period"))
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 2.2.8 on 2021-10-22 16:52
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('api', '0114_employersubscription_stripe_cus'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='payrollperiod',
15+
name='total_employees',
16+
field=models.IntegerField(blank=True, default=0),
17+
),
18+
]

api/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from django.db import models
66
from django.db.models import Avg, Count
77
from django.utils import timezone
8-
98
from api.utils.loggers import log_debug
109

1110
NOW = timezone.now()
@@ -745,6 +744,7 @@ class PayrollPeriod(models.Model):
745744
ending_at = models.DateTimeField(blank=False)
746745

747746
total_payments = models.IntegerField(blank=True, default=0)
747+
total_employees = models.IntegerField(blank=True, default=0)
748748

749749
created_at = models.DateTimeField(auto_now_add=True, editable=False)
750750
updated_at = models.DateTimeField(auto_now=True, editable=False)

api/serializers/payment_serializer.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import itertools
44
import math
55

6-
from django.db.models import Q, Sum
6+
from django.db.models import Q, Count, Sum
77
from django.utils import timezone
88

99
from rest_framework import serializers
@@ -87,12 +87,12 @@ class Meta:
8787

8888
class EmployeeGetSerializer(serializers.ModelSerializer):
8989
user = UserGetSmallSerializer(read_only=True)
90-
badges = BadgeGetSmallSerializer(read_only=True, many=True)
90+
# badges = BadgeGetSmallSerializer(read_only=True, many=True)
9191

9292

9393
class Meta:
9494
model = Employee
95-
fields = ('user', 'id', 'badges','employment_verification_status')
95+
fields = ('user', 'id','employment_verification_status')
9696

9797

9898
class ClockinGetSerializer(serializers.ModelSerializer):
@@ -130,12 +130,11 @@ class Meta:
130130
exclude = ()
131131

132132
class PayrollPeriodPaymentEmployeeSerializer(serializers.ModelSerializer):
133-
employee = EmployeeGetSerializer(read_only=True)
133+
# employee = EmployeeGetSerializer(read_only=True)
134134

135135
class Meta:
136136
model = PayrollPeriodPayment
137137
exclude = ()
138-
fields = ('employee', )
139138

140139
class PayrollPeriodGetDateSerializer(serializers.ModelSerializer):
141140
class Meta:
@@ -146,7 +145,9 @@ class Meta:
146145
'ending_at',
147146
)
148147
class PayrollPeriodGetTinySerializer(serializers.ModelSerializer):
149-
payments = PayrollPeriodPaymentEmployeeSerializer(read_only=True, many=True)
148+
# payments = PayrollPeriodPaymentEmployeeSerializer(read_only=True, many=True)
149+
employee_count = serializers.SerializerMethodField()
150+
150151
class Meta:
151152
model = PayrollPeriod
152153
fields = (
@@ -155,9 +156,16 @@ class Meta:
155156
'starting_at',
156157
'ending_at',
157158
'total_payments',
158-
'payments'
159+
'employee_count'
159160
)
160161

162+
def get_employee_count(self, instance):
163+
employees = PayrollPeriodPayment.objects.filter(employer__id=instance.employer_id, payroll_period__id = instance.id).order_by('employee_id').values('employee').distinct().count()
164+
165+
total_employees = employees
166+
167+
return total_employees
168+
161169
class PayrollPeriodGetSmallSerializer(serializers.ModelSerializer):
162170
class Meta:
163171
model = PayrollPeriod
@@ -595,7 +603,7 @@ def generate_periods_and_payments(employer, generate_since=None):
595603
if end_date >= NOW:
596604
log_debug('hooks','No new periods to generate, now is '+ str(NOW) +' we have to wait until '+str(end_date))
597605
return []
598-
606+
599607
while end_date < NOW:
600608

601609
start_date = end_date - \
@@ -660,6 +668,7 @@ def generate_periods_and_payments(employer, generate_since=None):
660668
payment.save()
661669
total_payments = total_payments + 1
662670

671+
print('el total payment', total_payments)
663672
period.total_payments = total_payments
664673
period.save()
665674
generated_periods.append(period)

0 commit comments

Comments
 (0)