/// <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; } }
public override Hashtable ChangeStoreNum(BillMaster billMaster, List <BillOrder> orderList) { try { Hashtable storeNumHash = new Hashtable(); YP_InMaster inStore = (YP_InMaster)billMaster; YP_Dal ypDal = new YP_Dal(); ypDal._oleDb = oleDb; foreach (YP_InOrder orderInstore in orderList) { decimal addNum = 0; YP_StoreNum storeNum = new YP_StoreNum(); storeNum.makerDicId = orderInstore.MakerDicID; IBaseDAL <YP_Storage> storeDao = BindEntity <YP_Storage> .CreateInstanceDAL(oleDb, BLL.Tables.YF_STORAGE); if (inStore.OpType == ConfigManager.OP_YF_INSTORE) { addNum = orderInstore.InNum; storeNum.smallUnit = orderInstore.LeastUnit; } else { addNum = orderInstore.InNum * orderInstore.UnitNum; storeNum.smallUnit = ypDal.Unit_GetSmallUnit(storeNum.makerDicId); } //增加库存 decimal rtn = base.AddStoreNum(orderInstore.MakerDicID, orderInstore.DeptID, addNum); if (rtn == -1) { if (addNum <= 0) { string drugName = "[" + DrugBaseDataBll.GetDurgName(orderInstore.MakerDicID) + "]"; throw new Exception(drugName + "药品库存数量为0,无法录入负数"); } YP_Storage drugStore = new YP_Storage(); drugStore.CurrentNum = addNum; drugStore.Del_Flag = 0; drugStore.DeptID = inStore.DeptID; drugStore.LeastUnit = storeNum.smallUnit; drugStore.LowerLimit = 0; drugStore.LStockPrice = orderInstore.StockPrice; drugStore.MakerDicID = orderInstore.MakerDicID; drugStore.RegTime = inStore.RegTime; drugStore.UnitNum = orderInstore.UnitNum; drugStore.UpperLimit = 0; storeDao.Add(drugStore); storeNum.storeNum = addNum; } else { storeNum.storeNum = rtn; } storeNum.queryKey = orderInstore.MakerDicID.ToString() + orderInstore.BatchNum.ToString(); storeNumHash.Add(storeNum.queryKey, storeNum); } return(storeNumHash); } catch (Exception error) { throw error; } }