public static int CreatePeriodBalance(ISession session, INVPeriod openPeriod)
        {
            DbSession dbsession = session.DbSession as DbSession;
            IDbCommand command = dbsession.CreateSqlStringCommand(@"
Insert Into inv_stock_balance(blnc_id, pd_id, sku_id, loc_code, area_code, sec_code, lot_num, stock_qty)
Select seq_inv_stock_balance.nextval,:pid,sku_id,loc_code,area_code,sec_code,lot_num,stock_qty
From inv_stock_detail
Where stock_qty<>0");
            dbsession.AddParameter(command, ":pid", DbTypeInfo.Int32(), openPeriod.PeriodID);
            dbsession.ExecuteNonQuery(command);

            INVPeriod prev = INVPeriod.GetPeriod(session, openPeriod.StartingDate.AddDays(-1));
            command = dbsession.CreateStoredProcCommand("f_rpt_inv_balance", new object[] { openPeriod.PeriodID, (prev == null ? 0 : prev.PeriodID) });
            dbsession.ExecuteNonQuery(command);
            return 1;
        }
        public void Open(ISession session)
        {
            if (this.Status != INVPeriodStatus.New)
            {
                throw new Exception("无法对库存期间" + this.PeriodCode + "开帐");
            }
            INVPeriod openPeriod = GetOpenPeriod(session);

            //TODO: 多仓库时库存期间不一样的处理
            if (openPeriod != null)
            {
                throw new Exception("另一个库存期间" + openPeriod.PeriodCode + "已经开帐,系统只能有一个开帐的库存期间");
            }
            this.Status = INVPeriodStatus.Open;
            this.Update(session, "Status");
        }
        public static int CreatePeriodBalance(ISession session, INVPeriod openPeriod)
        {
            DbSession  dbsession = session.DbSession as DbSession;
            IDbCommand command   = dbsession.CreateSqlStringCommand(@"
Insert Into inv_stock_balance(blnc_id, pd_id, sku_id, loc_code, area_code, sec_code, lot_num, stock_qty)
Select seq_inv_stock_balance.nextval,:pid,sku_id,loc_code,area_code,sec_code,lot_num,stock_qty
From inv_stock_detail
Where stock_qty<>0");

            dbsession.AddParameter(command, ":pid", DbTypeInfo.Int32(), openPeriod.PeriodID);
            dbsession.ExecuteNonQuery(command);

            INVPeriod prev = INVPeriod.GetPeriod(session, openPeriod.StartingDate.AddDays(-1));

            command = dbsession.CreateStoredProcCommand("f_rpt_inv_balance", new object[] { openPeriod.PeriodID, (prev == null ? 0 : prev.PeriodID) });
            dbsession.ExecuteNonQuery(command);
            return(1);
        }
        public static INVPeriod CreatePeriod(ISession session, DateTime date)
        {
            DateTime nowDay = new DateTime(date.Year, date.Month, date.Day);
            //�Ժ���Ըijɰ������õĹ���������
            DateTime firstDay = new DateTime(date.Year, date.Month, 1);
            DateTime lastDay = firstDay.AddMonths(1).AddDays(-1);

            INVPeriod period = new INVPeriod();
            period.Type = INVPeriodType.Month;
            period.Status = INVPeriodStatus.New;
            period.Year = nowDay.Year;
            period.Index = nowDay.Month;
            period.PeriodCode = period.Year.ToString() + period.Index.ToString().PadLeft(2, '0');
            period.StartingDate = firstDay;
            period.EndDate = lastDay;
            period.BalanceFinished = false;
            period.Create(session);

            return period;
        }
        public static INVPeriod CreatePeriod(ISession session, DateTime date)
        {
            DateTime nowDay = new DateTime(date.Year, date.Month, date.Day);
            //以后可以改成按照配置的规则来计算
            DateTime firstDay = new DateTime(date.Year, date.Month, 1);
            DateTime lastDay  = firstDay.AddMonths(1).AddDays(-1);

            INVPeriod period = new INVPeriod();

            period.Type            = INVPeriodType.Month;
            period.Status          = INVPeriodStatus.New;
            period.Year            = nowDay.Year;
            period.Index           = nowDay.Month;
            period.PeriodCode      = period.Year.ToString() + period.Index.ToString().PadLeft(2, '0');
            period.StartingDate    = firstDay;
            period.EndDate         = lastDay;
            period.BalanceFinished = false;
            period.Create(session);

            return(period);
        }