Browse Source

Started updating rules so EFSS1 and AFTL are optional

pull/172/head
Michael Olund 5 years ago
parent
commit
48c1fad8b5
5 changed files with 66 additions and 115 deletions
  1. +18
    -0
      edivorce/apps/core/migrations/0026_auto_20201028_1741.py
  2. +3
    -2
      edivorce/apps/core/models.py
  3. +22
    -87
      edivorce/apps/core/tests/test_filing_documents.py
  4. +11
    -23
      edivorce/apps/core/utils/efiling_documents.py
  5. +12
    -3
      vue/src/utils/forms.js

+ 18
- 0
edivorce/apps/core/migrations/0026_auto_20201028_1741.py View File

@ -0,0 +1,18 @@
# Generated by Django 2.2.15 on 2020-10-29 00:41
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0025_remove_bceiduser_is_bcsc'),
]
operations = [
migrations.AlterField(
model_name='document',
name='doc_type',
field=models.CharField(blank=True, max_length=5, null=True),
),
]

+ 3
- 2
edivorce/apps/core/models.py View File

@ -120,7 +120,7 @@ class Document(models.Model):
file = models.FileField(upload_to=redis.generate_unique_filename, storage=redis.RedisStorage())
""" File temporarily stored in Redis """
doc_type = models.CharField(max_length=4, null=True, blank=True)
doc_type = models.CharField(max_length=5, null=True, blank=True)
""" CEIS Document Type Code (2-4 letters) """
party_code = models.IntegerField(default=0)
@ -149,7 +149,8 @@ class Document(models.Model):
'AFDO': "Affidavit - Desk Order Divorce Form (F38)",
'AFTL': "Affidavit of Translation Form",
'CSA': "Child Support Affidavit (F37)",
'EFSS': "Electronic Filing Statement (F96)",
'EFSS1': "Electronic Filing Statement for Translation (F96)",
'EFSS2': "Electronic Filing Statement for Affadivits (F96)",
'MC': "Proof of Marriage",
'NCV': "Identification of Applicant (VSA 512)",
'NJF': "Notice of Joint Family Claim (F1)",


+ 22
- 87
edivorce/apps/core/tests/test_filing_documents.py View File

@ -24,8 +24,6 @@ class FilingLogic(TestCase):
def test_initial_forms_to_file_in_person(self):
def assert_package_1_needed():
self.create_response('original_marriage_certificate', 'NO')
self.create_response('where_were_you_married_country', 'Canada')
self.create_response('where_were_you_married_prov', 'BC')
# Base forms required
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
@ -39,16 +37,11 @@ class FilingLogic(TestCase):
# Marriage certificate required
self.create_response('original_marriage_certificate', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 2)
self.assertIn({'doc_type': doc_type("proof of marriage"), 'party_code': 0}, uploaded)
# Affidavit of translation required
self.create_response('where_were_you_married_prov', 'QC')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 3)
self.assertEqual(len(uploaded), 4)
self.assertIn({'doc_type': doc_type("affidavit of translation"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing statement for translation"), 'party_code': 1}, uploaded)
self.assertIn({'doc_type': doc_type("proof of marriage"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("joint divorce proceedings"), 'party_code': 0}, uploaded)
self.create_response('how_to_sign', 'Together')
self.create_response('signing_location', 'In-person')
@ -68,27 +61,19 @@ class FilingLogic(TestCase):
assert_package_1_needed()
def test_initial_forms_to_file_both_virtual(self):
def assert_package_1_2_3_needed(with_efss_spouse=False):
def assert_package_1_2_3_needed():
# No conditional forms
self.create_response('children_of_marriage', 'NO')
self.create_response('name_change_you', 'NO')
self.create_response('name_change_spouse', 'NO')
self.create_response('original_marriage_certificate', 'NO')
self.create_response('where_were_you_married_country', 'Canada')
self.create_response('where_were_you_married_prov', 'BC')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
doc_count = len(uploaded)
if with_efss_spouse:
self.assertEqual(doc_count, 4)
else:
self.assertEqual(doc_count, 3)
self.assertEqual(doc_count, 2)
self.assertIn({'doc_type': doc_type("draft final order"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("joint divorce proceedings"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing"), 'party_code': 1}, uploaded)
if with_efss_spouse:
self.assertIn({'doc_type': doc_type("electronic filing"), 'party_code': 2}, uploaded)
self.assertEqual(len(generated), 3)
self.assertIn({'doc_type': doc_type("notice of joint family claim"), 'form_number': 1}, generated)
@ -117,37 +102,23 @@ class FilingLogic(TestCase):
self.create_response('original_marriage_certificate', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), doc_count + 4)
self.assertEqual(len(uploaded), doc_count + 6)
self.assertIn({'doc_type': doc_type("proof of marriage"), 'party_code': 0}, uploaded)
# Affidavit of translation + F96 required
self.create_response('where_were_you_married_prov', 'QC')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), doc_count + 5)
self.assertIn({'doc_type': doc_type("affidavit of translation"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing statement for translation"), 'party_code': 1}, uploaded)
self.create_response('how_to_sign', 'Together')
self.create_response('signing_location', 'Virtual')
assert_package_1_2_3_needed()
self.create_response('how_to_sign', 'Separately')
self.create_response('signing_location_you', 'Virtual')
self.create_response('signing_location_spouse', 'Virtual')
assert_package_1_2_3_needed(with_efss_spouse=True)
def test_initial_forms_to_file_you_virtual_spouse_in_person(self):
def assert_package_1_2_needed():
# No conditional forms
self.create_response('original_marriage_certificate', 'NO')
self.create_response('where_were_you_married_country', 'Canada')
self.create_response('where_were_you_married_prov', 'BC')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 3)
self.assertIn({'doc_type': doc_type("electronic filing"), 'party_code': 1}, uploaded)
self.assertEqual(len(uploaded), 2)
self.assertIn({'doc_type': doc_type("draft final order"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("joint divorce proceedings"), 'party_code': 0}, uploaded)
@ -160,28 +131,21 @@ class FilingLogic(TestCase):
self.create_response('children_of_marriage', 'YES')
self.create_response('has_children_under_19', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 4)
self.assertEqual(len(uploaded), 3)
self.assertIn({'doc_type': doc_type("agreement as to annual income"), 'party_code': 0}, uploaded)
self.create_response('want_which_orders', '["Other orders"]')
self.create_response('name_change_you', 'YES')
self.create_response('name_change_spouse', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 5)
self.assertEqual(len(uploaded), 4)
self.assertIn({'doc_type': doc_type("identification of applicant"), 'party_code': 1}, uploaded)
# Marriage certificate required
self.create_response('original_marriage_certificate', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 6)
self.assertIn({'doc_type': doc_type("proof of marriage"), 'party_code': 0}, uploaded)
# Affidavit of translation required
self.create_response('where_were_you_married_prov', 'QC')
uploaded, generated = forms_to_file(self.questions_dict, initial=True)
self.assertEqual(len(uploaded), 7)
self.assertIn({'doc_type': doc_type("proof of marriage"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("affidavit of translation"), 'party_code': 0}, uploaded)
self.create_response('how_to_sign', 'Separately')
@ -197,8 +161,10 @@ class FilingLogic(TestCase):
uploaded, generated = forms_to_file(self.questions_dict, initial=False)
self.assertEqual(len(uploaded), 1)
self.assertEqual(len(uploaded), 3)
self.assertIn({'doc_type': doc_type("desk order divorce form"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing statement for affadivits"), 'party_code': 1}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing statement for affadivits"), 'party_code': 2}, uploaded)
self.assertEqual(len(generated), 0)
self.create_response('children_of_marriage', 'YES')
@ -206,7 +172,7 @@ class FilingLogic(TestCase):
uploaded, generated = forms_to_file(self.questions_dict, initial=False)
self.assertEqual(len(uploaded), 2)
self.assertEqual(len(uploaded), 4)
self.assertIn({'doc_type': doc_type("child support affidavit"), 'party_code': 0}, uploaded)
def test_final_forms_to_file_separately_virtually(self):
@ -217,9 +183,11 @@ class FilingLogic(TestCase):
uploaded, generated = forms_to_file(self.questions_dict, initial=False)
self.assertEqual(len(uploaded), 2)
self.assertEqual(len(uploaded), 4)
self.assertIn({'doc_type': doc_type("desk order divorce form"), 'party_code': 1}, uploaded)
self.assertIn({'doc_type': doc_type("desk order divorce form"), 'party_code': 2}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing statement for affadivits"), 'party_code': 1}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing statement for affadivits"), 'party_code': 2}, uploaded)
self.assertEqual(len(generated), 0)
self.create_response('children_of_marriage', 'YES')
@ -227,43 +195,10 @@ class FilingLogic(TestCase):
uploaded, generated = forms_to_file(self.questions_dict, initial=False)
self.assertEqual(len(uploaded), 4)
self.assertIn({'doc_type': doc_type("child support affidavit"), 'party_code': 1}, uploaded)
self.assertIn({'doc_type': doc_type("child support affidavit"), 'party_code': 2}, uploaded)
def test_final_forms_to_file_you_virtual_spouse_in_person(self):
self.create_response('how_to_sign', 'Separately')
self.create_response('signing_location_you', 'Virtual')
self.create_response('signing_location_spouse', 'In-person')
# No conditional forms
self.create_response('children_of_marriage', 'NO')
uploaded, generated = forms_to_file(self.questions_dict, initial=False)
self.assertEqual(len(uploaded), 2)
self.assertIn({'doc_type': doc_type("desk order divorce form"), 'party_code': 1}, uploaded)
self.assertIn({'doc_type': doc_type("desk order divorce form"), 'party_code': 2}, uploaded)
self.assertEqual(len(generated), 0)
# Conditional forms
self.create_response('children_of_marriage', 'YES')
self.create_response('has_children_under_19', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=False)
self.assertEqual(len(uploaded), 4)
self.assertEqual(len(uploaded), 6)
self.assertIn({'doc_type': doc_type("child support affidavit"), 'party_code': 1}, uploaded)
self.assertIn({'doc_type': doc_type("child support affidavit"), 'party_code': 2}, uploaded)
self.create_response('want_which_orders', '["Other orders"]')
self.create_response('name_change_you', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=False)
self.assertEqual(len(uploaded), 4)
self.create_response('name_change_spouse', 'YES')
uploaded, generated = forms_to_file(self.questions_dict, initial=False)
self.assertEqual(len(uploaded), 5)
self.assertIn({'doc_type': doc_type("identification of applicant"), 'party_code': 2}, uploaded)
def test_final_forms_to_file_in_person(self):
self.create_response('how_to_sign', 'Together')
self.create_response('signing_location', 'In-person')
@ -273,8 +208,8 @@ class FilingLogic(TestCase):
uploaded, generated = forms_to_file(self.questions_dict, initial=False)
self.assertEqual(len(uploaded), 4)
self.assertIn({'doc_type': doc_type("electronic filing"), 'party_code': 1}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing"), 'party_code': 2}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing statement for affadivits"), 'party_code': 1}, uploaded)
self.assertIn({'doc_type': doc_type("electronic filing statement for affadivits"), 'party_code': 2}, uploaded)
self.assertIn({'doc_type': doc_type("desk order divorce form"), 'party_code': 0}, uploaded)
self.assertIn({'doc_type': doc_type("draft final order"), 'party_code': 0}, uploaded)


+ 11
- 23
edivorce/apps/core/utils/efiling_documents.py View File

@ -20,16 +20,14 @@ def forms_to_file(responses_dict, initial=False):
has_children = derived['has_children_of_marriage']
provide_marriage_certificate = responses_dict.get('original_marriage_certificate') == 'YES'
married_in_canada = responses_dict.get('where_were_you_married_country') == 'Canada'
marriage_province = responses_dict.get('where_were_you_married_prov', '').strip().upper()
married_in_quebec = married_in_canada and marriage_province.lower().startswith('q')
if initial:
generated.append({'doc_type': 'NJF', 'form_number': 1})
if provide_marriage_certificate:
uploaded.append({'doc_type': 'MC', 'party_code': 0})
if married_in_quebec:
uploaded.append({'doc_type': 'AFTL', 'party_code': 0})
uploaded.append({'doc_type': 'AFTL', 'party_code': 0})
uploaded.append({'doc_type': 'EFSS1', 'party_code': 1})
if signing_location_both == 'In-person' or signing_location_you == 'In-person':
# claimant 1 is signing with a commissioner
@ -40,7 +38,6 @@ def forms_to_file(responses_dict, initial=False):
generated.append({'doc_type': 'RFO', 'form_number': 35})
generated.append({'doc_type': 'RCP', 'form_number': 36})
uploaded.append({'doc_type': 'OFI', 'party_code': 0})
uploaded.append({'doc_type': 'EFSS', 'party_code': 1})
uploaded.append({'doc_type': 'RDP', 'party_code': 0})
if has_children:
uploaded.append({'doc_type': 'AAI', 'party_code': 0})
@ -52,9 +49,6 @@ def forms_to_file(responses_dict, initial=False):
generated.append({'doc_type': 'RFO', 'form_number': 35})
generated.append({'doc_type': 'RCP', 'form_number': 36})
uploaded.append({'doc_type': 'OFI', 'party_code': 0})
uploaded.append({'doc_type': 'EFSS', 'party_code': 1})
if how_to_sign == 'Separately':
uploaded.append({'doc_type': 'EFSS', 'party_code': 2})
uploaded.append({'doc_type': 'RDP', 'party_code': 0})
if has_children:
uploaded.append({'doc_type': 'AAI', 'party_code': 0})
@ -66,30 +60,24 @@ def forms_to_file(responses_dict, initial=False):
return [], []
else: # Final Filing
if signing_location_both == 'Virtual':
if signing_location_both == 'Virtual' and how_to_sign == 'Together':
# if both parties have signed virtually and signing together
if has_children:
uploaded.append({'doc_type': 'CSA', 'party_code': 0})
uploaded.append({'doc_type': 'AFDO', 'party_code': 0})
uploaded.append({'doc_type': 'EFSS2', 'party_code': 1})
uploaded.append({'doc_type': 'EFSS2', 'party_code': 2})
elif signing_location_you == 'Virtual' and signing_location_spouse == 'Virtual':
elif signing_location_you == 'Virtual' and signing_location_spouse == 'Virtual' and how_to_sign == 'Separately':
# both parties have signed virtually and signing separately
if has_children:
uploaded.append({'doc_type': 'CSA', 'party_code': 1})
uploaded.append({'doc_type': 'AFDO', 'party_code': 1})
uploaded.append({'doc_type': 'EFSS2', 'party_code': 1})
if has_children:
uploaded.append({'doc_type': 'CSA', 'party_code': 2})
uploaded.append({'doc_type': 'AFDO', 'party_code': 2})
elif signing_location_you == 'Virtual' and signing_location_spouse == 'In-person':
if has_children:
uploaded.append({'doc_type': 'CSA', 'party_code': 1})
uploaded.append({'doc_type': 'AFDO', 'party_code': 1})
if has_children:
uploaded.append({'doc_type': 'CSA', 'party_code': 2})
uploaded.append({'doc_type': 'AFDO', 'party_code': 2})
if name_change_spouse:
uploaded.append({'doc_type': 'NCV', 'party_code': 2})
uploaded.append({'doc_type': 'EFSS2', 'party_code': 2})
elif (signing_location_both == 'In-person' or signing_location_you == 'In-person' or signing_location_spouse == 'In-person') and how_to_file == 'Online':
# at least one party has signed with a commissioner and Filing Online
@ -99,8 +87,8 @@ def forms_to_file(responses_dict, initial=False):
uploaded.append({'doc_type': 'CSA', 'party_code': 0})
uploaded.append({'doc_type': 'AFDO', 'party_code': 0})
uploaded.append({'doc_type': 'OFI', 'party_code': 0})
uploaded.append({'doc_type': 'EFSS', 'party_code': 1})
uploaded.append({'doc_type': 'EFSS', 'party_code': 2})
uploaded.append({'doc_type': 'EFSS2', 'party_code': 1})
uploaded.append({'doc_type': 'EFSS2', 'party_code': 2})
if has_children:
uploaded.append({'doc_type': 'AAI', 'party_code': 0})
if name_change_you:


+ 12
- 3
vue/src/utils/forms.js View File

@ -16,6 +16,7 @@ export default {
preText: "Scan and upload the sworn",
help:
"The Affidavit of Translation is an affidavit which is sworn by a translator before a notary, lawyer or commissioner for taking Affidavits. The original certificate of marriage should be exhibited to the Affidavit of Translation together with the translation of the translator.",
optional: "Required only if your marriage certificate is NOT in English",
},
CSA: {
name: "Child Support Affidavit (F37)",
@ -23,7 +24,15 @@ export default {
help:
"This form gives facts about your children and child support, including the order you're asking the court for. You must also attach your separation agreement or court orders about children to this form as exhibits. - Required swearing/affiming and signatures by both you and your spouse in front of a commissioner.",
},
EFSS: {
EFSS1: {
name: "Electronic Filing Statement (F96)",
preText: "Upload the signed and scanned",
help:
"This form is used to confirm that the document you are filing electronically shows your original signature and is a true copy of the original paper version of the document. - Requires signature by both you and your spouse (but not a signature in front of a commissioner)",
postText: "for your Affidavit of Translation form",
optional: "Required only if your marriage certificate is NOT in English",
},
EFSS2: {
name: "Electronic Filing Statement (F96)",
preText: "Upload the signed and scanned",
help:
@ -46,7 +55,7 @@ export default {
preText: "auto",
help:
"This form starts your divorce proceeding. It gives the court details about you and your spouse, your marriage and separation, and what you're asking the court for. - Does not require signatures when filed online.",
},
},
OFI: {
name: "Draft Final Order Form (F52)",
preText: "Upload the signed and scanned",
@ -58,7 +67,7 @@ export default {
preText: "auto",
help:
"This form is completed by registry staff after your application has been reviewed by them. It shows the judge that your application has been checked and is complete. - Does not require signatures of you or your spouse.",
},
},
RDP: {
name: "Registration of Joint Divorce Proceedings (JUS280)",
preText: "Complete, scan and upload the",


Loading…
Cancel
Save