public ApiResponse <bool> AddExpenseDetailsOrder(int id, ApplyExpenseDetailModel model)
        {
            if (id < 0 || model == null)
            {
                throw new ApiBadRequestException("无效的请求");
            }

            ApiResponse <bool> response = new ApiResponse <bool>()
            {
                Result = ExpenseService.AddExpenseDetailsOrder(id, model)
            };

            return(response);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 添加报销详细信息
        /// </summary>
        /// <returns>是否成功</returns>
        public bool AddExpenseDetailsOrder(int id, ApplyExpenseDetailModel model)
        {
            using (var dbContext = new MissionskyOAEntities())
            {
                //查询报销信息是否存在
                var expenseMain = dbContext.ExpenseMains.FirstOrDefault(it => it.Id == id);
                if (expenseMain == null)
                {
                    throw new Exception("报销单id不存在");
                }

                var expenseDetailModel = new ExpenseDetailModel()
                {
                    ODate  = model.ODate,
                    EType  = model.EType,
                    Remark = model.Remark,
                    PCount = 1,
                    Amount = model.Amount
                };
                if (model.Amount > 0)
                {
                    CalculateExpenseSum(expenseMain.Id, model.Amount);
                }
                //3.1 构造参与人员
                List <ExpenseMemberModel> activyParticipants = new List <ExpenseMemberModel>();
                if (model.participants != null && (model.participants.Length > 0))
                {
                    foreach (int participantItem in model.participants)
                    {
                        var expenseMemberModel = new ExpenseMemberModel()
                        {
                            MemberId = participantItem
                        };
                        activyParticipants.Add(expenseMemberModel);
                    }
                }
                expenseDetailModel.ExpenseMembers = activyParticipants;
                expenseMain.ExpenseDetails.Add(expenseDetailModel.ToEntity());


                dbContext.SaveChanges();
                return(true);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 修改报销详细信息
        /// </summary>
        /// <returns>报销详细信息</returns>
        public bool UpdateExpenseDetailsOrder(int id, ApplyExpenseDetailModel model, UserModel user)
        {
            using (var dbContext = new MissionskyOAEntities())
            {
                //查询申请详细信息是否存在
                var expenseDetail = dbContext.ExpenseDetails.FirstOrDefault(it => it.Id == id);
                if (expenseDetail == null)
                {
                    throw new Exception("报销详细单id不存在");
                }

                if (!user.Email.EqualsIgnoreCase(Global.FinancialEmail))
                {
                    //报销单
                    var expenseMainEntity = dbContext.ExpenseMains.FirstOrDefault(it => it.Id == expenseDetail.MId);
                    ExpenseAuditHistoryModel expenseCurrentStaus = GetExpenseCurrentStatus(expenseMainEntity.Id, expenseMainEntity.AuditId);
                    if (expenseMainEntity.AuditId != (int)ExpenseAuditStep.DepartmentAudit || expenseCurrentStaus.Status != OrderStatus.Apply)
                    {
                        Log.Error("已经处于审批流程,不可修改");
                        throw new InvalidOperationException("已经处于审批流程,不可修改");
                    }
                }

                if (model.Amount > 0 && model.Amount != expenseDetail.Amount)
                {
                    CalculateExpenseSum(expenseDetail.MId, model.Amount - expenseDetail.Amount);
                }

                expenseDetail.ODate  = model.ODate;
                expenseDetail.Remark = model.Remark;
                expenseDetail.Amount = model.Amount;

                if (model.EType != 0)
                {
                    expenseDetail.EType = (int)model.EType;
                }

                #region 更新成员
                if (model.participants != null && model.participants.Count() > 0)
                {
                    var expenseMems = dbContext.ExpenseMembers.Where(it => it.DId == expenseDetail.Id); //原来存在的
                    var maxDetId    = dbContext.ExpenseMembers.Max(it => it.Id);                        //求最大Detail Id

                    //移除现在不存在的
                    expenseMems.ToList().ForEach(it =>
                    {
                        if (!model.participants.Contains(it.MemberId))
                        {
                            dbContext.ExpenseMembers.Remove(it);
                        }
                    });

                    //添加新增的
                    model.participants.ToList().ForEach(it =>
                    {
                        if (expenseMems.Any(m => m.MemberId == it) == false)
                        {
                            dbContext.ExpenseMembers.Add(new ExpenseMember()
                            {
                                MemberId = it, DId = expenseDetail.Id, Id = ++maxDetId
                            });
                        }
                    });
                }
                #endregion

                dbContext.SaveChanges();
                return(true);
            }
        }