1313from core .signals import register_service_signal
1414from invoice .models import Bill , PaymentInvoice , DetailPaymentInvoice
1515from invoice .services import PaymentInvoiceService
16+ from payment_cycle .models import PaymentCycle
1617from payroll .apps import PayrollConfig
1718from 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
0 commit comments