Beispiel #1
0
    def update_account(self, name: str, cfs_account: CfsAccountModel, payment_info: Dict[str, Any]) -> CfsAccountModel:
        """Update account in CFS."""
        if str(payment_info.get('bankInstitutionNumber')) != cfs_account.bank_number or \
                str(payment_info.get('bankTransitNumber')) != cfs_account.bank_branch_number or \
                str(payment_info.get('bankAccountNumber')) != cfs_account.bank_account_number:
            # This means, PAD account details have changed. So update banking details for this CFS account
            # Call cfs service to add new bank info.
            bank_details = CFSService.update_bank_details(name=cfs_account.payment_account.auth_account_name,
                                                          party_number=cfs_account.cfs_party,
                                                          account_number=cfs_account.cfs_account,
                                                          site_number=cfs_account.cfs_site,
                                                          payment_info=payment_info)

            instrument_number = bank_details.get('payment_instrument_number', None)

            # Make the current CFS Account as INACTIVE in DB
            cfs_account.status = CfsAccountStatus.INACTIVE.value
            cfs_account.flush()

            # Create new CFS Account
            updated_cfs_account = CfsAccountModel()
            updated_cfs_account.bank_account_number = payment_info.get('bankAccountNumber')
            updated_cfs_account.bank_number = payment_info.get('bankInstitutionNumber')
            updated_cfs_account.bank_branch_number = payment_info.get('bankTransitNumber')
            updated_cfs_account.cfs_site = cfs_account.cfs_site
            updated_cfs_account.cfs_party = cfs_account.cfs_party
            updated_cfs_account.cfs_account = cfs_account.cfs_account
            updated_cfs_account.payment_account = cfs_account.payment_account
            updated_cfs_account.status = CfsAccountStatus.ACTIVE.value
            updated_cfs_account.payment_instrument_number = instrument_number
            updated_cfs_account.flush()
        return cfs_account
Beispiel #2
0
 def create_account(self, name: str, contact_info: Dict[str, Any], payment_info: Dict[str, Any],
                    **kwargs) -> CfsAccountModel:
     """Create an account for the PAD transactions."""
     # Create CFS Account model instance and store the bank details, set the status as PENDING
     cfs_account = CfsAccountModel()
     cfs_account.bank_number = payment_info.get('bankInstitutionNumber')
     cfs_account.bank_branch_number = payment_info.get('bankTransitNumber')
     cfs_account.bank_account_number = payment_info.get('bankAccountNumber')
     cfs_account.status = CfsAccountStatus.PENDING.value
     return cfs_account