/// <summary> /// 增加申请数据 /// </summary> /// <param name="listCode">申请单号</param> /// <param name="state">状态</param> /// <returns>成功返回1 </失败返回-1returns> protected virtual int AddApplyData(string listCode, string state) { this.Clear(); ArrayList alDetail = this.itemManager.QueryApplyOutInfoByListCode(this.phaOutManager.TargetDept.ID, listCode, state); if (alDetail == null) { MessageBox.Show(Language.Msg(this.itemManager.Err)); return(-1); } ((System.ComponentModel.ISupportInitialize)(this.phaOutManager.Fp)).BeginInit(); foreach (Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut in alDetail) { Neusoft.HISFC.Models.Pharmacy.Output output = new Neusoft.HISFC.Models.Pharmacy.Output(); //药品实体信息 output.Item = this.itemManager.GetItem(applyOut.Item.ID); if (output.Item == null) { MessageBox.Show(Language.Msg("加载申请时 根据药品编码减少药品字典信息失败" + applyOut.Item.ID)); return(-1); } output.Quantity = applyOut.Operation.ApplyQty; //申请量 output.Memo = applyOut.Memo; //备注信息 decimal storeQty = 0; if (this.itemManager.GetStorageNum(this.phaOutManager.DeptInfo.ID, applyOut.Item.ID, out storeQty) == -1) { MessageBox.Show(Language.Msg("获取" + applyOut.Item.Name + "库存数量时发生错误" + this.itemManager.Err)); return(-1); } output.StoreQty = storeQty; //库存量 output.PrivType = this.phaOutManager.PrivType.ID; //出库类型 output.SystemType = this.phaOutManager.PrivType.Memo; //系统类型 output.StockDept = this.phaOutManager.DeptInfo; //当前科室 output.TargetDept = this.phaOutManager.TargetDept; //目标科室 output.User01 = "1"; //数据来源 申请 output.User02 = applyOut.ID; //申请单流水号 if (this.AddDataToTable(output) == 1) { this.hsOutData.Add(output.Item.ID + output.BatchNO, output); this.hsApplyData.Add(applyOut.ID, applyOut); } } this.SetFormat(); ((System.ComponentModel.ISupportInitialize)(this.phaOutManager.Fp)).EndInit(); //计算汇总出库金额 this.CompuateSum(); return(1); }
public int Delete(FarPoint.Win.Spread.SheetView sv, int delRowIndex) { try { if (sv != null && delRowIndex >= 0) { DialogResult rs = MessageBox.Show(Language.Msg("确认删除该条数据吗?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (rs == DialogResult.No) { return(0); } string[] keys = new string[] { sv.Cells[delRowIndex, (int)ColumnSet.ColDrugNO].Text, sv.Cells[delRowIndex, (int)ColumnSet.ColBatchNO].Text }; DataRow dr = this.dt.Rows.Find(keys); if (dr != null) { this.phaOutManager.Fp.StopCellEditing(); if (dr["数据来源"].ToString() == "1") { Neusoft.HISFC.Models.Pharmacy.Output delOutput = this.hsOutData[dr["药品编码"].ToString() + dr["批号"].ToString()] as Neusoft.HISFC.Models.Pharmacy.Output; if (this.hsApplyData.ContainsKey(delOutput.User02)) { this.hsApplyData.Remove(delOutput.User02); } } this.hsOutData.Remove(dr["药品编码"].ToString() + dr["批号"].ToString()); this.dt.Rows.Remove(dr); this.phaOutManager.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); }
/// <summary> /// 根据药品信息添加出库记录 /// </summary> /// <param name="drugNO"></param> /// <param name="batchNO"></param> /// <param name="storageQty"></param> /// <returns></returns> protected virtual int AddDrugData(string drugNO, string batchNO, decimal storageQty) { if (this.phaOutManager.TargetDept.ID == "") { MessageBox.Show(Language.Msg("请选择领药单位!")); return(0); } if (this.hsOutData.ContainsKey(drugNO + batchNO)) { MessageBox.Show(Language.Msg("该药品已添加")); return(0); } Neusoft.HISFC.Models.Pharmacy.Item item = this.itemManager.GetItem(drugNO); if (item == null) { MessageBox.Show(Language.Msg("根据药品编码获取药品字典信息时发生错误" + this.itemManager.Err)); return(-1); } //设置价让出库价格 在当前购入价基础上乘以百分比 if (this.useWholePrice) { item.PriceCollection.RetailPrice = item.PriceCollection.WholeSalePrice; } else { item.PriceCollection.RetailPrice = this.defaultPriceRate * item.PriceCollection.PurchasePrice; item.PriceCollection.WholeSalePrice = item.PriceCollection.RetailPrice; } Neusoft.HISFC.Models.Pharmacy.Output output = new Neusoft.HISFC.Models.Pharmacy.Output(); output.Item = item; //药品信息 output.BatchNO = batchNO; //批号 output.PrivType = this.phaOutManager.PrivType.ID; //出库类型 output.SystemType = this.phaOutManager.PrivType.Memo; //系统类型 output.StockDept = this.phaOutManager.DeptInfo; //当前科室 output.TargetDept = this.phaOutManager.TargetDept; //目标科室 output.StoreQty = storageQty; //库存量 output.User01 = "0"; //数据来源 if (this.AddDataToTable(output) == 1) { this.hsOutData.Add(drugNO + batchNO, output); } return(1); }
/// <summary> /// 根据药品信息添加出库记录 /// </summary> /// <param name="drugNO"></param> /// <param name="batchNO"></param> /// <param name="storageQty"></param> /// <returns></returns> protected virtual int AddDrugData(string drugNO, string batchNO, decimal storageQty) { if (this.phaOutManager.TargetDept.ID == "") { MessageBox.Show(Language.Msg("请选择领药单位!")); return(0); } if (this.hsOutData.ContainsKey(drugNO + batchNO)) { MessageBox.Show(Language.Msg("该药品已添加")); return(0); } Neusoft.HISFC.Models.Pharmacy.Item item = this.itemManager.GetItem(drugNO); if (item == null) { MessageBox.Show(Language.Msg("根据药品编码获取药品字典信息时发生错误" + this.itemManager.Err)); return(-1); } if (this.hsRestrainedQualityHelper != null) { if (this.hsRestrainedQualityHelper.ContainsKey(item.Quality.ID)) { MessageBox.Show(Language.Msg("该性质药品不允许直接出库,必须通过申请进行")); return(0); } } Neusoft.HISFC.Models.Pharmacy.Output output = new Neusoft.HISFC.Models.Pharmacy.Output(); output.Item = item; //药品信息 output.BatchNO = batchNO; //批号 output.PrivType = this.phaOutManager.PrivType.ID; //出库类型 output.SystemType = this.phaOutManager.PrivType.Memo; //系统类型 output.StockDept = this.phaOutManager.DeptInfo; //当前科室 output.TargetDept = this.phaOutManager.TargetDept; //目标科室 output.StoreQty = storageQty; //库存量 output.User01 = "0"; //数据来源 if (this.AddDataToTable(output) == 1) { this.hsOutData.Add(drugNO + batchNO, output); } return(1); }
/// <summary> /// 预打印 /// </summary> /// <param name="sender"></param> /// <param name="args"></param> protected void PrePrint(object sender, System.EventArgs args) { this.alPrintData = new ArrayList(); if (phaOutManager.FpSheetView.Rows.Count > 0) { this.phaOutManager.FpSheetView.SetActiveCell(0, 0, true); } foreach (DataRow dr in this.dt.Rows) { string key = dr["药品编码"].ToString() + dr["批号"].ToString(); Neusoft.HISFC.Models.Pharmacy.Output output = this.hsOutData[key] as Neusoft.HISFC.Models.Pharmacy.Output; if (this.isUseMinUnit) //使用最小单位 { output.Quantity = NConvert.ToDecimal(dr["实发数量"]); //实发数量 } else //使用包装单位 { output.Quantity = NConvert.ToDecimal(dr["实发数量"]) * output.Item.PackQty; //实发数量 } output.Operation.ExamQty = NConvert.ToDecimal(dr["实发数量"]) * output.Item.PackQty; //实发数量 output.StoreQty = output.StoreQty - output.Quantity; output.StoreCost = output.StoreQty * output.Item.PriceCollection.RetailPrice / output.Item.PackQty; output.Memo = dr["备注"].ToString(); output.DrugedBillNO = "0"; //摆药单号 不能为空 this.alPrintData.Add(output); } if (this.phaOutManager.IOutPrint != null) { if (alPrintData.Count > 0) { this.phaOutManager.IOutPrint.SetData(alPrintData, this.phaOutManager.PrivType.Memo); this.phaOutManager.IOutPrint.Print(); } } }
/// <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 Print() { if (this.phaOutManager.IOutPrint != null) { //{0A53FC11-85EA-4dc8-8A85-5DABDB6D8535} 对于多批号出库时,重新获取出库数据,保证能打印出所有批号信息 ArrayList alPrint = new ArrayList(); if (alPrintData.Count > 0) { Neusoft.HISFC.Models.Pharmacy.Output info = this.alPrintData[0] as Neusoft.HISFC.Models.Pharmacy.Output; alPrint = this.itemManager.QueryOutputInfo(info.StockDept.ID, info.OutListNO, info.State); } if (alPrint.Count > 0) { this.phaOutManager.IOutPrint.SetData(alPrint, this.phaOutManager.PrivType.Memo); this.phaOutManager.IOutPrint.Print(); } } return(1); }
/// <summary> /// 设置单据列标题显示 /// </summary> private void SetTitle(Neusoft.HISFC.Models.Pharmacy.Output info) { if (info.SystemType == "26") //特殊出库 { if (info.PrivType == "05") //报损 { this.lbTitle.Text = "药 品 报 废 单"; this.lbPerson1.Text = "审批人:"; this.lbPerson2.Text = "会计:"; this.lbDataDisplay.Text = "报废日期:"; this.fpSpread1_Sheet1.Columns[10].Label = "作废原因"; this.lbTargetDisplay.Visible = false; this.lbTargetDept.Visible = false; } } else if (info.SystemType == "22") //退库 { this.lbTitle.Text = "药 品 退 库 冲 帐 单"; this.lbPerson1.Text = "发货人:"; this.lbPerson2.Text = "领取人:"; this.lbDataDisplay.Text = "调拨日期:"; this.fpSpread1_Sheet1.Columns[10].Label = "生产批号"; this.lbTargetDisplay.Visible = true; this.lbTargetDept.Visible = true; } else { this.lbTitle.Text = "药 品 调 拨 单"; this.lbPerson1.Text = "发货人:"; this.lbPerson2.Text = "领取人:"; this.lbDataDisplay.Text = "调拨日期:"; this.fpSpread1_Sheet1.Columns[10].Label = "生产批号"; this.lbTargetDisplay.Visible = true; this.lbTargetDept.Visible = true; } }
/// <summary> /// 打印函数 /// </summary> /// <param name="al">打印数组</param> /// <param name="i">第几页</param> /// <param name="count">总页数</param> /// <param name="operCode">制单人</param> private void PrintOutput(ArrayList al, int inow, int icount, string operCode) { if (al.Count <= 0) { MessageBox.Show("没有打印的数据!"); return; } Neusoft.HISFC.BizLogic.Pharmacy.Constant constant = new Neusoft.HISFC.BizLogic.Pharmacy.Constant(); Neusoft.HISFC.Models.Pharmacy.Output info = (Neusoft.HISFC.Models.Pharmacy.Output)al[0]; #region label赋值 //this.lbTitle.Text = this.deptMgr.GetDeptmentById(info.Dept.ID) + "药品出库单" ; if (this.IsReprint) { this.lbl0.Text = this.lbl0.Text + "(补打)"; } string strCompany = ""; try { strCompany = this.deptMgr.GetDeptmentById(info.TargetDept.ID).Name; } catch {} this.lb11.Text = "领用部门:" + "(" + info.TargetDept.ID + ")" + strCompany; this.lb12.Text = "领用日期:" + info.Operation.ExamOper.OperTime.ToString("yyyy-MM-dd"); //this.lb21.Text = "发出仓库:" + this.deptMgr.GetDeptmentById(info.Dept.ID); this.lb36.Text = "第" + inow.ToString() + "页/共" + icount.ToString() + "页"; #endregion #region farpoint赋值 decimal sumNum6 = 0; decimal sumNum8 = 0; this.sheetView1.RowCount = 0; for (int i = 0; i < al.Count; i++) { this.sheetView1.AddRows(i, 1); Neusoft.HISFC.Models.Pharmacy.Output output = al[i] as Neusoft.HISFC.Models.Pharmacy.Output; this.sheetView1.Cells[i, 0].Text = this.itemMgr.GetItem(output.Item.ID).NameCollection.UserCode; //药品自定义码 this.sheetView1.Cells[i, 1].Text = output.Item.Name; //药品名称 this.sheetView1.Cells[i, 2].Text = output.Item.Specs; //规格 if (output.Item.PackQty == 0) { output.Item.PackQty = 1; } decimal count = 0, count2 = 0; //count = Math.Round(output.Operation.ExamQty / output.Item.PackQty, 4); count = output.Operation.ExamQty / output.Item.PackQty; //count2 = System.Math.Round((output.Item.PriceCollection.RetailPrice) * count, decimals); count2 = (output.Item.PriceCollection.RetailPrice) * count; this.sheetView1.Cells[i, 3].Text = output.Item.PackQty.ToString(); //包装数量 this.sheetView1.Cells[i, 4].Text = output.Item.MinUnit; //最小单位 this.sheetView1.Cells[i, 5].Text = (output.Item.PriceCollection.RetailPrice / output.Item.PackQty).ToString(); //药房价 this.sheetView1.Cells[i, 6].Text = count.ToString(); //实发数量 this.sheetView1.Cells[i, 7].Text = output.Item.PackUnit; //单位 this.sheetView1.Cells[i, 8].Text = (output.Item.PriceCollection.RetailPrice).ToString(); //零售价 //this.sheetView1.Cells[i, 7].Text = System.Math.Round(output.Item.PriceCollection.RetailPrice, decimals).ToString();//零售价 this.sheetView1.Cells[i, 9].Text = ((output.Item.PriceCollection.RetailPrice) * count).ToString(); //零售总金额 //this.sheetView1.Cells[i, 8].Text = (System.Math.Round(output.Item.PriceCollection.RetailPrice, decimals) * count2).ToString();//零售总金额 this.sheetView1.Cells[i, 11].Text = output.ValidTime.ToString("yyyy-MM-dd") + " "; this.sheetView1.Cells[i, 10].Text = output.BatchNO + " "; sumNum6 = sumNum6 + count; sumNum8 = sumNum8 + count2; } this.sheetView1.RowCount = al.Count + 1; this.sheetView1.Cells[al.Count, 0].Text = "合计"; this.sheetView1.Cells[al.Count, 1].Text = "共" + al.Count + "行";//行数; this.sheetView1.Cells[al.Count, 6].Text = sumNum6.ToString(); this.sheetView1.Cells[al.Count, 9].Text = sumNum8.ToString(); //宽度 //this.panel4.Width = this.Width - 3; this.fpSpread1.Width = this.panel1.Width - 10; this.fpSpread1.Height = (int)this.sheetView1.RowHeader.Rows[0].Height + (int)(this.sheetView1.Rows[0].Height * (al.Count + 1)) + 10; #endregion #endregion #region 打印函数 //Neusoft.FrameWork.WinForms.Classes.Print p = new Neusoft.FrameWork.WinForms.Classes.Print(); ////p.IsDataAutoExtend = false;//p.ShowPageSetup(); //Neusoft.HISFC.Models.Base.PageSize page = new Neusoft.HISFC.Models.Base.PageSize(); ////page.Height = 532; ////page.Width = 798; //page.Name = "PhaOutput"; //p.SetPageSize(page); ////p.PrintPage(5,1,this); //p.PrintPreview(5, 1, this); Neusoft.FrameWork.WinForms.Classes.Print p = new Neusoft.FrameWork.WinForms.Classes.Print(); Neusoft.HISFC.Components.Common.Classes.Function.GetPageSize("PhaOutput", ref p); p.PrintPage(5, 0, this.panel1); #endregion }
/// <summary> /// 打印函数 /// </summary> /// <param name="al">打印数组</param> /// <param name="i">第几页</param> /// <param name="count">总页数</param> private void Print(ArrayList al, int inow, int icount, bool isLastPage) { if (al.Count <= 0) { MessageBox.Show("没有打印的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } Neusoft.HISFC.BizLogic.Pharmacy.Constant constant = new Neusoft.HISFC.BizLogic.Pharmacy.Constant(); Neusoft.HISFC.Models.Pharmacy.Output info = (Neusoft.HISFC.Models.Pharmacy.Output)al[0]; #region Label赋值 this.SetTitle(info); if (this.IsReprint) { this.lbTitle.Text = this.lbTitle.Text + " (补打)"; } string strCompany = ""; try { strCompany = this.managerIntegrate.GetDepartment(info.TargetDept.ID).Name; } catch { } this.lbTargetDept.Text = strCompany; Neusoft.HISFC.Models.Base.Department stockDept = this.managerIntegrate.GetDepartment(info.StockDept.ID); if (stockDept != null) { this.lbSourceDept.Text = stockDept.Name; } this.lbBillNO.Text = info.OutListNO; this.lbOper.Text = this.itemManager.Operator.Name; this.lbDate.Text = info.Operation.ExamOper.OperTime.ToString("yyyy年MM月dd日"); this.lbPageNO.Text = "第" + inow.ToString() + "页/共" + icount.ToString() + "页"; #endregion #region Farpoint赋值 decimal totWholeCost = 0; decimal totRetailCost = 0; this.fpSpread1_Sheet1.RowCount = 0; for (int i = 0; i < al.Count; i++) { this.fpSpread1_Sheet1.AddRows(i, 1); Neusoft.HISFC.Models.Pharmacy.Output output = al[i] as Neusoft.HISFC.Models.Pharmacy.Output; Neusoft.HISFC.Models.Pharmacy.Item tempItem = this.itemManager.GetItem(output.Item.ID); if (tempItem != null) { this.fpSpread1_Sheet1.Cells[i, 0].Text = tempItem.NameCollection.UserCode; //药品自定义码 } this.fpSpread1_Sheet1.Cells[i, 1].Text = output.Item.Name; //药品名称 this.fpSpread1_Sheet1.Cells[i, 2].Text = output.Item.Specs; //规格 this.fpSpread1_Sheet1.Cells[i, 3].Text = output.Item.PackUnit; //单位 if (output.Item.PackQty == 0) { output.Item.PackQty = 1; } decimal count = 0; count = Math.Round(output.Operation.ExamQty / output.Item.PackQty, 2); this.fpSpread1_Sheet1.Cells[i, 4].Text = count.ToString(); //实发数量 this.fpSpread1_Sheet1.Cells[i, 5].Text = output.Item.PriceCollection.WholeSalePrice.ToString(); //批发价 this.fpSpread1_Sheet1.Cells[i, 6].Text = output.Item.PriceCollection.RetailPrice.ToString(); //零售价 decimal wholeCost = Math.Round(output.Operation.ExamQty / output.Item.PackQty * output.Item.PriceCollection.WholeSalePrice, 2); decimal retailCost = Math.Round(output.Operation.ExamQty / output.Item.PackQty * output.Item.PriceCollection.RetailPrice, 2); this.fpSpread1_Sheet1.Cells[i, 7].Text = wholeCost.ToString(); this.fpSpread1_Sheet1.Cells[i, 8].Text = retailCost.ToString(); this.fpSpread1_Sheet1.Cells[i, 9].Text = (retailCost - wholeCost).ToString(); //有效期暂时不显示 但应该要 //this.fpSpread1_Sheet1.Cells[i, 11].Text = output.ValidTime.ToString( "yyyy-MM-dd" ) + " "; if (this.fpSpread1_Sheet1.Columns[10].Label == "生产批号") { this.fpSpread1_Sheet1.Cells[i, 10].Text = output.BatchNO; } else { this.fpSpread1_Sheet1.Cells[i, 10].Text = output.Memo; } totWholeCost = totWholeCost + wholeCost; totRetailCost = totRetailCost + retailCost; } this.fpSpread1_Sheet1.RowCount = al.Count + 1; this.fpSpread1_Sheet1.Cells[al.Count, 1].Text = "合计"; this.fpSpread1_Sheet1.Cells[al.Count, 7].Text = totWholeCost.ToString(); this.fpSpread1_Sheet1.Cells[al.Count, 8].Text = totRetailCost.ToString(); this.fpSpread1_Sheet1.Cells[al.Count, 9].Text = (totRetailCost - totWholeCost).ToString(); billWholeCost = billWholeCost + totWholeCost; billRetailCost = billRetailCost + totRetailCost; if (isLastPage == true) //最后一张单 { int index = this.fpSpread1_Sheet1.Rows.Count; this.fpSpread1_Sheet1.Rows.Add(index, 1); this.fpSpread1_Sheet1.Cells[index, 1].Text = "总计"; this.fpSpread1_Sheet1.Cells[index, 7].Text = billWholeCost.ToString(); this.fpSpread1_Sheet1.Cells[index, 8].Text = billRetailCost.ToString(); this.fpSpread1_Sheet1.Cells[index, 9].Text = (billRetailCost - billWholeCost).ToString(); } //宽度 this.fpSpread1.Width = this.Width - 10; this.fpSpread1.Height = (int)this.fpSpread1_Sheet1.RowHeader.Rows[0].Height + (int)(this.fpSpread1_Sheet1.Rows[0].Height * (al.Count + 1)) + 10; #endregion Neusoft.FrameWork.WinForms.Classes.Print p = new Neusoft.FrameWork.WinForms.Classes.Print(); //Neusoft.HISFC.Components.Common.Classes.Function.GetPageSize( "PhaOutput", ref p ); p.PrintPage(5, 10, this); }
public void Save() { 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; } 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 = ""; bool isManagerStore = phaCons.IsManageStore(this.phaOutManager.TargetDept.ID); 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 (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; //领药人 //状态固定赋值为2 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 if (this.itemManager.Output(output, null, false) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("出库保存发生错误" + this.itemManager.Err); return; } this.alPrintData.Add(output); } Neusoft.FrameWork.Management.PublicTrans.Commit(); Function.ShowMsg("保存成功"); DialogResult rsPrint = MessageBox.Show(Language.Msg("是否打印出库单?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (rsPrint == DialogResult.Yes) { this.Print(); } this.Clear(); }
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(); }
/// <summary> /// 向数据表内加入数据 /// </summary> /// <param name="output"></param> /// <returns></returns> private int AddDataToTable(Neusoft.HISFC.Models.Pharmacy.Output output) { if (!Function.JudgePriceConsinstency(this.phaOutManager.DeptInfo.ID, output.Item)) { MessageBox.Show(Language.Msg("该药品已经经过科室调价!不能直接进行出库。如需出库请先进行全院调价"), "", MessageBoxButtons.OK, MessageBoxIcon.Information); return(-1); } if (this.dt == null) { this.InitDataTable(); } try { decimal applyQty = 0; //申请数量 decimal examQty = 0; //实发数量 decimal storeQty = 0; //库存量 decimal examCost; if (this.isUseMinUnit) { applyQty = output.Operation.ApplyQty; examQty = output.Operation.ExamQty; storeQty = output.StoreQty; output.RetailCost = applyQty / output.Item.PackQty * output.Item.PriceCollection.RetailPrice; output.StoreCost = storeQty / output.Item.PackQty * output.Item.PriceCollection.RetailPrice; examCost = examQty / output.Item.PackQty * output.Item.PriceCollection.RetailPrice; } else { applyQty = System.Math.Round(output.Operation.ApplyQty / output.Item.PackQty, 2); examQty = System.Math.Round(output.Operation.ExamQty / output.Item.PackQty, 2); storeQty = System.Math.Round(output.StoreQty / output.Item.PackQty, 2); output.RetailCost = applyQty * output.Item.PriceCollection.RetailPrice; output.StoreCost = storeQty * output.Item.PriceCollection.RetailPrice; examCost = examQty * output.Item.PriceCollection.RetailPrice; } this.dt.Rows.Add(new object[] { true, output.Item.Name, //商品名称 output.Item.Specs, //规格 output.BatchNO, //批号 output.Item.PriceCollection.RetailPrice, //零售价 output.Item.PackUnit, //包装单位 output.Item.MinUnit, //最小单位 storeQty, //库存数量 applyQty, //申请数量 output.RetailCost, //申请金额 examQty, //实发数量 examCost, //实发金额 output.Operation.ApplyOper.ID, //申请人 output.Operation.ApplyOper.OperTime, //申请日期 output.Memo, //备注 output.Item.ID, //药品编码 output.User02, //单据流水号 output.User01, //数据来源 0 手工 1 申请 output.Item.NameCollection.SpellCode, //拼音码 output.Item.NameCollection.WBCode, //五笔码 output.Item.NameCollection.UserCode //自定义码 } ); } #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="listCode">申请单号</param> /// <param name="state">状态</param> /// <returns>成功返回1 失败返回-1</returns> protected virtual int AddApplyData(string listCode, string state) { this.Clear(); ArrayList alDetail = this.itemManager.QueryApplyOutInfoByListCode(this.phaOutManager.TargetDept.ID, listCode, state); if (alDetail == null) { MessageBox.Show(Language.Msg(this.itemManager.Err)); return(-1); } ((System.ComponentModel.ISupportInitialize)(this.phaOutManager.Fp)).BeginInit(); int i = 0; foreach (Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut in alDetail) { Neusoft.HISFC.Models.Pharmacy.Output output = new Neusoft.HISFC.Models.Pharmacy.Output(); //药品实体信息 output.Item = this.itemManager.GetItem(applyOut.Item.ID); if (output.Item == null) { MessageBox.Show(Language.Msg("加载申请时 根据药品编码检索药品字典信息失败" + applyOut.Item.ID)); return(-1); } if (i == 0) { Neusoft.HISFC.BizProcess.Integrate.Manager manageIntegrate = new Neusoft.HISFC.BizProcess.Integrate.Manager(); Neusoft.HISFC.Models.Base.Employee person = manageIntegrate.GetEmployeeInfo(applyOut.Operation.ApplyOper.ID); if (person != null) { this.phaOutManager.ShowInfo = string.Format("申请人:{0} 申请日期:{1}", person.Name, applyOut.Operation.ApplyOper.OperTime.ToString()); } i++; } output.Operation.ApplyOper = applyOut.Operation.Oper; output.Operation.ApplyQty = applyOut.Operation.ApplyQty; //申请量 output.Memo = applyOut.Memo; //备注信息 decimal storeQty = 0; if (this.itemManager.GetStorageNum(this.phaOutManager.DeptInfo.ID, applyOut.Item.ID, out storeQty) == -1) { MessageBox.Show(Language.Msg("获取" + applyOut.Item.Name + "库存数量时发生错误" + this.itemManager.Err)); return(-1); } output.StoreQty = storeQty; //库存量 output.PrivType = this.phaOutManager.PrivType.ID; //出库类型 output.SystemType = this.phaOutManager.PrivType.Memo; //系统类型 output.StockDept = this.phaOutManager.DeptInfo; //当前科室 output.TargetDept = this.phaOutManager.TargetDept; //目标科室 if (applyOut.Operation.ApproveQty == 0) { output.Operation.ExamQty = output.Operation.ApplyQty; } else { //output.Operation.ExamQty = applyOut.Operation.ApproveQty; output.Operation.ExamQty = output.Operation.ApplyQty - applyOut.Operation.ApproveQty; if (output.Operation.ExamQty <= 0) { output.Operation.ExamQty = 0; } } output.User01 = "1"; //数据来源 申请 output.User02 = applyOut.ID; //申请单流水号 if (this.AddDataToTable(output) == 1) { this.hsOutData.Add(output.Item.ID + output.BatchNO, output); this.hsApplyData.Add(applyOut.ID, applyOut.Clone()); } } this.SetFormat(); ((System.ComponentModel.ISupportInitialize)(this.phaOutManager.Fp)).EndInit(); //计算汇总出库金额 this.CompuateSum(); return(1); }
/// <summary> /// 将实体信息加入DataTable内 /// </summary> /// <param name="input">入库信息 Input.User01存储数据来源</param> /// <returns></returns> protected virtual int AddDataToTable(Neusoft.HISFC.Models.Pharmacy.Output output) { if (!Function.JudgePriceConsinstency(this.phaOutManager.DeptInfo.ID, output.Item)) { MessageBox.Show(Language.Msg("该药品已经经过科室调价!不能直接进行出库。如需出库请先进行全院调价"), "", MessageBoxButtons.OK, MessageBoxIcon.Information); return(-1); } if (this.dt == null) { this.InitDataTable(); } try { output.RetailCost = output.Quantity / output.Item.PackQty * output.Item.PriceCollection.RetailPrice; this.packQty = output.Item.PackQty; if (this.isUseMinUnit) { this.dt.Rows.Add(new object[] { output.Item.Name, //商品名称 output.Item.Specs, //规格 output.BatchNO, //批号 output.Item.PriceCollection.RetailPrice, //零售价 output.Item.PackUnit, //包装单位 output.Item.MinUnit, //最小单位 output.StoreQty, //库存数量 output.Quantity, //出库数量 output.RetailCost, //出库金额 output.Memo, //备注 output.Item.ID, //药品编码 output.User01, //数据来源 output.Item.NameCollection.SpellCode, //拼音码 output.Item.NameCollection.WBCode, //五笔码 output.Item.NameCollection.UserCode //自定义码 } ); } else { this.dt.Rows.Add(new object[] { output.Item.Name, //商品名称 output.Item.Specs, //规格 output.BatchNO, //批号 output.Item.PriceCollection.RetailPrice, //零售价 output.Item.PackUnit, //包装单位 output.Item.MinUnit, //最小单位 Math.Round(output.StoreQty / output.Item.PackQty, 2), //库存数量 output.Quantity / output.Item.PackQty, //出库数量 output.RetailCost, //出库金额 output.Memo, //备注 output.Item.ID, //药品编码 output.User01, //数据来源 output.Item.NameCollection.SpellCode, //拼音码 output.Item.NameCollection.WBCode, //五笔码 output.Item.NameCollection.UserCode //自定义码 } ); } } #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> /// 将实体信息加入DataTable内 /// </summary> /// <param name="input">入库信息 Input.User01存储数据来源</param> /// <returns></returns> protected virtual int AddDataToTable(Neusoft.HISFC.Models.Pharmacy.Output output) { if (this.dt == null) { this.InitDataTable(); } try { output.RetailCost = output.Quantity / output.Item.PackQty * output.Item.PriceCollection.RetailPrice; if (this.isUseMinUnit) { this.dt.Rows.Add(new object[] { output.Item.Name, //商品名称 output.Item.Specs, //规格 output.BatchNO, //批号 output.Item.PriceCollection.PurchasePrice, output.Item.PriceCollection.RetailPrice, //零售价 output.Item.PackUnit, //包装单位 output.Item.MinUnit, //最小单位 output.StoreQty, //库存数量 output.Quantity, //出库数量 output.RetailCost, //出库金额 output.Memo, //备注 output.Item.ID, //药品编码 output.Item.NameCollection.SpellCode, //拼音码 output.Item.NameCollection.WBCode, //五笔码 output.Item.NameCollection.UserCode //自定义码 } ); } else { this.dt.Rows.Add(new object[] { output.Item.Name, //商品名称 output.Item.Specs, //规格 output.BatchNO, //批号 output.Item.PriceCollection.PurchasePrice, output.Item.PriceCollection.RetailPrice, //零售价 output.Item.PackUnit, //包装单位 output.Item.MinUnit, //最小单位 Math.Round(output.StoreQty / output.Item.PackQty, 2), //库存数量 output.Quantity / output.Item.PackQty, //出库数量 output.RetailCost, //出库金额 output.Memo, //备注 output.Item.ID, //药品编码 output.Item.NameCollection.SpellCode, //拼音码 output.Item.NameCollection.WBCode, //五笔码 output.Item.NameCollection.UserCode //自定义码 } ); } } 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; } Neusoft.HISFC.BizLogic.Pharmacy.Constant phaConsManager = new Neusoft.HISFC.BizLogic.Pharmacy.Constant(); bool isManagerStore = phaConsManager.IsManageStore(this.phaOutManager.TargetDept.ID); if (!isManagerStore) { MessageBox.Show(Language.Msg(this.phaOutManager.TargetDept.Name + " 不管理库存,不能通过出库审批进行出库"), "", MessageBoxButtons.OK, MessageBoxIcon.Information); 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; } 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(); this.itemManager.SetTrans(Neusoft.FrameWork.Management.PublicTrans.Trans); #endregion DateTime sysTime = this.itemManager.GetDateTimeFromSysDateTime(); string outListNO = ""; 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; 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.Memo = dr["备注"].ToString(); output.DrugedBillNO = "0"; //摆药单号 不能为空 output.Operation.ExamOper.ID = this.phaOutManager.OperInfo.ID; //审核人 output.Operation.ExamOper.OperTime = sysTime; //审核日期 output.Operation.ExamQty = output.Quantity; //审核数量 output.Operation.Oper = output.Operation.ExamOper; //操作信息 output.GetPerson = this.phaOutManager.TargetPerson.ID; //领药人 output.State = "1"; //状态 审批 #region 对数据来源为申请的数据进行更新 对本次新添加的数据生成申请信息记录 if (dr["数据来源"].ToString() == "1") { Neusoft.HISFC.Models.Pharmacy.ApplyOut applyOut = this.hsApplyData[output.User02] as Neusoft.HISFC.Models.Pharmacy.ApplyOut; if (outListNO == "") { outListNO = applyOut.BillNO; } decimal tempApproveQty = applyOut.Operation.ApproveQty; applyOut.Operation = output.Operation; //操作信息 //未选择审批标记 只记录本次待发送的数量 不扣库存处理 if (!NConvert.ToBoolean(dr["审批"])) { //数量累计 applyOut.Operation.ApproveQty = tempApproveQty + output.Quantity; applyOut.State = "0"; } else { applyOut.Operation.ApproveOper = output.Operation.Oper; applyOut.State = "2"; } // {EE05DA01-8969-404d-9A6B-EE8AD0BC1CD0}处理出库审批并发的问题 int resultApplyOut = this.itemManager.UpdateApplyOut(applyOut, true); if (resultApplyOut == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("更新" + output.Item.Name + "出库申请信息时出错"); return; } if (resultApplyOut == 0) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("该" + output.Item.Name + "申请信息已改变,请重新获取申请信息"); return; } } else { #region 无申请记录 此时只需更改申请人 到底需不需要添加申请信息呢? 不需要 output.Operation.ApplyOper = output.Operation.Oper; //申请人 output.Operation.ApplyQty = output.Quantity; //申请数量 #endregion } #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.PrivType = this.phaOutManager.PrivType.ID; //出库类型 output.SystemType = this.phaOutManager.PrivType.Memo; //系统类型 output.StockDept = this.phaOutManager.DeptInfo; //当前科室 output.TargetDept = this.phaOutManager.TargetDept; //目标科室 #endregion //非药柜科室向药柜出库 进行特殊处理 if (!this.phaOutManager.IsStockArk && this.phaOutManager.IsTargetArk) { if (this.itemManager.ArkOutput(output, this.phaOutManager.IsStockArk, this.phaOutManager.IsTargetArk, false, true) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("出库保存发生错误" + this.itemManager.Err); return; } } else { if (this.itemManager.Output(output, null, false) == -1) { Neusoft.FrameWork.Management.PublicTrans.RollBack(); Function.ShowMsg("出库保存发生错误" + this.itemManager.Err); return; } } this.alPrintData.Add(output); } Neusoft.FrameWork.Management.PublicTrans.Commit(); Function.ShowMsg("保存成功"); DialogResult rsPrint = MessageBox.Show(Language.Msg("是否打印出库单?"), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (rsPrint == DialogResult.Yes) { this.Print(); } this.Clear(); }