public override Hashtable ChangeStoreNum(BillMaster billMaster, List <BillOrder> orderList) { try { Hashtable storeNumHash = new Hashtable(); foreach (BillOrder order in orderList) { YP_CheckOrder orderCheck = (YP_CheckOrder)order; YP_StoreNum storeNum = new YP_StoreNum(); if (orderCheck.CheckNum != orderCheck.FactNum) { storeNum.makerDicId = orderCheck.MakerDicID; storeNum.smallUnit = orderCheck.LeastUnit; storeNum.storeNum = Convert.ToInt32(orderCheck.CheckNum); storeNumHash.Add(storeNum.makerDicId, storeNum); UpdateStoreNum(orderCheck.MakerDicID, orderCheck.DeptID, Convert.ToInt32(orderCheck.CheckNum)); } } return(storeNumHash); } catch (Exception error) { throw error; } }
/// <summary> /// 修改盘点单据 /// </summary> /// <param name="billMaster">盘点单表头</param> /// <param name="listOrder">盘点单明细列表</param> /// <param name="deptId">药剂科室ID</param> public override void UpdateBill(BillMaster billMaster, List <BillOrder> listOrder, long deptId) { try { YP_CheckMaster masterCheck = (YP_CheckMaster)billMaster; ComputeMasterFee(masterCheck, listOrder); oleDb.BeginTransaction(); //声明操作对象 HIS.DAL.YP_Dal ypDal = new YP_Dal(); ypDal._oleDb = oleDb; YP_CheckOrder checkOrder = new YP_CheckOrder(); BindEntity <HIS.Model.YP_CheckMaster> .CreateInstanceDAL(oleDb, Tables.YF_CHECKMASTER).Update(masterCheck); foreach (BillOrder order in listOrder) { checkOrder = (YP_CheckOrder)order; BindEntity <HIS.Model.YP_CheckOrder> .CreateInstanceDAL(oleDb, Tables.YF_CHECKORDER).Update(checkOrder); } oleDb.CommitTransaction(); } catch (Exception error) { oleDb.RollbackTransaction(); throw error; } }
private void YF_ComputeCheckFee(DataRow dRow, YP_CheckOrder checkOrder) { //盘点包装量 decimal cPackNum = Convert.ToDecimal(dRow["CPACKNUM"]); //盘点基本量 decimal cBaseNum = Convert.ToDecimal(dRow["CBASENUM"]); //包装单位比例 decimal pUnitNum = Convert.ToDecimal(checkOrder.UnitNum); //零售价 decimal retailPrice = checkOrder.RetailPrice; //批发价 decimal tradePrice = checkOrder.TradePrice; //实际包装量 decimal packNum = Convert.ToDecimal(dRow["PACKNUM"]); //实际基本量 decimal baseNum = Convert.ToDecimal(dRow["BASENUM"]); checkOrder.CheckNum = cPackNum * pUnitNum + cBaseNum; checkOrder.FactNum = packNum * pUnitNum + baseNum; //计算盘盈,盘亏金额 checkOrder.CKRetailFee = cPackNum * retailPrice + (cBaseNum / pUnitNum) * retailPrice; checkOrder.CKTradeFee = cPackNum * tradePrice + (cBaseNum / pUnitNum) * tradePrice; checkOrder.FTRetailFee = packNum * retailPrice + (baseNum / pUnitNum) * retailPrice; checkOrder.FTTradeFee = packNum * tradePrice + (baseNum / pUnitNum) * tradePrice; }
/// <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_Account account = new YP_Account(); YP_CheckMaster master = (YP_CheckMaster)billMaster; YP_CheckOrder order = (YP_CheckOrder)billOrder; 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.AuditTime; account.RetailPrice = order.RetailPrice; account.StockPrice = order.TradePrice; account.OrderID = order.CheckOrderID; if (order.CheckNum - order.FactNum > 0) { account.LenderNum = order.CheckNum - order.FactNum; account.LenderFee = Math.Abs(order.CKRetailFee - order.FTRetailFee); } else { account.DebitNum = order.FactNum - order.CheckNum; account.DebitFee = Math.Abs(order.CKRetailFee - order.FTRetailFee); } account.OverNum = storeNum; return(account); }
/// <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 { YP_CheckMaster masterCheck = (YP_CheckMaster)billMaster; ComputeMasterFee(masterCheck, listOrder); oleDb.BeginTransaction(); YP_CheckMaster inDBMaster = BindEntity <YP_CheckMaster> .CreateInstanceDAL(oleDb, Tables.YK_CHECKMASTER).GetModel(masterCheck.MasterCheckID); if (inDBMaster.Del_Flag == 1) { throw new Exception("当前单据已经被强制清除,无法保证盘存数量的正确性,请重新录入新的盘点单"); } //声明操作对象 HIS.DAL.YP_Dal ypDal = new YP_Dal(); ypDal._oleDb = oleDb; YP_CheckOrder checkOrder = new YP_CheckOrder(); //获取盘点单据号 int billNum = (ypDal.YP_Bill_GetBillNum(ConfigManager.OP_YK_CHECK, masterCheck.DeptID)).BillNum; masterCheck.BillNum = billNum; masterCheck.Del_Flag = 0; BindEntity <HIS.Model.YP_CheckMaster> .CreateInstanceDAL(oleDb, Tables.YK_CHECKMASTER).Update(masterCheck); foreach (YP_CheckOrder order in listOrder) { //遍历DataTable取出明细记录并设置记录的值 checkOrder = (YP_CheckOrder)order; checkOrder.MasterCheckID = masterCheck.MasterCheckID; checkOrder.DeptID = masterCheck.DeptID; checkOrder.BillNum = masterCheck.BillNum; checkOrder.BillTime = masterCheck.RegTime; //依次添加明细记录 BindEntity <HIS.Model.YP_CheckOrder> .CreateInstanceDAL(oleDb, Tables.YK_CHECKORDER).Add(checkOrder); } //更新盘点标识位 ConfigManager.BeginCheck((long)(masterCheck.DeptID)); oleDb.CommitTransaction(); } catch (Exception error) { oleDb.RollbackTransaction(); throw error; } }
private void YK_ComputeCheckFee(DataRow dRow, YP_CheckOrder checkOrder) { //盘点包装量 decimal cPackNum = Convert.ToDecimal(dRow["CPACKNUM"]); //零售价 decimal retailPrice = Convert.ToDecimal(dRow["RETAILPRICE"]); //批发价 decimal tradePrice = Convert.ToDecimal(dRow["TRADEPRICE"]); //实际包装量 decimal packNum = Convert.ToDecimal(dRow["PACKNUM"]); checkOrder.CheckNum = cPackNum; checkOrder.FactNum = packNum; //计算盘盈,盘亏金额 checkOrder.CKRetailFee = cPackNum * retailPrice; checkOrder.CKTradeFee = cPackNum * tradePrice; checkOrder.FTRetailFee = packNum * retailPrice; checkOrder.FTTradeFee = packNum * tradePrice; }
/// <summary> /// 将指定审核明细信息表的行记录转成盘点明细对象 /// </summary> /// <param name="orderTable">盘点明细信息表</param> /// <param name="index">行记录索引</param> /// <param name="opType">业务类型</param> /// <returns> /// 盘点明细对象 /// </returns> private List <BillOrder> GetOrderList() { try { DataTable orderTable = _checkOrderDt; List <BillOrder> orderList = new List <BillOrder>(); for (int index = 0; index < orderTable.Rows.Count; index++) { DataRow dRow = orderTable.Rows[index]; YP_CheckOrder checkOrder = new YP_CheckOrder(); HIS.SYSTEM.PubicBaseClasses.ApiFunction.DataTableToObject(orderTable, index, checkOrder); //包装单位比例 checkOrder.UnitNum = Convert.ToInt32(dRow["PUNITNUM"]); //如果是药房盘点业务 if (_belongSystem == ConfigManager.YF_SYSTEM) { if (_currentState == ADD) { //单位标识ID checkOrder.LeastUnit = Convert.ToInt32(dRow["LEASTUNIT"]); } YF_ComputeCheckFee(dRow, checkOrder); } //如果是药库盘点业务 else { //单位标识ID if (_currentState == ADD) { checkOrder.LeastUnit = Convert.ToInt32(dRow["LEASTUNIT"]); } YK_ComputeCheckFee(dRow, checkOrder); } orderList.Add(checkOrder); } return(orderList); } catch (Exception error) { throw error; } }