Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        private void gotoServerToSave(Guid flowTypeID, List <ApprovalFlowNode> nodeList)
        {
            string           message;
            ApprovalFlowType flowType = PharmacyDatabaseService.GetApprovalFlowType(out message, flowTypeID);

            flowType.ApprovalFlowNodes = nodeList.ToArray();
        }
Exemple #2
0
        //提交审批
        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            this.dataGridView1.EndEdit();

            if (this.dsOrder == null)
            {
                MessageBox.Show("请双击直调列表中要审批的记录!");
                return;
            }
            if (MessageBox.Show("提交前请检查单据是否已经正确保存,确定要提交该记录至直调销售审批流程吗?审核不通过后,该单据将返回本界面,您可以继续编辑该单据!", "提示", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.Cancel)
            {
                return;
            }

            this.dsOrder.ApprovalStatusValue = (int)ApprovalStatus.Waitting;

            ApprovalFlowType at = ((ApprovalFlowType)this.toolStripComboBox2.SelectedItem);
            bool             b  = this.PharmacyDatabaseService.AddDirectSaleApproval(this.dsOrder, at.Id, BugsBox.Pharmacy.AppClient.Common.AppClientContext.currentUser.Id, "新增直调销售审批,单号:" + dsOrder.DocumentNumber, out msg);

            if (b)
            {
                MessageBox.Show("申请成功,请审批人员及时审批该单据!");
                this.PharmacyDatabaseService.WriteLog(BugsBox.Pharmacy.AppClient.Common.AppClientContext.currentUser.Id, "新增直调审批成功!单号:" + dsOrder.DocumentNumber);
            }
            else
            {
                MessageBox.Show("申请失败,请联系系统管理员!");
                return;
            }
            this.ClearCurrent();
        }
        private void dgvApprovalList_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            string msg = string.Empty;

            if (dgvApprovalList.Columns[e.ColumnIndex].Name.Equals("事件"))
            {
                Guid             typeId = Guid.Parse(e.Value.ToString());
                ApprovalFlowType type   = PharmacyDatabaseService.GetApprovalFlowType(out msg, typeId);
                e.Value = type.Name;
            }
            else if (dgvApprovalList.Columns[e.ColumnIndex].Name.Equals("状态"))
            {
                BugsBox.Pharmacy.Models.ApprovalStatus status = (BugsBox.Pharmacy.Models.ApprovalStatus) int.Parse(e.Value.ToString());

                var f = typeof(BugsBox.Pharmacy.Models.ApprovalStatus).GetField(status.ToString());

                var attr = f.GetCustomAttributes(false);
                if (attr.Length > 0 && attr[0] as System.ComponentModel.DataAnnotations.DisplayAttribute != null)
                {
                    e.Value = (attr[0] as System.ComponentModel.DataAnnotations.DisplayAttribute).Name;
                }
                else
                {
                    e.Value = "状态异常";
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// 移库右键菜单
        /// </summary>
        /// <param name="sender">sender内含tag属性为warehousezone对象</param>
        /// <param name="e"></param>
        private void DrugInventoryMoveClick(object sender, EventArgs e)
        {
            WarehouseZone wz = ((ToolStripDropDownItem)sender).Tag as WarehouseZone;

            if (wz.Name == this.comboBox1.SelectedText)
            {
                return;
            }

            ApprovalFlowType aft = this.PharmacyDatabaseService.GetApprovalFlowTypeByBusiness(out msg, ApprovalType.drugsInventoryMove).FirstOrDefault();

            if (aft == null)
            {
                MessageBox.Show("请先通知管理员设定移库审批,并设定其审批节点!"); return;
            }

            if (MessageBox.Show("确定需要申请该药品移库至:" + wz.Name + "吗?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
                return;
            }
            Guid InventoryID        = storage[this.dataGridView1.SelectedCells[0].RowIndex].InventoryID;
            DrugInventoryRecord dir = this.PharmacyDatabaseService.GetDrugInventoryRecord(out msg, InventoryID);

            if (dir == null)
            {
                MessageBox.Show("读取库存表失败!");
                return;
            }

            DrugsInventoryMove dim = new DrugsInventoryMove();

            dim.Id = Guid.NewGuid();
            dim.ApprovalStatusValue = 1;
            dim.batchNo             = dir.BatchNumber;
            dim.createTime          = DateTime.Now;
            dim.createUID           = BugsBox.Pharmacy.AppClient.Common.AppClientContext.currentUser.Id;
            dim.Deleted             = false;
            dim.Description         = "移库至" + wz.Name;
            dim.drugName            = dir.DrugInfo.ProductGeneralName;
            dim.flowID            = Guid.NewGuid();
            dim.inventoryRecordID = dir.Id;
            dim.OriginWareHouseID = dir.WarehouseZoneId;
            dim.quantity          = dir.CanSaleNum;
            dim.updateTime        = DateTime.Now;
            dim.WareHouseID       = wz.Id;
            bool b = this.PharmacyDatabaseService.AddDrugsInventoryMoveByFlowID(dim, aft.Id, "新增移库审批", out msg);

            if (b)
            {
                this.PharmacyDatabaseService.WriteLog(dim.createUID, "成功提交移库申请信息:" + dim.drugName + "被成功申请移至" + dim.OriginWareHouseID);
                if (MessageBox.Show("成功申请移库信息" + wz.Name + ",请至右键菜单->移库记录查询界面查询!需要打开移库记录查询窗口吗?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                {
                    return;
                }
                Form_DrugInventoryMove frm = new Form_DrugInventoryMove();
                frm.ShowDialog();
            }
        }
        /// <summary>
        /// 打开详细的审批对象信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgvApprovalList_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }

            //加入详细画面
            //this.plDetailView.Container.Add(UserControl);
            if (dgvApprovalList.Columns[e.ColumnIndex].Name == "查看详细")
            {
                Models.ApprovalFlow flow = dgvApprovalList.Rows[e.RowIndex].DataBoundItem as Models.ApprovalFlow;
                if (flow != null)
                {
                    string           msg      = string.Empty;
                    ApprovalFlowType flowType = PharmacyDatabaseService.GetApprovalFlowType(out msg, flow.ApprovalFlowTypeId);
                    switch (flowType.ApprovalTypeValue)
                    {
                    case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitApproval:
                    case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitEditApproval:
                    case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitLockApproval:
                        ucSupplyUnit uc = new ucSupplyUnit(flow.FlowId);
                        uc.Name = "DetailView";
                        this.plDetailView.Controls.Add(uc);
                        break;

                    case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoApproval:
                    case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoEditApproval:
                    case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoLockApproval:
                        ucGoodsInfo ucdi = new ucGoodsInfo();
                        ucdi.Name = "DetailView";
                        this.plDetailView.Controls.Add(ucdi);
                        break;

                    case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitApproval:
                    case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitEditApproval:
                    case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitLockApproval:
                        ucPurchaseUnit ucpu = new ucPurchaseUnit(flow.FlowId);
                        ucpu.Name = "DetailView";
                        this.plDetailView.Controls.Add(ucpu);
                        break;
                    }
                }

                //显示详细
                this.plDetailView.BringToFront();
                this.plDetailView.Visible = true;
            }
            else //打开详细流程记录, 审批流程表(上表)里的一条被选中后,把详细审批过程写入审批流程详细表(下表)
            {
                dgvApprovalList_RowEnter(sender, e);
            }
        }
Exemple #6
0
        /// <summary>
        /// 处理审核流程
        /// </summary>
        /// <param name="flow"></param>
        public void SetApproveAction(ApprovalFlow flow, string action, Guid userID, string comment)
        {
            try
            {
                if (flow.NextNodeID != Guid.Empty)
                {
                    ApprovalFlowType flowType = BusinessHandlerFactory.ApprovalFlowTypeBusinessHandler.Fetch(
                        f => f.Id == flow.ApprovalFlowTypeId).FirstOrDefault();

                    //准备审批节点记录表,
                    ApprovalFlowRecord record = BusinessHandlerFactory.ApprovalFlowRecordBusinessHandler.GetApproveFlowRecordInstance(flow, userID, comment);
                    BusinessHandlerFactory.ApprovalFlowRecordBusinessHandler.Add(record);

                    //审批被拒绝
                    if ("REJECT".Equals(action.ToUpper()))
                    {
                        flow.Status = (int)ApprovalStatus.Reject;
                        UpdateEntityByApprovalStatus(flowType.ApprovalTypeValue, flow.FlowId, ApprovalStatus.Reject);
                    }
                    else
                    {
                        //获取当前节点的下一个节点
                        ApprovalFlowNode newNextNode = BusinessHandlerFactory.ApprovalFlowNodeBusinessHandler.GetNextApproveFlowsNode(flowType.Id, flow.NextNodeID);

                        if (newNextNode == null)          //审批通过,无下个一节点.审批结束
                        {
                            flow.NextNodeID = Guid.Empty; //审核通过后,下个节点信息保存为空Guid
                            flow.Status     = (int)ApprovalStatus.Approvaled;
                            UpdateEntityByApprovalStatus(flowType.ApprovalTypeValue, flow.FlowId, ApprovalStatus.Approvaled);
                        }
                        else //审核通过,更新审核流程的下一个节点信息
                        {
                            flow.NextNodeID = newNextNode.Id;
                            flow.Status     = (int)ApprovalStatus.Waitting;
                        }
                    }

                    this.Save(flow);
                    this.Save();
                }
            }
            catch (Exception ex)
            {
                this.HandleException("处理审批流程失败", ex);
            }
        }
Exemple #7
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("确定要提交吗?", "", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.Cancel)
            {
                return;
            }
            aft = this.PharmacyDatabaseService.GetApprovalFlowTypeByBusiness(out msg, ApprovalType.VehicleApproval).FirstOrDefault();

            if (aft == null)
            {
                MessageBox.Show("定义委托车辆需定义审批流程,请通知管理员定义该审批流程!");
                this.Dispose();
            }
            try
            {
                foreach (Control c in this.Controls)
                {
                    if (c.GetType() == typeof(TextBox))
                    {
                        if (string.IsNullOrEmpty(c.Text.Trim()))
                        {
                            MessageBox.Show("有未填项!", "警告");
                            c.Focus();
                            return;
                        }
                    }
                }

                m_Vehicle.Type                 = this.txtType.Text.Trim();
                m_Vehicle.Cubage               = this.txtCubage.Text.Trim();
                m_Vehicle.Rule                 = this.txtRule.Text.Trim();
                m_Vehicle.Other                = this.txtOther.Text.Trim();
                m_Vehicle.LicensePlate         = this.txtLicensePlate.Text.Trim();
                m_Vehicle.Driver               = this.txtDriver.Text.Trim();
                m_Vehicle.Status               = this.chkStatus.Checked;
                m_Vehicle.VehicleCategoryValue = this.comboBox1.SelectedIndex;
                m_Vehicle.createUID            = (Guid)BugsBox.Pharmacy.AppClient.Common.AppClientContext.CurrentUser.Id;
                m_Vehicle.DelegateMan          = this.txtDelegateMan.Text.Trim();
                m_Vehicle.DelegateCompany      = this.txtDelegateCompany.Text.Trim();
                m_Vehicle.DelegateTel          = this.txtDelegateTel.Text.Trim();
                m_Vehicle.LiscenceCode         = this.textBox2.Text.Trim();
                m_Vehicle.DelegateAddr         = this.textBox1.Text.Trim();
                m_Vehicle.StartDate            = this.dateTimePicker1.Value.Date;
                m_Vehicle.EndDate              = this.dateTimePicker2.Value.Date;
                m_Vehicle.DelegateScope        = this.textBox3.Text.Trim();


                if (m_state == FormOperation.Add)
                {
                    if (m_Vehicle.VehicleCategoryValue == 1)
                    {
                        m_Vehicle.FlowID = Guid.NewGuid();
                        bool b = this.PharmacyDatabaseService.AddVehicleToApprovalByFlowID(m_Vehicle, aft.Id, "新增委托车辆审批", out msg);
                        if (b)
                        {
                            MessageBox.Show("委托车辆信息新增成功!请通知委托车辆信息审批流程人员审查该信息!");
                        }
                    }
                    else
                    {
                        if (PharmacyDatabaseService.AddVehicle(out msg, m_Vehicle))
                        {
                            MessageBox.Show("自有车辆信息新增成功!");
                        }
                    }
                }
                else
                {
                    bool b = PharmacyDatabaseService.SaveVehicle(out msg, m_Vehicle);
                    if (b)
                    {
                        MessageBox.Show("保存成功!");
                    }
                }

                if (!string.IsNullOrEmpty(msg))
                {
                    MessageBox.Show(msg, "Error");
                    return;
                }

                ruslt = System.Windows.Forms.DialogResult.Yes;
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("保存数据失败!", "系统错误");
                Log.Error(ex);
                this.Close();
            }
        }
        /// <summary>
        /// 打开详细的审批对象信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgvApprovalList_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.RowIndex < 0)
                {
                    return;
                }

                //加入详细画面
                if (dgvApprovalList.Columns[e.ColumnIndex].Name == "查看详细")
                {
                    if (dgvApprovalList.Rows[e.RowIndex].Cells[4].Value != null)
                    {
                        string msg = string.Empty;
                        Models.ApprovalFlow flow     = _approveFlowList[e.RowIndex];
                        ApprovalFlowType    flowType = PharmacyDatabaseService.GetApprovalFlowType(out msg, flow.ApprovalFlowTypeId);
                        switch (flowType.ApprovalTypeValue)
                        {
                        case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitApproval:
                        case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitEditApproval:
                        case (int)BugsBox.Pharmacy.Models.ApprovalType.SupplyUnitLockApproval:
                            ucSupplyUnit uc = new ucSupplyUnit(flow.FlowId);
                            uc.Name = "DetailView";
                            this.plDetailView.Controls.Add(uc);
                            break;

                        case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoApproval:
                        case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoEditApproval:
                        case (int)BugsBox.Pharmacy.Models.ApprovalType.DrugInfoLockApproval:
                            DrugInfo di = this.PharmacyDatabaseService.GetDrugInfoByFlowID(out msg, flow.FlowId);
                            if (di.BusinessScopeCode.Contains("医疗器械"))
                            {
                                BaseDataManage.FormInstrument frmInstrument = new BaseDataManage.FormInstrument
                                {
                                    entity = di,
                                };
                                Common.SetControls.SetControlReadonly(frmInstrument, true);
                                frmInstrument.FSE = FormStatusEnum.Read;
                                frmInstrument.ShowDialog();
                                return;
                            }
                            else
                            {
                                ucGoodsInfo ucdi = new ucGoodsInfo(di);
                                Common.SetControls.SetControlReadonly(ucdi, true);
                                ucdi.Name = "DetailView";
                                this.plDetailView.Controls.Add(ucdi);
                            }
                            break;

                        case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitApproval:
                        case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitEditApproval:
                        case (int)BugsBox.Pharmacy.Models.ApprovalType.PurchaseUnitLockApproval:
                            ucPurchaseUnit ucpu = new ucPurchaseUnit(flow.FlowId);
                            ucpu.Name = "DetailView";
                            this.plDetailView.Controls.Add(ucpu);
                            break;

                        case (int)BugsBox.Pharmacy.Models.ApprovalType.drugsUnqualityApproval:
                            Business.Models.drugsUnqualificationQuery dq = PharmacyDatabaseService.getDrugsUnqualificationQueryByFlowID(flow.FlowId, out msg);
                            ucDrugsUnqualification ucdu = new ucDrugsUnqualification(dq);
                            ucdu.initApprovalDetail(flow.FlowId);
                            ucdu.Name = "DetailView";
                            this.plDetailView.Controls.Add(ucdu);
                            break;

                        case (int)ApprovalType.drugsBreakageApproval:
                            DrugsBreakage  db   = PharmacyDatabaseService.GetDrugsBreakageByFlowID(flow.FlowId, out msg);
                            UcDrugBreakage ucdb = new UcDrugBreakage(db, flow);
                            ucdb.Name = "DetailView";
                            this.plDetailView.Controls.Add(ucdb);
                            break;

                        case (int)ApprovalType.VehicleApproval:
                            Vehicle v = this.PharmacyDatabaseService.GetVehicleByFlowID(flow.FlowId, out msg);
                            if (v == null)
                            {
                                return;
                            }
                            DataDictionary.FormVehicleEdit frm = new DataDictionary.FormVehicleEdit(v, true);
                            frm.ShowDialog();
                            return;

                        case (int)ApprovalType.DirectSalesApproval:
                            DirectSalesOrder dso  = this.PharmacyDatabaseService.GetDirectSalesOrderByFlowId(flow.FlowId, out msg);
                            UCDirectSales    UCDS = new UCDirectSales(dso);
                            UCDS.Name = "DetailView";
                            this.plDetailView.Controls.Add(UCDS);
                            break;
                        }
                    }

                    //显示详细
                    this.plDetailView.BringToFront();
                    this.plDetailView.Visible = true;
                }
                else //打开详细流程记录, 审批流程表(上表)里的一条被选中后,把详细审批过程写入审批流程详细表(下表)
                {
                    dgvApprovalList_RowEnter(sender, e);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }