Beispiel #1
0
        public void AddBoth()
        {
            #region 工作单元 开启业务层事物

            using (var uow = _uowAc.Create())
            {
                var n1 = _test1Repository.Add(new Test1 {
                    Age = 22, Name = "张三"
                });
                var n2 = _test2Repository.Add(new Test2 {
                    Content = DateTime.Now.ToString()
                });
                throw new NotImplementedException("没有实现");
                uow.SaveChanges();
            }

            #endregion

            #region 无工作单元

            var n11 = _test1Repository.Add(new Test1 {
                Age = 1, Name = $"张三-{DateTime.Now.ToString()}"
            });
            var n22 = _test2Repository.Add(new Test2 {
                Content = DateTime.Now.ToLongTimeString()
            });

            #endregion
        }
Beispiel #2
0
        public bool AddPurchaseRequirementDeptShareRatioVersionRepository(string poCode)
        {
            var sql      = $@"
SELECT distinct po.POCode ,po.Period,po.POLineNum
,pr.RequirementCode as PRCode
,pe.ExecutionCode as PECode
,prDR.DeptID as DepartId
,(select NamePath from v_DepartMent where DepartID = prDR.DeptID) as DepartNamePath
 ,ISNULL(prDR.ShareProportion,0) ShareProportion
FROM  CRM2009.dbo.PurchaseOrderLineConfirmHistory po
inner JOIN CRM2009.dbo.PurchaseExecution pe ON pe.POCode=po.POCode and pe.Status=0
inner JOIN CRM2009.dbo.PurchaseRequirement pr ON pr.RequirementCode=pe.RequireCode and pr.status = 0
inner JOIN CRM2009.dbo.PurchaseRequirementDeptShareRatio prDR ON prdr.PRCode=pe.RequireCode AND prDR.State=0
WHERE 1=1 
--AND po.POCode='PO0102878'  
AND po.Period= convert(varchar(7), DATEADD(MONTH,-1,GETDATE()),120)--上个月
";
            var entities = _purchaseRequirementDeptShareRatioVersionRepository.QueryBySql <PurchaseRequirementDeptShareRatioVersion>(sql, param: null).ToList();

            if (!string.IsNullOrEmpty(poCode))
            {
                entities = entities.Where(s => s.POCode == poCode).ToList();
            }

            var num = _purchaseRequirementDeptShareRatioVersionRepository.Add(entities);

            return(num > 0);
        }
Beispiel #3
0
        /// <summary>
        /// 费用----添加---拆分前
        /// </summary>
        /// <param name="expenseType">费用类型</param>
        /// <param name="expenseCode"></param>
        /// <param name="period"></param>
        /// <returns></returns>
        public bool AddExpenseAccount(int expenseType, string expenseCode = "", string period = null)
        {
            //根据不同的费用类型,进行适配转换
            ITarget adapter  = new Adapter.Adapter(_crmDbContext, _mapper, expenseType, period, expenseCode);
            var     entities = adapter.Transform();

            //如果有部门为空
            var count = entities.Count(s => string.IsNullOrEmpty(s.DepartID));

            if (count > 0)
            {
                return(false);
            }

            entities.ToList().ForEach(s =>
            {
                s.Id             = 0;
                s.LastUpdateTime = DateTime.Now;
                s.CreateTime     = DateTime.Now;
                s.Step           = (int)CommonEnum.EnumCostAccountSplitStep.BeforeSplit;
            });

            using (var uow = _uowCrm.Create())
            {
                Expression <Func <ExpenseAccount, bool> > expTem = s => s.Status == 0 && s.Period == period && s.ExpenseType == expenseType;
                if (!string.IsNullOrEmpty(expenseCode))
                {
                    expTem = expTem.And(s => s.ExpenseCode == expenseCode);
                }

                var n = _expenseAccountRepository.UpdateWhere(expTem
                                                              , new ExpenseAccount()
                {
                    Status = -1, LastUpdateTime = DateTime.Now
                }, t => t.Status, t => t.LastUpdateTime);
                var i = _expenseAccountRepository.Add(entities);
                uow.SaveChanges();
                return(true);
            }
        }
Beispiel #4
0
        /// <summary>
        /// 添加固资折旧历史表
        /// </summary>
        /// <param name="histories"></param>
        /// <returns></returns>
        public int AddFixedAssetsDepreciation(List <FixedAssetsDepreciationHistory> histories)
        {
            var period = histories.Select(s => s.Period).FirstOrDefault();

            using (var uow = _uowCrm.Create())
            {
                Expression <Func <FixedAssetsDepreciationHistory, bool> > expTem = s => s.Status == 0 && s.Period == period;

                var n = _fixedAssetsDepreciationRepository.UpdateWhere(expTem
                                                                       , new FixedAssetsDepreciationHistory()
                {
                    Status = -1, LastUpdateTime = DateTime.Now
                }, t => t.Status, t => t.LastUpdateTime);
                var i = _fixedAssetsDepreciationRepository.Add(histories);
                uow.SaveChanges();
                return(i);
            }
        }
Beispiel #5
0
        public bool AddPurchaseOrderLineConfirmHistorys(string poCode)
        {
            var POs = GetAll();

            if (!string.IsNullOrEmpty(poCode))
            {
                POs = POs.Where(s => s.POCode == poCode).ToList();
            }

            POs.ForEach(s =>
            {
                s.CreateTime = DateTime.Now;
                //TODO lhl 创建人
                //s.CreateUserID=
                //s.CreateUserName=
            });

            var num = _polchRepository.Add(POs);

            return(num > 0);
        }
Beispiel #6
0
        /// <summary>
        /// 添加 成本支出核算科目配置表
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool AddCostAccountConfig(CostAccountConfigInput model)
        {
            var expression = Expression(model);
            var count      = _costAccountConfigRepository.Count(expression);

            if (count > 0)
            {
                return(false);
            }

            var n = _costAccountConfigRepository.Add(new CostAccountConfig()
            {
                CompanyCode = model.CompanyCode,
                OrderType   = model.OrderType,
                ContentType = model.ContentType,
                ProductCat1 = model.ProductCat1,
                ProductCat2 = model.ProductCat2,
                PayOutType1 = model.PayOutType1,
                PayOutType2 = model.PayOutType2
            });

            return(n > 0);
        }
Beispiel #7
0
        public bool AddCostAccountBeforeSplit(string poCode = "", string period = null)
        {
            //计入日期
            if (string.IsNullOrEmpty(period) || period.Length != 7)
            {
                period = DateTime.Now.AddMonths(-1).ToString("yyyy-MM");
            }


            #region 获取范围数据

            Expression <Func <PurchaseOrderLineConfirmHistory, bool> >          histExp = s => s.Status == 0 && s.Period == period;
            Expression <Func <PurchaseRequirementDeptShareRatioVersion, bool> > verExp  = s =>
                                                                                          s.Status == 0 && s.Period == period;
            if (!string.IsNullOrEmpty(poCode))
            {
                histExp = histExp.And(s => s.POCode == poCode);
                verExp  = verExp.And(s => s.POCode == poCode);
            }

            var historys = _polchRepository.Where(histExp);
            var versions = _purchaseRequirementDeptShareRatioVersionRepository.Where(verExp);
            #endregion

            var configs  = _costAccountConfigRepository.Where(s => s.Status == 0);
            var dicInfos = _commonDataService.GetDicInfos();

            //1.历史记录表
            var models = new List <PurchaseOrderLineConfirmHistory>();
            foreach (var confirmHistory in historys)
            {
                var count = versions.Count(s => s.POCode == confirmHistory.POCode && s.POLineNum == confirmHistory.POLineNum);
                if (count > 0)
                {
                    int     i         = 1;
                    decimal sum       = 0;
                    decimal allAmount = confirmHistory.Amount;
                    foreach (var ver in versions.Where(s => s.POCode == confirmHistory.POCode && s.POLineNum == confirmHistory.POLineNum))
                    {
                        var toDepartId = ver.DepartID;
                        var toRate     = ver.ShareProportion * (decimal)0.01;

                        var tem = Newtonsoft.Json.JsonConvert.DeserializeObject <PurchaseOrderLineConfirmHistory>(Newtonsoft.Json.JsonConvert.SerializeObject(confirmHistory));// JsonConvert (confirmHistory);
                        tem.DepartID       = toDepartId;
                        tem.DepartNamePath = ver.DepartNamePath;
                        tem.Amount         = i == count ? allAmount - sum : decimal.Round(confirmHistory.Amount * toRate, 2);//满足总和一致

                        tem.Ratio    = toRate;
                        tem.Formula += i == count ? $"拆分前:({allAmount}-{sum})---->" : $"拆分前:({confirmHistory.Amount}*{toRate})---->";

                        models.Add(tem);
                        i++;
                        sum += tem.Amount;
                    }
                }
                else
                {
                    models.Add(confirmHistory);
                }
            }

            var costAccounts = new List <CostAccount>();
            foreach (var item in models)
            {
                var tem = configs.Where(s => (s.CompanyCode == item.CompanyCode || s.CompanyCode == "-99") &&
                                        s.ContentType == item.ContentType &&
                                        s.ProductCat1 == item.MaterialClassCode &&
                                        (s.ProductCat2 == item.MaterialCode || s.ProductCat2 == "-99")).ToList();
                var costAccountConfig = tem.OrderByDescending(s => s.CompanyCode).ThenByDescending(s => s.ProductCat2).FirstOrDefault() ?? new CostAccountConfig();
                var ca = new CostAccount
                {
                    POCode              = item.POCode,
                    POLineNum           = item.POLineNum,
                    DepartID            = item.DepartID,
                    DepathNamePath      = item.DepartNamePath,
                    Period              = item.Period,
                    Amount              = item.Amount,
                    MaterialClassCode   = item.MaterialClassCode,
                    MaterialClassName   = item.MaterialClassName,
                    MaterialCode        = item.MaterialCode,
                    MaterialName        = item.MaterialName,
                    ExpenseItem         = item.ExpenseItem,
                    ExpenseItemName     = item.ExpenseItemName,
                    ProjectCode         = item.ProjectCode,
                    ProjectName         = item.ProjectName,
                    CompanyCode         = item.CompanyCode,
                    CompanyName         = item.CompanyName,
                    SupplierID          = item.SupplierID,
                    SupplierName        = item.SupplierName,
                    ContentType         = item.ContentType,
                    ContentTypeName     = item.ContentTypeName,
                    CostAccountConfigID = costAccountConfig.Id,
                    SubjectCode         = costAccountConfig.PayOutType1,
                    SubjectName         = costAccountConfig.PayOutType1 == 0?null:dicInfos.FirstOrDefault(s => s.DictId == costAccountConfig.PayOutType1)?.DictName,
                    SecondSubjectCode   = costAccountConfig.PayOutType2,
                    SecondSubjetName    = costAccountConfig.PayOutType2 == 0 ? null : costAccountConfig.PayOutType2 == -99?"缺省" :dicInfos.FirstOrDefault(s => s.DictId == costAccountConfig.PayOutType2)?.DictName,
                    Status              = 0,
                    CreateTime          = DateTime.Now,

                    Ratio   = item.Ratio,
                    Step    = (int)CommonEnum.EnumCostAccountSplitStep.BeforeSplit,
                    Formula = string.IsNullOrEmpty(item.Formula) ? "拆分前:计入---->" : item.Formula,


                    PRCode           = item.PRCode,
                    PRDepartID       = item.PRDepartID,
                    PRDepartNamePath = item.PRDepartNamePath,
                    POCreateTime     = item.POCreateTime,
                    POLineAmount     = item.POLineAmount,
                    POLineBeginTime  = item.POLineBeginTime,
                    POLineEndTime    = item.POLineEndTime,
                    CustID           = item.CustID,
                    CustName         = item.CustName,
                    OrderEnum        = item.OrderEnum,
                    OrderEnumName    = item.OrderEnumName,
                    TaxCode          = item.TaxCode
                };
                costAccounts.Add(ca);
            }



            using (var uow = _uowCrm.Create())
            {
                //更新状态
                Expression <Func <CostAccount, bool> > delExpression = s => s.Status == 0 && s.Period == period;
                if (!string.IsNullOrEmpty(poCode))
                {
                    delExpression = delExpression.And(s => s.POCode == poCode);
                }
                var cc = _costAccountRepository.UpdateWhere(delExpression, new CostAccount()
                {
                    Status = -1, LastUpdateTime = DateTime.Now
                }, t => t.Status, t => t.LastUpdateTime);
                var num = _costAccountRepository.Add(costAccounts);
                uow.SaveChanges();
                return(true);
            }
        }