Пример #1
0
        /// <summary>
        /// 日毎の得意先の売上集計処理を行う
        /// </summary>
        /// <param name="context">context</param>
        /// <param name="code">得意先コード</param>
        /// <param name="eda">得意先枝番</param>
        /// <param name="startYm">作成開始年月(yyyy/mm/01)</param>
        /// <param name="endYm">作成終了年月(yyyy/mm/末日)</param>
        /// <param name="createYm">作成月(yyyy/mm)</param>
        /// <param name="uriageKind">売上先</param>
        private List <TallyMember> getDayAggregateData(TRAC3Entities context, TOK_INFO tokData, DateTime?createYm)
        {
            // 日毎のデータList
            List <TallyMember> tallyList = new List <TallyMember>();
            // 対象日
            DateTime targetDay = new DateTime(createYm.Value.Year, createYm.Value.Month, 1);
            // 対象月末
            DateTime monthEndYmd = targetDay.AddMonths(1).AddDays(-1);
            // 対象終了日
            DateTime endYmd = DateTime.Now <= monthEndYmd ? DateTime.Now : monthEndYmd;

            int dayNo = targetDay.Day;
            IQueryable <TallyMember> uriData;

            // 日毎のデータを取得
            while (targetDay <= endYmd)
            {
                dayNo = targetDay.Day;

                uriData = context.T02_URHD
                          .Where(w => w.会社名コード == tokData.自社コード &&
                                 w.得意先コード == tokData.取引先コード &&
                                 w.得意先枝番 == tokData.枝番 &&
                                 w.売上日 == targetDay &&
                                 w.削除日時 == null)
                          .GroupBy(g => new
                {
                    g.会社名コード,
                    g.得意先コード,
                    g.得意先枝番,
                })
                          .Select(s => new TallyMember
                {
                    日付     = dayNo,
                    自社コード  = s.Key.会社名コード,
                    自社名    = tokData.自社名,
                    担当者コード = tokData.担当者コード,
                    担当者名   = tokData.担当者名,
                    得意先コード = s.Key.得意先コード,
                    得意先枝番  = s.Key.得意先枝番,
                    得意先名   = tokData.略称名,
                    金額     = (int)s.Sum(m => m.小計)
                }).Distinct();

                if (!uriData.Any())
                {
                    // 空のデータを作成
                    var wkData = new TallyMember
                    {
                        日付     = dayNo,
                        自社コード  = tokData.自社コード,
                        自社名    = tokData.自社名,
                        担当者コード = tokData.担当者コード,
                        担当者名   = tokData.担当者名,
                        得意先コード = tokData.取引先コード,
                        得意先枝番  = tokData.枝番,
                        得意先名   = tokData.略称名,
                        金額     = 0,
                    };
                    // 対象日の集計データを格納
                    tallyList.Add(wkData);
                }
                else
                {
                    // 対象日の集計データを格納
                    tallyList.AddRange(uriData.ToList());
                }

                // カウントアップ
                targetDay = targetDay.AddDays(1);
            }

            // 本日以降の売上データを作成
            if (endYmd < monthEndYmd)
            {
                while (targetDay <= monthEndYmd)
                {
                    dayNo = targetDay.Day;

                    // 空のデータを作成
                    var wkData = new TallyMember
                    {
                        日付     = dayNo,
                        自社コード  = tokData.自社コード,
                        自社名    = tokData.自社名,
                        担当者コード = tokData.担当者コード,
                        担当者名   = tokData.担当者名,
                        得意先コード = tokData.取引先コード,
                        得意先枝番  = tokData.枝番,
                        得意先名   = tokData.略称名,
                        金額     = 0,
                    };
                    // 対象日の集計データを格納
                    tallyList.Add(wkData);

                    // カウントアップ
                    targetDay = targetDay.AddDays(1);
                }
            }

            return(tallyList);
        }
Пример #2
0
        /// <summary>
        /// 年月毎の得意先の売上集計処理を行う(販社)
        /// </summary>
        /// <param name="context"></param>
        /// <param name="tokData"></param>
        /// <param name="startYm"></param>
        /// <param name="endYm"></param>
        /// <param name="createYm"></param>
        /// <returns></returns>
        private List <TallyMember> getYearMonthAggregateData_HAN(TRAC3Entities context, TOK_INFO tokData,
                                                                 DateTime?startYm, DateTime?endYm)
        {
            // 年月毎のデータList
            List <TallyMember> tallyList = new List <TallyMember>();
            // 対象月
            DateTime targetMonth = new DateTime(startYm.Value.Year, startYm.Value.Month, 1);
            // 対象自社
            var jisData = context.M70_JIS.Where(w => w.削除日時 == null && w.自社コード == tokData.自社コード).FirstOrDefault();
            // 対象得意先
            var targetHAN = context.M70_JIS.Where(w => w.取引先コード == tokData.取引先コード && w.枝番 == tokData.枝番).FirstOrDefault();
            // 担当者情報
            var staffData = context.M72_TNT.Where(w => w.削除日時 == null && w.担当者ID == tokData.担当者コード).FirstOrDefault();

            // 年月毎のデータを取得
            while (targetMonth <= endYm)
            {
                int      yearMonth = targetMonth.Year * 100 + targetMonth.Month;
                DateTime endYmd    = targetMonth.AddMonths(1).AddDays(-1);

                // 本日以降の売上は取得しない
                endYmd = DateTime.Now <= endYmd ? DateTime.Now : endYmd;

                var uriData = context.T02_URHD_HAN
                              .Where(w => w.削除日時 == null &&
                                     w.会社名コード == jisData.自社コード &&
                                     w.販社コード == targetHAN.自社コード &&
                                     w.売上日 >= targetMonth &&
                                     w.売上日 <= endYmd &&
                                     w.削除日時 == null)
                              .GroupBy(g => new
                {
                    g.会社名コード,
                    g.販社コード
                })
                              .Select(s => new TallyMember
                {
                    年月     = yearMonth,
                    自社コード  = jisData.自社コード,
                    自社名    = jisData.自社名,
                    担当者コード = tokData.担当者コード,
                    担当者名   = staffData.担当者名,
                    得意先コード = tokData.取引先コード,
                    得意先枝番  = tokData.枝番,
                    得意先名   = tokData.略称名,
                    金額     = (int)s.Sum(m => m.小計)
                });

                if (!uriData.Any())
                {
                    // 空のデータを作成
                    var wkData = new TallyMember
                    {
                        年月     = yearMonth,
                        自社コード  = jisData.自社コード,
                        自社名    = jisData.自社名,
                        担当者コード = tokData.担当者コード,
                        担当者名   = staffData.担当者名,
                        得意先コード = tokData.取引先コード,
                        得意先枝番  = tokData.枝番,
                        得意先名   = tokData.略称名,
                        金額     = 0
                    };

                    tallyList.Add(wkData);
                }
                else
                {
                    // 対象月の集計データを格納
                    tallyList.AddRange(uriData.ToList());
                }

                // カウントアップ
                targetMonth = targetMonth.AddMonths(1);
            }

            return(tallyList);
        }