Ejemplo n.º 1
0
        /// <summary>
        /// データ取得
        /// </summary>
        /// <param name="p明細番号"></param>
        /// <param name="p得意先ID"></param>
        /// <param name="p入金日付"></param>
        /// <returns></returns>
        public List <DLY09010_Member> DLY09010_GetData(int?p明細番号)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();
                DLY09010_Member result = new DLY09010_Member();
                var             NKubun = (from cmb in context.M99_COMBOLIST
                                          where cmb.分類 == "日次" && cmb.機能 == "入金伝票入力" && cmb.カテゴリ == "入金区分"
                                          select cmb);
                var query = (from t04 in context.T04_NYUK
                             from m01 in context.M01_TOK.Where(c => c.得意先KEY == t04.取引先KEY)
                             where t04.明細区分 == 3 && t04.明細番号 == p明細番号
                             select new DLY09010_Member
                {
                    得意先ID = m01.得意先ID,
                    得意先KEY = m01.得意先KEY,
                    入出金日付 = t04.入出金日付,
                    出金区分 = t04.入出金区分,
                    出金金額 = t04.入出金金額 == null ? 0 : t04.入出金金額,
                    d出金金額 = t04.入出金金額 == null ? 0 : t04.入出金金額,
                    摘要ID = t04.摘要ID,
                    摘要 = t04.摘要名,
                    手形期日 = t04.手形日付,
                    明細番号 = t04.明細番号,
                    明細行 = t04.明細行,
                    入力者ID = t04.入力者ID,
                }).ToList();
                foreach (var rec in query)
                {
                    rec.Str手形期日 = rec.手形期日 == null ? "" : ((DateTime)(rec.手形期日)).ToString("yyyy/MM/dd");
                }

                return(query);
            }
        }
Ejemplo n.º 2
0
        //DLY08010_NData
        /// <summary>
        /// 入金予定額取得
        /// </summary>
        /// <param name="p明細番号"></param>
        /// <param name="p得意先ID"></param>
        /// <param name="p入金日付"></param>
        /// <returns></returns>
        public List <DLY09010_NData> DLY09010_GETNData(int p得意先ID, DateTime p入出金日付, int p明細番号)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();
                DLY09010_Member result = new DLY09010_Member();
                var             ret    = from m01 in context.M01_TOK
                                         where m01.得意先ID == p得意先ID
                                         select m01;
                var qm01 = ret.FirstOrDefault();
                int i得意先KEY;
                i得意先KEY = qm01.得意先KEY;

                #region 日付計算(入金予定額)

                //***日付計算(入金予定額)***//
                //得意先の締日を取得
                int      x締日 = qm01.S締日;
                int      x日付 = Convert.ToInt32(p入出金日付.Day.ToString());
                int      xi出金日付;
                DateTime x出金日付, x出金予定日;

                //サイトの考え方 サイトが1の場合 締日が翌月でも翌月の末日までがサイトの領域になります 20160517対応
                //if (x締日 < x日付)
                //{
                //    //締日が20締に対して入金日付が31日等だった場合 月に1を足して来月のデータとしてカウント
                //    x出金日付 = p入出金日付.AddMonths(+1);
                //    //入金予定額を求めるためにサイトを引いた集計年月を作成
                //    x出金予定日 = x出金日付.AddMonths(-qm01.Tサイト日);
                //    xi出金日付 = AppCommon.IntParse(x出金予定日.Month.ToString().Length == 1 ? x出金予定日.Year.ToString() + "0" + x出金予定日.Month.ToString() : x出金予定日.Year.ToString() + x出金予定日.Month.ToString());
                //}
                //else
                //{
                x出金日付 = p入出金日付;
                //入金予定額を求めるためにサイトを引いた集計年月を作成
                x出金予定日 = x出金日付.AddMonths(-qm01.Tサイト日);
                xi出金日付 = AppCommon.IntParse(x出金予定日.Month.ToString().Length == 1 ? x出金予定日.Year.ToString() + "0" + x出金予定日.Month.ToString() : x出金予定日.Year.ToString() + x出金予定日.Month.ToString());
                //}

                var query = (from s02 in context.S02_YOSS
                             where s02.支払先KEY == i得意先KEY && s02.集計年月 == xi出金日付
                             group s02 by s02.締日売上金額 into Group
                             select new DLY09010_NData
                {
                    予定出金金額 = Group.Sum(c => c.締日売上金額 + c.締日消費税 + c.締日通行料) == null ? 0 : Group.Sum(c => c.締日売上金額 + c.締日消費税 + c.締日通行料)
                }).AsQueryable();

                #endregion

                #region 日付計算(既入金額)

                //***日付計算(既入金額)***//
                int y締日 = qm01.S締日;
                if (y締日 == 0)
                {
                    return(null);
                }
                ;

                int      y日付 = AppCommon.IntParse(p入出金日付.Day.ToString());
                DateTime y出金日付From, y出金日付To;
                if (y締日 < 31)
                {
                    if (y締日 < y日付)
                    {
                        y出金日付From = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.Month.ToString() + "/" + (y締日 + 1).ToString());
                        y出金日付To   = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.Month.ToString() + "/" + 01);
                        y出金日付To   = y出金日付To.AddMonths(+1);
                        y出金日付To   = Convert.ToDateTime(y出金日付To.Year.ToString() + "/" + y出金日付To.Month + "/" + y締日.ToString());
                    }
                    else
                    {
                        y出金日付From = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.AddMonths(-1).Month.ToString() + "/" + (y締日 + 1).ToString());
                        y出金日付To   = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.Month.ToString() + "/" + y締日.ToString());
                    }
                }
                else
                {
                    y出金日付From = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.Month.ToString() + "/" + 01);
                    y出金日付To   = y出金日付From.AddMonths(1).AddDays(-1);
                }



                var query2 = (from t04 in context.T04_NYUK
                              where t04.取引先KEY == i得意先KEY && (t04.入出金日付 >= y出金日付From && t04.入出金日付 <= y出金日付To) && t04.明細区分 == 3 &&  t04.明細番号 != p明細番号
                              group t04 by t04.入出金金額 into Group
                              select new DLY09010_NData
                {
                    既出金額 = Group.Sum(c => c.入出金金額) == null ? 0 : Group.Sum(c => c.入出金金額)
                });

                #endregion

                #region 日付計算(入金相殺)

                //***日付計算(入金相殺)***//
                int      z締日 = qm01.S締日;
                int      z日付 = AppCommon.IntParse(p入出金日付.Day.ToString());
                DateTime z出金日付From, z出金日付To;
                if (y締日 < 31)
                {
                    if (y締日 < y日付)
                    {
                        z出金日付From = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.Month.ToString() + "/" + (z締日 + 1).ToString());
                        z出金日付To   = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.Month.ToString() + "/" + 01);
                        z出金日付To   = z出金日付To.AddMonths(+1);
                        z出金日付To   = Convert.ToDateTime(z出金日付To.Year.ToString() + "/" + z出金日付To.Month + "/" + z締日.ToString());
                    }
                    else
                    {
                        z出金日付From = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.AddMonths(-1).Month.ToString() + "/" + (z締日 + 1).ToString());
                        z出金日付To   = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.Month.ToString() + "/" + z締日.ToString());
                    }
                }
                else
                {
                    z出金日付From = Convert.ToDateTime(p入出金日付.Year.ToString() + "/" + p入出金日付.Month.ToString() + "/" + 01);
                    z出金日付To   = z出金日付From.AddMonths(1).AddDays(-1);
                }



                var query3 = (from t04 in context.T04_NYUK
                              where t04.取引先KEY == i得意先KEY && (t04.入出金日付 >= z出金日付From && t04.入出金日付 <= z出金日付To) && t04.明細区分 == 2 && t04.入出金区分 == 5
                              group t04 by t04.入出金金額 into Group
                              select new DLY09010_NData
                {
                    入金相殺 = Group.Sum(c => c.入出金金額) == null ? 0 : Group.Sum(c => c.入出金金額)
                });

                #endregion

                //+++リスト化***//
                List <DLY09010_NData> queryList = new List <DLY09010_NData>();
                //初期値をセット
                queryList.Add(new DLY09010_NData()
                {
                    入金相殺 = 0, 既出金額 = 0, 予定出金金額 = 0
                });
                List <DLY09010_NData> queryLIST1 = query.ToList();
                List <DLY09010_NData> queryLIST2 = query2.ToList();
                List <DLY09010_NData> queryLIST3 = query3.ToList();
                int x = 0, y = 0, z = 0;

                //上記で求めたqueryの件数をひとつの合計金額に
                foreach (var row in queryLIST1)
                {
                    queryList[0].予定出金金額 += queryLIST1[x].予定出金金額;
                    x += 1;
                }

                foreach (var row in queryLIST2)
                {
                    queryList[0].既出金額 += queryLIST2[y].既出金額;
                    y += 1;
                }

                foreach (var row in queryLIST3)
                {
                    queryList[0].入金相殺 += queryLIST3[z].入金相殺;
                    z += 1;
                }

                return(queryList);
            }
        }