Esempio n. 1
0
 public override void GetAccountTime(DateTime regTime, ref int accountYear, ref int accountMonth, int deptId)
 {
     try
     {
         YP_AccountHis lastAccount = GetLastAccountHis(deptId);
         if (lastAccount == null)
         {
             string deptName = HIS.SYSTEM.BussinessLogicLayer.Classes.BaseData.GetDeptName(deptId.ToString());
             throw new Exception("[" + deptName + "]" + "当前库房还未进行初始化月结,请先月结");
         }
         if (regTime >= lastAccount.EndTime)
         {
             if (lastAccount.AccountMonth != 12)
             {
                 accountMonth = lastAccount.AccountMonth + 1;
                 accountYear  = lastAccount.AccountYear;
             }
             else
             {
                 accountMonth = 1;
                 accountYear  = lastAccount.AccountYear + 1;
             }
         }
         else
         {
             accountMonth = lastAccount.AccountMonth;
             accountYear  = lastAccount.AccountYear;
         }
     }
     catch (Exception error)
     {
         throw error;
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 写药房期末台帐
        /// </summary>
        /// <param name="accountHis"></param>
        /// <param name="billNum"></param>
        /// <param name="accountDao"></param>
        /// <param name="deptId"></param>
        protected override void WriteBeginDateAccount(YP_AccountHis accountHis, int billNum,
                                                      IBaseDAL <YP_Account> accountDao, int deptId)
        {
            YP_Dal ypDal = new YP_Dal();

            ypDal._oleDb = oleDb;
            YP_Account account     = new YP_Account();
            DataTable  beginDataDt = ypDal.YF_Storage_GetListForAccount(deptId);

            for (int index = 0; index < beginDataDt.Rows.Count; index++)
            {
                DataRow dRow = beginDataDt.Rows[index];
                if (accountHis.RegTime.Month != 12)
                {
                    account.AccountMonth = accountHis.RegTime.Month + 1;
                    account.AccountYear  = accountHis.RegTime.Year;
                }
                else
                {
                    account.AccountMonth = 1;
                    account.AccountYear++;
                }
                account.Balance_Flag     = 0;
                account.BillNum          = billNum;
                account.DeptID           = deptId;
                account.AccountHistoryID = accountHis.AccountHistoryID;
                account.LeastUnit        = Convert.ToInt32(dRow["UNIT"]);
                account.MakerDicID       = Convert.ToInt32(dRow["MAKERDICID"]);
                account.OpType           = ConfigManager.OP_YF_MONTHACCOUNT;
                account.OrderID          = 0;
                account.RegTime          = accountHis.RegTime;
                account.RetailPrice      = Convert.ToDecimal(dRow["RETAILPRICE"]);
                account.StockPrice       = Convert.ToDecimal(dRow["TRADEPRICE"]);
                account.UnitNum          = Convert.ToInt32(dRow["PUNITNUM"]);
                account.OverNum          = Convert.ToInt32(dRow["CURRENTNUM"]);
                account.BalanceFee       = 0;
                int modNum = (Convert.ToInt32(account.OverNum) % Convert.ToInt32(account.UnitNum));
                if (modNum == 0)
                {
                    account.BalanceFee += (account.OverNum / account.UnitNum) * account.RetailPrice;
                }
                else
                {
                    account.BalanceFee += ((account.OverNum - modNum) / account.UnitNum) * account.RetailPrice;
                    account.BalanceFee += (Convert.ToDecimal(modNum) / Convert.ToDecimal(account.UnitNum)) * account.RetailPrice;
                }
                accountDao.Add(account);
            }
        }
Esempio n. 3
0
        public override YP_AccountHis GetLastAccountHis(int deptId)
        {
            try
            {
                IBaseDAL <YP_AccountHis> accountHisDao = BindEntity <YP_AccountHis> .CreateInstanceDAL(oleDb, BLL.Tables.YK_ACCOUNTHIS);

                int maxId = accountHisDao.GetMaxId(Tables.yk_accounthis.ACCOUNTHISTORYID,
                                                   Tables.yk_accounthis.DEPTID + oleDb.EuqalTo() + deptId);
                YP_AccountHis accountHistory = accountHisDao.GetModel(maxId);
                return(accountHistory);
            }
            catch (Exception error)
            {
                throw error;
            }
        }
Esempio n. 4
0
          /// <summary>
          /// 药库系统月结对账
          /// </summary>
          /// <param name="deptId">药剂科室ID</param>
          /// <returns>错误账目信息表</returns>
        public override DataTable SystemCheckAccount(int deptId)
        {
            try
            {
                //触发事件
                _monthEvent.CurrentState = MonthAccountState.SystemChecking;
                AccountHandler(_monthEvent);
                IBaseDAL <YP_AccountHis> accountHisDao = BindEntity <YP_AccountHis> .CreateInstanceDAL(oleDb,
                                                                                                       HIS.BLL.Tables.YK_ACCOUNTHIS);

                int maxId = accountHisDao.GetMaxId(BLL.Tables.yf_accounthis.ACCOUNTHISTORYID,
                                                   BLL.Tables.yf_accounthis.DEPTID + oleDb.EuqalTo() + deptId.ToString());
                YP_AccountHis prevHis = accountHisDao.GetModel(maxId);
                int           checkYear, checkMonth;
                if (prevHis.AccountMonth != 12)
                {
                    checkYear  = prevHis.AccountYear;
                    checkMonth = prevHis.AccountMonth + 1;
                }
                else
                {
                    checkYear  = prevHis.AccountYear + 1;
                    checkMonth = 1;
                }
                IBaseDAL <YP_Account> accountDao = BindEntity <YP_Account> .CreateInstanceDAL(oleDb, HIS.BLL.Tables.YK_ACCOUNT);

                List <YP_Account> listAccount =
                    accountDao.GetListArray("AccountYear=" + checkYear.ToString() +
                                            " AND AccountMonth=" + checkMonth.ToString() + " AND BALANCE_FLAG=0"
                                            + " AND DeptId=" + deptId);
                DateTime  currentTime = XcDate.ServerDateTime;
                DataTable rtnDt       = CheckAccount(listAccount);
                //触发事件
                _monthEvent.CurrentState = MonthAccountState.Over;
                AccountHandler(_monthEvent);
                return(rtnDt);
            }
            catch (Exception error)
            {
                throw error;
            }
        }
Esempio n. 5
0
 private void FrmMonthAccount_Load(object sender, EventArgs e)
 {
     try
     {
         for (int day = 1; day <= 31; day++)
         {
             cobAccountDay.Items.Add(day.ToString() + "号");
         }
         cobAccountDay.Text = ConfigManager.GetAccountDay((int)_currentDept).ToString() + "号";
         if (_belongSystem == ConfigManager.YF_SYSTEM)
         {
             btnYKMonthAccount.Enabled = false;
             ((YF_MonthBalance)_monthAccount).AccountHandler += new MonthAccountHandler(FrmMonthAccount_AccountHandler);
         }
         else
         {
             btnYFMonthAccount.Enabled = false;
             ((YK_MonthBalance)_monthAccount).AccountHandler += new MonthAccountHandler(FrmMonthAccount_AccountHandler);
         }
         _lastAccountHis = _accountQuery.GetLastAccountHis((int)_currentDept);
         if (_lastAccountHis != null)
         {
             cobBeginDate.Value = _lastAccountHis.BeginTime;
             cobEndDate.Value   = _lastAccountHis.EndTime;
         }
         dgrdAccountHis.AutoGenerateColumns = false;
         dgrdAccountHis.DataSource          = _accountQuery.GetActHisList((int)_currentDept);
         int currentActMonth = _lastAccountHis.AccountMonth == 12 ? 1 : _lastAccountHis.AccountMonth + 1;
         int currentActYear  = _lastAccountHis.AccountMonth == 12 ? _lastAccountHis.AccountYear + 1 : _lastAccountHis.AccountYear;
         lblCurrentActMonth.Text = currentActYear + "年" + currentActMonth + "月";
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message);
     }
 }
Esempio n. 6
0
        /// <summary>
        /// 药库月结操作
        /// </summary>
        /// <param name="regPeople">月结人员</param>
        /// <param name="regDept">月结科室</param>
        /// <param name="currentTime">当前时间</param>
        /// <param name="isInit">是否初始化月结</param>
        /// <returns>月结时间</returns>
        protected override DateTime MonthAccountAction(int regPeople, int regDept, DateTime currentTime, bool isInit)
        {
            YP_Dal ypDal = new YP_Dal();

            ypDal._oleDb = oleDb;
            int billNum = 0;
            IBaseDAL <YP_AccountHis> accountHisDao = BindEntity <YP_AccountHis> .CreateInstanceDAL(oleDb, HIS.BLL.Tables.YK_ACCOUNTHIS);

            IBaseDAL <YP_BillNumDic> billDao = BindEntity <YP_BillNumDic> .CreateInstanceDAL(oleDb, HIS.BLL.Tables.YP_BILLNUMDIC);

            IBaseDAL <YP_Account> accountDao = BindEntity <YP_Account> .CreateInstanceDAL(oleDb, HIS.BLL.Tables.YK_ACCOUNT);

            IBaseDAL <YP_Storage> ykStore = BindEntity <YP_Storage> .CreateInstanceDAL(oleDb, HIS.BLL.Tables.YK_STORAGE);

            //初始化月结
            if (isInit)
            {
                YP_AccountHis accoutHis = new YP_AccountHis();
                accoutHis.AccountMonth = currentTime.Month;
                accoutHis.AccountYear  = currentTime.Year;
                accoutHis.BeginTime    = accoutHis.EndTime = currentTime;
                accoutHis.DeptID       = regDept;
                accoutHis.RegMan       = regPeople;
                accoutHis.RegTime      = currentTime;
                accountHisDao.Add(accoutHis);
                //写月结期初台帐
                //触发事件
                _monthEvent.CurrentState = MonthAccountState.WriteBeginAccount;
                AccountHandler(_monthEvent);
                billNum = ypDal.YP_Bill_GetBillNum(ConfigManager.OP_YK_MONTHACCOUNT, regDept).BillNum;
                WriteBeginDateAccount(accoutHis, billNum, accountDao, regDept);
            }
            else
            {
                int           maxId      = accountHisDao.GetMaxId(Tables.yk_accounthis.ACCOUNTHISTORYID, "DEPTID=" + regDept.ToString());
                YP_AccountHis prevHis    = accountHisDao.GetModel(maxId);
                YP_AccountHis currentHis = new YP_AccountHis();
                if (prevHis.AccountMonth != 12)
                {
                    currentHis.AccountMonth = prevHis.AccountMonth + 1;
                    currentHis.AccountYear  = prevHis.AccountYear;
                }
                else
                {
                    currentHis.AccountMonth = 1;
                    currentHis.AccountYear  = prevHis.AccountYear + 1;
                }
                currentHis.BeginTime = prevHis.EndTime;
                currentHis.DeptID    = regDept;
                currentHis.EndTime   = currentTime;
                currentHis.RegMan    = regPeople;
                currentHis.RegTime   = currentTime;
                accountHisDao.Add(currentHis);
                billNum = ypDal.YP_Bill_GetBillNum(ConfigManager.OP_YK_MONTHACCOUNT, regDept).BillNum;
                //触发事件
                _monthEvent.CurrentState = MonthAccountState.SystemChecking;
                AccountHandler(_monthEvent);
                string strWhere = "AccountYear=" + currentHis.AccountYear +
                                  " AND AccountMonth=" + currentHis.AccountMonth +
                                  " AND BALANCE_FLAG=0" +
                                  " AND DeptId=" + regDept;
                List <YP_Account> listAccount = accountDao.GetListArray(strWhere);
                if (CheckAccount(listAccount).Rows.Count > 0)
                {
                    throw new Exception("药品账目错误,无法月结,请进行系统对账,查看明细");
                }
                accountDao.Update(strWhere, BLL.Tables.yk_account.BALANCE_FLAG + oleDb.EuqalTo() + "1",
                                  BLL.Tables.yk_account.ACCOUNTHISTORYID + oleDb.EuqalTo() + currentHis.AccountHistoryID.ToString());
                List <YP_Account> endActList = base.GetMonthEndData(listAccount, billNum, currentTime, currentHis.AccountHistoryID);

                //写期末记录
                //触发事件
                _monthEvent.CurrentState = MonthAccountState.WriteEndAccount;
                AccountHandler(_monthEvent);
                WriteEndDateAccount(endActList, accountDao, ykStore);
                //写期初记录
                //触发事件
                _monthEvent.CurrentState = MonthAccountState.WriteBeginAccount;
                AccountHandler(_monthEvent);
                WriteBeginDateAccount(endActList, accountDao);
            }
            //触发事件
            _monthEvent.CurrentState = MonthAccountState.Over;
            AccountHandler(_monthEvent);
            return(currentTime);
        }
 /// <summary>
 /// 写期初台帐
 /// </summary>
 /// <param name="accountHis">月结历史记录</param>
 /// <param name="billNum">月结单据号</param>
 /// <param name="accountDao">台帐操作对象</param>
 /// <param name="deptId">药剂科室ID</param>
 protected abstract void WriteBeginDateAccount(YP_AccountHis accountHis, int billNum,
                                               IBaseDAL <YP_Account> accountDao, int deptId);