From 384368e69f73ca099b6f4041764b8896d7bf91ae Mon Sep 17 00:00:00 2001
From: leodube-aot <122323255+leodube-aot@users.noreply.github.com>
Date: Tue, 7 Nov 2023 11:26:33 -0800
Subject: [PATCH] 18370 Fix list of outputs AGM extension (#2291)
* Fix list of outputs AGM extension
* Update business schema version
* Update agm tests
* Fix failing agm extension unit test
---
.../letterOfAgmExtension.html | 13 ++++++
legal-api/requirements.txt | 1 +
.../requirements/bcregistry-libraries.txt | 2 +-
legal-api/src/legal_api/core/filing.py | 3 ++
legal-api/src/legal_api/core/meta/filing.py | 7 +++-
legal-api/src/legal_api/reports/report.py | 10 +++++
.../test_filing_documents.py | 40 +++++++++++++++++++
.../tests/unit/services/test_authorization.py | 2 +-
8 files changed, 74 insertions(+), 4 deletions(-)
create mode 100644 legal-api/report-templates/letterOfAgmExtension.html
diff --git a/legal-api/report-templates/letterOfAgmExtension.html b/legal-api/report-templates/letterOfAgmExtension.html
new file mode 100644
index 0000000000..00df5ea077
--- /dev/null
+++ b/legal-api/report-templates/letterOfAgmExtension.html
@@ -0,0 +1,13 @@
+[[macros.html]]
+
+
+
+ Letter of AGM Extension
+
+
+ [[common/style.html]]
+ [[common/styleLetterOverride.html]]
+
+
+
+
diff --git a/legal-api/requirements.txt b/legal-api/requirements.txt
index 326559699a..55d4af911d 100755
--- a/legal-api/requirements.txt
+++ b/legal-api/requirements.txt
@@ -61,3 +61,4 @@ PyPDF2==1.26.0
reportlab==3.6.12
html-sanitizer==1.9.3
git+https://github.com/bcgov/business-schemas.git@2.18.15#egg=registry_schemas
+
diff --git a/legal-api/requirements/bcregistry-libraries.txt b/legal-api/requirements/bcregistry-libraries.txt
index 97012c51ca..f20871c80b 100644
--- a/legal-api/requirements/bcregistry-libraries.txt
+++ b/legal-api/requirements/bcregistry-libraries.txt
@@ -1 +1 @@
-git+https://github.com/bcgov/business-schemas.git@2.18.14#egg=registry_schemas
+git+https://github.com/bcgov/business-schemas.git@2.18.15#egg=registry_schemas
diff --git a/legal-api/src/legal_api/core/filing.py b/legal-api/src/legal_api/core/filing.py
index b55022841e..107edc1404 100644
--- a/legal-api/src/legal_api/core/filing.py
+++ b/legal-api/src/legal_api/core/filing.py
@@ -57,6 +57,7 @@ class FilingTypes(str, Enum):
"""Render an Enum of all Filing Types."""
ADMIN_FREEZE = 'adminFreeze'
+ AGMEXTENSION = 'agmExtension'
AGMLOCATIONCHANGE = 'agmLocationChange'
ALTERATION = 'alteration'
AMALGAMATIONAPPLICATION = 'amalgamationApplication'
@@ -474,6 +475,7 @@ def get_document_list(business, # pylint: disable=too-many-locals disable=too-m
Filing.FilingTypes.REGISTRATION.value,
Filing.FilingTypes.CONSENTCONTINUATIONOUT.value,
Filing.FilingTypes.CONTINUATIONOUT.value,
+ Filing.FilingTypes.AGMEXTENSION.value,
Filing.FilingTypes.AGMLOCATIONCHANGE.value,
]
if filing.status == Filing.Status.PAID and \
@@ -508,6 +510,7 @@ def get_document_list(business, # pylint: disable=too-many-locals disable=too-m
no_legal_filings = [
Filing.FilingTypes.CONSENTCONTINUATIONOUT.value,
Filing.FilingTypes.CONTINUATIONOUT.value,
+ Filing.FilingTypes.AGMEXTENSION.value,
Filing.FilingTypes.AGMLOCATIONCHANGE.value,
]
if filing.filing_type not in no_legal_filings:
diff --git a/legal-api/src/legal_api/core/meta/filing.py b/legal-api/src/legal_api/core/meta/filing.py
index 440ca5631c..a25ad66001 100644
--- a/legal-api/src/legal_api/core/meta/filing.py
+++ b/legal-api/src/legal_api/core/meta/filing.py
@@ -85,13 +85,16 @@ class FilingTitles(str, Enum):
'agmExtension': {
'name': 'agmExtension',
'title': 'AGM Extension',
- 'displayName': 'AGM Extension',
+ 'displayName': 'Request for AGM Extension',
'codes': {
'BC': 'AGMDT',
'BEN': 'AGMDT',
'ULC': 'AGMDT',
'CC': 'AGMDT'
- }
+ },
+ 'additional': [
+ {'types': 'BC, BEN, CC, ULC', 'outputs': ['letterOfAgmExtension', ]},
+ ],
},
'agmLocationChange': {
'name': 'agmLocationChange',
diff --git a/legal-api/src/legal_api/reports/report.py b/legal-api/src/legal_api/reports/report.py
index b63ed0a7cd..d6b8e85c1c 100644
--- a/legal-api/src/legal_api/reports/report.py
+++ b/legal-api/src/legal_api/reports/report.py
@@ -272,6 +272,8 @@ def _format_filing_json(self, filing): # pylint: disable=too-many-branches, too
self._format_transition_data(filing)
elif self._report_key == 'dissolution':
self._format_dissolution_data(filing)
+ elif self._report_key == 'letterOfAgmExtension':
+ self._format_agm_extension_data(filing)
elif self._report_key == 'letterOfAgmLocationChange':
self._format_agm_location_change_data(filing)
else:
@@ -583,6 +585,10 @@ def _format_consent_continuation_out_data(self, filing):
with suppress(KeyError):
self._format_address(filing['offices']['registeredOffice']['mailingAddress'])
+ def _format_agm_extension_data(self, filing):
+ # FUTURE: format logic for letter of agm extension
+ return
+
def _format_agm_location_change_data(self, filing):
filing['agm_year'] = self._filing.filing_json['filing'].get('agmLocationChange', {}).get('year', '')
@@ -1174,6 +1180,10 @@ class ReportMeta: # pylint: disable=too-few-public-methods
'filingDescription': 'Letter Of Consent',
'fileName': 'letterOfConsent'
},
+ 'letterOfAgmExtension': {
+ 'filingDescription': 'Letter Of AGM Extension',
+ 'fileName': 'letterOfAgmExtension'
+ },
'letterOfAgmLocationChange': {
'filingDescription': 'Letter Of AGM Location Change',
'fileName': 'letterOfAgmLocationChange'
diff --git a/legal-api/tests/unit/resources/v2/test_business_filings/test_filing_documents.py b/legal-api/tests/unit/resources/v2/test_business_filings/test_filing_documents.py
index 7e7c34c80b..df50a8b700 100644
--- a/legal-api/tests/unit/resources/v2/test_business_filings/test_filing_documents.py
+++ b/legal-api/tests/unit/resources/v2/test_business_filings/test_filing_documents.py
@@ -29,6 +29,8 @@
from flask import current_app
from registry_schemas.example_data import (
ALTERATION_FILING_TEMPLATE,
+ AGM_EXTENSION,
+ AGM_LOCATION_CHANGE,
ANNUAL_REPORT,
CHANGE_OF_ADDRESS,
CHANGE_OF_DIRECTORS,
@@ -879,6 +881,44 @@ def test_unpaid_filing(session, client, jwt):
},
HTTPStatus.OK, '2017-10-01'
),
+ ('ben_agmExtension_completed', 'BC7654321',
+ Business.LegalTypes.BCOMP.value, 'agmExtension', AGM_EXTENSION,
+ None, None, Filing.Status.COMPLETED,
+ {'documents': {
+ 'letterOfAgmExtension': 'https://LEGAL_API_BASE_URL/api/v2/businesses/BC7654321/filings/documents/letterOfAgmExtension',
+ 'receipt': f'{base_url}/api/v2/businesses/BC7654321/filings/1/documents/receipt'
+ }
+ },
+ HTTPStatus.OK, '2017-10-01'
+ ),
+ ('ben_agmLocationChange_paid', 'BC7654321',
+ Business.LegalTypes.BCOMP.value, 'agmExtension', AGM_EXTENSION,
+ None, None, Filing.Status.PAID,
+ {'documents': {
+ 'receipt': f'{base_url}/api/v2/businesses/BC7654321/filings/1/documents/receipt'
+ }
+ },
+ HTTPStatus.OK, '2017-10-01'
+ ),
+ ('ben_agmLocationChange_completed', 'BC7654321',
+ Business.LegalTypes.BCOMP.value, 'agmLocationChange', AGM_LOCATION_CHANGE,
+ None, None, Filing.Status.COMPLETED,
+ {'documents': {
+ 'letterOfAgmLocationChange': 'https://LEGAL_API_BASE_URL/api/v2/businesses/BC7654321/filings/documents/letterOfAgmLocationChange',
+ 'receipt': f'{base_url}/api/v2/businesses/BC7654321/filings/1/documents/receipt'
+ }
+ },
+ HTTPStatus.OK, '2017-10-01'
+ ),
+ ('ben_agmLocationChange_paid', 'BC7654321',
+ Business.LegalTypes.BCOMP.value, 'agmLocationChange', AGM_LOCATION_CHANGE,
+ None, None, Filing.Status.PAID,
+ {'documents': {
+ 'receipt': f'{base_url}/api/v2/businesses/BC7654321/filings/1/documents/receipt'
+ }
+ },
+ HTTPStatus.OK, '2017-10-01'
+ ),
('ben_changeOfAddress', 'BC7654321', Business.LegalTypes.BCOMP.value,
'changeOfAddress', CHANGE_OF_ADDRESS, None, None, Filing.Status.COMPLETED,
{'documents': {'noticeOfArticles': f'{base_url}/api/v2/businesses/BC7654321/filings/1/documents/noticeOfArticles',
diff --git a/legal-api/tests/unit/services/test_authorization.py b/legal-api/tests/unit/services/test_authorization.py
index 2ad238474b..c21553f949 100644
--- a/legal-api/tests/unit/services/test_authorization.py
+++ b/legal-api/tests/unit/services/test_authorization.py
@@ -162,7 +162,7 @@ class FilingKey(str, Enum):
'name': 'registrarsNotation'},
FilingKey.REGISTRARS_ORDER: {'displayName': "Registrar's Order", 'feeCode': 'NOFEE', 'name': 'registrarsOrder'},
FilingKey.SPECIAL_RESOLUTION: {'displayName': 'Special Resolution', 'feeCode': 'SPRLN', 'name': 'specialResolution'},
- FilingKey.AGM_EXTENSION: {'displayName': 'AGM Extension', 'feeCode': 'AGMDT', 'name': 'agmExtension'},
+ FilingKey.AGM_EXTENSION: {'displayName': 'Request for AGM Extension', 'feeCode': 'AGMDT', 'name': 'agmExtension'},
FilingKey.AGM_LOCATION_CHANGE: {'displayName': 'AGM Location Change', 'feeCode': 'AGMLC', 'name': 'agmLocationChange'},
FilingKey.ALTERATION: {'displayName': 'Alteration', 'feeCode': 'ALTER', 'name': 'alteration'},
FilingKey.CONSENT_CONTINUATION_OUT: {'displayName': '6-Month Consent to Continue Out', 'feeCode': 'CONTO',