public string adddata_collect_shoufu(MODEL.M_data_collect M_data_collect, SqlConnection conn, SqlTransaction transaction)
{
StringBuilder result = new StringBuilder("");
DataTable dtfact = sqlhelp.getresult("select * from data_shoufu_fact where data_id = " + M_data_collect.Data_id + " order by id desc", conn, transaction).Tables[0];
DataTable dtcontract = sqlhelp.getresult("select * from data_shoufu_contract where data_id = " + M_data_collect.Data_id + " order by promise_date", conn, transaction).Tables[0];
MODEL.M_data_detail M_data_detail = B_data_detail.GetDataCreditInfo(M_data_collect.Data_id, conn, transaction);
MODEL.M_data_shoufu_fact M_data_shoufu_fact = new M_data_shoufu_fact();
M_data_shoufu_fact.Data_id = M_data_collect.Data_id;
M_data_shoufu_fact.Fact_date = M_data_collect.Fact_date;
M_data_shoufu_fact.Fact_money = M_data_collect.Fact_money;
M_data_shoufu_fact.Collect_id = M_data_collect.Id;
M_data_shoufu_fact.Remark = M_data_collect.Remark;
M_data_shoufu_fact.Createtime = DateTime.Now;
M_data_shoufu_fact.Updatetime = DateTime.Now;
M_data_shoufu_fact.Createuser = M_data_collect.Createuser;
if (dtfact.Rows.Count == 0)
{
result.Append(addfact(dtcontract, M_data_shoufu_fact, conn, transaction));
}
else
{
float left_debt = float.Parse(dtfact.Rows[0]["left_debt"].ToString());
int shoufu_id = Convert.ToInt32(dtfact.Rows[0]["shoufu_id"].ToString());
if (left_debt == 0)
{
DataTable dtcontractsurplus = new DataTable();
dtcontractsurplus = dtcontract.Clone();
DataRow[] drs = dtcontract.Select("id>" + shoufu_id + "");
for (int k = 0; k < drs.Length; k++)
{
dtcontractsurplus.ImportRow((DataRow)drs[k]);
}
result.Append(addfact(dtcontractsurplus, M_data_shoufu_fact, conn, transaction));
}
else
{
if (M_data_shoufu_fact.Fact_money < left_debt)
{
M_data_shoufu_fact.Shoufu_id = shoufu_id;
M_data_shoufu_fact.Left_debt = left_debt - M_data_shoufu_fact.Fact_money;
//DateTime promise_date = DateTime.Parse(dtfact.Rows[0]["fact_date"].ToString());
DateTime promise_date = DateTime.Parse((dtcontract.Select(" id=" + shoufu_id + ""))[0]["promise_date"].ToString());
if (M_data_shoufu_fact.Fact_date > promise_date)
{
//M_data_shoufu_fact.Late_punitive = M_data_shoufu_fact.Fact_date.Subtract(promise_date).Days * left_debt / 10000 * 3;
//M_data_shoufu_fact.Late_punitive = M_data_shoufu_fact.Fact_date.Subtract(promise_date).Days * M_data_shoufu_fact.Fact_money / 10000 * 3;
M_data_shoufu_fact.Late_punitive = commenBLL.GetPunitive(promise_date, M_data_shoufu_fact.Fact_date, M_data_shoufu_fact.Fact_money);
}
else
{
M_data_shoufu_fact.Late_punitive = 0;
}
D_data_excel.adddata_shoufu_fact(M_data_shoufu_fact, conn, transaction);
}
else
{
MODEL.M_data_shoufu_fact M_data_shoufu_fact1 = new M_data_shoufu_fact();
M_data_shoufu_fact1.Data_id = M_data_shoufu_fact.Data_id;
M_data_shoufu_fact1.Shoufu_id = shoufu_id;
M_data_shoufu_fact1.Collect_id = M_data_shoufu_fact.Collect_id;
M_data_shoufu_fact1.Left_debt = 0;
M_data_shoufu_fact1.Fact_date = M_data_shoufu_fact.Fact_date;
M_data_shoufu_fact1.Fact_money = left_debt;
M_data_shoufu_fact1.Createtime = M_data_shoufu_fact.Createtime;
M_data_shoufu_fact1.Updatetime = M_data_shoufu_fact.Updatetime;
M_data_shoufu_fact1.Createuser = M_data_shoufu_fact.Createuser;
M_data_shoufu_fact1.Remark = M_data_shoufu_fact.Remark;
//DateTime promise_date = DateTime.Parse(dtfact.Rows[0]["fact_date"].ToString());
DateTime promise_date = DateTime.Parse((dtcontract.Select(" id=" + shoufu_id + ""))[0]["promise_date"].ToString());
if (M_data_shoufu_fact1.Fact_date > promise_date)
{
//M_data_shoufu_fact1.Late_punitive = M_data_shoufu_fact1.Fact_date.Subtract(promise_date).Days * M_data_shoufu_fact1.Fact_money / 10000 * 3;
//M_data_shoufu_fact1.Late_punitive = M_data_shoufu_fact1.Fact_date.Subtract(promise_date).Days * M_data_shoufu_fact1.Fact_money / 10000 * 3;
M_data_shoufu_fact1.Late_punitive = commenBLL.GetPunitive(promise_date, M_data_shoufu_fact.Fact_date, M_data_shoufu_fact.Fact_money);
}
else
{
M_data_shoufu_fact1.Late_punitive = 0;
}
D_data_excel.adddata_shoufu_fact(M_data_shoufu_fact1, conn, transaction);
M_data_shoufu_fact.Fact_money -= left_debt;
DataTable dtcontractsurplus = new DataTable();
dtcontractsurplus = dtcontract.Clone();
DataRow[] drs = dtcontract.Select("id>" + shoufu_id + "");
for (int k = 0; k < drs.Length; k++)
{
dtcontractsurplus.ImportRow((DataRow)drs[k]);
}
result.Append(addfact(dtcontractsurplus, M_data_shoufu_fact, conn, transaction));
}
}
}
M_data_detail.Createtime = DateTime.Now;
M_data_detail.Total_shoufu_leftmoney = D_data.GetTotalShoufuLeftMoney(M_data_collect.Data_id, conn, transaction);
M_data_detail.Left_debt = M_data_detail.Total_shoufu_leftmoney + M_data_detail.Total_com_leftmoney;
M_data_detail.Total_leftmoney = M_data_detail.Left_debt + M_data_detail.Bank_left_debt + M_data_detail.Com_left_debt;
M_data_detail.ChangeStatus = B_data_detail.ChangeMoneyStatus(M_data_detail.ChangeStatus, "total_shoufu_leftmoney");
M_data_detail.ChangeStatus = B_data_detail.ChangeMoneyStatus(M_data_detail.ChangeStatus, "left_debt");
M_data_detail.ChangeStatus = B_data_detail.ChangeMoneyStatus(M_data_detail.ChangeStatus, "total_leftmoney");
D_data_detail.AddDataDetail(M_data_detail, conn, transaction);
DataTable dtfactnew = sqlhelp.getresult("select * from data_shoufu_fact where data_id = " + M_data_collect.Data_id + "", conn, transaction).Tables[0];
float moneyresult = B_data.updashou_fact(dtfactnew, M_data_collect.Late_Punitive, conn, transaction);
if (moneyresult > 0)
{
result.Append("罚息金额大于需要还的罚息金额,收款失败!");
}
return result.ToString();
}
private DataTable ExcelToDataTableFirstRowAsHeader(HSSFSheet sheet, HSSFFormulaEvaluator evaluator)
{
using (DataTable dt = new DataTable())
{
HSSFRow firstRow = sheet.GetRow(0) as HSSFRow;
int cellCount = GetCellCount(sheet);
for (int i = 0; i < cellCount; i++)
{
if (firstRow.GetCell(i) != null)
{
dt.Columns.Add(firstRow.GetCell(i).StringCellValue ?? string.Format("F{0}", i + 1), typeof(string));
}
else
{
dt.Columns.Add(string.Format("F{0}", i + 1).Trim(), typeof(string));
}
}
for (int i = 1; i <= sheet.LastRowNum; i++)
{
HSSFRow row = sheet.GetRow(i) as HSSFRow;
DataRow dr = dt.NewRow();
FillDataRowByHSSFRow(row, evaluator, ref dr);
dt.Rows.Add(dr);
}
dt.TableName = sheet.SheetName;
return dt;
}
}