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计算相关值(); } }
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); }
public lrsheet利润表 initlr利润表(lrsheet利润表 lrsheet) { for (int i = 1; i <= globalpara.yyq运营期; i++) { lr利润 lr = new lr利润(); lr.year = i; lr.revenue收入 = revenue收入List.Where(x => x.year == i).First(); lr.butie补贴收入 = butie补贴收入List.Where(x => x.year == i).First(); //总成本初始化 zcb总成本 zcb = new zcb总成本(); zcb.year = i; zcb.jycb经营成本 = jycb经营成本List.Where(x => x.year == i).First(); zcb.tx摊销 = txlist.Where(x => x.year == i).First(); zcb.zj折旧 = qzlist.Where(x => x.period == i).First(); jklx借款还本利息 jk = new jklx借款还本利息(); jk.year = i; zcb.jklx借款还本利息 = jk; zcb.cal计算相关参数(); lr.zcb总成本 = zcb; zcb总成本List.Add(zcb); //增值税初始化 zzs增值税 zzs增值税 = new zzs增值税(); if (i == 1) { zzs增值税.qc期初固定资产增值税可抵扣进行税额 = ass.kdk可抵扣固定资产进项税额; } zzs增值税.xxsdq当期销项税 = lr.revenue收入.revenue含税收入值 * globalpara.zzs增值税税率; zzs增值税.jxsdq当期进项税 = lr.zcb总成本.jycb经营成本.jy含进项税经营成本值 * globalpara.zzs增值税税率; zzs增值税.qc当期增值税余额_销项税减去进项税 = zzs增值税.xxsdq当期销项税 - zzs增值税.jxsdq当期进项税; zzs增值税List.Add(zzs增值税); if (zzs增值税.qc当期增值税余额_销项税减去进项税 <= 0) { zzs增值税.zzx当期增值税应纳税额 = 0; } if (zzs增值税.qc当期增值税余额_销项税减去进项税 > 0) {//已经考虑到本年累计进去,如果累计到本年值含本年,与本年进行比较,如果大于0,那么就 double value = zzs增值税List.Where(x => x.year <= i).Sum(y => y.qc当期增值税余额_销项税减去进项税); if (value > 0) { if (zzs增值税.qc当期增值税余额_销项税减去进项税 >= value) { //说明历史上已经补完负值,并且也不是今年补的,目前暂时不考虑每年的销项税小于进项税的情况, zzs增值税.zzx当期增值税应纳税额 = zzs增值税.qc当期增值税余额_销项税减去进项税; } else {//说明历史上的负值,是今年补的 zzs增值税.zzx当期增值税应纳税额 = zzs增值税.qc当期增值税余额_销项税减去进项税 - value; } } else { zzs增值税.zzx当期增值税应纳税额 = 0; } } zzs增值税.zzx当期增值税附加 = zzs增值税.zzx当期增值税应纳税额 * globalpara.zzs增值税附加综合税率; zzs增值税List.Add(zzs增值税); lr.zzs增值税 = zzs增值税; lr.lr利润list = lrsheet.lr利润list; //下面增加借款的内容 // lr.zcb总成本.jklx借款还本利息.jkldzj流动资金借款 = zcb总成本List.Where(x => x.year == i).First().jklx借款还本利息.jkldzj流动资金借款; //lr.zcb总成本.jklx借款还本利息.jk建设期借款还本付息 = zcb总成本List.Where(x => x.year == i).First().jklx借款还本利息.jk建设期借款还本付息; //lr.zcb总成本.jklx借款还本利息.jk短期借款 = zcb总成本List.Where(x => x.year == i).First().jklx借款还本利息.jk短期借款; lrsheet.lr利润list.Add(lr); } return(lrsheet); }