@@ -89,6 +89,12 @@ def is_archive_form_needed(dossier):
8989 return True
9090
9191
92+ def is_automatically_set_end_date_enabled ():
93+ return api .portal .get_registry_record (
94+ 'automatically_set_end_date' ,
95+ IDossierResolveProperties )
96+
97+
9298class ValidResolverNamesVocabularyFactory (object ):
9399 """Return a vocabulary that contains the names of all named-adapters
94100 registered as IDossierResolver for IDossierMarker.
@@ -341,7 +347,11 @@ def resolve(self, end_date=None, auto_close_tasks=False, **kwargs):
341347 elif is_archive_form_needed (self .context ) and not end_date :
342348 raise TypeError
343349
344- end_date = end_date or self .context .earliest_possible_end_date ()
350+ if end_date is None :
351+ end_date = self .context .earliest_possible_end_date ()
352+ elif is_automatically_set_end_date_enabled ():
353+ end_date = max (end_date , self .context .earliest_possible_end_date ())
354+
345355 self ._recursive_resolve (
346356 self .context , end_date , triggering_dossier = True , ** kwargs )
347357
@@ -607,7 +617,8 @@ def _recursive_date_validation(self, dossier):
607617 # invalid. In this case, should allow the resolving the main dossier
608618 # anyway, and correct the invalid end date during dossier resolution.
609619 if not dossier .is_resolved () and not dossier .has_valid_enddate ():
610- self ._invalid_dates .append (dossier .title )
620+ if not is_automatically_set_end_date_enabled ():
621+ self ._invalid_dates .append (dossier .title )
611622
612623 # recursively check subdossiers
613624 subdossiers = dossier .get_subdossiers (depth = 1 )
0 commit comments