@@ -366,72 +366,71 @@ def _insert_domain_operator(self, domain):
366366 return new_domain
367367
368368 def create_program (self ):
369+ self .ensure_one ()
369370 self ._check_required_fields ()
370- for rec in self :
371- program_vals = rec .get_program_vals ()
372- program = self .env ["spp.program" ].with_context (skip_default_managers = True ).create (program_vals )
373371
374- program_id = program . id
375- vals = {}
372+ program_vals = self . get_program_vals ()
373+ program = self . env [ "spp.program" ]. with_context ( skip_default_managers = True ). create ( program_vals )
376374
377- # Set Default Eligibility Manager settings
378- vals . update ( rec . _get_eligibility_manager ( program_id ))
375+ program_id = program . id
376+ vals = {}
379377
380- # Set Default Cycle Manager settings
381- # Add a new record to default cycle manager model
378+ # Set Default Eligibility Manager settings
379+ vals . update ( self . _get_eligibility_manager ( program_id ))
382380
383- cycle_manager_default_val = rec . get_cycle_manager_default_val ( program_id )
384- def_mgr = self . env [ "spp. cycle. manager.default" ]. create ( cycle_manager_default_val )
381+ # Set Default Cycle Manager settings
382+ # Add a new record to default cycle manager model
385383
386- # Add a new record to cycle manager parent model
384+ cycle_manager_default_val = self .get_cycle_manager_default_val (program_id )
385+ def_mgr = self .env ["spp.cycle.manager.default" ].create (cycle_manager_default_val )
387386
388- cycle_manager_val = rec .get_cycle_manager_val (program_id , def_mgr )
389- mgr = self .env ["spp.cycle.manager" ].create (cycle_manager_val )
387+ # Add a new record to cycle manager parent model
390388
391- vals .update ({"cycle_manager_ids" : [(4 , mgr .id )]})
389+ cycle_manager_val = self .get_cycle_manager_val (program_id , def_mgr )
390+ mgr = self .env ["spp.cycle.manager" ].create (cycle_manager_val )
392391
393- # Set Default Entitlement Manager
394- vals .update (rec ._get_entitlement_manager (program_id ))
392+ vals .update ({"cycle_manager_ids" : [(4 , mgr .id )]})
395393
396- # Set Default Program Manager
397- vals .update (rec . _get_program_manager (program_id ))
394+ # Set Default Entitlement Manager
395+ vals .update (self . _get_entitlement_manager (program_id ))
398396
399- # Clean legacy aliases that are not real fields on spp.program
400- vals .pop ("eligibility_managers" , None )
401- vals .pop ("cycle_managers" , None )
402- # Convert legacy entitlement_managers key to entitlement_manager_ids
403- if "entitlement_managers" in vals :
404- entitlement_managers = vals .pop ("entitlement_managers" )
405- if "entitlement_manager_ids" not in vals :
406- vals ["entitlement_manager_ids" ] = entitlement_managers
397+ # Set Default Program Manager
398+ vals .update (self ._get_program_manager (program_id ))
407399
408- vals .update ({"is_one_time_distribution" : rec .is_one_time_distribution })
400+ # Clean legacy aliases that are not real fields on spp.program
401+ vals .pop ("eligibility_managers" , None )
402+ vals .pop ("cycle_managers" , None )
403+ # Convert legacy entitlement_managers key to entitlement_manager_ids
404+ if "entitlement_managers" in vals :
405+ entitlement_managers = vals .pop ("entitlement_managers" )
406+ if "entitlement_manager_ids" not in vals :
407+ vals ["entitlement_manager_ids" ] = entitlement_managers
409408
410- # Complete the program data
411- program .update (vals )
409+ vals .update ({"is_one_time_distribution" : self .is_one_time_distribution })
412410
413- if rec . import_beneficiaries == "yes" or rec . is_one_time_distribution :
414- rec . program_wizard_import_beneficiaries ( program )
411+ # Complete the program data
412+ program . update ( vals )
415413
416- if rec .is_one_time_distribution :
417- program . create_new_cycle ( )
414+ if self . import_beneficiaries == "yes" or self .is_one_time_distribution :
415+ self . program_wizard_import_beneficiaries ( program )
418416
419- view_id = self .env .ref ("spp_programs.view_program_list_form" )
420- if rec .view_id :
421- view_id = rec .view_id
417+ if self .is_one_time_distribution :
418+ program .create_new_cycle ()
422419
423- program .view_id = view_id .id
420+ view_id = self .env .ref ("spp_programs.view_program_list_form" )
421+ if self .view_id :
422+ view_id = self .view_id
424423
425- # Open the newly created program
426- return {
427- "name" : _ ( "Programs" ),
428- "view_mode" : "form" ,
429- "res_model " : "spp.program " ,
430- "res_id " : program_id ,
431- "view_id " : view_id . id ,
432- "type " : "ir.actions.act_window" ,
433- "target" : "current" ,
434- }
424+ program . view_id = view_id . id
425+
426+ # Close modal and open program form using client action with async/await
427+ return {
428+ "type " : "ir.actions.client " ,
429+ "tag " : "open_program_close_modal" ,
430+ "params " : {
431+ "program_id " : program_id ,
432+ } ,
433+ }
435434
436435 def _get_default_eligibility_manager_val (self , program_id ):
437436 return {
0 commit comments