예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
 /// <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);
     }
 }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }