def process(
        business: Business,  # pylint: disable=too-many-branches
        filing: Dict,
        filing_rec: Filing,
        filing_meta: FilingMeta):  # pylint: disable=too-many-branches
    """Process the incoming incorporation filing."""
    # Extract the filing information for incorporation
    incorp_filing = filing.get('filing', {}).get('incorporationApplication')
    is_correction = filing_rec.filing_type == 'correction'
    filing_meta.incorporation_application = {}

    if not incorp_filing:
        raise QueueException(
            f'IA legal_filing:incorporationApplication missing from {filing_rec.id}'
        )
    if business and not is_correction:
        raise QueueException(
            f'Business Already Exist: IA legal_filing:incorporationApplication {filing_rec.id}'
        )

    business_info_obj = incorp_filing.get('nameRequest')

    if is_correction:
        business_info.set_legal_name(business.identifier, business,
                                     business_info_obj)
    else:

        if filing_rec.colin_event_ids:
            corp_num = filing['filing']['business']['identifier']

        else:
            # Reserve the Corp Number for this entity
            corp_num = get_next_corp_num(business_info_obj['legalType'])
            if not corp_num:
                raise QueueException(
                    f'incorporationApplication {filing_rec.id} unable to get a business registration number.'
                )

        # Initial insert of the business record
        business = Business()
        business = business_info.update_business_info(corp_num, business,
                                                      business_info_obj,
                                                      filing_rec)
        business = _update_cooperative(incorp_filing, business, filing_rec)

        if nr_number := business_info_obj.get('nrNumber', None):
            filing_meta.incorporation_application = {
                **filing_meta.incorporation_application,
                **{
                    'nrNumber': nr_number,
                    'legalName': business_info_obj.get('legalName', None)
                }
            }

        if not business:
            raise QueueException(
                f'IA incorporationApplication {filing_rec.id}, Unable to create business.'
            )
Example #2
0
def process(business: Business, filing: Dict, filing_rec: Filing):
    # pylint: disable=too-many-locals; 1 extra
    """Process the incoming incorporation filing."""
    # Extract the filing information for incorporation
    incorp_filing = filing.get('incorporationApplication')
    is_correction = filing_rec.filing_type == 'correction'

    if not incorp_filing:
        raise QueueException(
            f'IA legal_filing:incorporationApplication missing from {filing_rec.id}'
        )
    if business and not is_correction:
        raise QueueException(
            f'Business Already Exist: IA legal_filing:incorporationApplication {filing_rec.id}'
        )

    business_info_obj = incorp_filing.get('nameRequest')

    if is_correction:
        business_info.set_legal_name(business.identifier, business,
                                     business_info_obj)
    else:
        # Reserve the Corp Number for this entity
        corp_num = get_next_corp_num(business_info_obj['legalType'])
        if not corp_num:
            raise QueueException(
                f'incorporationApplication {filing_rec.id} unable to get a business registration number.'
            )
        # Initial insert of the business record
        business = Business()
        business = business_info.update_business_info(corp_num, business,
                                                      business_info_obj,
                                                      filing_rec)
        if not business:
            raise QueueException(
                f'IA incorporationApplication {filing_rec.id}, Unable to create business.'
            )

    if offices := incorp_filing['offices']:
        update_offices(business, offices)
Example #3
0
    # update share structure and resolutions, if any
    with suppress(IndexError, KeyError, TypeError):
        share_structure = dpath.util.get(filing, '/alteration/shareStructure')
        shares.update_share_structure(business, share_structure)


def post_process(business: Business, filing: Filing, correction: bool = False):
    """Post processing activities for incorporations.

    THIS SHOULD NOT ALTER THE MODEL
    """
    if not correction and name_request.has_new_nr_for_alteration(
            business, filing.filing_json):
        name_request.consume_nr(business, filing,
                                '/filing/alteration/nameRequest/nrNumber')

    with suppress(IndexError, KeyError, TypeError):
        if err := business_profile.update_business_profile(
                business, filing.json['filing']['alteration']['contactPoint']):
            sentry_sdk.capture_message(
                f'Queue Error: Update Business for filing:{filing.id},error:{err}',
                level='error')

    # Alter the business name, if any
    with suppress(IndexError, KeyError, TypeError):
        business_json = dpath.util.get(filing.filing_json,
                                       '/filing/alteration/nameRequest')
        business_info.set_legal_name(business.identifier, business,
                                     business_json)