public int AddItem(FarPoint.Win.Spread.SheetView sv, int activeRow) { string inNO = sv.Cells[activeRow, 5].Text; Neusoft.HISFC.Models.Pharmacy.Input input = this.itemManager.GetInputInfoByID(inNO); if (input == null) { MessageBox.Show(Language.Msg(this.itemManager.Err)); return(-1); } if (this.hsInData.ContainsKey(this.GetKey(input))) { MessageBox.Show(Language.Msg("该药品已添加")); return(-1); } if (this.AddDataToTable(input) == 1) { this.hsInData.Add(this.GetKey(input), input); } this.SetFormat(); this.SetFocusSelect(); return(1); }
/// <summary> /// 根据入库信息设置界面显示 /// </summary> /// <param name="input">入库信息</param> private void SetInInstance(Neusoft.HISFC.Models.Pharmacy.Input inInstance) { this.SetItem(inInstance.Item); //入库数量 this.ntbInQty.Text = Math.Round(inInstance.Quantity / inInstance.Item.PackQty, 2).ToString("N"); //入库金额 this.ntbInCost.Text = inInstance.RetailCost.ToString(); //零售金额 this.ntbPurchaseCost.Text = inInstance.PurchaseCost.ToString(); //批 号 this.txtBatchNO.Text = inInstance.BatchNO; //有 效 期 this.dtValidTime.Value = inInstance.ValidTime; if (inInstance.InvoiceNO != "" && inInstance.InvoiceNO != null) { //发 票 号 this.txtInvoiceNO.Text = inInstance.InvoiceNO; } //发票分类 this.cmbInvoiceType.Text = inInstance.InvoiceType; //购 入 价 this.ntbPurchasePrice.Text = inInstance.Item.PriceCollection.PurchasePrice.ToString(); //生产厂家 this.cmbProduce.Text = inInstance.Item.Product.Producer.Name; this.cmbProduce.Tag = inInstance.Item.Product.Producer.ID; //送货单号 this.txtDeliveryNO.Text = inInstance.DeliveryNO; //货位号 this.txtPlaceNO.Text = inInstance.PlaceNO; //备注 this.txtMemo.Text = inInstance.Memo; }
/// <summary> /// 获取输入的入库信息 /// </summary> private void GetInInstance() { if (this.inInstance == null) { this.inInstance = new Neusoft.HISFC.Models.Pharmacy.Input(); } if (this.item == null || this.item.ID == "") { return; } this.inInstance.Item = this.item; //药品信息 this.inInstance.Quantity = NConvert.ToDecimal(this.ntbInQty.NumericValue) * this.item.PackQty; //入库数量 this.inInstance.RetailCost = NConvert.ToDecimal(this.ntbInCost.NumericValue); //入库金额 this.inInstance.BatchNO = Neusoft.FrameWork.Public.String.TakeOffSpecialChar(this.txtBatchNO.Text.Trim()); //批 号 this.inInstance.ValidTime = this.dtValidTime.Value.Date; //有 效 期 this.inInstance.InvoiceNO = Neusoft.FrameWork.Public.String.TakeOffSpecialChar(this.txtInvoiceNO.Text.Trim()); //发 票 号 this.inInstance.InvoiceType = this.cmbInvoiceType.Text.Trim(); //发票分类 this.inInstance.Item.PriceCollection.PurchasePrice = NConvert.ToDecimal(this.ntbPurchasePrice.NumericValue); //购入价 if (this.cmbProduce.Tag != null) //生产厂家 { //{3F6FF86C-0C62-44de-B09B-595B297DD832} this.inInstance.Producer.ID = this.cmbProduce.Tag.ToString(); this.inInstance.Producer.Name = this.cmbProduce.Text.Trim(); //{C03DD304-AE71-4b6a-BC63-F385DB162EB7} this.inInstance.Item.Product.Producer.ID = this.cmbProduce.Tag.ToString(); this.inInstance.Item.Product.Producer.Name = this.cmbProduce.Text.Trim(); } this.inInstance.DeliveryNO = this.txtDeliveryNO.Text.Trim(); //送货单号 this.inInstance.PlaceNO = Neusoft.FrameWork.Public.String.TakeOffSpecialChar(this.txtPlaceNO.Text.Trim()); //货位号 this.inInstance.Memo = Neusoft.FrameWork.Public.String.TakeOffSpecialChar(this.txtMemo.Text); //备注 }
/// <summary> /// 将实体信息加入DataTable内 /// </summary> /// <param name="input">入库信息</param> /// <returns></returns> protected virtual int AddDataToTable(Neusoft.HISFC.Models.Pharmacy.Input input) { if (this.dt == null) { this.InitDataTable(); } try { input.RetailCost = input.Quantity / input.Item.PackQty * input.Item.PriceCollection.RetailPrice; this.dt.Rows.Add(new object[] { input.Item.Name, //商品名称 input.Item.Specs, //规格 input.Item.PriceCollection.RetailPrice, //零售价 input.BatchNO, //批号 input.Item.PackUnit, //包装单位 input.Quantity / input.Item.PackQty, //入库数量 input.RetailCost, //入库金额 input.InvoiceNO, //发票号 input.InvoiceType, //发票类别 input.Item.PriceCollection.PurchasePrice, //购入价 input.PurchaseCost, //购入金额 input.Item.Product.Producer.Name, //生产厂家 input.Operation.ApplyOper.ID, //申请人 input.Operation.ApplyOper.OperTime, //申请日期 input.Memo, //备注 input.Item.ID, //药品编码 input.Item.NameCollection.SpellCode, //拼音码 input.Item.NameCollection.WBCode, //五笔码 input.Item.NameCollection.UserCode, //自定义码 input.GroupNO.ToString() } ); } #region {CAD2CB10-14FE-472c-A7D7-9BAA5061730C} catch (System.Data.ConstraintException cex) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("该药品已选择不能重复选择!")); return(-1); } #endregion catch (System.Data.DataException e) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("DataTable内赋值发生错误" + e.Message)); return(-1); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("DataTable内赋值发生错误" + ex.Message)); return(-1); } return(1); }
/// <summary> /// 根据出库流水号获取待核准数据 /// </summary> /// <param name="outNO">出库流水号</param> /// <returns></returns> private int AddOutDataByOutNO(string outNO) { ArrayList alDetail = this.itemManager.QueryOutputList(outNO); if (alDetail == null || alDetail.Count <= 0) { MessageBox.Show(Language.Msg("根据出库流水号获取出库数据发生错误")); return(-1); } foreach (Neusoft.HISFC.Models.Pharmacy.Output output in alDetail) { Neusoft.HISFC.Models.Pharmacy.Input input = this.InputConvert(output); if (this.hsInData.ContainsKey(this.GetKey(input))) { MessageBox.Show(Language.Msg("该数据已加入选择!")); return(0); } //是否已包含该单据 if (!this.hsListNO.ContainsKey(input.OutListNO)) { if (this.hsListNO.Count > 0) { string msg = Language.Msg(string.Format("该药品入库单据号与当前入库单据号不同 该药品入库单据{0} 确认加入吗?", input.OutListNO)); DialogResult rs = MessageBox.Show(msg, "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (rs == DialogResult.No) { return(0); } } } if (this.AddDataToTable(input) == 1) { this.hsInData.Add(this.GetKey(input), input); //保存单据号 if (this.hsListNO.ContainsKey(input.OutListNO)) { this.hsListNO[input.OutListNO] = ((int)this.hsListNO[input.OutListNO]) + 1; } else { this.AddListNO(input.OutListNO); } } } this.SetFormat(); return(1); }
/// <summary> /// 删除 /// </summary> /// <param name="sv">需执行删除的Fp</param> /// <param name="delRowIndex">需删除的行索引</param> /// <returns>成功返回1 失败返回-1</returns> public virtual int Delete(FarPoint.Win.Spread.SheetView sv, int delRowIndex) { try { if (sv != null && delRowIndex >= 0) { string[] keys = new string[] { sv.Cells[delRowIndex, (int)ColumnSet.ColDrugID].Text, sv.Cells[delRowIndex, (int)ColumnSet.ColBatchNO].Text }; DataRow dr = this.dt.Rows.Find(keys); if (dr != null) { Neusoft.HISFC.Models.Pharmacy.Input input = this.hsInputData[dr["药品编码"].ToString() + dr["批号"].ToString()] as Neusoft.HISFC.Models.Pharmacy.Input; //增加直接删除外部入库申请功能 by Sunjh 2010-8-23 {EB33BF6F-D122-4330-8D89-BB8695DD5A48} if (MessageBox.Show("是否删除当前申请信息,是则直接提交保存", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item(); if (itemManager.DeleteApplyIn(input.ID) == -1) { MessageBox.Show("删除失败!"); } } else { return(-1); } this.hsInputData.Remove(dr["药品编码"].ToString() + dr["批号"].ToString()); this.dt.Rows.Remove(dr); //合计计算 this.CompuateSum(); } } } catch (System.Data.DataException e) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("对数据表执行删除操作发生错误" + e.Message)); return(-1); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("对数据表执行删除操作发生错误" + ex.Message)); return(-1); } return(1); }
private void Fp_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e) { string[] keys = new string[] { this.svTemp.Cells[e.Row, (int)ColumnSet.ColDrugID].Text, this.svTemp.Cells[e.Row, (int)ColumnSet.ColBatchNO].Text }; DataRow dr = this.dt.Rows.Find(keys); if (dr != null) { this.privKey = dr["药品编码"].ToString() + dr["批号"].ToString(); Neusoft.HISFC.Models.Pharmacy.Input input = this.hsInputData[dr["药品编码"].ToString() + dr["批号"].ToString()] as Neusoft.HISFC.Models.Pharmacy.Input; this.ucDetail.InInstance = input.Clone(); } }
/// <summary> /// 根据药品编码与批次号加入入库退库信息 /// </summary> /// <param name="drugNO"></param> /// <param name="groupNO"></param> /// <returns></returns> protected virtual int AddInData(string drugNO, int groupNO) { if (this.hsInData.ContainsKey(drugNO + groupNO)) { MessageBox.Show(Language.Msg("该药品已添加")); return(0); } ArrayList alDetail = this.itemManager.QueryStorageList(this.phaInManager.DeptInfo.ID, drugNO, groupNO); if (alDetail == null || alDetail.Count == 0) { MessageBox.Show(Language.Msg("未获取有效的库存明细信息" + this.itemManager.Err)); return(-1); } Neusoft.HISFC.Models.Pharmacy.Storage storage = alDetail[0] as Neusoft.HISFC.Models.Pharmacy.Storage; Neusoft.HISFC.Models.Pharmacy.Input input = new Neusoft.HISFC.Models.Pharmacy.Input(); input.StockDept = storage.StockDept; //库存科室 input.TargetDept = this.phaInManager.TargetDept; //目标科室 input.Company = this.phaInManager.TargetDept; input.Item = storage.Item; input.GroupNO = storage.GroupNO; input.Quantity = storage.StoreQty; //入库量 = 库存量 input.BatchNO = storage.BatchNO; input.ValidTime = storage.ValidTime; input.PlaceNO = storage.PlaceNO; input.InvoiceNO = storage.InvoiceNO; input.Producer = storage.Producer; input.Memo = storage.Memo; input.PrivType = this.phaInManager.PrivType.ID; //入库类型 input.SystemType = this.phaInManager.PrivType.Memo; //系统类型 if (this.AddDataToTable(input) == 1) { this.hsInData.Add(this.GetKey(input), input); } this.SetFormat(); this.SetFocusSelect(); return(1); }
/// <summary> /// 转换 /// </summary> /// <param name="item"></param> /// <param name="dataSource">数据来源 1 采购单 2 申请单 0 手工选择</param> /// <returns></returns> protected Neusoft.HISFC.Models.Pharmacy.Input ConvertToInput(Neusoft.HISFC.Models.Pharmacy.Item item, string dataSource) { Neusoft.HISFC.Models.Pharmacy.Input input = new Neusoft.HISFC.Models.Pharmacy.Input(); input.Item = item; #region 实体赋值 input.StockDept = this.phaInManager.DeptInfo; //库存科室 input.PrivType = this.phaInManager.PrivType.ID; //用户类型 input.SystemType = this.phaInManager.PrivType.Memo; //系统类型 input.Company = this.phaInManager.TargetDept; //供货单位 input.TargetDept = this.phaInManager.TargetDept; //目标单位 = 供货单位 input.User01 = dataSource; //数据来源 1 采购单 2 申请单 0 手工选择 #endregion return(input); }
/// <summary> /// 入库实体赋值 /// </summary> /// <param name="output"></param> /// <returns></returns> private Neusoft.HISFC.Models.Pharmacy.Input InputConvert(Neusoft.HISFC.Models.Pharmacy.Output output) { Neusoft.HISFC.Models.Pharmacy.Input input = new Neusoft.HISFC.Models.Pharmacy.Input(); #region Input 信息填充 //补充目标单位信息 if (this.phaInManager.TargetDept.ID == "") { this.FillTargetInfo(input.TargetDept.ID); } input.StockDept = this.phaInManager.DeptInfo; //申请科室 input.PrivType = this.phaInManager.PrivType.ID; //入库分类 input.SystemType = this.phaInManager.PrivType.Memo; //系统类型 input.State = "2"; //状态 核准 input.Company = this.phaInManager.TargetDept; input.TargetDept = this.phaInManager.TargetDept; //目标单 input.Item = output.Item; //药品实体信息 input.OutBillNO = output.ID; //出库流水号 input.OutListNO = output.OutListNO; //出库单据号 input.OutSerialNO = output.SerialNO; //序号 input.SerialNO = output.SerialNO; input.BatchNO = output.BatchNO; //批号 input.ValidTime = output.ValidTime; //有效期 input.Quantity = output.Quantity; //数量 input.PlaceNO = output.PlaceNO; //货位号 input.GroupNO = output.GroupNO; //批次 input.Operation = output.Operation; //操作信息 #endregion //存储主键信息 //出库审批数据 多批次出库时 同一药品不同批次 流水号相同 单据内序号不同 input.User03 = output.ID + output.SerialNO; return(input); }
public int Delete(FarPoint.Win.Spread.SheetView sv, int delRowIndex) { try { if (sv != null && delRowIndex >= 0) { string[] keys = this.GetKey(); DataRow dr = this.dt.Rows.Find(keys); if (dr != null) { this.phaInManager.Fp.StopCellEditing(); //移出单据号 Neusoft.HISFC.Models.Pharmacy.Input tempInput = this.hsInData[this.GetKey(dr)] as Neusoft.HISFC.Models.Pharmacy.Input; this.RemoveListNO(tempInput.OutListNO); //由入库实体集合内移出 this.hsInData.Remove(this.GetKey(dr)); this.dt.Rows.Remove(dr); this.phaInManager.Fp.StartCellEditing(null, false); } } } catch (System.Data.DataException e) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("对数据表执行删除操作发生错误" + e.Message)); return(-1); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("对数据表执行删除操作发生错误" + ex.Message)); return(-1); } return(1); }
private void Save() { if (this.neuSpread1_Sheet1.Rows.Count <= 0) { return; } Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item(); //itemManager.SetTrans(t.Trans); for (int i = 0; i < this.neuSpread1_Sheet1.Rows.Count; i++) { if (Neusoft.FrameWork.Function.NConvert.ToBoolean(this.neuSpread1_Sheet1.Cells[i, 0].Value)) { Neusoft.HISFC.Models.Pharmacy.Input input = this.neuSpread1_Sheet1.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.Input; input.Company = this.newCompany; if (itemManager.UpdateInput(input) != 1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("更新供货公司信息失败"); return; } } } Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show("保存成功"); }
/// <summary> /// 主键 /// </summary> /// <param name="input"></param> /// <returns></returns> private string GetKey(Neusoft.HISFC.Models.Pharmacy.Input input) { return(input.Item.ID + input.GroupNO.ToString() + input.BatchNO); }
/// <summary> /// 获取主键值 /// </summary> /// <param name="input"></param> /// <returns></returns> private string GetKey(Neusoft.HISFC.Models.Pharmacy.Input input) { //return input.Item.ID + input.BatchNO + input.InvoiceNO; return(input.User03); }
/// <summary> /// 保存 /// </summary> public virtual void Save() { if (!this.Valid()) { return; } Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在进行保存操作..请稍候"); System.Windows.Forms.Application.DoEvents(); #region 事务定义 Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizProcess.Integrate.Pharmacy phaIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Pharmacy(); Neusoft.HISFC.BizLogic.Pharmacy.Item itemManager = new Neusoft.HISFC.BizLogic.Pharmacy.Item(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); //itemManager.SetTrans(t.Trans); //phaIntegrate.SetTrans(t.Trans); #endregion //当天操作日期 DateTime sysTime = itemManager.GetDateTimeFromSysDateTime(); //入库单据号 string inListNO = null; Neusoft.HISFC.Models.Pharmacy.Input input = new Neusoft.HISFC.Models.Pharmacy.Input(); foreach (DataRow dr in this.dt.Rows) { string key = dr["药品编码"].ToString() + dr["批号"].ToString(); input = this.hsInputData[key] as Neusoft.HISFC.Models.Pharmacy.Input; if (inListNO == null) { inListNO = input.InListNO; } #region 如果不存在入库单据号 则获取新入库单据号 if (inListNO == "" || inListNO == null) { // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式 inListNO = phaIntegrate.GetInOutListNO(this.phaInManager.DeptInfo.ID, true); if (inListNO == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); this.ShowMsg("获取最新入库单号出错" + itemManager.Err); return; } } #endregion input.InListNO = inListNO; //入库单据号 #region 以下信息在每次添加数据生成入库信息实体时赋值 input.StockDept = this.phaInManager.DeptInfo; //库存科室 input.PrivType = this.phaInManager.PrivType.ID; //用户类型 input.SystemType = this.phaInManager.PrivType.Memo; //系统类型 input.Company = this.phaInManager.TargetDept; //供货单位 input.TargetDept = this.phaInManager.TargetDept; //目标单位 = 供货单位 #endregion if (input.Operation.ApplyOper.ID == "") { input.Operation.ApplyQty = input.Quantity; //入库申请量 input.Operation.ApplyOper.ID = this.phaInManager.OperInfo.ID; input.Operation.ApplyOper.OperTime = sysTime; } input.Operation.Oper.ID = this.phaInManager.OperInfo.ID; input.Operation.Oper.OperTime = sysTime; input.Operation.ApplyQty = input.Quantity; //入库申请量 input.State = "0"; if (itemManager.SetApplyIn(input) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); this.ShowMsg("入库 保存失败" + itemManager.Err); return; } } Neusoft.FrameWork.Management.PublicTrans.Commit(); this.ShowMsg("外部入库申请保存成功"); this.Clear(); }
/// <summary> /// 添加待核准的出库数据 /// </summary> /// <param name="outListNO">出库单据号</param> private void AddOutDataByListNO(string outListNO) { ArrayList alDetail = this.itemManager.QueryOutputInfo(this.phaInManager.TargetDept.ID, outListNO, "1"); if (alDetail == null) { MessageBox.Show(Language.Msg("获取入库待核准数据发生错误" + this.itemManager.Err)); return; } if (alDetail.Count == 0) { MessageBox.Show(Language.Msg("该单据可能已被核准")); return; } //先设置Fp进行初始化 提高加载速度 ((System.ComponentModel.ISupportInitialize)(this.phaInManager.Fp)).BeginInit(); foreach (Neusoft.HISFC.Models.Pharmacy.Output output in alDetail) { //对为零的记录不进行处理 if (output.Quantity == 0) { continue; } //对退库数量等于出库数量的 不进行处理 该记录已全部出库 if (output.Quantity == output.Operation.ReturnQty) { continue; } Neusoft.HISFC.Models.Pharmacy.Input input = this.InputConvert(output); if (this.AddDataToTable(input) == 1) { this.hsInData.Add(this.GetKey(input), input); } else { ((System.ComponentModel.ISupportInitialize)(this.phaInManager.Fp)).EndInit(); MessageBox.Show(Language.Msg("加载出库实体信息时发生错误")); return; } } if (this.phaInManager.FpSheetView.Rows.Count == 0) { ((System.ComponentModel.ISupportInitialize)(this.phaInManager.Fp)).EndInit(); MessageBox.Show(Language.Msg("该单据内不存在有效的待核准记录 药品都已退库或核准完成")); return; } //保存当前单据信息 this.hsListNO.Add(outListNO, alDetail.Count); this.SetFormat(); ((System.ComponentModel.ISupportInitialize)(this.phaInManager.Fp)).EndInit(); return; }
private void ucDetail_InInstanceCompleteEvent(ref Neusoft.FrameWork.Models.NeuObject msg) { Neusoft.HISFC.Models.Pharmacy.Input tempInput = this.ucDetail.InInstance.Clone(); if (tempInput != null) { if (tempInput.Item.ID == "") { return; } #region 判断是否存在供货公司 if (this.phaInManager.TargetDept.ID == "") { MessageBox.Show(Language.Msg("请选择供货单位")); //通知ucDetail内 不处理焦点 if (msg == null) { msg = new Neusoft.FrameWork.Models.NeuObject(); } msg.User01 = "-1"; //标志是否处理焦点 this.phaInManager.SetDeptFocus(); return; } #endregion #region 是否判断此时选择的供货公司与药品基本信息维护的供货公司 if (this.isJudgeDefaultCompany) { if (tempInput.Item.Product.Company.ID != "" && this.phaInManager.TargetDept.ID != tempInput.Item.Product.Company.ID) { DialogResult rs = MessageBox.Show(Language.Msg("当前选择的供货单位与药品维护的默认供货单位不同 是否继续?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (rs == DialogResult.No) { return; } } } #endregion string key = tempInput.Item.ID + tempInput.BatchNO; #region 判断该药品信息是否存在 如果存在则删除原信息 重新赋值 if (this.privKey != "" && this.privKey.Substring(0, 12) != key.Substring(0, 12)) { this.privKey = ""; } if (!this.hsInputData.ContainsKey(this.privKey)) { tempInput.ID = "";//修改双击修改药品时重新选择药品后保存不上而直接覆盖的问题 by Sunjh 2010-8-23 {9EEBBBFA-AB66-41aa-A9DB-0E48FF995EFB} } //无批号 删除原信息 重新添加 避免重复添加两次 if (this.privKey.Length == 12) { if (this.hsInputData.ContainsKey(this.privKey)) { this.hsInputData.Remove(this.privKey); string[] keys = new string[] { this.privKey.Substring(0, 12), "" }; DataRow drFind = this.dt.Rows.Find(keys); if (drFind != null) { this.dt.Rows.Remove(drFind); } } } //对相同药品/批号 删除原数据 if (this.hsInputData.ContainsKey(key)) { this.hsInputData.Remove(key); string[] keys = new string[] { tempInput.Item.ID, tempInput.BatchNO }; DataRow drFind = this.dt.Rows.Find(keys); if (drFind != null) { this.dt.Rows.Remove(drFind); } } #endregion #region 实体赋值 tempInput.StockDept = this.phaInManager.DeptInfo; //库存科室 tempInput.PrivType = this.phaInManager.PrivType.ID; //用户类型 tempInput.SystemType = this.phaInManager.PrivType.Memo; //系统类型 tempInput.Company = this.phaInManager.TargetDept; //供货单位 tempInput.TargetDept = this.phaInManager.TargetDept; //目标单位 = 供货单位 #endregion if (this.AddDataToTable(tempInput) == 1) { this.hsInputData.Add(key, tempInput); this.SetFormat(); if (this.svTemp != null) { #region {D071715E-B5DB-4e7e-A060-069B08F62508} this.svTemp.ActiveRowIndex = 0; #endregion } } this.CompuateSum(); } }
/// <summary> /// 向DataTable内增加入库数据 /// </summary> /// <param name="input"></param> /// <returns></returns> private int AddDataToTable(Neusoft.HISFC.Models.Pharmacy.Input input) { if (this.dt == null) { this.InitDataTable(); } try { input.RetailCost = input.Quantity / input.Item.PackQty * input.Item.PriceCollection.RetailPrice; input.PurchaseCost = input.Quantity / input.Item.PackQty * input.Item.PriceCollection.PurchasePrice; bool isApprove = false; if (this.isPIDept) { isApprove = false; } else { isApprove = true; } if (input.InvoiceNO == null) { input.InvoiceNO = ""; } this.dt.Rows.Add(new object[] { isApprove, //核准 input.Item.Name, //商品名称 input.Item.Specs, //规格 input.BatchNO, //批号 input.Item.PriceCollection.RetailPrice, //零售价 input.Item.PackUnit, //包装单位 input.Quantity / input.Item.PackQty, //入库数量 input.RetailCost, //入库金额 input.InvoiceNO, //发票号 input.InvoiceType, //发票类别 input.Item.PriceCollection.PurchasePrice, //购入价 input.PurchaseCost, //购入金额 input.Item.Product.Producer.Name, //生产厂家 input.Operation.ApplyQty / input.Item.PackQty, //申请数量 input.Memo, //备注 input.Item.ID, //药品编码 //申请数量 input.Item.NameCollection.SpellCode, //拼音码 input.Item.NameCollection.WBCode, //五笔码 input.Item.NameCollection.UserCode, //自定义码 input.User03 } ); } catch (System.Data.DataException e) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("DataTable内赋值发生错误" + e.Message)); return(-1); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("DataTable内赋值发生错误" + ex.Message)); return(-1); } return(1); }
public void Save() { if (!this.Valid()) { return; } this.dt.DefaultView.RowFilter = "1=1"; for (int i = 0; i < this.dt.DefaultView.Count; i++) { this.dt.DefaultView[i].EndEdit(); } #region 判断是否选择了核准数据 bool isHaveCheck = false; bool isHaveUnCheck = false; foreach (DataRow dr in this.dt.Rows) { if (NConvert.ToBoolean(dr["核准"])) { isHaveCheck = true; } else { isHaveUnCheck = true; } } if (!isHaveCheck) { MessageBox.Show(Language.Msg("请选择需核准数据")); return; } if (isHaveUnCheck) { DialogResult rs = MessageBox.Show(Language.Msg("存在未选择数据 确认对这些药品不进行核准吗?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (rs == DialogResult.No) { return; } } #endregion Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizProcess.Integrate.Pharmacy phaIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Pharmacy(); //Neusoft.FrameWork.Management.Transaction t = new Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); //phaIntegrate.SetTrans(t.Trans); DateTime sysTime = this.itemManager.GetDateTimeFromSysDateTime(); string inListNO = ""; foreach (DataRow dr in this.dt.Rows) { if (!NConvert.ToBoolean(dr["核准"])) { continue; } string key = this.GetKey(dr); //{7F9E7287-5803-4b42-9CFD-61A17FF1A5D4} 由Hash表获取数据时需调用Clone函数 Neusoft.HISFC.Models.Pharmacy.Input input = (this.hsInData[key] as Neusoft.HISFC.Models.Pharmacy.Input).Clone(); input.Operation.ApproveOper.OperTime = sysTime; //核准日期 input.Operation.ApproveOper.ID = this.phaInManager.OperInfo.ID; //核准人 input.Operation.Oper = input.Operation.ApproveOper; if (input.ID == "" || input.InListNO == "" || input.GroupNO == 0) { #region 药房入库核准时 无入库记录 if (inListNO == "" && (input.InListNO == "" || input.InListNO == null)) { #region 获取新入库单号 if (input.OutListNO != "") { inListNO = input.OutListNO; } else { // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式 inListNO = phaIntegrate.GetInOutListNO(this.phaInManager.DeptInfo.ID, true); if (inListNO == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("获取最新入库单号出错" + itemManager.Err)); return; } } input.InListNO = inListNO; #endregion } else { input.InListNO = inListNO; } decimal storageQty = 0; if (this.itemManager.GetStorageNum(this.phaInManager.DeptInfo.ID, input.Item.ID, out storageQty) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("获取库存数量时出错" + this.itemManager.Err)); return; } input.StoreQty = storageQty + input.Quantity; input.StoreCost = input.StoreQty / input.Item.PackQty * input.Item.PriceCollection.RetailPrice; input.Operation.ApplyOper = input.Operation.ApproveOper.Clone(); #endregion } if (this.isApproveEdit) { input.InvoiceNO = dr["发票号"].ToString().Trim(); input.Item.PriceCollection.PurchasePrice = NConvert.ToDecimal(dr["购入价"]); } input.StockDept.Memo = this.phaInManager.DeptInfo.Memo; //保存科室类别 PI药库 P药房 //更新库存标记 对药库不进行更新 对药房更新库存 if (this.itemManager.ApproveInput(input, input.StockDept.Memo == "PI"?"0":"1") == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("保存 " + dr["商品名称"].ToString() + " 时发生错误") + this.itemManager.Err); return; } } Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show(Language.Msg("保存成功")); this.Clear(); this.ShowSelectData(); }
/// <summary> /// 检查入库药品有效性 /// </summary> /// <param name="patient"></param> /// <param name="feeDetails"></param> /// <returns></returns> public int CheckPhaIn(Neusoft.HISFC.Models.Pharmacy.Input input) { return(1); }
public void Save() { if (!this.Valid()) { return; } this.dt.DefaultView.RowFilter = "1=1"; for (int i = 0; i < this.dt.DefaultView.Count; i++) { this.dt.DefaultView[i].EndEdit(); } DataTable dtAddMofity = this.dt.GetChanges(DataRowState.Added | DataRowState.Modified); if (dtAddMofity == null || dtAddMofity.Rows.Count <= 0) { return; } //定义事务 Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); //Neusoft.FrameWork.Management.Transaction t = new Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); DateTime sysTime = this.itemManager.GetDateTimeFromSysDateTime(); foreach (DataRow dr in dtAddMofity.Rows) { string key = this.GetKey(dr); Neusoft.HISFC.Models.Pharmacy.Input input = this.hsInData[key] as Neusoft.HISFC.Models.Pharmacy.Input; input.Operation.ExamOper.ID = this.phaInManager.OperInfo.ID; //审批人 input.Operation.ExamOper.OperTime = sysTime; //审批时间 input.InvoiceNO = dr["发票号"].ToString().Trim(); input.InvoiceType = dr["发票分类"].ToString().Trim(); input.Item.PriceCollection.PurchasePrice = NConvert.ToDecimal(dr["购入价"]); input.PurchaseCost = NConvert.ToDecimal(dr["购入金额"]); int parm = this.itemManager.ExamInput(input); if (parm == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg(this.itemManager.Err)); return; } if (parm == 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("数据可能已被审核,请刷新重试")); return; } } Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show(Language.Msg("审批确认成功")); //清屏显示 this.Clear(); this.ShowSelectData(); }
public void Save() { this.phaOutManager.Fp.StopCellEditing(); if (!this.Valid()) { return; } DialogResult rs = MessageBox.Show(Language.Msg("确认向" + this.phaOutManager.TargetDept.Name + "进行出库操作吗?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (rs == DialogResult.No) { return; } this.dt.DefaultView.RowFilter = "1=1"; for (int i = 0; i < this.dt.DefaultView.Count; i++) { this.dt.DefaultView[i].EndEdit(); } DataTable dtAddMofity = this.dt.GetChanges(DataRowState.Added | DataRowState.Modified); if (dtAddMofity == null || dtAddMofity.Rows.Count <= 0) { return; } this.phaOutManager.Fp.StopCellEditing(); Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在进行保存操作..请稍候"); System.Windows.Forms.Application.DoEvents(); #region 事务定义 Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizLogic.Pharmacy.Constant phaCons = new Neusoft.HISFC.BizLogic.Pharmacy.Constant(); Neusoft.HISFC.BizProcess.Integrate.Pharmacy phaIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Pharmacy(); //Neusoft.FrameWork.Management.Transaction t = new Neusoft.FrameWork.Management.Transaction(Neusoft.FrameWork.Management.Connection.Instance); //t.BeginTransaction(); this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); //phaIntegrate.SetTrans(t.Trans); //phaCons.SetTrans(t.Trans); #endregion DateTime sysTime = this.itemManager.GetDateTimeFromSysDateTime(); string outListNO = ""; string inListNO = ""; //判断领用科室是否管理库存 bool isManagerStore = phaCons.IsManageStore(this.phaOutManager.TargetDept.ID); //如管理库存 则提示是否确认保存出库 if (isManagerStore) { Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm(); DialogResult rsResult = MessageBox.Show(Language.Msg(this.phaOutManager.TargetDept.Name + "管理库存。确认进行出库操作吗?\n出库时将直接更新对方库存"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (rsResult == DialogResult.No) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); return; } Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在进行保存操作..请稍候"); System.Windows.Forms.Application.DoEvents(); } //一般出库对应的入库记录 Neusoft.HISFC.Models.Pharmacy.Input input = null; //-------原程序处理方式 // //如领用科室管理库存 则只处理出库记录、更新本科室库存 不处理入库记录和领药科室库存 待领药科室入库核准后才处理库存 // //如领药科室不管理库存 则处理出库记录、更新本科室库存,试用期间处理入库记录、更新领药科室库存 // // 正式使用后不处理入库记录和领药科室库存 // //只需对isManagerStore赋值改变 对下边入库记录处理的判断做下修改即可 // //更新领药科室库存的操作封装于入库函数内 和入库记录一同处理 可通过传入参数判断是否处理库存 //-------新程序处理方式 // 一般出库时,不管目标科室是不是管理库存,都直接设置出库记录状态为已核准。 // 目标科室管理库存时,对目标科室产生入库记录,状态为已核准 // 目标科室不管理库存时,对目标科室不产生入库记录 this.alPrintData = new ArrayList(); foreach (DataRow dr in dtAddMofity.Rows) { string key = dr["药品编码"].ToString() + dr["批号"].ToString(); Neusoft.HISFC.Models.Pharmacy.Output output = this.hsOutData[key] as Neusoft.HISFC.Models.Pharmacy.Output; output.Operation.ExamOper.ID = this.phaOutManager.OperInfo.ID; //审核人 output.Operation.ExamOper.OperTime = sysTime; //审核日期 output.Operation.Oper = output.Operation.ExamOper; //操作信息 #region 对数据来源为申请的数据进行处理 if (dr["数据来源"].ToString() == "1") { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApplyData[output.User02] as Neusoft.HISFC.Models.Pharmacy.ApplyOut; applyOut.State = "1"; //状态 审批 applyOut.Operation = output.Operation; //操作信息 if (this.itemManager.UpdateApplyOut(applyOut) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("更新" + output.Item.Name + "出库申请信息时出错"); return; } if (outListNO == "") { outListNO = applyOut.BillNO; } } #endregion #region 获取单据号 if (outListNO == "") { // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式 outListNO = phaIntegrate.GetInOutListNO(this.phaOutManager.DeptInfo.ID, false); if (outListNO == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("获取新出库单号出错" + phaIntegrate.Err); return; } } output.OutListNO = outListNO; #endregion #region Output实体必要信息赋值 if (this.isUseMinUnit) //使用最小单位 { output.Quantity = NConvert.ToDecimal(dr["出库数量"]); //出库数量 } else //使用包装单位 { output.Quantity = NConvert.ToDecimal(dr["出库数量"]) * output.Item.PackQty; //出库数量 } output.StoreQty = output.StoreQty - output.Quantity; output.StoreCost = output.StoreQty * output.Item.PriceCollection.RetailPrice / output.Item.PackQty; output.Operation.ExamQty = output.Quantity; //审核数量 output.Memo = dr["备注"].ToString(); output.DrugedBillNO = "0"; //摆药单号 不能为空 output.GetPerson = this.phaOutManager.TargetPerson.ID; //领药人 //----原数据处理方式 //if (isManagerStore) //目标(领用)科室管理库存 // output.State = "1"; //审核 //else // output.State = "2"; //核准 //----现处理方式 对于一般出库 直接设置出库状态为2 output.State = "2"; if (this.isSpecialOut) //特殊出库 直接更新状态为核准 { output.SpecialFlag = "1"; output.State = "2"; } if (output.State == "2") { output.Operation.ApproveOper = output.Operation.Oper; } #endregion #region 以下信息在每次添加新数据时自动生成 output.PrivType = this.phaOutManager.PrivType.ID; //出库类型 output.SystemType = this.phaOutManager.PrivType.Memo; //系统类型 output.StockDept = this.phaOutManager.DeptInfo; //当前科室 output.TargetDept = this.phaOutManager.TargetDept; //目标科室 #endregion #region 形成目标科室的入库记录 #region 根据领药科室是否管理库存 在不管理库存的情况下才处理入库记录 if (!this.isSpecialOut) { input = new Neusoft.HISFC.Models.Pharmacy.Input(); //设置入库单号 if (inListNO == "") { // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式 inListNO = phaIntegrate.GetInOutListNO(this.phaOutManager.TargetDept.ID, false); if (inListNO == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("对目标库存科室插入入库记录时获取入库单号出错") + this.itemManager.Err); return; } } //获取关联权限类型 关联权限类型不存在时 设置为默认值 if (this.privJoinClass3 != null) { input.PrivType = this.privJoinClass3.Class3Code; input.SystemType = this.privJoinClass3.Class3MeaningCode; } else { input.PrivType = "01"; //一般入库对应的用户类型 input.SystemType = "11"; //一般入库 } input.State = "2"; //已审批 input.StockDept = this.phaOutManager.TargetDept; //库存部门 input.TargetDept = this.phaOutManager.DeptInfo; //目标科室 供货单位 input.InListNO = inListNO; //入库单据号 input.OutListNO = outListNO; //出库单据号 input.Operation.ExamOper.ID = this.phaOutManager.OperInfo.ID; //审批人 input.Operation.ExamOper.OperTime = sysTime; //审批日期 input.Operation.ApproveOper = input.Operation.ExamOper; input.Operation.ApplyOper = input.Operation.ExamOper; decimal storeQty = 0; if (this.itemManager.GetStorageNum(this.phaOutManager.TargetDept.ID, output.Item.ID, out storeQty) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("获取" + output.Item.Name + "库存数量时发生错误" + this.itemManager.Err)); return; } input.StoreQty = storeQty + output.Quantity; //设置出库记录中对应的入库单据号 output.InListNO = inListNO; } else { input = null; } #endregion #endregion //原处理方式 第三个参数始终传入False if (this.itemManager.Output(output, input, isManagerStore) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("出库保存发生错误" + this.itemManager.Err); return; } this.alPrintData.Add(output); } Neusoft.FrameWork.Management.PublicTrans.Commit(); //for (int i = 0; i < this.dt.DefaultView.Count; i++) //{ // this.dt.DefaultView[i].BeginEdit(); //} Function.ShowMsg("保存成功"); DialogResult rsPrint = MessageBox.Show(Language.Msg("是否打印出库单?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (rsPrint == DialogResult.Yes) { this.Print(); } this.Clear(); }
protected override int OnSave(object sender, object neuObject) { if (this.Valid() == false) { return(-1); } Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizProcess.Integrate.Pharmacy phaProcess = new Neusoft.HISFC.BizProcess.Integrate.Pharmacy(); this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); DateTime sysTime = this.itemManager.GetDateTimeFromSysDateTime(); //操作环境信息 Neusoft.HISFC.Models.Base.OperEnvironment operEnvironment = new Neusoft.HISFC.Models.Base.OperEnvironment(); operEnvironment.OperTime = sysTime; operEnvironment.ID = this.itemManager.Operator.ID; operEnvironment.Name = this.itemManager.Operator.Name; //当前库存科室 Neusoft.FrameWork.Models.NeuObject stockDept = ((Neusoft.HISFC.Models.Base.Employee) this.itemManager.Operator).Dept; //出库单号 string outListNO = phaProcess.GetInOutListNO(stockDept.ID, false); //入库批次号 string groupNO = this.itemManager.GetNewGroupNO(); if (groupNO == null) { Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm(); Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("获取新协定处方批次号发生错误 " + this.itemManager.Err); return(-1); } Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("协定处方包装库存处理..."); Application.DoEvents(); for (int i = 0; i < this.fpPackageList_Sheet1.Rows.Count; i++) { //1. 获取当前进行包装处理的协定处方 Neusoft.HISFC.Models.Pharmacy.Item selectNostrum = this.fpPackageList_Sheet1.Rows[i].Tag as Neusoft.HISFC.Models.Pharmacy.Item; //计划数量 decimal planQty = Neusoft.FrameWork.Function.NConvert.ToDecimal(this.fpPackageList_Sheet1.Cells[i, (int)ColPackageList.ColPlanQty].Text); Neusoft.FrameWork.WinForms.Classes.Function.ShowWaitForm("正在对 " + selectNostrum.Name + " 进行库存处理"); Application.DoEvents(); //2. 获取协定处方构成明细 List <Neusoft.HISFC.Models.Pharmacy.Nostrum> detailNostrumList = this.fpPackageList_Sheet1.Cells[i, (int)ColPackageList.ColDetail].Tag as List <Neusoft.HISFC.Models.Pharmacy.Nostrum>; if (detailNostrumList == null) { detailNostrumList = this.itemManager.QueryNostrumDetail(selectNostrum.ID); } //3. 根据协定处方构成明细,对明细药品进行出库处理 foreach (Neusoft.HISFC.Models.Pharmacy.Nostrum info in detailNostrumList) { #region 处方明细出库 //3.1 对明细药品逐条进行出库处理 Neusoft.HISFC.Models.Pharmacy.Item detailItem = this.itemManager.GetItem(info.Item.ID); if (detailItem == null) { Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm(); Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("处理处方明细出库,根据药品编码获取药品名称发生错误 " + this.itemManager.Err); return(-1); } //info.Qty 即协定处方维护内的数量即为生产1单位成品所需的数量,此处直接相乘即所需明细的最小单位库存量 decimal outQty = planQty * info.Qty; if (this.itemManager.NostrumPackageOutput(detailItem, outQty, stockDept, operEnvironment, outListNO) == -1) { Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm(); Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("处理处方明细出库,进行出库操作发生错误 " + this.itemManager.Err); return(-1); } #endregion } //4. 对协定处方进行入库处理 #region 处方入库处理 Neusoft.HISFC.Models.Pharmacy.Input input = new Neusoft.HISFC.Models.Pharmacy.Input(); decimal inQty = planQty * selectNostrum.PackQty; #region 实体赋值 input.Class2Type = "0310"; input.SystemType = Neusoft.HISFC.Models.Base.EnumIMAInTypeService.GetNameFromEnum(Neusoft.HISFC.Models.Base.EnumIMAInType.ProduceInput); //系统类型=出库申请类型; //"R1" 制剂管理类型 input.PrivType = input.SystemType; //制剂管理类型 input.InListNO = outListNO; input.Item = selectNostrum; input.StockDept = stockDept; input.Company = stockDept; input.Producer = stockDept; input.TargetDept = stockDept; input.GroupNO = Neusoft.FrameWork.Function.NConvert.ToDecimal(groupNO); input.BatchNO = this.fpPackageList_Sheet1.Cells[i, (int)ColPackageList.ColBatchNO].Text; if (string.IsNullOrEmpty(input.BatchNO) == true) { input.BatchNO = "1"; } input.ValidTime = Neusoft.FrameWork.Function.NConvert.ToDateTime(this.fpPackageList_Sheet1.Cells[i, (int)ColPackageList.ColValidDate].Text); if (input.ValidTime < sysTime) { input.ValidTime = sysTime.AddYears(10); } input.Quantity = inQty; input.Operation.ApplyQty = inQty; input.Operation.ExamQty = inQty; input.Operation.ApplyOper = operEnvironment; input.State = "2"; input.Operation.ExamOper = operEnvironment; input.Operation.ApproveOper = operEnvironment; #endregion #region 购入价计算 ArrayList alOutputList = this.itemManager.QueryOutputInfo(stockDept.ID, outListNO, "A"); if (alOutputList != null) { input.PurchaseCost = 0; foreach (Neusoft.HISFC.Models.Pharmacy.Output outputTemp in alOutputList) { input.PurchaseCost += outputTemp.PurchaseCost; } input.PriceCollection.PurchasePrice = Math.Round(input.PurchaseCost / (input.Quantity / input.Item.PackQty), 4); } #endregion if (this.itemManager.Input(input, "1") == -1) { Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm(); Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show("处理处方成品入库,进行入库操作发生错误 " + this.itemManager.Err); return(-1); } #endregion } Neusoft.FrameWork.WinForms.Classes.Function.HideWaitForm(); Neusoft.FrameWork.Management.PublicTrans.Commit(); MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Clear(); return(1); }
/// <summary> /// 将实体信息加入DataTable内 /// </summary> /// <param name="input">入库信息 Input.User01存储数据来源</param> /// <returns></returns> protected virtual int AddDataToTable(Neusoft.HISFC.Models.Pharmacy.Input input) { if (this.dt == null) { this.InitDataTable(); } //中草药自动设置批号为"1" if (input.Item.Type.ID == "C" && (input.BatchNO == "" || input.BatchNO == null)) { input.BatchNO = "1"; } try { input.RetailCost = input.Quantity / input.Item.PackQty * input.Item.PriceCollection.RetailPrice; input.PurchaseCost = input.Quantity / input.Item.PackQty * input.Item.PriceCollection.PurchasePrice; #region {D071715E-B5DB-4e7e-A060-069B08F62508} //this.dt.Rows.Add(new object[] { // true, // input.DeliveryNO, //送货单号 // input.Item.Name, //商品名称 // input.Item.Specs, //规格 // input.Item.PriceCollection.RetailPrice, //零售价 // input.Item.PackUnit, //包装单位 // input.Item.PackQty, //包装数量 // input.Quantity / input.Item.PackQty, //入库数量 // input.RetailCost, //入库金额 // input.BatchNO, //批号 // input.ValidTime, //有效期 // input.InvoiceNO, //发票号 // input.InvoiceType, //发票类别 // input.Item.PriceCollection.PurchasePrice, //购入价 // input.PurchaseCost, //购入金额 // input.Item.Product.Producer.Name, //生产厂家 // input.Item.ID, //药品编码 // input.ID, //流水号 // input.Item.NameCollection.SpellCode, //拼音码 // input.Item.NameCollection.WBCode, //五笔码 // input.Item.NameCollection.UserCode //自定义码 // } // ); DataRow row = this.dt.NewRow(); row[0] = true; row[1] = input.DeliveryNO; //送货单号 row[2] = input.Item.Name; //商品名称 row[3] = input.Item.Specs; //规格 row[4] = input.Item.PriceCollection.RetailPrice; //零售价 row[5] = input.Item.PackUnit; //包装单位 row[6] = input.Item.PackQty; //包装数量 row[7] = input.Quantity / input.Item.PackQty; //入库数量 row[8] = input.RetailCost; //入库金额 row[9] = input.BatchNO; //批号 row[10] = input.ValidTime; //有效期 row[11] = input.InvoiceNO; //发票号 row[12] = input.InvoiceType; //发票类别 row[13] = input.Item.PriceCollection.PurchasePrice; //购入价 row[14] = input.PurchaseCost; //购入金额 row[15] = input.Item.Product.Producer.Name; //生产厂家 row[16] = input.Item.ID; //药品编码 row[17] = input.ID; //流水号 row[18] = input.Item.NameCollection.SpellCode; //拼音码 row[19] = input.Item.NameCollection.WBCode; //五笔码 row[20] = input.Item.NameCollection.UserCode; //自定义码 this.dt.Rows.InsertAt(row, 0); #endregion } catch (System.Data.DataException e) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("DataTable内赋值发生错误" + e.Message)); return(-1); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(Neusoft.FrameWork.Management.Language.Msg("DataTable内赋值发生错误" + ex.Message)); return(-1); } return(1); }
public void Save() { if (!this.Valid()) { return; } this.dt.DefaultView.RowFilter = "1=1"; for (int i = 0; i < this.dt.DefaultView.Count; i++) { this.dt.DefaultView[i].EndEdit(); } DataTable dtAddMofity = this.dt.GetChanges(DataRowState.Added | DataRowState.Modified); if (dtAddMofity == null || dtAddMofity.Rows.Count <= 0) { return; } //定义事务 Neusoft.FrameWork.Management.PublicTrans.BeginTransaction(); Neusoft.HISFC.BizProcess.Integrate.Pharmacy phaIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Pharmacy(); this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); DateTime sysTime = this.itemManager.GetDateTimeFromSysDateTime(); //获取退库单号 // //{59C9BD46-05E6-43f6-82F3-C0E3B53155CB} 更改入库单号获取方式 string inListNO = phaIntegrate.GetInOutListNO(this.phaInManager.DeptInfo.ID, true); if (inListNO == null) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("获取最新入库单号出错" + itemManager.Err)); return; } //标志是否存在保存操作 bool isSaveOperation = false; this.alPrintData = new ArrayList(); foreach (DataRow dr in dtAddMofity.Rows) { decimal backQty = NConvert.ToDecimal(dr["退库数量"]); if (backQty == 0) { continue; } string key = this.GetKey(dr); //{DCE152D1-295C-4cc6-9EAA-39321A234569} Neusoft.HISFC.Models.Pharmacy.Input input = (this.hsInData[key] as Neusoft.HISFC.Models.Pharmacy.Input).Clone(); backQty = backQty * input.Item.PackQty; #region 获取本批次当前库存 判断是否允许退库 decimal storeQty = 0; this.itemManager.GetStorageNum(this.phaInManager.DeptInfo.ID, input.Item.ID, input.GroupNO, out storeQty); if (storeQty < backQty) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg(input.Item.Name + " 库存数量不足 退库数量过大"), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } #endregion #region 退库信息赋值 input.InListNO = inListNO; //退库单号 input.Quantity = -backQty; //入库数量(负数) input.RetailCost = input.Quantity / input.Item.PackQty * input.Item.PriceCollection.RetailPrice; input.StoreQty = storeQty + input.Quantity; //入库后库存数量 input.StoreCost = input.StoreQty / input.Item.PackQty * input.Item.PriceCollection.RetailPrice; input.Operation.ApplyOper.ID = this.phaInManager.OperInfo.ID; input.Operation.ApplyOper.OperTime = sysTime; input.Operation.Oper = input.Operation.ApplyOper; //根据不同发票输入情况及控制参数设置状态 input.State = "0"; input.InvoiceNO = dr["发票号"].ToString(); if (input.InvoiceNO != "") { input.Operation.ExamQty = input.Quantity; input.Operation.ExamOper = input.Operation.Oper; input.State = "1"; //直接更新状态为 审核(发票入库)状态 } if (!this.IsNeedApprove) //不需核准 直接设置状态"2" { input.State = "2"; input.Operation.ExamQty = input.Quantity; input.Operation.ExamOper = input.Operation.Oper; input.Operation.ApproveOper = input.Operation.Oper; } #endregion #region 退库保存 int parm = this.itemManager.Input(input, "1", this.IsNeedApprove ? "0" : "1"); if (parm == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("保存 [" + input.Item.Name + "] 发生错误 " + this.itemManager.Err)); return; } else if (parm == 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); MessageBox.Show(Language.Msg("数据可能已被审核,请刷新重试!")); return; } #endregion isSaveOperation = true; this.alPrintData.Add(input); } Neusoft.FrameWork.Management.PublicTrans.Commit(); if (isSaveOperation) { MessageBox.Show(Language.Msg("入库退库操作成功")); DialogResult rs = MessageBox.Show(Language.Msg("是否打印退库单?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (rs == DialogResult.Yes) { this.Print(); } } this.Clear(); }