/// <summary> /// 计算调整金额 /// </summary> /// <param name="adjOrder">调价单明细</param> /// <param name="belongSystem">所属系统(药房还是药库)</param> private void ComputeAdjFee(YP_AdjOrder adjOrder, string belongSystem) { if (belongSystem == ConfigManager.YF_SYSTEM) { int modNum = Convert.ToInt32(adjOrder.AdjNum) % Convert.ToInt32(adjOrder.UnitNum); if (modNum != 0) { adjOrder.AdjRetailFee = 0; adjOrder.AdjTradeFee = 0; decimal packNum = (adjOrder.AdjNum - modNum) / adjOrder.UnitNum; adjOrder.AdjRetailFee += (adjOrder.NewRetailPrice - adjOrder.OldRetailPrice) * packNum; adjOrder.AdjRetailFee += (Convert.ToDecimal(modNum) / Convert.ToDecimal(adjOrder.UnitNum)) * (adjOrder.NewRetailPrice - adjOrder.OldRetailPrice); adjOrder.AdjTradeFee += (adjOrder.NewTradePrice - adjOrder.OldTradePrice) * packNum; adjOrder.AdjTradeFee += (Convert.ToDecimal(modNum) / Convert.ToDecimal(adjOrder.UnitNum)) * (adjOrder.NewTradePrice - adjOrder.OldTradePrice); } else { adjOrder.AdjRetailFee = (adjOrder.NewRetailPrice - adjOrder.OldRetailPrice) * adjOrder.AdjNum / adjOrder.UnitNum; adjOrder.AdjTradeFee = (adjOrder.NewTradePrice - adjOrder.OldTradePrice) * adjOrder.AdjNum / adjOrder.UnitNum; } } else { adjOrder.AdjRetailFee = (adjOrder.NewRetailPrice - adjOrder.OldRetailPrice) * adjOrder.AdjNum; adjOrder.AdjTradeFee = (adjOrder.NewTradePrice - adjOrder.OldTradePrice) * adjOrder.AdjNum; } }
/// <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); }
private List <BillOrder> GetListOrder() { if (_orederDt.Rows.Count <= 0) { return(null); } else { List <BillOrder> listOrder = new List <BillOrder>(); for (int index = 0; index < _orederDt.Rows.Count; index++) { YP_AdjOrder order = new YP_AdjOrder(); HIS.SYSTEM.PubicBaseClasses.ApiFunction.DataTableToObject(_orederDt, index, order); listOrder.Add(order); } return(listOrder); } }
/// <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="order">调价明细对象</param> /// <param name="orderDt">调价明细信息表</param> public static void AddOrderToDT(YP_AdjOrder order, DataTable orderDt) { try { DataRow newRow = orderDt.NewRow(); AdjOrderToDataRow(newRow, order); //判断新增明细药品是否已经存在于入库单明细表中 for (int index = 0; index < orderDt.Rows.Count; index++) { if (Convert.ToInt32(orderDt.Rows[index]["MAKERDICID"]) == Convert.ToInt32(newRow["MAKERDICID"])) { throw new Exception("该药品已经存在于明细中,无法添加...."); } } orderDt.Rows.Add(newRow); } catch (Exception error) { throw error; } }
private void btnAddOrder_Click(object sender, EventArgs e) { try { if (CheckSaveOrder() == true) { txtNewRetail_TextChanged(null, null); txtNewTrade_TextChanged(null, null); AddOrderToDT(_currentOrder, _orederDt); ClearOrderTextbox(); _currentOrder = (YP_AdjOrder)(_billProcessor.BuildNewoder(0, _adjMaster)); //设置金额初始值 this.txtNewRetail.Text = "0.00"; this.txtNewTrade.Text = "0.00"; this.txtDgCode.Focus(); } } catch (Exception error) { MessageBox.Show(error.Message); } }
/// <summary> /// 将调价明细对象转成调价明细表中行记录 /// </summary> /// <param name="dR">明细表行记录对象</param> /// <param name="adjOrder">调价明细对象</param> public static void AdjOrderToDataRow(DataRow dR, YP_AdjOrder adjOrder) { try { if (dR == null || adjOrder == null) { return; } else { dR["AdjNum"] = adjOrder.AdjNum; dR["AdjRetailFee"] = adjOrder.AdjRetailFee; dR["AdjTradeFee"] = adjOrder.AdjTradeFee; dR["Audit_Flag"] = adjOrder.Audit_Flag; dR["BillNum"] = adjOrder.BillNum; dR["DeptID"] = adjOrder.DeptID; dR["LeastUnit"] = adjOrder.LeastUnit; dR["MakerDicID"] = adjOrder.MakerDicID; dR["MasterIAdjPriceD"] = adjOrder.MasterIAdjPriceD; dR["NewRetailPrice"] = adjOrder.NewRetailPrice; dR["NewTradePrice"] = adjOrder.NewTradePrice; dR["OldRetailPrice"] = adjOrder.OldRetailPrice; dR["OldTradePrice"] = adjOrder.OldTradePrice; dR["OrderAdjPriceID"] = adjOrder.OrderAdjPriceID; dR["UnitNum"] = adjOrder.UnitNum; dR["SPEC"] = adjOrder.MakerDic.DrugInfo.spec; dR["CHEMNAME"] = adjOrder.MakerDic.DrugInfo.chemname; dR["UNITNAME"] = adjOrder.LeastUnitEntity.UnitName; dR["PRODUCTNAME"] = adjOrder.MakerDic.DrugInfo.productname; dR["AdjDif"] = adjOrder.NewRetailPrice - adjOrder.OldRetailPrice; } return; } catch (Exception error) { throw error; } }
private void FrmAdjOrder_Load(object sender, EventArgs e) { try { if (_belongSystem == ConfigManager.YF_SYSTEM) { _billQuery = BillFactory.GetQuery(ConfigManager.OP_YF_ADJPRICE); _billProcessor = BillFactory.GetProcessor(ConfigManager.OP_YF_ADJPRICE); } else { _billQuery = BillFactory.GetQuery(ConfigManager.OP_YK_ADJPRICE); _billProcessor = BillFactory.GetProcessor(ConfigManager.OP_YK_ADJPRICE); } if (_currentState == ADD) { this._currentOrder = (YP_AdjOrder)(_billProcessor.BuildNewoder(0, _adjMaster)); LoadData(); this.txtNewRetail.Text = "0.00"; this.txtNewTrade.Text = "0.00"; ShowMaster(); this.txtAdjCode.Focus(); this.txtAdjCode.SelectAll(); } else { LoadData(); _currentOrder = (YP_AdjOrder)(_billProcessor.BuildNewoder(0, _adjMaster)); dgrdAdjOrder_CurrentCellChanged(null, null); ShowInQuery(); ShowMaster(); } } catch (Exception error) { MessageBox.Show(error.Message); } }
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="dR">调价明细信息表</param> /// <param name="adjOrder">调价明细对象</param> public static void DataRowToAdjOrder(DataRow dR, YP_AdjOrder adjOrder) { try { if (dR == null || adjOrder == null) { return; } else { adjOrder.AdjNum = Convert.ToDecimal(dR["AdjNum"]); //调价数量 adjOrder.AdjRetailFee = Convert.ToDecimal(dR["AdjRetailFee"]); //调整零售金额 adjOrder.AdjTradeFee = Convert.ToDecimal(dR["AdjTradeFee"]); //调整批发金额 adjOrder.Audit_Flag = Convert.ToInt32(dR["Audit_Flag"]); //审核标识 adjOrder.BillNum = Convert.ToInt32(dR["BillNum"]); //单据号 adjOrder.DeptID = Convert.ToInt32(dR["DeptID"]); //科室ID adjOrder.LeastUnit = Convert.ToInt32(dR["LeastUnit"]); //单位 adjOrder.MakerDicID = Convert.ToInt32(dR["MakerDicID"]); //厂家典标识ID adjOrder.MasterIAdjPriceD = Convert.ToInt32(dR["MasterIAdjPriceD"]); //调价表头ID adjOrder.NewRetailPrice = Convert.ToDecimal(dR["NewRetailPrice"]); //新零售价 adjOrder.NewTradePrice = Convert.ToDecimal(dR["NewTradePrice"]); //新批发价 adjOrder.OldRetailPrice = Convert.ToDecimal(dR["OldRetailPrice"]); //老零售价 adjOrder.OldTradePrice = Convert.ToDecimal(dR["OldTradePrice"]); //老批发价 adjOrder.OrderAdjPriceID = Convert.ToInt32(dR["OrderAdjPriceID"]); //调价明细ID adjOrder.UnitNum = Convert.ToInt32(dR["UnitNum"]); //单位比例 adjOrder.MakerDic.DrugInfo.spec = dR["SPEC"].ToString(); //药品规格 adjOrder.MakerDic.DrugInfo.chemname = dR["CHEMNAME"].ToString(); //药品名称 adjOrder.LeastUnitEntity.UnitName = dR["UNITNAME"].ToString(); //单位名称 adjOrder.MakerDic.DrugInfo.productname = dR["PRODUCTNAME"].ToString(); //厂家名称 } return; } catch (Exception error) { throw error; } }
private void btnDelOrder_Click(object sender, EventArgs e) { try { if (MessageBox.Show("您确认要删除该明细么?", "删除提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } if (_currentOrder == null || _orederDt.Rows.Count == 0 || dgrdAdjOrder.CurrentCell == null) { MessageBox.Show("没有选中数据"); return; } else { _orederDt.Rows.RemoveAt(dgrdAdjOrder.CurrentCell.RowIndex); if (dgrdAdjOrder.CurrentCell == null) { _currentOrder = (YP_AdjOrder)(_billProcessor.BuildNewoder(0, _adjMaster)); ClearOrderTextbox(); } else if (dgrdAdjOrder.CurrentCell.RowIndex > _orederDt.Rows.Count - 1) { dgrdAdjOrder.CurrentCell = dgrdAdjOrder[dgrdAdjOrder.CurrentCell.ColumnIndex, dgrdAdjOrder.CurrentCell.RowIndex - 1]; } else { DataRowToAdjOrder(_orederDt.Rows[dgrdAdjOrder.CurrentCell.RowIndex], _currentOrder); ShowCurrentOrder(); } } } catch (Exception error) { MessageBox.Show(error.Message); } }
/// <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; } }