Exemple #1
0
 void AddKeyValue(ref List <ItemsLeftStru> RemainKeyValue, ItemsLeftStru myKV)
 {
     //
     for (int i = 0; i < RemainKeyValue.Count; i++)
     {
         if (RemainKeyValue[i].ItemdID == myKV.ItemdID)
         {
             RemainKeyValue[i].ItemsValue += myKV.ItemsValue;
             return;
         }
     }
     RemainKeyValue.Add(myKV);
 }
Exemple #2
0
        //填数据
        void FillReportData(DataSet FDataSet)
        {
            int      i_ProjectID    = Convert.ToInt32(comboBoxProject.SelectedValue.ToString());
            int      i_CompanyID    = Convert.ToInt32(comboBoxCompany.SelectedValue.ToString());
            int      i_SNumber      = 1;                //租赁结算顺序号
            DateTime dSDate         = dateTimePickerSDate.Value.Date;
            DateTime dEDate         = dateTimePickerEDate.Value.Date;
            TimeSpan tTS            = dEDate.Subtract(dSDate);
            int      i_Days         = tTS.Days + 1;             //结余时租赁天数
            LeaseHT  tLeaseHT       = BLL.LeaseBLL.GetLeaseHT(i_ProjectID, i_CompanyID);
            int      i_IncludeSDate = tLeaseHT.IncludeSDate;    //租金包含开始日
            int      i_IncludeEDate = tLeaseHT.IncludeEDate;    //租金包含结束日
            string   s_BillCycle    = textBoxBillCycle.Text;    //结算周期
            string   s_CalMethod    = "";                       //计算方式

            if (i_IncludeSDate == 0 && i_IncludeEDate == 0)
            {
                s_CalMethod = "倒扣计算法,头尾都不算";
            }
            if (i_IncludeSDate == 1 && i_IncludeEDate == 0)
            {
                s_CalMethod = "倒扣计算法,算头不算尾";
            }
            if (i_IncludeSDate == 1 && i_IncludeEDate == 1)
            {
                s_CalMethod = "倒扣计算法,既算头又算尾";
            }
            if (i_IncludeSDate == 0 && i_IncludeEDate == 1)
            {
                s_CalMethod = "倒扣计算法,算尾不算头";
            }
            List <ItemsLeftStru> RemainKeyValue = new List <ItemsLeftStru>();
//			myKV.ItemdID = 1;
//			myKV.ItemsName = "asdd";
//			myKV.ItemsValue = 12.80;
//			RemainKeyValue.Add(myKV);


            //1.填LeaseAccount表
            DataRow dr = FDataSet.Tables["LeaseAccount"].NewRow();

            dr["BillID"]      = 10000;
            dr["ProjectID"]   = i_ProjectID;
            dr["ProjectName"] = comboBoxProject.Text;
            dr["CompanyID"]   = i_CompanyID;
            dr["CompanyName"] = comboBoxCompany.Text;
            dr["BillCycle"]   = s_BillCycle;
            dr["CalMethod"]   = s_CalMethod;
            FDataSet.Tables["LeaseAccount"].Rows.Add(dr);

            //2.填LeaseAccountList表
            //2.1填结余租赁项
            DataSet tds = BLL.LeaseBLL.GetLeaseAccountLeft(tLeaseHT.HTID);

            foreach (DataRow drtmp in tds.Tables[0].Rows)
            {
                dr = FDataSet.Tables["LeaseAccountList"].NewRow();
                int        i_ItemsID  = Convert.ToInt32(drtmp["ItemsID"]);
                LeaseItems tLeaseItem = BLL.LeaseBLL.GetLeaseItem(i_ItemsID);
                dr["ListID"]       = i_SNumber;
                dr["SNumber"]      = i_SNumber;
                dr["BillID"]       = 10000;
                dr["Abstract"]     = tLeaseItem.MName + " 上期结余";
                dr["SDate"]        = dSDate;
                dr["EDate"]        = dEDate;
                dr["LeaseUnit"]    = tLeaseItem.LeaseUnit;
                dr["LeaseQuality"] = drtmp["QualityLeft"];
                dr["LeasePrice"]   = tLeaseItem.LeasePrice;
                dr["LeaseDays"]    = i_Days;
                dr["LeaseAmt"]     = Convert.ToDecimal(dr["LeaseQuality"]) * Convert.ToDecimal(dr["LeasePrice"]) * i_Days;

                FDataSet.Tables["LeaseAccountList"].Rows.Add(dr);

                ItemsLeftStru myKV = new ItemsLeftStru();
                myKV.ItemdID    = tLeaseItem.ItemsID;
                myKV.ItemsName  = tLeaseItem.MName;
                myKV.ItemsUnit  = tLeaseItem.LeaseUnit;
                myKV.ItemsValue = Convert.ToDouble(dr["LeaseQuality"]);
                AddKeyValue(ref RemainKeyValue, myKV);

                i_SNumber++;
            }
            //2.2按照时间顺序计算各项租金
            tds = BLL.LeaseBLL.GetLeaseRecord2(i_ProjectID, i_CompanyID);               //未结算的记录
            foreach (DataRow drtmp in tds.Tables[0].Rows)
            {
                //检查租赁日期是否在结算日期范围
                DateTime tLeaseDate = Convert.ToDateTime(drtmp["LeaseDate"]);
                if (tLeaseDate >= dSDate && tLeaseDate <= dEDate)
                {
                    dr = FDataSet.Tables["LeaseAccountList"].NewRow();
                    int        i_ItemsID  = Convert.ToInt32(drtmp["ItemsID"]);
                    LeaseItems tLeaseItem = BLL.LeaseBLL.GetLeaseItem(i_ItemsID);



                    dr["ListID"]  = i_SNumber;
                    dr["SNumber"] = i_SNumber;
                    dr["BillID"]  = 10000;
                    if (drtmp["Abstract"].ToString().Length != 0)
                    {
                        dr["Abstract"] = tLeaseItem.MName + "(" + drtmp["Abstract"] + ")";
                    }
                    else
                    {
                        dr["Abstract"] = tLeaseItem.MName;
                    }
                    DateTime dt1 = Convert.ToDateTime(drtmp["LeaseDate"]);
                    dr["SDate"] = dt1;
                    dr["EDate"] = dEDate;
                    TimeSpan tTS1  = dEDate.Subtract(dt1);
                    int      tDays = tTS1.Days;

                    if (Convert.ToDecimal(drtmp["Quality"]) > 0)
                    {
                        if (i_IncludeSDate == 1)
                        {
                            tDays++;
                        }
                    }
                    else
                    {
                        if (i_IncludeEDate != 1)
                        {
                            tDays++;
                        }
                    }

                    if (tLeaseItem.LeaseClass == 0)
                    {
                        //租赁项
                        dr["LeaseUnit"]    = tLeaseItem.LeaseUnit;
                        dr["LeaseQuality"] = drtmp["Quality"];
                        dr["LeasePrice"]   = tLeaseItem.LeasePrice;
                        dr["LeaseDays"]    = tDays;
                        dr["LeaseAmt"]     = Convert.ToDecimal(dr["LeaseQuality"]) * Convert.ToDecimal(dr["LeasePrice"]) * tDays;

                        dr["LoadingUnit"]    = tLeaseItem.LoadingUnit;
                        dr["LoadingFactor"]  = tLeaseItem.LoadingFactor;
                        dr["LoadingQuality"] = Math.Abs(Convert.ToDecimal(dr["LeaseQuality"]) / Convert.ToDecimal(dr["LoadingFactor"]));
                        dr["LoadingPrice"]   = tLeaseItem.LoadingPrice;
                        dr["LoadingAmt"]     = Math.Abs(Convert.ToDecimal(dr["LoadingPrice"]) * Convert.ToDecimal(dr["LoadingQuality"]));

                        if (Convert.ToDecimal(drtmp["Quality"]) < 0)
                        {
                            dr["RepairUnit"]    = tLeaseItem.RepairUnit;
                            dr["RepairFactor"]  = tLeaseItem.RepairFactor;
                            dr["RepairQuality"] = Math.Abs(Convert.ToDecimal(dr["LeaseQuality"]) / Convert.ToDecimal(dr["RepairFactor"]));
                            dr["RepairPrice"]   = tLeaseItem.RepairPrice;
                            dr["RepairAmt"]     = Math.Abs(Convert.ToDecimal(dr["RepairPrice"]) * Convert.ToDecimal(dr["RepairQuality"]));
                        }

                        ItemsLeftStru myKV = new ItemsLeftStru();
                        myKV.ItemdID    = tLeaseItem.ItemsID;
                        myKV.ItemsName  = tLeaseItem.MName;
                        myKV.ItemsUnit  = tLeaseItem.LeaseUnit;
                        myKV.ItemsValue = Convert.ToDouble(dr["LeaseQuality"]);
                        AddKeyValue(ref RemainKeyValue, myKV);
                    }
                    else
                    {
                        //单独结算项
                        dr["LeaseUnit"]    = tLeaseItem.LeaseUnit;
                        dr["OtherUnit"]    = tLeaseItem.LeaseUnit;
                        dr["OtherQuality"] = drtmp["Quality"];
                        dr["OtherPrice"]   = tLeaseItem.LeasePrice;
                        dr["OtherAmt"]     = Convert.ToDecimal(dr["OtherPrice"]) * Convert.ToDecimal(dr["OtherQuality"]);
                    }
                    FDataSet.Tables["LeaseAccountList"].Rows.Add(dr);



                    i_SNumber++;
                }
            }
            //2.3将计算出来的余量数据填写好
            foreach (ItemsLeftStru itemLS in RemainKeyValue)
            {
                dr                = FDataSet.Tables["LeaseAccountLeft"].NewRow();
                dr["ItemsID"]     = itemLS.ItemdID;
                dr["MName"]       = itemLS.ItemsName;
                dr["LeaseUnit"]   = itemLS.ItemsUnit;
                dr["QualityLeft"] = itemLS.ItemsValue;
                FDataSet.Tables["LeaseAccountLeft"].Rows.Add(dr);
            }
        }