public bool DeleteCostAccountConfig(int id, int userId) { var num = _costAccountConfigRepository.UpdateWhere(s => s.Id == id, new CostAccountConfig() { Status = 1, LastUpdateTime = DateTime.Now, LastUpdateUserID = userId }, s => s.Status, s => s.LastUpdateTime, s => s.LastUpdateUserID); 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 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); } }