public virtual void create短期借款(int period, jk建设期借款还本付息 jk) { jk短期借款还本付息 j = new jk短期借款还本付息(); j.year = jk.sxh顺序号; j.year = period; lr利润 lr利润 = lrsheet利润表.lr利润list.Where(x => x.year == period).First(); lr利润.zcb总成本.jklx借款还本利息.jk短期借款 = j; lr利润.cal计算相关值(); //lrsheet利润表.lr利润list.Add(lr); if (lr利润.jlr净利润 < 0)//未来要调整这个判断,先写一个框架结构 { //j.qcjkye期初借款余额 //计算借款金额 if (period == 1)//如果是第一年 { j.qcjkye期初借款余额 = 0; j.qmjkye期末借款余额 = lr利润.zcb总成本.jklx借款还本利息.get本金汇总() - (lr利润.zcb总成本.tx摊销.tx摊销金额 + lr利润.zcb总成本.zj折旧.zje本期折旧额 + lr利润.jlr净利润); } else { lr利润 syn上一年利润 = lrsheet利润表.lr利润list.Where(x => x.year == period - 1).First(); jk短期借款还本付息 syn上一年短期借款 = syn上一年利润.zcb总成本.jklx借款还本利息.jk短期借款; j.qcjkye期初借款余额 = syn上一年短期借款.qmjkye期末借款余额; j.qcjkye期初借款余额 = lr利润.zcb总成本.jklx借款还本利息.jk短期借款.qcjkye期初借款余额; } j.dqfx当期付息 = j.qcjkye期初借款余额 * globalpara.jk短期借款利率; lr利润.cal计算相关值(); } }
protected override jk建设期借款还本付息 cal本期还本金额(int i, jk建设期借款还本付息 jk) { double hkzq还款周期 = globalpara.hkzq还款周期; jk.dqhb当期还本 = globalpara.jsqjk建设期借款利息 / hkzq还款周期; jk.dqhbfx当期还本付息 = jk.dqhb当期还本 + jk.dqfx当期付息; return(jk); }
public virtual List <jk建设期借款还本付息> exec() { List <jk建设期借款还本付息> jklist = new List <jk建设期借款还本付息>(); jk建设期借款还本付息 jkFirst = new jk建设期借款还本付息(); //第一年先进行设置,后面就是每一年的值 double jsqjk建设期借款 = globalpara.jsqjk建设期借款金额; int hkzq还款周期 = globalpara.hkzq还款周期; double rate = globalpara.jsqjk建设期借款利息; jkFirst.qmjkye期末借款余额 = globalpara.jsqjk建设期借款金额; jkFirst.sxh顺序号 = 1; jkFirst.year = 0;//实际上是建设期; jklist.Add(jkFirst); lrsheet利润表.jk还本付息表汇总Sheet.jk建设期借款还本付息list.Add(jkFirst); //后面在运营期间各年进行循环 for (int i = 1; i <= globalpara.yyq运营期; i++) { jk建设期借款还本付息 jk = new jk建设期借款还本付息(); if (i <= hkzq还款周期) { //取集合中顺序号最大的,然后取它的期末借款金额,然后把它作为年初的金额 jk.qcjkye期初借款余额 = jklist.OrderByDescending(x => x.sxh顺序号).First().qmjkye期末借款余额; jk.sxh顺序号 = jklist.OrderByDescending(x => x.sxh顺序号).First().sxh顺序号 + 1; jk.dqfx当期付息 = jk.qcjkye期初借款余额 * rate; //2个方法的差异,计算本金的时候有差异。把jk传入,是作为地址的方式传入,不是一个Copy值。 //只有int,string等基本类型的参数,是作为值传递,其他的是作为引用传递 //https://www.cnblogs.com/yhc99/p/9193973.html cal本期还本金额(i, jk);//计算得到jk的本金 jk.qmjkye期末借款余额 = jk.qcjkye期初借款余额 - jk.dqhb当期还本; lr利润 lr利润 = lrsheet利润表.lr利润list.Where(x => x.year == i).First(); lr利润.zcb总成本.jklx借款还本利息.jk建设期借款还本付息 = jk; //在这个插入,判断是否需要短期借款 create短期借款(i, jk); } else { //插入空值,但是年需要,便于后面进行统一的运算 //jk.year = i; } jklist.Add(jk); } return(jklist); }
protected override jk建设期借款还本付息 cal本期还本金额(int i, jk建设期借款还本付息 jk) { int hkzq还款周期 = globalpara.hkzq还款周期; // double dehbfxzr等额还本付息总额 = 0; //dehbfxzr等额还本付息总额 = cal等额还本付息总额(); if (hkzq还款周期 != i) { jk.dqhb当期还本 = dehbfxzr等额还本付息总额 - jk.dqfx当期付息; } if (hkzq还款周期 == i) { //最后一年的,当期还本付息的总额就不在采用A的值。 //采用本年的期初借款余额,去掉息,就是本。把2个相加,就是本息和 jk.dqhb当期还本 = jk.qcjkye期初借款余额; } jk.dqhbfx当期还本付息 = dehbfxzr等额还本付息总额; return(jk); }
protected virtual jk建设期借款还本付息 cal本期还本金额(int i, jk建设期借款还本付息 jk) { return(null); }