我试图实现的是根据所选择的付款频率来预测付款日期。例如,当用户选择每月的支付频率时,系统应该能够预测12个月的支付日期,第一个支付日期应该是date_start,然后递增30以预测下一个支付日期。这是我代码。
def action_compute_amortization(self):
"""This automatically create the installment the employee need to pay to
company based on payment start date and the no of installments.
"""
for rec in self:
rec.amortization_lines.unlink()
date_start = rec.date_from
days_in_a_year = rec.coverage_term
payment_freq = rec.premium_frequency
frequency : dict = {
'monthly':round(days_in_a_year/30),
'quarterly': round(days_in_a_year/90),
'biannually': round(days_in_a_year/182),
'yearly': round(days_in_a_year/days_in_a_year)
}
term = frequency.get(payment_freq,days_in_a_year)
amount = rec.policy_risk_ids.cover_ids.premium_currency
for i in range(1,days_in_a_year + 1):
while term > 0:
payment_date = date_start
if payment_freq == "monthly":
payment_date = date_utils.add(date_start, days=30)
elif payment_freq == "quarterly":
payment_date = date_utils.add(date_start, days=90)
elif payment_freq == "biannually":
payment_date = date_utils.add(date_start, days=182)
elif payment_freq == "yearly":
payment_date = date_start
else:
payment_date = date_utils.add(date_start, hours=24)
self.env['epgi.policy.amortization'].create({
'payment_date': payment_date,
'amount': amount,
'insured_id': rec.insured_id.id,
'policy_id': rec.id})
term -= 1
return True
但我没有得到理想的结果,因为我只得到立即下一个付款日期。但我需要的日期_开始是第一期付款日期,然后下一个付款日期,如果每月应增加旧日期30天,等等。
我会很感激所有的帮助。
2条答案
按热度按时间lnvxswe21#
我对你代码中的参数含义有一些问题。
所以我实现了一个简单的示例展示给大家,希望能对大家有所帮助。
下面是我的代码,它将计算并记录365天内的所有payment_date,deadDays的值可以任意指定
gzszwxb42#
所以,如果将来有人遇到这个问题,这就是我解决它的方法。