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 }
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); }
/// <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); } }
/// <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); } }
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); }
/// <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); }
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); } }