def convert_all_interests_till(loan, posting_date=today(), disable_make_interest=False, cancel=0, recalculate=0): from frappe.utils import cint, get_first_day, get_last_day, add_months from frappe.permissions import get_roles if 'Loan Manager' not in get_roles(frappe.session.user): frappe.throw('Insufficient permission') if cint(cancel): return delete_gl_entries(voucher_type='Loan', voucher_no=loan) if cint(recalculate): delete_gl_entries(voucher_type='Loan', voucher_no=loan) loan = frappe.get_doc('Loan', loan) def get_dates(start_date, end_date): from_date = getdate(start_date) to_date = getdate(end_date) while from_date <= to_date: yield from_date from_date = add_months(from_date, 1) effective_date = getdate('2017-08-01') start_date = get_first_day( add_months( loan.posting_date \ if loan.posting_date > effective_date else effective_date, 1 ) ) def generate(d): amount = loan.convert_interest_to_principal(d) loan.make_interest(d, amount) return d return map(generate, get_dates(start_date, posting_date))
def get_roles(self): """get list of roles""" if not self.roles: self.roles = get_roles(self.name) return self.roles