Ejemplo n.º 1
0
    def make_repayment_schedule(self):
        self.repayment_schedule = []
        payment_date = self.disbursement_date
        balance_amount = self.loan_amount

        while (balance_amount > 0):
            interest_amount = balance_amount * float(
                self.rate_of_interest) / (12 * 100)
            principal_amount = self.monthly_repayment_amount - interest_amount
            balance_amount = balance_amount + interest_amount - self.monthly_repayment_amount

            if balance_amount < 0:
                principal_amount += balance_amount
                balance_amount = 0.0

            total_payment = principal_amount + interest_amount

            self.append(
                "repayment_schedule", {
                    "payment_date": payment_date,
                    "principal_amount": principal_amount,
                    "interest_amount": round(interest_amount),
                    "total_payment": total_payment,
                    "balance_loan_amount": round(balance_amount)
                })

            next_payment_date = add_months(payment_date, 1)
            payment_date = next_payment_date
Ejemplo n.º 2
0
    def set_missing_values(self):
        from fm.api import from_en_to_es

        if not self.customer_cedula:
            self.customer_cedula = frappe.db.get_value("Customer",
                                                       self.customer, "cedula")

        if not self.posting_date_str:
            # ok, let's validate if the posting date is a string
            if isinstance(self.posting_date, unicode):
                # it is a string, so let's convert to a datetime object
                self.posting_date = datetime.strptime(self.posting_date,
                                                      "%Y-%m-%d")

            frappe.errprint(type(self.posting_date))
            self.posting_date_str = '{0}, {4} ({1:%d}) del mes de {2} del año {3} ({1:%Y})'.format(
                from_en_to_es("{0:%A}".format(self.posting_date)),
                self.posting_date,
                from_en_to_es("{0:%B}".format(self.posting_date)),
                frappe.utils.num2words(self.posting_date.year,
                                       lang='es').upper(),
                frappe.utils.num2words(self.posting_date.day,
                                       lang='es').upper())

            # print "{}".format(self.posting_date_str)
            self.end_date = add_months(self.posting_date,
                                       self.repayment_periods)

            self.end_date_str = '{0}, {4} ({1:%d}) del mes de {2} del año {3} ({1:%Y})'.format(
                from_en_to_es("{0:%A}".format(self.end_date)), self.end_date,
                from_en_to_es("{0:%B}".format(self.end_date)),
                frappe.utils.num2words(self.end_date.year, lang='es').upper(),
                frappe.utils.num2words(self.end_date.day, lang='es').upper())

            self.posting_date = self.posting_date.strftime("%Y-%m-%d")
Ejemplo n.º 3
0
Archivo: loan.py Proyecto: Lewinta/SWAT
    def set_missing_values(self):
        from fm.api import from_en_to_es

        if not self.customer_cedula:
            self.customer_cedula = frappe.db.get_value("Customer",
                                                       self.customer, "cedula")

        for row in self.repayment_schedule:
            if isinstance(row.fecha, basestring):
                row.fecha_day = row.fecha.split("-")[2]
                row.fecha_year = row.fecha.split("-")[0]
            else:
                row.fecha_day = row.fecha.day
                row.fecha_year = row.fecha.year

        if not self.posting_date_str:
            # ok, let's validate if the posting date is a string
            if isinstance(self.posting_date, basestring):
                # it is a string, so let's convert to a datetime object
                self.posting_date = datetime.strptime(self.posting_date,
                                                      "%Y-%m-%d")

            self.posting_date_str = '{0}, {4} ({1:%d}) del mes de {2} del año {3} ({1:%Y})'.format(
                from_en_to_es("{0:%A}".format(self.posting_date)),
                self.posting_date,
                from_en_to_es("{0:%B}".format(self.posting_date)),
                frappe.utils.num2words(self.posting_date.year,
                                       lang='es').upper(),
                frappe.utils.num2words(self.posting_date.day,
                                       lang='es').upper())

            self.end_date = add_months(self.posting_date,
                                       self.repayment_periods)

            self.end_date_str = '{0}, {4} ({1:%d}) del mes de {2} del año {3} ({1:%Y})'.format(
                from_en_to_es("{0:%A}".format(self.end_date)), self.end_date,
                from_en_to_es("{0:%B}".format(self.end_date)),
                frappe.utils.num2words(self.end_date.year, lang='es').upper(),
                frappe.utils.num2words(self.end_date.day, lang='es').upper())

            self.posting_date = self.posting_date.strftime("%Y-%m-%d")