/// <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); }
/// <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); }