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',