Skip to content

Commit 06adb4c

Browse files
authored
Merge pull request #49 from openimis/develop
MERGING develop into release/24.04
2 parents cf928dc + c9b5c7b commit 06adb4c

File tree

3 files changed

+35
-5
lines changed

3 files changed

+35
-5
lines changed

payroll/schema.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,16 @@ class Query(graphene.ObjectType):
9393
dateValidTo__Lte=graphene.DateTime(),
9494
client_mutation_id=graphene.String(),
9595
benefitPlanName=graphene.String(),
96+
benefitPlanUuid=graphene.String(),
97+
paymentCycleUuid=graphene.String(),
9698
)
9799

98100
benefits_summary = graphene.Field(
99101
BenefitsSummaryGQLType,
100102
individualId=graphene.String(),
101-
payrollId=graphene.String()
103+
payrollId=graphene.String(),
104+
benefitPlanUuid=graphene.String(),
105+
paymentCycleUuid=graphene.String(),
102106
)
103107

104108
def resolve_bill_by_payroll(self, info, **kwargs):
@@ -189,6 +193,14 @@ def resolve_payroll_benefit_consumption(self, info, **kwargs):
189193
benefit_plan_ids = list(BenefitPlan.objects.filter(name__icontains=benefit_plan_name).values_list('id', flat=True))
190194
filters.append(Q(payroll__payment_plan__benefit_plan_id__in=benefit_plan_ids))
191195

196+
benefit_plan_uuid = kwargs.get("benefitPlanUuid")
197+
if benefit_plan_uuid:
198+
filters.append(Q(payroll__payment_plan__benefit_plan_id=benefit_plan_uuid))
199+
200+
payment_cycle_uuid = kwargs.get("paymentCycleUuid")
201+
if payment_cycle_uuid:
202+
filters.append(Q(payroll__payment_cycle_id=payment_cycle_uuid))
203+
192204
query = PayrollBenefitConsumption.objects.filter(*filters)
193205
return gql_optimizer.query(query, info)
194206

@@ -225,13 +237,21 @@ def resolve_benefits_summary(self, info, **kwargs):
225237
filters = append_validity_filter(**kwargs)
226238
individual_id = kwargs.get("individualId", None)
227239
payroll_id = kwargs.get("payrollId", None)
240+
benefit_plan_uuid = kwargs.get("benefitPlanUuid", None)
241+
payment_cycle_uuid = kwargs.get("paymentCycleUuid", None)
228242

229243
if individual_id:
230244
filters.append(Q(individual__id=individual_id))
231245

232246
if payroll_id:
233247
filters.append(Q(payrollbenefitconsumption__payroll_id=payroll_id))
234248

249+
if benefit_plan_uuid:
250+
filters.append(Q(payrollbenefitconsumption__payroll__payment_plan__benefit_plan_id=benefit_plan_uuid))
251+
252+
if payment_cycle_uuid:
253+
filters.append(Q(payrollbenefitconsumption__payroll__payment_cycle_id=payment_cycle_uuid))
254+
235255
amount_received = BenefitConsumption.objects.filter(
236256
*filters,
237257
is_deleted=False,

payroll/services.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from core.signals import register_service_signal
1414
from invoice.models import Bill, PaymentInvoice, DetailPaymentInvoice
1515
from invoice.services import PaymentInvoiceService
16+
from payment_cycle.models import PaymentCycle
1617
from payroll.apps import PayrollConfig
1718
from payroll.models import (
1819
PaymentPoint,
@@ -69,6 +70,7 @@ def create(self, obj_data):
6970
obj_data = self._adjust_create_payload(obj_data)
7071
from_failed_invoices_payroll_id = obj_data.pop("from_failed_invoices_payroll_id", None)
7172
payment_plan = self._get_payment_plan(obj_data)
73+
payment_cycle = self._get_payment_cycle(obj_data)
7274
date_valid_from, date_valid_to = self._get_dates_parameter(obj_data)
7375
payroll, dict_representation = self._save_payroll(obj_data)
7476
if not bool(from_failed_invoices_payroll_id):
@@ -78,7 +80,8 @@ def create(self, obj_data):
7880
beneficiaries_queryset,
7981
date_valid_from,
8082
date_valid_to,
81-
payroll
83+
payroll,
84+
payment_cycle
8285
)
8386
else:
8487
self._move_benefit_consumptions(payroll, from_failed_invoices_payroll_id)
@@ -162,6 +165,11 @@ def _get_payment_plan(self, obj_data):
162165
payment_plan = PaymentPlan.objects.get(id=payment_plan_id)
163166
return payment_plan
164167

168+
def _get_payment_cycle(self, obj_data):
169+
payment_cycle_id = obj_data.get("payment_cycle_id")
170+
payment_cycle = PaymentCycle.objects.get(id=payment_cycle_id)
171+
return payment_cycle
172+
165173
def _get_dates_parameter(self, obj_data):
166174
date_valid_from = obj_data.get('date_valid_from', None)
167175
date_valid_to = obj_data.get('date_valid_to', None)
@@ -188,14 +196,15 @@ def _select_beneficiary_based_on_criteria(self, obj_data, payment_plan):
188196

189197
return beneficiaries_queryset
190198

191-
def _generate_benefits(self, payment_plan, beneficiaries_queryset, date_from, date_to, payroll):
199+
def _generate_benefits(self, payment_plan, beneficiaries_queryset, date_from, date_to, payroll, payment_cycle):
192200
calculation = get_calculation_object(payment_plan.calculation)
193201
calculation.calculate_if_active_for_object(
194202
payment_plan,
195203
user_id=self.user.id,
196204
start_date=date_from, end_date=date_to,
197205
beneficiaries_queryset=beneficiaries_queryset,
198-
payroll=payroll
206+
payroll=payroll,
207+
payment_cycle=payment_cycle
199208
)
200209

201210
@transaction.atomic

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
'djangorestframework',
2727
'openimis-be-core',
2828
'openimis-be-location',
29-
'openimis-be-invoice'
29+
'openimis-be-invoice',
30+
'openimis-be-payment_cycle',
3031
],
3132
classifiers=[
3233
'Environment :: Web Environment',

0 commit comments

Comments
 (0)