Exemple #1
0
        public ResultModel Complete(UserModel user, int allotId)
        {
            ResultModel result = new ResultModel();

            try
            {
                using (System.Transactions.TransactionScope scope = new TransactionScope())
                {
                    //验证主分配
                    result = this.cashinallotDAL.Get(user, allotId);
                    if (result.ResultStatus != 0)
                        return result;

                    Model.CashInAllot allot = result.ReturnValue as Model.CashInAllot;
                    if (allot == null || allot.AllotId <= 0)
                    {
                        result.Message = "收款分配不存在";
                        result.ResultStatus = -1;
                        return result;
                    }

                    //获取当前分配在库存款存中的剩余
                    result = this.cashinallotDAL.GetLastBalaByAllotId(user, allot.AllotId);
                    if (result.ResultStatus != 0)
                        return result;

                    object obj = result.ReturnValue;
                    decimal lastBala = 0;
                    if (result.ReturnValue == null || !decimal.TryParse(result.ReturnValue.ToString(), out lastBala))
                    {
                        result.Message = "获取失败";
                        result.ResultStatus = -1;
                        return result;
                    }

                    if (lastBala > 0)
                    {
                        result.Message = "有余款未分配,不能关闭";
                        result.ResultStatus = -1;
                        return result;
                    }

                    //获取公司分配明细并完成
                    CashInCorpDAL cashInCorpDAL = new CashInCorpDAL();
                    result = cashInCorpDAL.Load(user, allot.AllotId);
                    if (result.ResultStatus != 0)
                        return result;

                    List<Model.CashInCorp> cashInCorps = result.ReturnValue as List<Model.CashInCorp>;
                    if (cashInCorps == null || cashInCorps.Count == 0)
                    {
                        result.ResultStatus = -1;
                        result.Message = "公司分配明细获取失败";
                        return result;
                    }

                    foreach (Model.CashInCorp cashInCorp in cashInCorps)
                    {
                        result = cashInCorpDAL.Complete(user, cashInCorp);
                        if (result.ResultStatus != 0)
                            return result;
                    }

                    //获取合约分配明细并完成
                    DAL.CashInContractDAL cashInContractDAL = new CashInContractDAL();
                    result = cashInContractDAL.LoadByAllot(user, allot.AllotId);
                    if (result.ResultStatus != 0)
                        return result;
                    List<Model.CashInContract> cashInContracts = result.ReturnValue as List<Model.CashInContract>;
                    if (cashInContracts == null || cashInContracts.Count == 0)
                    {
                        result.ResultStatus = -1;
                        result.Message = "合约分配明细获取失败";
                        return result;
                    }

                    foreach (Model.CashInContract cashInContract in cashInContracts)
                    {
                        result = cashInContractDAL.Complete(user, cashInContract);
                        if (result.ResultStatus != 0)
                            return result;
                    }

                    //获取库存分配明细并完成
                    DAL.CashInStcokDAL cashInStockDAL = new CashInStcokDAL();
                    result = cashInStockDAL.LoadByAllot(user, allot.AllotId);
                    if (result.ResultStatus != 0)
                        return result;

                    List<Model.CashInStcok> cashInStocks = result.ReturnValue as List<Model.CashInStcok>;
                    if (cashInStocks == null || cashInStocks.Count == 0)
                    {
                        result.ResultStatus = -1;
                        result.Message = "库存分配明细获取失败";
                        return result;
                    }

                    foreach (Model.CashInStcok cashInStock in cashInStocks)
                    {
                        result = cashInStockDAL.Complete(user, cashInStock);
                        if (result.ResultStatus != 0)
                            return result;
                    }

                    //完成主分配
                    result = this.cashinallotDAL.Complete(user, allot);
                    if (result.ResultStatus != 0)
                        return result;

                    scope.Complete();
                }
            }
            catch (Exception ex)
            {
                result.Message = ex.Message;
                result.ResultStatus = -1;
            }

            return result;
        }