예제 #1
0
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || e.ColumnIndex < 0)
            {
                return;
            }
            var c = BList[e.RowIndex];

            currentRecord = BList[e.RowIndex];
            t1.Text       = c.DrugInfo.ProductGeneralName;
            t2.Text       = c.BatchNumber;
            t3.Text       = c.DrugInfo.FactoryName;
            t4.Text       = c.produceDate.ToLongDateString();
            t5.Text       = c.ExpireDate.ToLongDateString();
            t6.Text       = c.supplyer;
            t7.Text       = c.PurchasePrice.ToString();

            richTextBox1.Text = c.rsn;
            c1.Text           = c.creater;
            c2.Text           = c.createTime.ToLongDateString();

            richTextBox2.Text = c.sta;
            c3.Text           = c.staSigner;
            c4.Text           = c.staSignDate == c.createTime ? "" : c.staSignDate.ToLongDateString();

            richTextBox3.Text = c.conclusion;
            c5.Text           = c.conclusionSigner;
            c6.Text           = c.conclusionDate == c.createTime ? "" : c.conclusionDate.ToLongDateString();

            textBox1.Text = 0.ToString();
            textBox2.Text = c.UnqualificationQuantity.ToString();
        }
예제 #2
0
        public bool SaveDrugMaintainDetailAndUndeterminate(Models.DrugMaintainRecordDetail[] dmrds)
        {
            lock (locker)
            {
                string outDetail = string.Empty;
                try
                {
                    foreach (DrugMaintainRecordDetail dmrd in dmrds)
                    {
                        dmrd.CheckDate = DateTime.Now;
                        this.Save(dmrd);

                        decimal UndeNum = dmrd.MaintainCount - Convert.ToDecimal(dmrd.CheckqualifiedNumber);

                        if (UndeNum > 0)
                        {
                            DrugsUndeterminate du = RepositoryProvider.Db.DrugsUndeterminates.Where(r => r.UnqualificationApprovalID == dmrd.Id).ToList().FirstOrDefault();

                            if (du == null)
                            {
                                du                = new DrugsUndeterminate();
                                du.BatchNumber    = dmrd.BatchNumber;
                                du.conclusionDate = DateTime.Now;
                                Guid emId = RepositoryProvider.Db.Users.Where(r => r.Id == dmrd.UserId).ToList().FirstOrDefault().EmployeeId;
                                du.creater    = RepositoryProvider.Db.Employees.Where(r => r.Id == emId).FirstOrDefault().Name;
                                du.createTime = DateTime.Now;
                                du.DosageType = dmrd.DictionaryDosageCode;

                                DrugInventoryRecord dir = RepositoryProvider.Db.DrugInventoryRecords.Where(r => r.Id == dmrd.DrugInventoryRecordId).ToList().First();
                                du.DrugInfoID  = dir.DrugInfoId;
                                du.drugName    = dmrd.ProductName;
                                du.ExpireDate  = dmrd.OutValidDate;
                                du.Id          = Guid.NewGuid();
                                du.InventoryID = dmrd.DrugInventoryRecordId;
                                if (!dir.PurchaseInInventeryOrderDetailId.Equals(Guid.Empty))
                                {
                                    PurchaseInInventeryOrderDetail piio = RepositoryProvider.Db.PurchaseInInventeryOrderDetails.Where(r => r.Id == dir.PurchaseInInventeryOrderDetailId).FirstOrDefault();
                                    PurchaseInInventeryOrder       pi   = RepositoryProvider.Db.PurchaseInInventeryOrders.Where(r => r.Id == piio.PurchaseInInventeryOrderId).FirstOrDefault();
                                    Guid          orderId = pi.PurchaseOrderId;
                                    PurchaseOrder po      = RepositoryProvider.Db.PurchaseOrders.Where(r => r.Id == orderId).ToList().First();
                                    du.OrderDocumentID = po.DocumentNumber;
                                    du.PurchaseOrderID = pi.Id;
                                    du.supplyer        = RepositoryProvider.Db.SupplyUnits.Where(r => r.Id == po.SupplyUnitId).ToList().First().Name;
                                }
                                else
                                {
                                    du.OrderDocumentID = "前期库存,无入库单号";
                                    du.PurchaseOrderID = Guid.Empty;
                                    du.supplyer        = "无";
                                }
                                du.proc                  = 0;
                                du.produceDate           = dmrd.PruductDate;
                                du.DocumentNumber        = new BillDocumentCodeBusinessHandler(BusinessHandlerFactory.RepositoryProvider, null).GenerateBillDocumentCodeByTypeValue((int)BillDocumentType.DrugUndeterminate).Code;
                                du.PurchasePrice         = dir.PurchasePricce;
                                du.QualificationQuantity = Convert.ToDecimal(dmrd.CheckqualifiedNumber);
                                du.quantity              = UndeNum;
                                du.rsn         = "养护疑问药品复查";
                                du.Source      = "养护";
                                du.Specific    = dmrd.DictionarySpecificationCode;
                                du.sta         = string.Empty;
                                du.staSignDate = DateTime.Now;
                                du.staSigner   = string.Empty;
                                du.storeID     = dir.StoreId;
                                du.UnqualificationApprovalID = dmrd.Id; //该字段临时作为质量复查单的id。
                                du.UnqualificationQuantity   = 0;
                                du.updateTime = DateTime.Now;
                                du.wareHouse  = RepositoryProvider.Db.WarehouseZones.Where(r => r.Id == dir.WarehouseZoneId).First().Name;
                                du.Origin     = dir.Decription;
                                BusinessHandlerFactory.DrugsUndeterminateBusinessHandler.Add(du);
                                decimal cansaleNum = dir.CanSaleNum;

                                dir.drugsUnqualicationNum += UndeNum;//库存记录中加上质量复查数量,然后保存。
                                if (dir.CanSaleNum < 0)
                                {
                                    outDetail = "养护品种细节数据在当月1日自动完成,库存数量发生变化," + du.drugName + "当前库存数量为:" + cansaleNum + ",提交养护疑问药品数量不正确。";
                                    throw new Exception("养护品种细节数据在当月1日自动完成,库存数量发生变化," + du.drugName + "当前库存数量为:" + cansaleNum + ",提交养护疑问药品数量不正确。");
                                }
                                dir.Valid = dir.CanSaleNum > 0 ? true : false;
                                BusinessHandlerFactory.DrugInventoryRecordBusinessHandler.Save(dir);
                            }
                        }
                    }
                    this.Save();

                    string documentNumber = dmrds.FirstOrDefault().BillDocumentNo;

                    var re = RepositoryProvider.Db.DrugMaintainRecordDetails.Where(r => r.CheckDate == null && r.BillDocumentNo == documentNumber && r.Deleted == false).FirstOrDefault();
                    if (re == null)
                    {
                        var c = RepositoryProvider.Db.DrugMaintainRecords.Where(r => r.BillDocumentNo == documentNumber).FirstOrDefault();
                        if (c == null)
                        {
                            return(false);
                        }

                        c.CompleteState = 1;
                        this.Save();
                    }
                    return(true);
                }
                catch (Exception e)
                {
                    this.HandleException("养护细节提交失败!" + outDetail, e);
                    return(false);
                }
            }
        }
        private void toolStripButton11_Click(object sender, EventArgs e)
        {
            if (this.currentDU == null)
            {
                MessageBox.Show("请点击‘注记码’文本框,回车,并且选择药品,填写数量后执行提交操作!");
                return;
            }
            if (MessageBox.Show("确定要提交至质量复查吗?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
                return;
            }
            decimal quantity = 0m;

            if (!decimal.TryParse(this.textBox2.Text, out quantity))
            {
                MessageBox.Show("请填写数字信息!");
                this.textBox2.Text = "0";
                this.textBox2.Focus();
                return;
            }
            var     v = this.PharmacyDatabaseService.GetDrugInventoryRecord(out msg, this.CurrentIM.InventoryID);
            decimal currentCansaleNumber = v.CanSaleNum;

            if (quantity > currentCansaleNumber)
            {
                MessageBox.Show("数量超过当前库存量,请修改!");
                this.textBox2.Text   = "0";
                this.textBox3.Text   = currentCansaleNumber.ToString();
                CurrentIM.CanSaleNum = currentCansaleNumber;
                this.textBox2.Focus();
                return;
            }

            DrugsUndeterminate du = new DrugsUndeterminate();

            du.supplyer    = currentDU.Supplyer;
            du.BatchNumber = currentDU.batchNo;
            du.creater     = BugsBox.Pharmacy.AppClient.Common.AppClientContext.currentUser.Employee.Name;
            du.Deleted     = false;
            var d = PharmacyDatabaseService.GenerateBillDocumentCodeByTypeValue(out msg, (int)BillDocumentType.DrugUndeterminate);

            du.DocumentNumber            = d.Code;
            du.DosageType                = currentDU.DosageType;
            du.DrugInfoID                = currentDU.DrugInfo;
            du.drugName                  = currentDU.drugName;
            du.ExpireDate                = currentDU.ExpireDate;
            du.Id                        = Guid.NewGuid();
            du.InventoryID               = currentDU.DrugInventoryRecordID;
            du.OrderDocumentID           = CurrentIM.PurchaseOrderDocumentNumber;
            du.Origin                    = currentDU.Origin;
            du.proc                      = 0;
            du.produceDate               = currentDU.produceDate;
            du.PurchaseOrderID           = CurrentIM.PurchaseOrderId;
            du.PurchasePrice             = currentDU.PurchasePrice;
            du.QualificationQuantity     = 0;
            du.quantity                  = Decimal.Parse(this.textBox2.Text);
            du.rsn                       = this.txtRemark.Text.Trim();
            du.Source                    = "其他";
            du.Specific                  = currentDU.Specific;
            du.storeID                   = BugsBox.Pharmacy.AppClient.Common.AppClientContext.Config.Store.Id;
            du.supplyer                  = currentDU.Supplyer;
            du.UnqualificationApprovalID = Guid.Empty;
            du.UnqualificationQuantity   = 0;
            du.wareHouse                 = "待处理药品库";

            if (this.PharmacyDatabaseService.AddDrugsUndeterminate(du, out msg))
            {
                v.drugsUnqualicationNum += du.quantity;
                this.PharmacyDatabaseService.SaveDrugInventoryRecord(out msg, v);
                this.PharmacyDatabaseService.AddBillDocumentCode(out msg, d);
                MessageBox.Show("提交成功!单号:" + du.DocumentNumber);
                this.PharmacyDatabaseService.WriteLog(BugsBox.Pharmacy.AppClient.Common.AppClientContext.currentUser.Id, "提交质量复查成功!");
                this.ClearCurrent();
            }
            else
            {
                MessageBox.Show("提交失败,请联系管理员!");
            }
        }
예제 #4
0
        public bool SaveToNextProc(DrugsUndeterminate value, Guid userID)
        {
            string msg = string.Empty;

            try
            {
                if (value.proc == 1)
                {
                    this.Save(value, out msg);
                    return(true);
                }

                if (value.QualificationQuantity > 0)
                {
                    if (value.Source.Contains("其他") || value.Source.Contains("养护"))
                    {
                        var V = BusinessHandlerFactory.DrugInventoryRecordBusinessHandler.Get(value.InventoryID);
                        V.drugsUnqualicationNum -= value.QualificationQuantity;
                        BusinessHandlerFactory.DrugInventoryRecordBusinessHandler.Save(V);
                    }
                    else
                    {
                        var purchaseOrder = BusinessHandlerFactory.RepositoryProvider.Db.PurchaseOrders.Where(r => r.DocumentNumber == value.OrderDocumentID).FirstOrDefault();

                        PurchaseCheckingOrder pco = new PurchaseCheckingOrder();
                        pco.Id                         = Guid.NewGuid();
                        pco.DocumentNumber             = new BillDocumentCodeBusinessHandler(BusinessHandlerFactory.RepositoryProvider, null).GenerateBillDocumentCodeByTypeValue((int)BillDocumentType.PurchaseCheckingOrder).Code;
                        pco.OperateTime                = DateTime.Now;
                        pco.StoreId                    = BugsBox.Pharmacy.Config.PharmacyServiceConfig.Config.CurrentStore.Id;
                        pco.OperateUserId              = userID;
                        pco.OrderStatusValue           = 13;
                        pco.PurchaseOrderId            = purchaseOrder.Id;
                        pco.Decription                 = "待处理药品复核验收正常,可入库!";
                        pco.RelatedOrderDocumentNumber = value.DocumentNumber;
                        pco.RelatedOrderId             = value.Id;
                        pco.RelatedOrderType           = OrderType.Undeterminate;

                        //采购验收单更新
                        purchaseOrder.UpdateTime       = DateTime.Now;
                        purchaseOrder.UpdateUserId     = userID;
                        purchaseOrder.OrderStatusValue = 13;
                        BusinessHandlerFactory.PurchaseCheckingOrderBusinessHandler.Add(pco);
                        BusinessHandlerFactory.PurchaseOrderBusinessHandler.Save(purchaseOrder);

                        PurchaseCheckingOrderDetail purchaseOrderDetail = new PurchaseCheckingOrderDetail();
                        purchaseOrderDetail.ArrivalAmount           = value.QualificationQuantity;
                        purchaseOrderDetail.ArrivalDateTime         = pco.OperateTime;
                        purchaseOrderDetail.BatchNumber             = value.BatchNumber;
                        purchaseOrderDetail.CheckResult             = 0;
                        purchaseOrderDetail.Decription              = value.Origin;
                        purchaseOrderDetail.DrugInfoId              = value.DrugInfoID;
                        purchaseOrderDetail.OutValidDate            = value.ExpireDate;
                        purchaseOrderDetail.PruductDate             = value.produceDate;
                        purchaseOrderDetail.QualifiedAmount         = value.QualificationQuantity;
                        purchaseOrderDetail.PurchasePrice           = value.PurchasePrice;
                        purchaseOrderDetail.PurchaseCheckingOrderId = pco.Id;
                        purchaseOrderDetail.StoreId = pco.StoreId;
                        purchaseOrderDetail.Id      = Guid.NewGuid();
                        BusinessHandlerFactory.PurchaseCheckingOrderDetailBusinessHandler.Add(purchaseOrderDetail);
                    }
                }
                //如果不合格药品填写数量不为0,则将其写入不合格药品审批流程
                if (value.UnqualificationQuantity > 0)
                {
                    drugsUnqualication du = new drugsUnqualication();
                    du.Id                          = Guid.NewGuid();
                    du.createTime                  = DateTime.Now;
                    du.createUID                   = userID;
                    du.ApprovalStatusValue         = -1;
                    du.flowID                      = Guid.NewGuid();
                    du.Description                 = "质量部结论:" + value.conclusion;
                    du.quantity                    = value.UnqualificationQuantity;
                    du.drugName                    = value.drugName;
                    du.batchNo                     = value.BatchNumber;
                    du.DrugInventoryRecordID       = value.InventoryID;
                    du.DocumentNumber              = new BillDocumentCodeBusinessHandler(BusinessHandlerFactory.RepositoryProvider, null).GenerateBillDocumentCodeByTypeValue((int)BillDocumentType.DrugUnqualification).Code;
                    du.CheckDocumentNumber         = value.DocumentNumber;
                    du.source                      = "质量复核";
                    du.DosageType                  = value.DosageType;
                    du.Specific                    = value.Specific;
                    du.produceDate                 = value.produceDate;
                    du.ExpireDate                  = value.ExpireDate;
                    du.factoryName                 = value.DrugInfo.FactoryName;
                    du.PurchasePrice               = value.PurchasePrice;
                    du.unqualificationType         = -1; //养护流程不合格
                    du.updateTime                  = DateTime.Now;
                    du.Deleted                     = false;
                    du.DrugInfo                    = value.DrugInfoID;
                    du.Origin                      = value.Origin;
                    du.Supplyer                    = value.supplyer;
                    du.PurchaseOrderId             = value.PurchaseOrderID == null?Guid.Empty:(Guid)value.PurchaseOrderID;
                    du.PurchaseOrderDocumentNumber = value.OrderDocumentID;
                    BusinessHandlerFactory.DrugsUnqualificationHandler.EditDrugUnqualification(du, 0);
                }

                this.Save(value);
            }
            catch (Exception ex)
            {
                msg = "保存出错!";
                return(false);
            }
            this.Save();
            return(true);
        }
예제 #5
0
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            if (this.cmbApprovalSelector.Items.Count <= 0)
            {
                MessageBox.Show("不合格药品审批流程没有设定。\n请通知系统管理员设置不合格药品审核流程!");
                return;
            }
            Guid userId = AppClientContext.CurrentUser.Id;

            if (currentRecord == null)
            {
                MessageBox.Show("请先双击列表中的记录,填写意见后再提交!");
                return;
            }

            if (currentRecord.proc == 0)
            {
                currentRecord.sta         = richTextBox2.Text.Trim();
                currentRecord.staSignDate = DateTime.Now;
                currentRecord.staSigner   = PharmacyDatabaseService.GetEmployeeByUserId(out msg, userId).Name;
                currentRecord.proc        = 1;
            }
            else
            {
                try
                {
                    decimal q  = Convert.ToDecimal(textBox1.Text);
                    decimal un = Convert.ToDecimal(textBox2.Text);
                    if (un + q != currentRecord.quantity)
                    {
                        MessageBox.Show("合格数量与不合格数量之和应与质量复核申请数量一致,请检查!");
                        textBox1.Focus();
                        return;
                    }
                    currentRecord.QualificationQuantity     = q;
                    currentRecord.UnqualificationQuantity   = un;
                    currentRecord.UnqualificationApprovalID = (Guid)cmbApprovalSelector.SelectedValue;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("合格数量与不合格数量应填写为数字!");
                    textBox1.Focus();
                    return;
                }
                currentRecord.conclusion       = richTextBox3.Text.Trim();
                currentRecord.conclusionDate   = DateTime.Now;
                currentRecord.conclusionSigner = PharmacyDatabaseService.GetEmployeeByUserId(out msg, userId).Name;
                currentRecord.proc             = 2;
            }

            if (PharmacyDatabaseService.SaveToNextProc(currentRecord, userId, out msg))
            {
                MessageBox.Show("提交成功!");
                this.PharmacyDatabaseService.WriteLog(AppClientContext.CurrentUser.Id, "提交质量复查报告成功!");
                currentRecord = null;
                this.getData(pro);
                this.textBox1.Text     = "0";
                this.textBox2.Text     = "0";
                this.richTextBox1.Text = string.Empty;
                this.richTextBox2.Text = string.Empty;
                this.richTextBox3.Text = string.Empty;
                clearLabels();
            }
        }