private void dgrdAdjMaster_CurrentCellChanged(object sender, EventArgs e) { try { this.Cursor = GWMHIS.BussinessLogicLayer.Classes.PublicStaticFun.WaitCursor(); if (dgrdAdjMaster.CurrentCell != null) { int currentIndex = dgrdAdjMaster.CurrentCell.RowIndex; _currentMaster = GetAdjMasterFromDt(_masterDt.DefaultView.ToTable(), currentIndex, _currentMaster); _orderDt = _billQuery.LoadOrder(_currentMaster); dgrdAdjOrder.DataSource = _orderDt; } else { dgrdAdjOrder.DataSource = null; _currentMaster = null; } } catch (Exception error) { MessageBox.Show(error.Message); } finally { this.Cursor = DefaultCursor; } }
/// <summary> /// 根据单据信息构造台帐信息 /// </summary> /// <param name="billMaster">单据头</param> /// <param name="billOrder">单据明细信息</param> /// <param name="storeNum">库存处理后药品库存信息</param> /// <param name="accountYear">会计年份</param> /// <param name="accountMonth">会计月份</param> /// <param name="smallUnit">基本单位</param> /// <returns>台帐信息</returns> override protected YP_Account BuildAccount(BillMaster billMaster, BillOrder billOrder, decimal storeNum, int accountYear, int accountMonth, int smallUnit) { YP_AdjMaster master = (YP_AdjMaster)billMaster; YP_AdjOrder order = (YP_AdjOrder)billOrder; YP_Account account = new YP_Account(); account.AccountYear = accountYear; account.AccountMonth = accountMonth; account.AccountType = 2; account.Balance_Flag = 0; account.BillNum = master.BillNum; account.OpType = master.OpType; account.DeptID = master.DeptID; account.LeastUnit = smallUnit; account.UnitNum = order.UnitNum; account.MakerDicID = order.MakerDicID; account.RegTime = master.ExeTime; account.RetailPrice = order.NewRetailPrice; account.StockPrice = order.NewTradePrice; account.OrderID = order.OrderAdjPriceID; if (order.AdjRetailFee > 0) { account.LenderFee = Math.Abs(order.AdjRetailFee); } else { account.DebitFee = Math.Abs(order.AdjRetailFee); } account.OverNum = storeNum; return(account); }
/// <summary> /// 审核调价单 /// </summary> /// <param name="billMaster">调价单头表</param> /// <param name="auditerID">审核人员ID</param> /// <param name="auditDeptID">审核科室ID</param> public override void AuditBill(BillMaster billMaster, long auditerID, long auditDeptID) { try { HIS.DAL.YP_Dal ypDal = new YP_Dal(); ypDal._oleDb = oleDb; string strWhere; YP_AdjMaster masterAdj = (YP_AdjMaster)billMaster; string belongSystem = (masterAdj.OpType == ConfigManager.OP_YF_ADJPRICE ? ConfigManager.YF_SYSTEM : ConfigManager.YK_SYSTEM); if (ConfigManager.IsChecking((long)masterAdj.DeptID)) { string deptName = BaseData.GetDeptName(masterAdj.DeptID.ToString()); throw new Exception("[" + deptName + "]" + "库房药品正在盘点中...."); } masterAdj.Audit_Flag = 1; masterAdj.Over_Flag = 1; BindEntity <HIS.Model.YP_AdjMaster> .CreateInstanceDAL(oleDb).Update(masterAdj); strWhere = Tables.yp_adjorder.MASTERIADJPRICED + oleDb.EuqalTo() + masterAdj.MasterAdjPriceID; List <YP_AdjOrder> orderList = BindEntity <HIS.Model.YP_AdjOrder> .CreateInstanceDAL(oleDb).GetListArray(strWhere); List <BillOrder> billOrderList = new List <BillOrder>(); Hashtable storeTable = new Hashtable(); foreach (YP_AdjOrder adjOrder in orderList) { YP_StoreNum yp_StoreNum = new YP_StoreNum(); decimal storeNum = StoreFactory.GetQuery(belongSystem).QueryNum(adjOrder.MakerDicID, adjOrder.DeptID); adjOrder.Audit_Flag = 1; adjOrder.AdjNum = storeNum; yp_StoreNum.makerDicId = adjOrder.MakerDicID; if (belongSystem == ConfigManager.YK_SYSTEM) { yp_StoreNum.smallUnit = adjOrder.LeastUnit; } else { yp_StoreNum.smallUnit = ypDal.Unit_GetSmallUnit(adjOrder.MakerDicID); } yp_StoreNum.storeNum = storeNum; storeTable.Add(yp_StoreNum.makerDicId, yp_StoreNum); //计算调赢/亏金额 ComputeAdjFee(adjOrder, belongSystem); billOrderList.Add(adjOrder); BindEntity <HIS.Model.YP_AdjOrder> .CreateInstanceDAL(oleDb).Update(adjOrder); } //记账 AccountFactory.GetWriter(masterAdj.OpType).WriteAccount(masterAdj, billOrderList, storeTable); //更新药典价格 foreach (YP_AdjOrder adjOrder in orderList) { ChangePrice(adjOrder.NewRetailPrice, true, adjOrder.MakerDicID); ChangePrice(adjOrder.NewTradePrice, false, adjOrder.MakerDicID); } } catch (Exception error) { throw error; } }
/// <summary> /// 构造调价单明细 /// </summary> /// <param name="deptId">药剂科室ID</param> /// <param name="master">对应调价单表头</param> /// <returns>调价单明细</returns> public override BillOrder BuildNewoder(long deptId, BillMaster master) { YP_AdjOrder adjOrder = new YP_AdjOrder(); try { YP_AdjMaster adjMaster = (YP_AdjMaster)master; adjOrder.DeptID = adjMaster.DeptID; adjOrder.MasterAdjPrice = adjMaster; adjOrder.MakerDic = new YP_MakerDic(); adjOrder.LeastUnitEntity = new YP_UnitDic(); return(adjOrder); } catch (Exception error) { throw error; } }
/// <summary> /// 写入台帐 /// </summary> /// <param name="billMaster">单据头表信息</param> /// <param name="orderList">单据明细信息</param> /// <param name="storeTable">库存处理后的最新药品库存信息</param> public override void WriteAccount(BillMaster billMaster, List <BillOrder> orderList, Hashtable storeTable) { try { int actYear = 0, actMonth = 0; decimal storeNum; int smallUnit; YP_AdjMaster master = (YP_AdjMaster)billMaster; if (master.OpType == ConfigManager.OP_YF_ADJPRICE) { IBaseDAL <YP_Account> accountDao = BindEntity <YP_Account> .CreateInstanceDAL(oleDb, BLL.Tables.YF_ACCOUNT); AccountFactory.GetQuery(ConfigManager.YF_SYSTEM).GetAccountTime(master.ExeTime, ref actYear, ref actMonth, master.DeptID); foreach (YP_AdjOrder order in orderList) { storeNum = ((YP_StoreNum)(storeTable[order.MakerDicID])).storeNum; smallUnit = ((YP_StoreNum)(storeTable[order.MakerDicID])).smallUnit; YP_Account account = BuildAccount(billMaster, order, storeNum, actYear, actMonth, smallUnit); ComputeFee(account); accountDao.Add(account); } } else { IBaseDAL <YP_Account> accountDao = BindEntity <YP_Account> .CreateInstanceDAL(oleDb, BLL.Tables.YK_ACCOUNT); AccountFactory.GetQuery(ConfigManager.YK_SYSTEM).GetAccountTime(master.ExeTime, ref actYear, ref actMonth, master.DeptID); foreach (YP_AdjOrder order in orderList) { storeNum = ((YP_StoreNum)(storeTable[order.MakerDicID])).storeNum; smallUnit = ((YP_StoreNum)(storeTable[order.MakerDicID])).smallUnit; YP_Account account = BuildAccount(billMaster, order, storeNum, actYear, actMonth, smallUnit); ComputeFee(account); accountDao.Add(account); } } } catch (Exception error) { throw error; } }
/// <summary> /// 从调价表头信息表中获取指定行记录对应的调价表头对象 /// </summary> /// <param name="dtTable">调价表头信息表</param> /// <param name="index">指定行记录索引</param> /// <param name="_AdjMaster">调价表头对象</param> /// <returns>调价表头信息表</returns> private YP_AdjMaster GetAdjMasterFromDt(DataTable dtTable, int index, YP_AdjMaster _AdjMaster) { try { if (dtTable.Rows.Count < index || dtTable.Rows.Count == 0) { return(null); } if (_AdjMaster == null) { _AdjMaster = new YP_AdjMaster(); } HIS.SYSTEM.PubicBaseClasses.ApiFunction.DataTableToObject(dtTable, index, _AdjMaster); return(_AdjMaster); } catch (Exception error) { throw error; } }
private void tsrbtnNew_Click(object sender, EventArgs e) { try { //生成一个新的单据表头 _adjMaster = (YP_AdjMaster)(_billProcessor.BuildNewMaster(_adjMaster.DeptID, _adjMaster.RegPeople)); _currentOrder = (YP_AdjOrder)(_billProcessor.BuildNewoder(0, _adjMaster)); //加载数据 LoadData(); ClearOrderTextbox(); ShowMaster(); //设置金额初始值 this.txtNewTrade.Text = "0.00"; this.txtNewRetail.Text = "0.00"; this.txtAdjCode.Focus(); _currentState = ADD; } catch (Exception error) { MessageBox.Show(error.Message); } }
/// <summary> /// 构造调价单空表头 /// </summary> /// <param name="deptId">药剂科室ID</param> /// <param name="userId">操作人员ID</param> /// <returns>调价单表头</returns> public override BillMaster BuildNewMaster(long deptId, long userId) { try { YP_AdjMaster masterAdj = new YP_AdjMaster(); DateTime adjDate = XcDate.ServerDateTime; masterAdj.AdjCode = "TJ" + adjDate.Year.ToString() + adjDate.Month.ToString() + adjDate.Day.ToString(); masterAdj.Audit_Flag = 1; masterAdj.BillNum = 0; masterAdj.Del_Flag = 0; masterAdj.DeptID = Convert.ToInt32(deptId); masterAdj.Over_Flag = 0; masterAdj.RegPeople = Convert.ToInt32(userId); masterAdj.RegTime = XcDate.ServerDateTime; masterAdj.ExeTime = masterAdj.RegTime; masterAdj.Remark = ""; return(masterAdj); } catch (Exception error) { throw error; } }
public override DataTable LoadOrder(BillMaster billMaster) { try { //A表指的是调价表头 YP_AdjMaster master = (YP_AdjMaster)billMaster; string strWhere = ""; if (master != null) { strWhere = "A.MasterIAdjPriceD=" + master.MasterAdjPriceID.ToString(); } else { strWhere = "0<>0"; } HIS.DAL.YP_Dal ypDal = new YP_Dal(); ypDal._oleDb = oleDb; return(ypDal.YP_Adjorder_GetList(strWhere)); } catch (Exception error) { throw error; } }
/// <summary> /// 保存调价单 /// </summary> /// <param name="billMaster">调价单表头</param> /// <param name="listOrder">调价单明细列表</param> /// <param name="deptId">药剂科室ID</param> public override void SaveBill(BillMaster billMaster, List <BillOrder> listOrder, long deptId) { try { int count = 0; YP_AdjMaster masterAdj = (YP_AdjMaster)billMaster; oleDb.BeginTransaction(); //声明操作对象 YP_AdjOrder adjOrder = new YP_AdjOrder(); HIS.DAL.YP_Dal ypDal = new YP_Dal(); ypDal._oleDb = oleDb; List <YP_DeptDic> deptList = new List <YP_DeptDic>(); //获取调价药剂科室 deptList = BindEntity <HIS.Model.YP_DeptDic> .CreateInstanceDAL(oleDb).GetListArray(""); foreach (YP_DeptDic dept in deptList) { count = 0; if (dept.DeptType1 == "药房") { if (dept.Use_Flag == 1) { masterAdj.OpType = ConfigManager.OP_YF_ADJPRICE; } } else { if (dept.Use_Flag == 1) { masterAdj.OpType = ConfigManager.OP_YK_ADJPRICE; } } masterAdj.Over_Flag = 0; masterAdj.AdjCode = GWIString.FilterSpecial(masterAdj.AdjCode); masterAdj.Remark = GWIString.FilterSpecial(masterAdj.Remark); masterAdj.DeptID = dept.DeptID; BindEntity <HIS.Model.YP_AdjMaster> .CreateInstanceDAL(oleDb).Add(masterAdj); foreach (BillOrder order in listOrder) { adjOrder = (YP_AdjOrder)order; adjOrder.MasterIAdjPriceD = masterAdj.MasterAdjPriceID; adjOrder.DeptID = masterAdj.DeptID; string belongSystem = (dept.DeptType1 == "药房" ? ConfigManager.YF_SYSTEM : ConfigManager.YK_SYSTEM); if (StoreFactory.GetQuery(belongSystem).QueryNum(adjOrder.MakerDicID, adjOrder.DeptID) < 0) { continue; } count++; BindEntity <HIS.Model.YP_AdjOrder> .CreateInstanceDAL(oleDb).Add(adjOrder); } if (count > 0) { masterAdj.BillNum = (ypDal.YP_Bill_GetBillNum(masterAdj.OpType, dept.DeptID)).BillNum; if (masterAdj.BillNum == 0) { throw new Exception("药剂科室设置错误,请确认当前科室是药剂科室"); } BindEntity <HIS.Model.YP_AdjMaster> .CreateInstanceDAL(oleDb).Update(masterAdj); AuditBill(masterAdj, (long)(masterAdj.RegPeople), (long)(masterAdj.DeptID)); } else { string strwhere = Tables.yp_adjmaster.DEPTID + oleDb.EuqalTo() + masterAdj.DeptID + oleDb.And() + Tables.yp_adjmaster.MASTERADJPRICEID + oleDb.EuqalTo() + masterAdj.MasterAdjPriceID; BindEntity <HIS.Model.YP_AdjMaster> .CreateInstanceDAL(oleDb).Delete(strwhere); strwhere = Tables.yp_adjorder.DEPTID + oleDb.EuqalTo() + masterAdj.DeptID + oleDb.And() + Tables.yp_adjorder.MASTERIADJPRICED + oleDb.EuqalTo() + masterAdj.MasterAdjPriceID; BindEntity <YP_AdjOrder> .CreateInstanceDAL(oleDb).Delete(strwhere); } } oleDb.CommitTransaction(); } catch (Exception error) { oleDb.RollbackTransaction(); throw error; } }