Example #1
0
        /// <summary>
        /// 可为负数的保存校验
        /// </summary>
        /// <returns>returns</returns>
        private List <string> CheckSaveB()
        {
            List <string> msgs = new List <string>();
            ObservableCollection <FBEntity> details = this.OrderEntity.GetRelationFBEntities(typeof(T_FB_DEPTBUDGETADDDETAIL).Name);

            if (details.Count == 0)
            {
                msgs.Add(ErrorMessage.NoDetailInfo);
                return(msgs);
            }

            var detailList          = details.Select(item => item.Entity as T_FB_DEPTBUDGETADDDETAIL).ToList();
            var existBiggerThanZero = detailList.Count(item => item.TOTALBUDGETMONEY > 0) > 0;
            var existLessThanZero   = detailList.Count(item => item.TOTALBUDGETMONEY < 0) > 0;

            if (existBiggerThanZero && existLessThanZero)
            {
                msgs.Add("预算明细只能全为负数,或全为正数,请确认!");
                return(msgs);
            }
            // 都大于0的
            if (!existLessThanZero)
            {
                return(CheckSaveA());
            }
            details.ToList().ForEach(item =>
            {
                T_FB_DEPTBUDGETADDDETAIL detail = item.Entity as T_FB_DEPTBUDGETADDDETAIL;

                // 判断个人预算是否出现负数的情况
                var personDetailList = item.GetEntityList <T_FB_PERSONBUDGETADDDETAIL>(itemT =>
                {
                    var result = itemT as T_FB_PERSONBUDGETADDDETAIL;
                    if (result == null)
                    {
                        V_DepartmentSum vd = itemT as V_DepartmentSum;
                        result             = new T_FB_PERSONBUDGETADDDETAIL()
                        {
                            LIMITBUDGETMONEY = vd.LIMITBUDGETMONEY,
                            BUDGETMONEY      = vd.BUDGETMONEY,
                            OWNERNAME        = vd.OWNERNAME,
                            OWNERPOSTNAME    = vd.OWNERPOSTNAME
                        };
                    }
                    return(result);
                });

                // 表示没做过任何操作
                if (detail.TOTALBUDGETMONEY.Equal(0) && detail.BUDGETMONEY.Equal(0))
                {
                    return;
                }

                if (detail.TOTALBUDGETMONEY > 0)
                {
                    string errorMessage = string.Format(ErrorMessage.MoneyBiggerThanZero, detail.T_FB_SUBJECT.SUBJECTNAME, FieldDisplayName.BudgetMoney);
                    msgs.Add(errorMessage);
                }

                //不能大于当前可用结余AUDITBUDGETMONEY
                if (detail.AUDITBUDGETMONEY.Add(detail.TOTALBUDGETMONEY) < 0)
                {
                    msgs.Add(string.Format(ErrorMessage.MoneyBigger, "扣减的预算金额", "可用结余", detail.T_FB_SUBJECT.SUBJECTNAME));
                }
                personDetailList.ForEach(itemP =>
                {
                    if (itemP.LIMITBUDGETMONEY.Add(itemP.BUDGETMONEY) < 0)
                    {
                        msgs.Add(string.Format("科目:{0} 扣减的预算金额不能大于可用结余!", detail.T_FB_SUBJECT.SUBJECTNAME + "(" + itemP.OWNERNAME + ")"));
                    }
                    else if (itemP.BUDGETMONEY > 0)
                    {
                        msgs.Add(string.Format("科目:{0} 扣减的预算金额不能大于零!", detail.T_FB_SUBJECT.SUBJECTNAME + "(" + itemP.OWNERNAME + ")"));
                    }
                });
            });

            T_FB_DEPTBUDGETADDMASTER entMaster = this.OrderEntity.FBEntity.Entity as T_FB_DEPTBUDGETADDMASTER;

            if (entMaster.BUDGETCHARGE >= 0)
            {
                msgs.Add("费用总预算必须小于0!");
            }
            return(msgs);
        }
Example #2
0
        private void SetPropertyChanged()
        {
            // 因后台保存是二层结构,所有需要把 A->B->C这种结构变成 A->B, A->C结构
            ObservableCollection <FBEntity> detailPersonList = this.OrderEntity.GetRelationFBEntities(typeof(T_FB_PERSONBUDGETADDDETAIL).Name);
            ObservableCollection <FBEntity> detailList       = this.OrderEntity.GetRelationFBEntities(typeof(T_FB_DEPTBUDGETADDDETAIL).Name);

            detailList.ToList().ForEach(item =>
            {
                #region 部门变化
                // 部门预算明细变化事件
                item.Entity.PropertyChanged += (senderDept, eDept) =>
                {
                    T_FB_DEPTBUDGETADDDETAIL DeptDetail = senderDept as T_FB_DEPTBUDGETADDDETAIL;
                    #region
                    // 部门预算明细的总预算变化时,统计所有明细的预算
                    if (eDept.PropertyName == "TOTALBUDGETMONEY")
                    {
                        decimal?newTotal = detailList.Sum(itemDept =>
                        {
                            return((decimal?)itemDept.GetObjValue("Entity.TOTALBUDGETMONEY"));
                        });

                        this.OrderEntity.SetObjValue("Entity.BUDGETCHARGE", newTotal);
                    }

                    // 改:先填写预算总额,后填个人预算,而部门的公共预算=预算总额 - 个人预算 2011-12-28
                    // 个人预算或部门预算变化时,统计个人预算明细 + 部门预算
                    if (eDept.PropertyName == "TOTALBUDGETMONEY" || eDept.PropertyName == "PERSONBUDGETMONEY")
                    {
                        DeptDetail.BUDGETMONEY = DeptDetail.TOTALBUDGETMONEY.Subtract(DeptDetail.PERSONBUDGETMONEY).Value;
                    }

                    #endregion
                };
                #endregion

                #region 个人预算明细变化
                // 个人预算明细变化
                ObservableCollection <FBEntity> obPersonDetail = item.GetRelationFBEntities(typeof(T_FB_PERSONBUDGETADDDETAIL).Name);
                obPersonDetail.ToList().ForEach(itemPerson =>
                {
                    T_FB_PERSONBUDGETADDDETAIL persondetail = itemPerson.Entity as T_FB_PERSONBUDGETADDDETAIL;

                    itemPerson.Entity.PropertyChanged += (senderPerson, ePerson) =>
                    {
                        if (ePerson.PropertyName == "BUDGETMONEY")
                        {
                            var totalPerson = obPersonDetail.Sum(itemPersonDetail =>
                            {
                                // 在个人预算中将会部门预算记录,所以需要判断是否统计的对象是个人预算
                                T_FB_PERSONBUDGETADDDETAIL pDetail = itemPersonDetail.Entity as T_FB_PERSONBUDGETADDDETAIL;
                                if (pDetail != null)
                                {
                                    return(pDetail.BUDGETMONEY);
                                }
                                else
                                {
                                    return(0);
                                }
                            });

                            var itemDept = item.Entity as T_FB_DEPTBUDGETADDDETAIL;
                            itemDept.PERSONBUDGETMONEY = totalPerson;
                        }
                    };

                    detailPersonList.Add(itemPerson);
                });

                // 因为在个人预算中需要体现部门公共费用栏,则加入部门公共费用(T记录到个人预算集合中
                if (obPersonDetail.Count > 0)
                {
                    var sumEntity              = new V_DepartmentSum(item.Entity);
                    var curItemEntity          = item.Entity as T_FB_DEPTBUDGETADDDETAIL;
                    var sumFBEntity            = sumEntity.ToFBEntity();
                    sumFBEntity.ReadOnly       = true;
                    sumEntity.LIMITBUDGETMONEY = curItemEntity.AUDITBUDGETMONEY.Subtract(obPersonDetail.Sum(itemFB =>
                    {
                        var tee = (itemFB.Entity as T_FB_PERSONBUDGETADDDETAIL);
                        if (tee.LIMITBUDGETMONEY == null)
                        {
                            return(0);
                        }
                        else
                        {
                            return(tee.LIMITBUDGETMONEY);
                        }
                    }));
                    sumFBEntity.FBEntityState = FBEntityState.Unchanged;
                    obPersonDetail.Insert(0, sumFBEntity);
                }
                else
                {
                    item.HideDetails = true;
                }

                #endregion
            });

            this.EditForm.BindingData();
            this.CloseProcess(false);
        }
Example #3
0
        private void SetPropertyChanged()
        {
            
            // 因后台保存是二层结构,所有需要把 A->B->C这种结构变成 A->B, A->C结构
            ObservableCollection<FBEntity> detailPersonList = this.OrderEntity.GetRelationFBEntities(typeof(T_FB_PERSONBUDGETAPPLYDETAIL).Name);
            ObservableCollection<FBEntity> detailList = this.OrderEntity.GetRelationFBEntities(typeof(T_FB_DEPTBUDGETAPPLYDETAIL).Name);
           
            detailList.ToList().ForEach(item =>
            {
                #region 部门变化
                // 部门预算明细变化事件
                item.Entity.PropertyChanged += (senderDept, eDept) =>
                    {
                        T_FB_DEPTBUDGETAPPLYDETAIL DeptDetail = senderDept as T_FB_DEPTBUDGETAPPLYDETAIL;

                        #region
                        // 部门预算明细的总预算变化时,统计所有明细的预算
                        if (eDept.PropertyName == "TOTALBUDGETMONEY")
                        {
                            decimal? newTotal = detailList.Sum(itemDept =>
                                {
                                    return (decimal?)itemDept.GetObjValue("Entity.TOTALBUDGETMONEY");
                                });
                             
                            this.OrderEntity.SetObjValue("Entity.BUDGETMONEY", newTotal);
                        }
                        // 改:先填写预算总额,后填个人预算,而部门的公共预算=预算总额 - 个人预算 2011-12-28
                        // 个人预算或部门预算变化时,统计个人预算明细 + 部门预算
                        if (eDept.PropertyName == "TOTALBUDGETMONEY" || eDept.PropertyName == "PERSONBUDGETMONEY")
                        {
                            DeptDetail.BUDGETMONEY = DeptDetail.TOTALBUDGETMONEY.Subtract(DeptDetail.PERSONBUDGETMONEY).Value;
                        }
                        #endregion
                    };
                #endregion

                #region 个人预算明细变化
                // 个人预算明细变化
                ObservableCollection<FBEntity> obPersonDetail = item.GetRelationFBEntities(typeof(T_FB_PERSONBUDGETAPPLYDETAIL).Name);
                obPersonDetail.ToList().ForEach(itemPerson =>
                {
                    T_FB_PERSONBUDGETAPPLYDETAIL persondetail = itemPerson.Entity as T_FB_PERSONBUDGETAPPLYDETAIL;
                    
                    itemPerson.Entity.PropertyChanged += (senderPerson, ePerson) =>
                        {
                            if (ePerson.PropertyName == "BUDGETMONEY")
                            {
                                
                                var totalPerson = obPersonDetail.Sum(itemPersonDetail =>
                                    {
                                        // 在个人预算中将会部门预算记录,所以需要判断是否统计的对象是个人预算
                                        T_FB_PERSONBUDGETAPPLYDETAIL pDetail = itemPersonDetail.Entity as T_FB_PERSONBUDGETAPPLYDETAIL;
                                        if (pDetail != null)
                                        {

                                            return pDetail.BUDGETMONEY;
                                        }
                                        else
                                        {
                                            return 0;
                                        }
                                    });
                                var itemDept = item.Entity as T_FB_DEPTBUDGETAPPLYDETAIL;
                                itemDept.PERSONBUDGETMONEY = totalPerson;
                            }           
                        };

                    detailPersonList.Add(itemPerson);
                });
                // 因为在个人预算中需要体现部门公共费用栏,则加入部门公共费用(T记录到个人预算集合中
                if (obPersonDetail.Count > 0)
                {
                    var sumEntity = new V_DepartmentSum(item.Entity);
                    var curItemEntity = item.Entity as T_FB_DEPTBUDGETAPPLYDETAIL;
                    var sumFBEntity = sumEntity.ToFBEntity();
                    sumFBEntity.ReadOnly = true;
                    sumEntity.LIMITBUDGETMONEY = curItemEntity.BEGINNINGBUDGETBALANCE.Subtract(obPersonDetail.Sum(itemFB =>
                        {
                             var tee = (itemFB.Entity as T_FB_PERSONBUDGETAPPLYDETAIL);
                             if (tee.LIMITBUDGETMONEY == null)
                             {
                                 return 0;
                             }
                             else
                             {
                                 return tee.LIMITBUDGETMONEY;
                             }
                        }));
                    sumFBEntity.FBEntityState = FBEntityState.Unchanged;
                    obPersonDetail.Insert(0, sumFBEntity);
                }
                else
                {
                    item.HideDetails = true;
                }

                #endregion
            });
            this.EditForm.BindingData();
            this.CloseProcess(false);
        }