示例#1
0
        /// <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);
        }
示例#2
0
        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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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();
                }
            }
        }
示例#6
0
        /// <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);
        }
示例#7
0
        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);
        }
示例#8
0
 /// <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
        }
示例#10
0
        /// <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);
        }
示例#11
0
        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();
        }
示例#12
0
        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();
        }
示例#13
0
        /// <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);
        }
示例#14
0
        /// <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);
        }
示例#15
0
        /// <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);
        }
示例#16
0
        /// <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);
        }
示例#17
0
        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();
        }