/// <summary> /// 固定资产已经生成凭证,改变凭证状态 /// </summary> /// <param name="id"></param> /// <param name="ts"></param> public void SetIsGenPZ(string id, MM_UserInfo user, IDbTransaction ts) { string sql = @"select * from TKS_FAS_FixedAssetsChange where id=@Id"; var data = cnn.QueryFirst <TKS_FAS_FixedAssetsChange>(sql, new { Id = id }, ts); if (data.ChangeType == 1) { sql = "update TKS_FAS_FixedAssets set isGenPz=1 where Id=@Id"; cnn.Execute(sql, new { Id = data.ParentId }, ts); } else if (data.ChangeType == 8) { //AccountSetBLL account = new AccountSetBLL(cnn); //var period = account.GetActivePeriod(user.AccountId, ts); //sql = @"SELECT A.*,b.TPLTarget //FROM TKS_FAS_TPL2PZ A left join TKS_FAS_DocTPL B on A.TPLId =B.Id // where A.accountId=@AccountId and A.PeriodId=@PeriodId and B.tplTarget=3"; //var _data = cnn.Query(sql, new { AccountId = user.AccountId, PeriodId = period.Id }, ts); //sql = @"select * from TKS_FAS_FixedAssets where accountId=@AccountId and DepreciationMethod='1'"; //var fdata = cnn.Query(sql, new { AccountId = user.AccountId }, ts); //if (_data.Count() == 0 && fdata.Count() > 0) //{ // throw new NormalException("计提折旧与结账凭证未生成,请生成后再进行报废"); //} //sql = "update TKS_FAS_FixedAssets set status=1 where Id=@Id"; //cnn.Execute(sql, new { Id = data.ParentId }, ts); } }
/// <summary> /// 更新发票附件的数量 /// </summary> /// <param name="invoiceId"></param> /// <param name="ts"></param> /// <param name="user"></param> private void SetInvoiceNum(string invoiceId, System.Data.IDbTransaction ts, MM_UserInfo user) { string sql = @"select count(1) from TKS_FAS_InvoiceAttach where invoiceId=@InvoiceId and AccountId=@AccountId"; int total = int.Parse(cnn.ExecuteScalar(sql, new { AccountId = user.AccountId, InvoiceId = invoiceId }, ts).ToString()); sql = @"update TKS_FAS_Invoice set invoiceNum=@InvoiceNum where id=@Id"; cnn.Execute(sql, new { Id = invoiceId, InvoiceNum = total }, ts); }
/// <summary> /// 根据保存的来源类型处理 /// 例如:如果是从模板生成触发,期末检查模板要关联生成的凭证 /// </summary> /// <param name="request"></param> /// <param name="ts"></param> /// <param name="user"></param> private void DealByPZType(RequestDocAdd request, IDbTransaction ts, MM_UserInfo user) { if (request.Type == PZType.QM.ToString())//期末 { AccountSetBLL account = new AccountSetBLL(cnn); var period = account.GetActivePeriod(user.AccountId, ts); TKS_FAS_TPL2PZ newData = new TKS_FAS_TPL2PZ(); newData.Id = Guid.NewGuid().ToString(); newData.TPLId = request.TPLId; newData.PZId = request.Head.Id; newData.AccountId = user.AccountId; newData.CreateUser = user.User.UserName; newData.CreateDate = DateTime.Now; newData.PeriodId = period.Id; cnn.Insert <TKS_FAS_TPL2PZ>(newData, ts); } else if (request.Type == PZType.FP.ToString()) { InvoiceBLL bll = new FAS.InvoiceBLL(cnn); bll.LZ(request.Key, request.Head.Id, user, ts); } else if (request.Type == PZType.CHANGE.ToString()) { PZZBLL pzz = new PZZBLL(cnn); var pzzData = pzz.PZZGetById(request.Head.PZZ, ts); FixedAssetsBLL fixedAssetsBLL = new FixedAssetsBLL(cnn); fixedAssetsBLL.ChangeSetPZ(request.Head.Id, pzzData.PZZ + request.Head.PZZNO, request.Key, ts); fixedAssetsBLL.SetIsGenPZ(request.Key, user, ts); } else if (request.Type == PZType.GD.ToString()) { AccountSetBLL account = new AccountSetBLL(cnn); var period = account.GetActivePeriod(user.AccountId, ts); TKS_FAS_TPL2PZ newData = new TKS_FAS_TPL2PZ(); newData.Id = Guid.NewGuid().ToString(); newData.TPLId = request.TPLId; newData.PZId = request.Head.Id; newData.AccountId = user.AccountId; newData.CreateUser = user.User.UserName; newData.CreateDate = DateTime.Now; newData.PeriodId = period.Id; cnn.Insert <TKS_FAS_TPL2PZ>(newData, ts); //更新固定资产 FixedAssetsBLL fixedAssetsBLL = new FixedAssetsBLL(cnn); fixedAssetsBLL.Depreciation(user.AccountId, ts, period); } }
private string Add(RequestTPLAdd request, System.Data.IDbTransaction ts, MM_UserInfo user) { AccountSetBLL ac = new AccountSetBLL(cnn); var period = ac.GetActivePeriod(user.AccountId, ts); decimal total = 0; var flag = 0; //凭证上辅助核算项直接写死对应列 foreach (var item in request.Detail) { if (string.IsNullOrEmpty(item.SubjectCode)) { continue; } item.Id = Guid.NewGuid().ToString("N"); #region 辅助核算赋值 string[] cals = item.CalValue1.Split(new char[] { '#' }); for (int i = 0; i < cals.Length; i++) { if (string.IsNullOrEmpty(cals[i])) { continue; } string[] ss = cals[i].Split(new char[] { ',' }); if (i == 0) { item.CalItem1 = ss[0]; item.CalValue1 = ss[1]; } else if (i == 1) { item.CalItem2 = ss[0]; item.CalValue2 = ss[1]; } else if (i == 2) { item.CalItem3 = ss[0]; item.CalValue3 = ss[1]; } else if (i == 3) { item.CalItem4 = ss[0]; item.CalValue4 = ss[1]; } else if (i == 4) { item.CalItem5 = ss[0]; item.CalValue5 = ss[1]; } } #endregion total += item.Money_Debit; item.Year = period.Year; item.ParentId = request.Head.Id; item.AccountId = user.AccountId; cnn.Insert <TKS_FAS_DocDetailTPL>(item, ts); flag++; } if (flag == 0) { throw new NormalException("亲,您还没有填写明细"); } request.Head.AccountId = user.AccountId; request.Head.AMT_DBT = total; request.Head.IsCarry = 0; request.Head.TPLTarget = 0; //用户选择 request.Head.IsCustom = 1; //自定义 request.Head.CreateUser = user.User.TrueName; request.Head.CreateDate = DateTime.Now; cnn.Insert <TKS_FAS_DocTPL>(request.Head, ts); return(request.Head.Id); }
private string Add(RequestDocAdd request, System.Data.IDbTransaction ts, MM_UserInfo user) { AccountSetBLL ac = new AccountSetBLL(cnn); #region modify by andy 期间根据凭证日期计算 //var period = ac.GetActivePeriod(user.AccountId, ts); var pzDate = request.Head.PZDate; PeriodBLL balanceBLL = new PeriodBLL(cnn); var period = balanceBLL.GetPeriod(user.AccountId, pzDate?.Year ?? 0, pzDate?.Month ?? 0, ts); #endregion var d = cnn.Query(@"select * from TKS_FAS_Doc where accountId=@AccountId and periodId=@PeriodId and pzz=@PZZ and pzzno=@PZZNO", new { AccountId = user.AccountId, PeriodId = period.Id, PZZ = request.Head.PZZ, PZZNO = request.Head.PZZNO }, ts); if (d.Count() > 0) { throw new NormalException("当前账套,会计期间下,凭证字号已经存在"); } if (request.Head.PZDate.HasValue) { if (period.StartDate > request.Head.PZDate || period.EndDate < request.Head.PZDate) { //可以录入当前期间之后期间的凭证 update by Hero.Zhang 20180507 //throw new NormalException("凭证日期必须在当前会计期间"); } } else { throw new NormalException("凭证日期必须选择"); } var accountSet = ac.GetAccountSetByAccountId(user.AccountId, ts); if (accountSet.IsNeedReviewed == 1) { request.Head.CheckStatus = 1; } else { request.Head.CheckStatus = 3; } decimal debit = 0; decimal credit = 0; decimal total = 0; var flag = 0; string strMessage = ""; List <TKS_FAS_AccountSubject> sub = cnn.Query <TKS_FAS_AccountSubject>(@"select * from TKS_FAS_AccountSubject where AccountId=@AccountId", new { AccountId = user.AccountId }, ts).ToList(); //凭证上辅助核算项直接写死对应列 foreach (var item in request.Detail) { if (string.IsNullOrEmpty(item.SubjectCode)) { continue; } item.Id = Guid.NewGuid().ToString("N"); #region 辅助核算赋值 string[] cals = item.CalValue1.Split(new char[] { '#' }); for (int i = 0; i < cals.Length; i++) { if (string.IsNullOrEmpty(cals[i])) { continue; } string[] ss = cals[i].Split(new char[] { ',' }); if (i == 0) { item.CalItem1 = ss[0]; item.CalValue1 = ss[1]; } else if (i == 1) { item.CalItem2 = ss[0]; item.CalValue2 = ss[1]; } else if (i == 2) { item.CalItem3 = ss[0]; item.CalValue3 = ss[1]; } else if (i == 3) { item.CalItem4 = ss[0]; item.CalValue4 = ss[1]; } else if (i == 4) { item.CalItem5 = ss[0]; item.CalValue5 = ss[1]; } } #endregion total += item.Money_Debit; //录入在借方,则凭证借贷方向是借,否则是贷 if (item.Money_Debit != 0) { item.Credit_Debit = 0; } else { item.Credit_Debit = 1; } if (string.IsNullOrEmpty(item.CurrencyCode)) { item.CurrencyCode = "RMB";//默认RMB } item.SubjectDescription = item.SubjectDescription.Trim(); item.PeriodId = period.Id; item.Year = period.Year; item.Source = request.Head.Source; item.ParentId = request.Head.Id; item.AccountId = user.AccountId; //add by Hero.Zhang 添加期初,期末值 2018-12-18 // #region add by Hero.Zhang 添加期初,期末值 2018-12-18 // item.FirstMoney = 0; // item.EndBAL = 0; // var det = cnn.Query<TKS_FAS_DocDetail>(@" // select top 1 det.* from TKS_FAS_DocDetail det // left join TKS_FAS_Doc doc on det.ParentId=doc.Id // where det.AccountId=@AccountId // and det.PeriodId=@PeriodId // and det.SubjectCode=@SubjectCode // order by doc.CreateDate desc", // new { AccountId = user.AccountId, PeriodId = period.Id, SubjectCode = item.SubjectCode}, ts).ToList(); // if (det.Count>0) // { // //此科目在该期间上一次的期末值为这一次的期初值 // item.FirstMoney = det[0].EndBAL; // if (item.Credit_Debit==det[0].Credit_Debit) // { // item.EndBAL = item.FirstMoney + item.Money_Debit + item.Money_Credit; // } // else // { // item.EndBAL = Math.Abs(item.FirstMoney - (item.Money_Debit + item.Money_Credit)); // } // } // else // { // //第一次存入,从期初余额中取值 // var bal = cnn.Query<TKS_FAS_GLBalance>(@" // select top 1 det.* from TKS_FAS_GLBalance det // where det.AccountId=@AccountId // and det.PeriodId='' // and det.SubjectCode=@SubjectCode // ", //new { AccountId = user.AccountId, SubjectCode = item.SubjectCode }, ts).ToList(); // if (bal.Count>0) // { // item.FirstMoney = bal[0].BWBStartBAL; // if (item.Credit_Debit == bal[0].SCredit_Debit) // { // item.EndBAL = item.FirstMoney + item.Money_Debit + item.Money_Credit; // } // else // { // item.EndBAL = Math.Abs(item.FirstMoney - (item.Money_Debit + item.Money_Credit)); // } // } // } // #endregion var info = sub.Where(p => p.Code == item.SubjectCode).ToList(); if (info.Count() == 0) { throw new NormalException(item.SubjectCode + "科目不存在"); } if (info[0].IsCalHelperValid == 1 && string.IsNullOrEmpty(item.CalValue1)) { throw new NormalException(item.SubjectCode + "科目中有辅助核算,请选择辅助核算"); } List <TKS_FAS_AccountSubject> checkSub = sub.FindAll(p => p.ParentId == info[0].Id).ToList(); if (checkSub.Count() > 0) { strMessage += "</br>第" + (flag + 1).ToString() + "行有子科目,请重新选择"; } cnn.Insert <TKS_FAS_DocDetail>(item, ts); flag++; } if (flag == 0) { throw new NormalException("亲,您还没有填写明细"); } if (flag == 1) { throw new NormalException("亲,明细不能只存在一条"); } if (strMessage != "") { throw new NormalException(strMessage); } request.Head.PeriodId = period.Id; request.Head.Year = period.Year; request.Head.AccountId = user.AccountId; request.Head.AMT_DBT = total; request.Head.CreateUser = user.User.TrueName; request.Head.CreateDate = DateTime.Now; //add by Hero.Zhang 存入来源 20180903 request.Head.Source = request.Type; if (string.IsNullOrEmpty(request.Type)) { request.Head.Source = "LR"; } cnn.Insert <TKS_FAS_Doc>(request.Head, ts); return(request.Head.Id); }
protected MM_UserInfo UserInfoGet(string token, IDbTransaction ts) { #region timeout string sql = "select * from tks_fas_token where token=@Token"; var tokens = cnn.Query <TKS_FAS_Token>(sql, new { Token = token }, ts).ToList(); if (tokens.Count() == 0) { //System.Web.HttpContext.Current.Session.Clear(); //System.Web.HttpContext.Current.Response.Write("~/Login.aspx"); throw new AppException("", "UserInfoGet", "登陆超时,请重新登陆", "登陆超时,请重新登陆"); } TKS_FAS_Token curToken = tokens[0]; DateTime now = DateTime.Now; var interval = now - DateTime.Parse(curToken.ActiveTime.ToString()); var sec = interval.TotalSeconds; var timeOut = double.Parse(ConfigHelper.Read("timeOut")); if (timeOut < sec) { //System.Web.HttpContext.Current.Session.Clear(); //System.Web.HttpContext.Current.Response.Write("~/Login.aspx"); throw new AppException("", "UserInfoGet", "登陆超时,请重新登陆", "token 超时" + sec + "秒"); } sql = @"update tks_fas_token set ActiveTime=@ActiveTime where token=@Token"; cnn.Execute(sql, new { ActiveTime = DateTime.Now, Token = token }, ts); #endregion var user = cnn.Query <TKS_FAS_User>("select * from tks_fas_user where id=@UserId", new { UserId = curToken.UserId }, ts).ToList(); var node = cnn.Query <TKS_FAS_Node>(@"select A.* from tks_fas_node A left join tks_fas_user2Node B on A.id=B.nodeId where B.userid=@UserId", new { UserId = curToken.UserId }, ts).ToList(); if (node.Count() > 1) { throw new AppException(curToken.UserId, "UserInfoGet", "用户的机构信息异常,请联系管理员", "用户属于多个机构"); } var roles = cnn.Query <TKS_FAS_Role>(@"select A.* from TKS_FAS_Role A left join TKS_FAS_User2Role B on A.id=B.roleId where B.userid=@UserId", new { UserId = curToken.UserId }, ts).ToList(); var currentAccount = cnn.Query <TKS_FAS_UserCurrentAccount>( @"select * from TKS_FAS_UserCurrentAccount where userId=@UserId", new { UserId = curToken.UserId }, ts).ToList(); MM_UserInfo res = new MM_UserInfo(); if (currentAccount.Count() == 0) { //update by Hero.Zhang //throw new AppException(curToken.UserId,"","请选择账套", "请选择账套"); } else { res.AccountId = currentAccount[0].AccountId; } res.User = user[0]; res.Node = node.Count > 0 ? node[0] : null; res.Roles = roles; return(res); }