Esempio n. 1
0
        /// <summary>
        /// 同意报销
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAgreed_Press(object sender, EventArgs e)
        {
            try
            {
                switch (Status)
                {
                case RB_Status.新建:
                    Status = RB_Status.责任人审批;
                    break;

                case RB_Status.责任人审批:
                    Status = RB_Status.行政审批;
                    break;

                case RB_Status.行政审批:
                    Status = RB_Status.财务审批;
                    break;
                }
                ReturnInfo r = AutofacConfig.rBService.UpdateRBStatus(ID, Status, UserID, "");           //保存报销单
                if (r.IsSuccess == true)
                {
                    Bind();               //刷新页面
                    this.ShowResult = ShowResult.Yes;
                    Toast("审批成功");
                }
                else
                {
                    throw new Exception(r.ErrorInfo);
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
Esempio n. 2
0
        AutofacConfig AutofacConfig = new AutofacConfig(); //调用配置类
        #endregion
        /// <summary>
        /// 初始化数据
        /// </summary>
        private void Bind()
        {
            try
            {
                UserID = Client.Session["U_ID"].ToString();                                                 //当前用户ID
                List <RB_RowsDto> Rows = AutofacConfig.rBService.GetRowByRBID(ID);                          //查找报销单的消费记录信息
                RBDetailDto       Reim = AutofacConfig.rBService.GetByID(ID);                               //查找报销单的相关信息
                Status = (RB_Status)Reim.RB_Status;                                                         //报销订单当前状态
                string[]      ReimAEACheckers       = Reim.RB_AEACheckers.Split(Convert.ToChar(","));       //获取行政审批人员
                string[]      ReimFinancialCheckers = Reim.RB_FinancialCheckers.Split(Convert.ToChar(",")); //获取财务审批人员
                UserDetailDto userInfo = AutofacConfig.userService.GetUserByUserID(Reim.RB_CreateUser);
                title1.TitleText = userInfo.U_Name + "的报销";                                                 //标题
                lblUserName.Text = userInfo.U_Name;                                                         //报销单创建用户
                //当没有设置用户头像时,根据用户性别显示默认头像
                if (string.IsNullOrEmpty(userInfo.U_Portrait) == true)
                {
                    switch (userInfo.U_Sex)
                    {
                    case (int)Sex.男:
                        imgPortrait.ResourceID = "boy";
                        break;

                    case (int)Sex.女:
                        imgPortrait.ResourceID = "girl";
                        break;
                    }
                }
                else
                {
                    imgPortrait.ResourceID = userInfo.U_Portrait;
                }
                //默认状态下,不显示同意,拒绝,编辑按钮
                btnAgreed.Visible = false;
                btnRefuse.Visible = false;
                btnEdit.Visible   = false;
                switch (Status)
                {
                case RB_Status.新建:                            //如果是已创建状态,当前用户为责任人,则显示审批按钮
                    lblRBState.Text = "等待责任人审批";
                    if (UserID == Reim.RB_LiableMan)
                    {
                        btnAgreed.Visible = true;
                        btnRefuse.Visible = true;
                        if (UserID == Reim.RB_CreateUser)
                        {
                            btnEdit.Visible = true;
                            btnAgreed.Width = 85;
                            btnAgreed.Left  = 10;
                            btnRefuse.Width = 85;
                            btnRefuse.Left  = 108;
                            btnEdit.Width   = 85;
                            btnEdit.Left    = 205;
                        }
                        else
                        {
                            btnAgreed.Width = 134;
                            btnAgreed.Left  = 10;
                            btnRefuse.Width = 134;
                            btnRefuse.Left  = 156;
                        }
                    }
                    else
                    {
                        if (UserID == Reim.RB_CreateUser)
                        {
                            btnEdit.Visible = true;
                            btnEdit.Width   = 280;
                            btnEdit.Left    = 10;
                        }
                        else
                        {
                            plButton.Border = new Border(0);
                        }
                    }
                    break;

                case RB_Status.责任人审批:                      //如果是责任人已审批状态,当前用户为行政审批人,则显示审批功能按钮
                    lblRBState.Text = "等待行政审批";
                    foreach (string ReimAEAChecker in ReimAEACheckers)
                    {
                        if (UserID == ReimAEAChecker)
                        {
                            btnAgreed.Visible = true;
                            btnRefuse.Visible = true;
                            btnAgreed.Width   = 134;
                            btnAgreed.Left    = 10;
                            btnRefuse.Width   = 134;
                            btnRefuse.Left    = 156;
                        }
                    }
                    break;

                case RB_Status.行政审批:                    //如果当前行政已审批,当前用户为财务,则显示审批功能按钮
                    lblRBState.Text = "等待财务审批";
                    foreach (string ReimFinancialChecker in ReimFinancialCheckers)
                    {
                        if (UserID == ReimFinancialChecker)
                        {
                            btnAgreed.Visible = true;
                            btnAgreed.Visible = true;
                            btnAgreed.Width   = 134;
                            btnAgreed.Left    = 10;
                            btnRefuse.Width   = 134;
                            btnRefuse.Left    = 156;
                        }
                    }
                    break;

                case RB_Status.财务审批:                         //报销通过,不显示任何按钮
                    lblRBState.Text = "已审批(完成)";
                    plButton.Border = new Border(0);
                    break;

                case RB_Status.已拒绝:                       //报销驳回,如果当前用户为报销单创始人,则显示编辑按钮
                    lblRBState.Text = "已审批(拒绝)";
                    if (UserID == Reim.RB_CreateUser)
                    {
                        btnEdit.Visible = true;
                        btnEdit.Width   = 280;
                        btnEdit.Left    = 10;
                    }
                    else
                    {
                        plButton.Border = new Border(0);
                    }
                    break;
                }
                CCDetailDto Cost = AutofacConfig.costCenterService.GetCCByID(Reim.CC_ID);
                lblRBNO.Text       = Reim.RB_ID;                     //报销单编号
                lblRBCC.Text       = Cost.CC_Name;                   //成本中心名称
                lblAmount.Text     = Reim.RB_TotalAmount.ToString(); //总金额
                lblAmount.Text     = Reim.RB_TotalAmount.ToString(); //报销单总金额
                lblCreateTime.Text = Reim.RB_CreateDate.ToString("yyyy/MM/dd");
                lblnote.Text       = Reim.RB_Note;                   //报销单备注

                if (string.IsNullOrEmpty(Reim.RB_RejectionReason) == true)
                {
                    lblReason.Text               = "";
                    lblReason.Height             = 25;
                    lblReason1.Height            = 25;
                    lblReason.VerticalAlignment  = VerticalAlignment.Center;
                    lblReason1.VerticalAlignment = VerticalAlignment.Center;
                    lblReason.Padding            = new Padding(0, 0, 0, 0);
                    lblReason1.Padding           = new Padding(0, 0, 0, 0);
                }
                else
                {
                    lblReason.Text               = Reim.RB_RejectionReason; //报销单拒绝原因
                    lblReason.Height             = 50;
                    lblReason1.Height            = 50;
                    lblReason.VerticalAlignment  = VerticalAlignment.Top;
                    lblReason1.VerticalAlignment = VerticalAlignment.Top;
                    lblReason.Padding            = new Padding(0, 5, 0, 0);
                    lblReason1.Padding           = new Padding(0, 5, 0, 0);
                }
                listRBRowData.Top = lblReason.Top + lblReason.Height;

                //如果审批已结束,则隐藏按钮所占区域
                if (btnAgreed.Visible == false && btnEdit.Visible == false && btnRefuse.Visible == false)
                {
                    plButton.Visible = false;
                }

                //创建表,将数据进行处理后放入表内,然后显示在页面上
                DataTable rbrowtable = new DataTable();
                rbrowtable.Columns.Add("ID", typeof(System.Int32));              //消费记录编号
                rbrowtable.Columns.Add("RB_NO", typeof(System.String));          //报销单号
                rbrowtable.Columns.Add("RBROW_DATE", typeof(System.String));     //消费日期
                rbrowtable.Columns.Add("RBROW_TYPE", typeof(System.String));     //消费类型ID
                rbrowtable.Columns.Add("RBROW_TYPENAME", typeof(System.String)); //消费类型名称
                rbrowtable.Columns.Add("RBROW_AMOUNT", typeof(System.Decimal));  //消费日期
                rbrowtable.Columns.Add("RBROW_NOTE", typeof(System.String));     //消费记录备注
                foreach (RB_RowsDto Row in Rows)
                {
                    string TypeName = AutofacConfig.rBService.GetTypeNameByID(Row.R_TypeID);
                    rbrowtable.Rows.Add(Row.R_ID, Row.RB_ID, Row.R_ConsumeDate.ToString("yyyy/MM/dd"), Row.R_TypeID, TypeName, Row.R_Amount, Row.R_Note);
                }
                listRBRowData.Rows.Clear();//清空报销单行项列表数据
                if (rbrowtable.Rows.Count > 0)
                {
                    this.listRBRowData.DataSource = rbrowtable;
                    this.listRBRowData.DataBind();
                }
            }
            catch (Exception ex)
            {
                Toast(ex.Message);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 更新报销单状态
        /// </summary>
        /// <param name="ID">报销单ID</param>
        /// <param name="Status">报销单状态</param>
        /// <param name="UserID">当前审批者的ID</param>
        public ReturnInfo UpdateRBStatus(string ID, RB_Status Status, string UserID, string RejectionReason)
        {
            ReturnInfo    RInfo  = new ReturnInfo();
            StringBuilder sb     = new StringBuilder();
            Reimbursement entity = _reimbursementRepository.GetByID(ID).FirstOrDefault();

            if (entity != null)
            {
                try
                {
                    Reimbursement entity2 = _reimbursementRepository.GetByID(ID).AsNoTracking().FirstOrDefault();
                    if (entity2.RB_Status == (int)RB_Status.财务审批)
                    {
                        RInfo.IsSuccess = false;
                        RInfo.ErrorInfo = "财务审批通过后,不能变更状态了!";
                        return(RInfo);
                    }
                    else
                    {
                        entity.RB_UpdateDate = DateTime.Now;
                        if (Status == RB_Status.已拒绝)
                        {
                            if (entity2.RB_Status == (int)RB_Status.责任人审批 || entity2.RB_Status == (int)RB_Status.行政审批)
                            {
                                //行政和财务拒绝的时候,成本中心已用金额减少
                                CostCenter cc   = _costCenterRepository.GetByID(entity.CC_ID).FirstOrDefault();
                                decimal    Used = cc.CC_UsedAmount;
                                cc.CC_UsedAmount = Used - entity.RB_TotalAmount;
                                _unitOfWork.RegisterDirty(cc);
                                if (entity2.RB_Status == (int)RB_Status.责任人审批)
                                {
                                    entity.RB_CurrantLiableMan = UserID;
                                    entity.RB_LiableDate       = DateTime.Now;
                                }
                                else if (entity2.RB_Status == (int)RB_Status.行政审批)
                                {
                                    entity.RB_CurrantAEACheck = UserID;
                                    entity.RB_AEADate         = DateTime.Now;
                                }
                            }
                            entity.RB_Status          = (int)Status;
                            entity.RB_CurrantCheck    = UserID;
                            entity.RB_RejectionReason = RejectionReason;
                            entity.RB_UpdateUser      = UserID;
                            _unitOfWork.RegisterDirty(entity);
                            bool result = _unitOfWork.Commit();
                            RInfo.IsSuccess = result;
                            RInfo.ErrorInfo = sb.ToString();
                            return(RInfo);
                        }
                        else
                        {
                            if (entity2.RB_Status + 1 == (int)Status)
                            {
                                entity.RB_Status          = (int)Status;
                                entity.RB_CurrantCheck    = UserID;
                                entity.RB_UpdateUser      = UserID;
                                entity.RB_RejectionReason = RejectionReason;
                                //责任人审核通过的话,需要更新成本中心里的已使用金额
                                if (Status == RB_Status.责任人审批)
                                {
                                    CostCenter cc   = _costCenterRepository.GetByID(entity.CC_ID).FirstOrDefault();
                                    decimal    Used = cc.CC_UsedAmount;
                                    decimal    Left = cc.CC_Amount - Used;
                                    if (Left >= entity.RB_TotalAmount)
                                    {
                                        cc.CC_UsedAmount = Used + entity.RB_TotalAmount;
                                        _unitOfWork.RegisterDirty(cc);
                                    }
                                    else
                                    {
                                        RInfo.IsSuccess = false;
                                        RInfo.ErrorInfo = "成本中心余额不足!";
                                        return(RInfo);
                                    }
                                    entity.RB_CurrantLiableMan = UserID;
                                    entity.RB_LiableDate       = DateTime.Now;
                                }
                                else if (Status == RB_Status.行政审批)
                                {
                                    entity.RB_CurrantAEACheck = UserID;
                                    entity.RB_AEADate         = DateTime.Now;
                                }
                                else if (Status == RB_Status.财务审批)
                                {
                                    entity.RB_CurrantFinCheck = UserID;
                                    entity.RB_FinDate         = DateTime.Now;
                                }
                                _unitOfWork.RegisterDirty(entity);
                                bool result = _unitOfWork.Commit();
                                RInfo.IsSuccess = result;
                                RInfo.ErrorInfo = sb.ToString();
                                return(RInfo);
                            }
                            else
                            {
                                RInfo.IsSuccess = false;
                                RInfo.ErrorInfo = "不符合审批流程!";
                                return(RInfo);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    _unitOfWork.RegisterClean(entity);
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
            }
            else
            {
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = "该报销单ID不存在!";
                return(RInfo);
            }
        }