情景:当年1月1日,甲公司与乙公司签订购货合同,购入一台需要安装的特大型设备,合同约定分期付款,设备总价为900万元,每半年支付一次,每次支付90万,付款日期为6月30日和12月31日。假设六个月的折现率是10%。
计算现值按照10期,10%的折现率,折现到当前。
# 参数
n = 10 # 期数
pmt = 900000 # 每期贷款金额
r = 0.10 # 折现率
# 计算现值
present_value = 0
for i in range(1, n + 1):
present_value += pmt / ((1 + r) ** i)
print(f"这些贷款的现值总和是: {present_value:.2f}")
计算得到现值是5530110.40
账务处理按照在建工程5530110.40元,剩下的部分3,469,889.60被逐次分摊到不同的日期。
按照如下规则进行分摊,第i期的付款额为900,000,确认融资费用等于上期的应付本金乘以折现率,应付本金减少额为付款额减去确认的融资费用,当期应付本金等于上期的应付本金减去应付本金减少额
# 打印标题
print("日期,分期付款额,确认的融资费用,应付本金减少额,应付本金额")
# 打印第0期
print("第0期,未付,应付本金为 {:.2f}".format(outstanding_principal))
# 计算每期的分摊情况
for i in range(1, n + 1):
# 分期付款额
installment_payment = pmt
# 确认的融资费用
finance_cost = outstanding_principal * r
# 应付本金减少额
principal_reduction = installment_payment - finance_cost
# 应付本金额减少
outstanding_principal -= principal_reduction
# 打印每期的分摊情况
print("第{}期,分期付款额 {:.2f},确认的融资费用 {:.2f},应付本金减少额 {:.2f},应付本金额 {:.2f}".format(
i, installment_payment, finance_cost, principal_reduction, outstanding_principal
))
# 最后检查应付本金是否为0
if outstanding_principal != 0:
print("注意:应付本金未完全还清,剩余金额为 {:.2f}".format(outstanding_principal))
运行结果如下:
这样,就得到了每期的未确认融资费用。剩余的按照正确的会计处理即可。