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; } }
/// <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); } }
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; } }
/// <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; } }
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); } }
/// <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);