Пример #1
0
        void ButtonSaveAddClick(object sender, EventArgs e)
        {
            //保存数据
            DataGridViewSelectedRowCollection dsc = dataGridView1.SelectedRows;

            foreach (DataGridViewRow row in dsc)
            {
                string  ss       = row.Cells["RateID"].Value + "\n";
                int     i_RateID = Convert.ToInt32(row.Cells["RateID"].Value.ToString());
                WyRates tNew     = new WyRates();
                tNew.RateID = i_RateID;
                tNew.WyID   = i_WyID;
                BLL.WyInfosBLL.AddWyRate(tNew);
            }
            this.Close();
        }
Пример #2
0
        //添加新的
        public static void AddWyRate(WyRates tNew)
        {
            ISession     session = NHibernateHelper.sessionFactory.OpenSession();
            ITransaction tx      = session.BeginTransaction();

            try
            {
                session.Save(tNew);
                tx.Commit();
                session.Close();
            }
            catch (Exception e)
            {
                Debug.Assert(false, e.Message);
                tx.Rollback();
                session.Close();
            }
        }
Пример #3
0
        //删除
        public static void DelWyRate(int i_WyRateID)
        {
            //ISessionFactory sessionFactory = new Configuration().Configure().BuildSessionFactory();
            ISession     session  = NHibernateHelper.OpenSession();
            ITransaction tx       = session.BeginTransaction();
            WyRates      toDelete = session.Get <WyRates>(i_WyRateID);

            try
            {
                session.Delete(toDelete);
                tx.Commit();
                session.Close();
            }
            catch (Exception e)
            {
                Debug.Assert(false, e.Message);
                tx.Rollback();
                session.Close();
            }
        }
Пример #4
0
        //单独计费
        public static void CalSingleJF(string s_PeriodNo, string s_CustomerID, Label lStatus)
        {
            //1.先查是否能计费,只要有1笔记录有【已收费】或【免收】
            Object[] parms = new object[2];
            parms[0] = new object();
            parms[0] = Convert.ToInt32(s_CustomerID);

            parms[1] = new object();
            parms[1] = s_PeriodNo;


            int i_rtn = Convert.ToInt32(SQLiteHelper.ExecuteScalar("SELECT Count(*) FROM ChargeDetail WHERE WyID IN (SELECT WyID FROM WyInfos WHERE CustomerID = @CustomerID ) AND (ChargeStatus = '已收费' OR ChargeStatus = '免收') AND PeriodNo = @PeriodNo ", parms));

            if (i_rtn > 0)
            {
                MessageBox.Show("当前计费周期已经有收费完成,不能计费!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            //2.将表计量的数据填充到ChargeDetail
            lStatus.Text = "【计量表计费生成...】";
            ISession     session = NHibernateHelper.OpenSession();
            ITransaction tx      = session.BeginTransaction();
            DataSet      ds      = new DataSet();

            ds = SQLiteHelper.ExecuteDataSet("SELECT RID FROM MeterReading WHERE RStatus='计量计算' AND WyID IN (SELECT WyID FROM WyInfos WHERE CustomerID = @CustomerID )  AND PeriodNo = @PeriodNo ORDER BY MeterClass", parms);
            DataRow[] drs;
            drs = ds.Tables[0].Select("1=1");
            try
            {
                for (int i = 0; i < drs.Length; i++)
                {
                    int i_RID = Convert.ToInt32(drs[i]["RID"].ToString());
                    //检查ChargeDetail中是否有此表计量数据
                    MeterReading tMeterReading = session.Get <MeterReading>(i_RID);
                    lStatus.Text = "【计量表计费生成】:" + tMeterReading.MeterName;
                    Rates tRate = new Rates();
                    if (tMeterReading.RateID != null)
                    {
                        tRate = session.Get <Rates>(tMeterReading.RateID);
                    }
                    else
                    {
                        tRate           = new Rates();
                        tRate.RateUnit  = "";
                        tRate.RateValue = 0.0m;
                    }
                    IQuery query = session.CreateQuery("FROM ChargeDetail WHERE RID = ? AND PeriodNo = ?");
                    query.SetParameter(0, tMeterReading.RID);
                    query.SetParameter(1, s_PeriodNo);

                    IList <ChargeDetail> eList = query.List <ChargeDetail>();
                    if (eList.Count == 0)
                    {
                        int i_Share = 0;
                        //没有表计量记录
                        ChargeDetail tNew = new ChargeDetail();
                        tNew.PeriodNo     = s_PeriodNo;
                        tNew.WyID         = tMeterReading.WyID;
                        tNew.WyName       = tMeterReading.WyName;
                        tNew.ChargeName   = "表计量费用";
                        tNew.ChargeStatus = "已计费";
                        tNew.ChargeUnit   = tRate.RateUnit;
                        if (tMeterReading.MeterCanSharing == 1)
                        {
                            //分摊量要计算
                            tNew.ChargeNum = Convert.ToDecimal(tMeterReading.TotalNum);
                            i_Share        = Convert.ToInt32(tMeterReading.ShareNum);
                        }
                        else
                        {
                            //分摊量不计算
                            tNew.ChargeNum = Convert.ToDecimal(tMeterReading.TotalNum - tMeterReading.ShareNum);
                            i_Share        = 0;
                        }
                        tNew.ChargePrice = Convert.ToDecimal(tMeterReading.RateValue);
                        tNew.ChargeYS    = tNew.ChargeNum * tNew.ChargePrice;
                        tNew.ChargeSS    = 0.0m;
                        tNew.ChargeDate  = DateTime.Now;
                        tNew.RID         = tMeterReading.RID;
                        tNew.Abstract    = "表【" + tMeterReading.MeterName + "】计量:自 "
                                           + tMeterReading.StartReading.ToString()
                                           + " 至 " + tMeterReading.EndReading.ToString()
                                           + "止,调整【" + tMeterReading.AdjustNum.ToString()
                                           + "】,分摊【" + i_Share.ToString() + "】";


                        session.Save(tNew);
                    }
                    else
                    {
                        //有表计量记录
                        int          i_Share = 0;
                        ChargeDetail tOld    = session.Get <ChargeDetail>(eList[0].CDNo);
                        tOld.PeriodNo     = s_PeriodNo;
                        tOld.WyID         = tMeterReading.WyID;
                        tOld.WyName       = tMeterReading.WyName;
                        tOld.ChargeName   = "表计量费用";
                        tOld.ChargeStatus = "已计费";
                        tOld.ChargeUnit   = tRate.RateUnit;
                        if (tMeterReading.MeterCanSharing == 1)
                        {
                            //分摊量要计算
                            tOld.ChargeNum = Convert.ToDecimal(tMeterReading.TotalNum);
                            i_Share        = Convert.ToInt32(tMeterReading.ShareNum);
                        }
                        else
                        {
                            //分摊量不计算
                            tOld.ChargeNum = Convert.ToDecimal(tMeterReading.TotalNum - tMeterReading.ShareNum);
                            i_Share        = 0;
                        }
                        tOld.ChargePrice = Convert.ToDecimal(tMeterReading.RateValue);
                        tOld.ChargeYS    = tOld.ChargeNum * tOld.ChargePrice;
                        tOld.ChargeSS    = 0.0m;
                        tOld.ChargeDate  = DateTime.Now;
                        tOld.RID         = tMeterReading.RID;
                        tOld.Abstract    = "表【" + tMeterReading.MeterName + "】计量:自 "
                                           + tMeterReading.StartReading.ToString()
                                           + " 至 " + tMeterReading.EndReading.ToString()
                                           + "止,调整【" + tMeterReading.AdjustNum.ToString()
                                           + "】,分摊【" + i_Share.ToString() + "】";
                        session.Update(tOld);
                    }

                    Application.DoEvents();
                }

                tx.Commit();
                session.Close();
            }
            catch (Exception e)
            {
                Debug.Assert(false, e.Message);
                tx.Rollback();
                session.Close();
            }

            //3.循环所有物业,将除计量外的计费全部添加
            lStatus.Text = "【物业计费生成...】";
            session      = NHibernateHelper.OpenSession();
            tx           = session.BeginTransaction();
            ds           = new DataSet();
            ds           = SQLiteHelper.ExecuteDataSet("SELECT WyRateID,WyID,RateID FROM WyRates WHERE WyID IN (SELECT WyID FROM WyInfos WHERE CustomerID = @CustomerID)", s_CustomerID);
            drs          = ds.Tables[0].Select("1=1");
            try
            {
                for (int i = 0; i < drs.Length; i++)
                {
                    int i_WyRateID = Convert.ToInt32(drs[i]["WyRateID"].ToString());

                    WyRates tWyRate = session.Get <WyRates>(i_WyRateID);
                    //检查ChargeDetail中是否有此收费的数据
                    WyInfos tWyInfo = session.Get <WyInfos>(tWyRate.WyID);
                    lStatus.Text = "【物业计费生成】:" + tWyInfo.WyName;
                    Rates tRate = session.Get <Rates>(tWyRate.RateID);

                    IQuery query = session.CreateQuery("FROM ChargeDetail WHERE WyRateID = ? AND PeriodNo = ?");
                    query.SetParameter(0, tWyRate.WyRateID);
                    query.SetParameter(1, s_PeriodNo);

                    IList <ChargeDetail> eList = query.List <ChargeDetail>();
                    if (eList.Count == 0)
                    {
                        int i_Share = 0;
                        //没有此收费记录
                        ChargeDetail tNew = new ChargeDetail();
                        tNew.PeriodNo     = s_PeriodNo;
                        tNew.WyID         = tWyInfo.WyID;
                        tNew.WyName       = tWyInfo.WyName;
                        tNew.ChargeName   = tRate.RateName;
                        tNew.ChargeStatus = "已计费";
                        tNew.ChargeUnit   = tRate.RateUnit;

                        //收费费率的单位 建筑面积,套内面积,公摊面积,人口数,固定金额
                        switch (tRate.RateUnit)
                        {
                        case "建筑面积":
                            tNew.ChargeNum   = Convert.ToDecimal(tWyInfo.JZArea);
                            tNew.ChargePrice = Convert.ToDecimal(tRate.RateValue);
                            break;

                        case "套内面积":
                            tNew.ChargeNum   = Convert.ToDecimal(tWyInfo.TNArea);
                            tNew.ChargePrice = Convert.ToDecimal(tRate.RateValue);
                            break;

                        case "公摊面积":
                            tNew.ChargeNum   = Convert.ToDecimal(tWyInfo.GTArea);
                            tNew.ChargePrice = Convert.ToDecimal(tRate.RateValue);
                            break;

                        default:
                            tNew.ChargeNum   = tRate.RateValue;
                            tNew.ChargePrice = 1.0m;
                            break;
                        }

                        tNew.ChargeYS   = tNew.ChargeNum * tNew.ChargePrice;
                        tNew.ChargeSS   = 0.0m;
                        tNew.ChargeDate = DateTime.Now;
                        tNew.Abstract   = "物业【" + tWyInfo.WyName + "】的【 "
                                          + tRate.RateName
                                          + " 】收费项 ";
                        tNew.WyRateID = tWyRate.WyRateID;

                        session.Save(tNew);
                    }
                    else
                    {
                        //有此收费记录
                        ChargeDetail tOld = session.Get <ChargeDetail>(eList[0].CDNo);
                        tOld.PeriodNo     = s_PeriodNo;
                        tOld.WyID         = tWyInfo.WyID;
                        tOld.WyName       = tWyInfo.WyName;
                        tOld.ChargeName   = tRate.RateName;
                        tOld.ChargeStatus = "已计费";
                        tOld.ChargeUnit   = tRate.RateUnit;

                        //收费费率的单位 建筑面积,套内面积,公摊面积,人口数,固定金额
                        switch (tRate.RateUnit)
                        {
                        case "建筑面积":
                            tOld.ChargeNum   = Convert.ToDecimal(tWyInfo.JZArea);
                            tOld.ChargePrice = Convert.ToDecimal(tRate.RateValue);
                            break;

                        case "套内面积":
                            tOld.ChargeNum   = Convert.ToDecimal(tWyInfo.TNArea);
                            tOld.ChargePrice = Convert.ToDecimal(tRate.RateValue);
                            break;

                        case "公摊面积":
                            tOld.ChargeNum   = Convert.ToDecimal(tWyInfo.GTArea);
                            tOld.ChargePrice = Convert.ToDecimal(tRate.RateValue);
                            break;

                        default:
                            tOld.ChargeNum   = tRate.RateValue;
                            tOld.ChargePrice = 1.0m;
                            break;
                        }

                        tOld.ChargeYS   = tOld.ChargeNum * tOld.ChargePrice;
                        tOld.ChargeSS   = 0.0m;
                        tOld.ChargeDate = DateTime.Now;
                        tOld.Abstract   = "物业【" + tWyInfo.WyName + "】的【 "
                                          + tRate.RateName
                                          + " 】收费项 ";
                        tOld.WyRateID = tWyRate.WyRateID;

                        session.Update(tOld);
                    }
                    Application.DoEvents();
                }

                tx.Commit();
                session.Close();
            }
            catch (Exception e)
            {
                Debug.Assert(false, e.Message);
                tx.Rollback();
                session.Close();
            }


            //4.

            lStatus.Text = "【计费生成完成!】";
            return;
        }