2020from flask .globals import request_ctx
2121from flask_babel import _
2222
23- from business_model .models import Business , CourtOrder , Filing , PartyRole
23+ from business_model .models import Business , CourtOrder , Filing , Jurisdiction , PartyRole
24+ from business_model .models .types .filings import FilingTypes
2425from legal_api .core .filing_helper import is_special_resolution_correction_by_filing_json
2526from legal_api .errors import Error
2627from legal_api .services import STAFF_ROLE , SYSTEM_ROLE , NaicsService
2728from legal_api .services .filings .validations .alteration import validate_type_change
28- from legal_api .services .filings .validations .amalgamation_out import validate_amalgamation_out_date
2929from legal_api .services .filings .validations .common_validations import (
30+ is_same_str ,
3031 validate_court_order ,
3132 validate_foreign_jurisdiction ,
3233 validate_name_request ,
3334 validate_offices_addresses ,
35+ validate_out_date ,
3436 validate_parties_addresses ,
3537 validate_parties_names ,
3638 validate_pdf ,
4345 validate_continuation_in_expro_business_in_colin ,
4446 validate_continuation_in_foreign_jurisdiction ,
4547)
46- from legal_api .services .filings .validations .continuation_out import validate_continuation_out_date
4748from legal_api .services .filings .validations .incorporation_application import (
4849 validate_coop_parties_mailing_address ,
4950 validate_roles ,
@@ -173,8 +174,8 @@ def _validate_corps_correction(business: Business, filing_dict, legal_type, msg)
173174 if filing_dict .get ("filing" , {}).get ("correction" , {}).get ("courtOrder" , None ):
174175 msg .extend (court_order_validation (filing_dict ))
175176
176- msg .extend (_validate_continuation_in_correction (filing_dict , filing_type , legal_type ))
177- msg .extend (_validate_out_correction (filing_dict , filing_type ))
177+ msg .extend (_validate_continuation_in_correction (filing_dict , filing_type , legal_type , business ))
178+ msg .extend (_validate_out_correction (filing_dict , filing_type , business ))
178179 msg .extend (_validate_amalgamation_correction (filing_dict , filing_type , business ))
179180 msg .extend (_validate_court_orders_correction (filing_dict , business ))
180181
@@ -208,7 +209,9 @@ def _validate_court_orders_correction(filing_dict, business: Business):
208209 if next ((o for o in court_orders_db if o ["filingId" ] == corrected_filing_id ), None ):
209210 msg .append ({"error" : _ ("Only one court order can be added per filing." ), "path" : path })
210211
211- is_file_or_details_required = (filing_dict ["filing" ]["correction" ]["correctedFilingType" ] == "courtOrder" )
212+ is_file_or_details_required = (
213+ filing_dict ["filing" ]["correction" ]["correctedFilingType" ] == FilingTypes .COURTORDER
214+ )
212215 new_court_orders .append (order )
213216 else :
214217 msg .append ({"error" : _ ("Filing Id does not match corrected filing Id." ), "path" : path })
@@ -245,25 +248,35 @@ def _validate_amalgamation_correction(filing_dict, filing_type, business: Busine
245248 msg .append ({"error" : _ ("Can only correct foreign businesses." ), "path" : path })
246249 continue
247250
248- msg .extend (
249- validate_foreign_jurisdiction (
250- ting_json ["foreignJurisdiction" ],
251- f"{ path } /foreignJurisdiction" ,
252- is_region_bc_valid = True ,
253- is_region_for_us_required = False
251+ # Skip to allow unmodified invalid migrated data
252+ if (
253+ not is_same_str (ting .foreign_jurisdiction , ting_json ["foreignJurisdiction" ]["country" ]) or
254+ not is_same_str (ting .foreign_jurisdiction_region , ting_json ["foreignJurisdiction" ].get ("region" ))
255+ ):
256+ msg .extend (
257+ validate_foreign_jurisdiction (
258+ ting_json ["foreignJurisdiction" ],
259+ f"{ path } /foreignJurisdiction" ,
260+ is_region_for_us_required = False
261+ )
254262 )
255- )
256263 return msg
257264
258265
259- def _validate_continuation_in_correction (filing_dict , filing_type , legal_type ):
266+ def _validate_continuation_in_correction (filing_dict , filing_type , legal_type , business : Business ):
260267 msg = []
261268 if continuation_in := filing_dict ["filing" ][filing_type ].get ("continuationIn" ):
269+ jurisdiction = Jurisdiction .get_continuation_in_jurisdiction (business .id )
270+ skip_jurisdiction = ( # Skip to allow unmodified invalid migrated data
271+ is_same_str (jurisdiction .country , continuation_in .get ("country" )) and
272+ is_same_str (jurisdiction .region , continuation_in .get ("region" ))
273+ )
262274 msg .extend (validate_continuation_in_foreign_jurisdiction (
263275 legal_type ,
264276 continuation_in ,
265277 f"/filing/{ filing_type } /continuationIn" ,
266- skip_affidavit = True
278+ skip_affidavit = True ,
279+ skip_jurisdiction = skip_jurisdiction
267280 ))
268281 msg .extend (validate_continuation_in_expro_business_in_colin (
269282 continuation_in .get ("expro" ),
@@ -273,14 +286,21 @@ def _validate_continuation_in_correction(filing_dict, filing_type, legal_type):
273286 return msg
274287
275288
276- def _validate_out_correction (filing_dict , filing_type ):
289+ def _validate_out_correction (filing_dict , filing_type , business ):
277290 msg = []
278- if continuation_out := filing_dict ["filing" ][filing_type ].get ("continuationOut" ):
279- msg .extend (validate_continuation_out_date (filing_dict , f"/filing/{ filing_type } /continuationOut/date" ))
280- msg .extend (validate_foreign_jurisdiction (continuation_out , f"/filing/{ filing_type } /continuationOut" ))
281- elif amalgamation_out := filing_dict ["filing" ][filing_type ].get ("amalgamationOut" ):
282- msg .extend (validate_amalgamation_out_date (filing_dict , f"/filing/{ filing_type } /amalgamationOut/date" ))
283- msg .extend (validate_foreign_jurisdiction (amalgamation_out , f"/filing/{ filing_type } /amalgamationOut" ))
291+ corrected_filing_type = filing_dict ["filing" ]["correction" ]["correctedFilingType" ]
292+ if (
293+ corrected_filing_type in [FilingTypes .CONTINUATIONOUT , FilingTypes .AMALGAMATIONOUT ]
294+ and (out := filing_dict ["filing" ][filing_type ].get (corrected_filing_type ))
295+ ):
296+ if ( # Skip to allow unmodified invalid migrated data
297+ not is_same_str (business .jurisdiction , out .get ("country" )) or
298+ not is_same_str (business .foreign_jurisdiction_region , out .get ("region" ))
299+ ):
300+ msg .extend (validate_foreign_jurisdiction (out , f"/filing/{ filing_type } /{ corrected_filing_type } " ))
301+
302+ msg .extend (validate_out_date (filing_dict , f"/filing/{ filing_type } /{ corrected_filing_type } /date" ))
303+
284304 return msg
285305
286306
0 commit comments