def generate_15g_report(for_member, for_user):
    fds = FDs()
    fds_for_member = fds.get_fds_with_first_name(first_name=for_member,
                                                 for_user=for_user)
    bank_wise_details, total_interest_all_branches = calculate_bank_wise_interest(
        fds_for_member)
    return get_formatted_report(bank_wise_details, total_interest_all_branches)
 def test_date_to_str(self):
     self.assertEqual('20190101',
                      FDs.date_to_str(datetime.datetime(2019, 1, 1)))
     self.assertEqual('20190102',
                      FDs.date_to_str(datetime.datetime(2019, 1, 2)))
     self.assertEqual('20190131',
                      FDs.date_to_str(datetime.datetime(2019, 1, 31)))
 def test_add_fd(self, mock_delete):
     fds = FDs(TestConfig)
     fds.delete_fd(fd_number='fd1',
                   bank_name='b1',
                   bank_branch='br1',
                   for_user='******')
     mock_delete.assert_called_with(fd_number='fd1',
                                    bank_name='b1',
                                    bank_branch='br1',
                                    for_user='******')
Example #4
0
def delete_fd(fd_number, bank_name, bank_branch):
    fds = FDs()
    fds.delete_fd(fd_number=fd_number,
                  bank_name=bank_name,
                  bank_branch=bank_branch,
                  for_user=current_user.username)
    flash(
        f'Deleted fd( {fd_number} ) from bank( {bank_name} ), branch( {bank_branch} ) successfully !!'
    )
    return redirect(url_for('fd'))
def delete_member(member):
    fds = FDs()
    if fds.fds_exists_for_member(member=member,
                                 for_user=current_user.username):
        flash(
            f'Member( {member} ) has first name / joint name in some FDs, first delete the FDs to delete this member.'
        )
        return redirect(url_for('allMembers'))

    members = Members()
    members.delete(member=member, for_user=current_user.username)
    flash(f'Deleted member( {member} ) successfully !!')
    return redirect(url_for('allMembers'))
Example #6
0
def get_maturing_fds(for_user, till_date):
    fds = []
    for fd in FDs().get_all_fds_till_date(for_user=for_user, till_date=till_date):
        fds.append({
            'bank_name': fd['bank_name'],
            'bank_branch': fd['bank_branch'],
            'first_name': fd['first_name'],
            'fd_number': fd['fd_number'],
            'end_date': fd['end_date'],
        })
    return fds
    def test_add_fd(self, mock_add):
        fds = FDs(TestConfig)
        fds.add(
            {
                'bank_name': 'bank1',
                'bank_branch': 'branch1',
                'first_name': 'FirstName',
                'joint_name': '',  # Optional
                'mode': 'Ei/Sur',
                'type': 'Quarterly',
                'interest_account': 'accountNumber1',  # Optional
                'fd_number': 'FdNumber1',
                'start_date': datetime.datetime(2019, 1, 1),
                'end_date': datetime.datetime(2020, 1, 2),
                'period': '1 year 1 day',
                'roi': 8.25,
                'principal_amount': 5000.0,
                'maturity_amount': 5000.0,
            },
            for_user='******')

        mock_add.assert_called_with(
            new_fd={
                'bank_name': 'bank1',
                'bank_branch': 'branch1',
                'first_name': 'FirstName',
                'joint_name': '',
                'mode': 'Ei/Sur',
                'type': 'Quarterly',
                'interest_account': 'accountNumber1',
                'fd_number': 'FdNumber1',
                'start_date': '20190101',
                'end_date': '20200102',
                'period': '1 year 1 day',
                'roi': 8.25,
                'principal_amount': 5000.0,
                'maturity_amount': 5000.0,
                'username': '******',
            })
Example #8
0
def fd():
    fds = FDs()
    banks = Banks()
    members = Members()
    bank_branches = banks.get_all_bank_branch_names(
        for_user=current_user.username)
    form = FDForm(
        banks.get_all_bank_branch_names(for_user=current_user.username),
        members.get_members_of_user(user=current_user.username))

    if form.validate_on_submit():
        fd = {
            'bank_name': form.bank_name.data,
            'bank_branch': form.bank_branch.data,
            'first_name': form.first_name.data,
            'joint_name': form.joint_name.data,
            'mode': form.mode.data,
            'type': form.type.data,
            'interest_account': form.interest_account.data,
            'fd_number': form.fd_number.data,
            'start_date': form.start_date.data,
            'end_date': form.end_date.data,
            'period': form.period.data,
            'roi': form.roi.data,
            'principal_amount': form.principal_amount.data,
            'maturity_amount': form.maturity_amount.data
        }
        fds.add(fd=fd, for_user=current_user.username)
        flash('New FD added successfully !!')
        return redirect(url_for('fd'))

    all_fds = fds.get_all_fds(current_user.username)
    append_serial_number(all_fds)
    return render_template('fd/fd.html',
                           title='Fixed Deposits',
                           form=form,
                           fds=all_fds,
                           branches=bank_branches,
                           total_fds=len(all_fds))
    def test_get_all_fds_till_date(self, mock_get_all_fds_till_date):
        fds = FDs(TestConfig)
        fd1 = {'bank_name': 'bank1', 'bank_branch': 'branch1', 'first_name': 'FirstName1',
               'joint_name': '', 'mode': 'Ei/Sur', 'type': 'Quarterly',
               'interest_account': 'accountNumber1', 'fd_number': 'FdNumber1',
               'start_date': '20190101', 'end_date': '20190501', 'period': '1 year 1 day',
               'roi': 8.25, 'principal_amount': 5000.0, 'maturity_amount': 5000.0, }
        fd2 = {'bank_name': 'bank2', 'bank_branch': 'branch2', 'first_name': 'FirstName2',
               'joint_name': '', 'mode': 'Ei/Sur', 'type': 'Quarterly',
               'interest_account': 'accountNumber1', 'fd_number': 'FdNumber2',
               'start_date': '20190101', 'end_date': '20190505', 'period': '1 year 1 day',
               'roi': 8.25, 'principal_amount': 5000.0, 'maturity_amount': 5000.0, }
        mock_get_all_fds_till_date.return_value = [fd1, fd2]

        self.assertEqual([
            {
                'bank_name': 'bank1', 'bank_branch': 'branch1', 'first_name': 'FirstName1',
                'fd_number': 'FdNumber1', 'end_date': '20190501',
            },{
                'bank_name': 'bank2', 'bank_branch': 'branch2', 'first_name': 'FirstName2',
                'fd_number': 'FdNumber2', 'end_date': '20190505',
            }
        ], get_maturing_fds(for_user='******', till_date='20190505'))
    def test_get_all_fds(self, mock_get_all_fds):
        fd1 = {
            'bank_name': 'bank1',
            'bank_branch': 'branch1',
            'first_name': 'FirstName',
            'joint_name': '',
            'mode': 'Ei/Sur',
            'type': 'Quarterly',
            'interest_account': 'accountNumber1',
            'fd_number': 'FdNumber1',
            'start_date': '20190101',
            'end_date': '20200102',
            'period': '1 year 1 day',
            'roi': 8.25,
            'principal_amount': 5000.0,
            'maturity_amount': 5000.0,
            'username': '******',
        }

        fd2 = {
            'bank_name': 'bank2',
            'bank_branch': 'branch2',
            'first_name': 'FirstName',
            'joint_name': '',
            'mode': 'Ei/Sur',
            'type': 'Quarterly',
            'interest_account': 'accountNumber2',
            'fd_number': 'FdNumber2',
            'start_date': '20190101',
            'end_date': '20200102',
            'period': '1 year 1 day',
            'roi': 8.25,
            'principal_amount': 5000.0,
            'maturity_amount': 5000.0,
            'username': '******',
        }

        fd3 = {
            'bank_name': 'bank2',
            'bank_branch': 'branch2',
            'first_name': 'FirstName',
            'joint_name': '',
            'mode': 'Ei/Sur',
            'type': 'Quarterly',
            'interest_account': 'accountNumber2',
            'fd_number': 'FdNumber3',
            'start_date': '20190101',
            'end_date': '20200102',
            'period': '1 year 1 day',
            'roi': 8.25,
            'principal_amount': 5000.0,
            'maturity_amount': 5000.0,
            'username': '******',
        }

        fd1_without_username = {
            'bank_name': 'bank1',
            'bank_branch': 'branch1',
            'first_name': 'FirstName',
            'joint_name': '',
            'mode': 'Ei/Sur',
            'type': 'Quarterly',
            'interest_account': 'accountNumber1',
            'fd_number': 'FdNumber1',
            'start_date': '20190101',
            'end_date': '20200102',
            'period': '1 year 1 day',
            'roi': 8.25,
            'principal_amount': 5000.0,
            'maturity_amount': 5000.0,
        }

        fd2_without_username = {
            'bank_name': 'bank2',
            'bank_branch': 'branch2',
            'first_name': 'FirstName',
            'joint_name': '',
            'mode': 'Ei/Sur',
            'type': 'Quarterly',
            'interest_account': 'accountNumber2',
            'fd_number': 'FdNumber2',
            'start_date': '20190101',
            'end_date': '20200102',
            'period': '1 year 1 day',
            'roi': 8.25,
            'principal_amount': 5000.0,
            'maturity_amount': 5000.0,
        }

        fd3_without_username = {
            'bank_name': 'bank2',
            'bank_branch': 'branch2',
            'first_name': 'FirstName',
            'joint_name': '',
            'mode': 'Ei/Sur',
            'type': 'Quarterly',
            'interest_account': 'accountNumber2',
            'fd_number': 'FdNumber3',
            'start_date': '20190101',
            'end_date': '20200102',
            'period': '1 year 1 day',
            'roi': 8.25,
            'principal_amount': 5000.0,
            'maturity_amount': 5000.0,
        }

        fds = FDs(TestConfig)
        mock_get_all_fds.return_value = [fd1, fd2, fd3]
        self.assertEqual(
            [fd1_without_username, fd2_without_username, fd3_without_username],
            fds.get_all_fds(for_user='******'))
 def test_fds_exists_for_member(self, mock_fds_exists_for_member):
     fds = FDs(TestConfig)
     fds.fds_exists_for_member(member='m1', for_user='******')
     mock_fds_exists_for_member.assert_called_with(member='m1',
                                                   for_user='******')