/// <summary> /// 在庫参照データを取得する /// </summary> /// <param name="stockpileCode"></param> /// <param name="paramDic"></param> /// <returns></returns> public List <Search_S03_STOK> GetData(int stockpileCode, Dictionary <string, string> paramDic) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); DateTime maxDate = AppCommon.GetMaxDate(); var result = context.S03_STOK .Where(w => w.削除日時 == null && w.庫コード == stockpileCode) .Join(context.V_M09_HIN, x => x.品番コード, y => y.品番コード, (x, y) => new { STOK = x, HIN = y }) .ToList() .Select(x => new Search_S03_STOK { 品番コード = x.STOK.品番コード, 自社品番 = x.HIN.自社品番 ?? string.Empty, 自社品名 = x.HIN.自社品名 ?? string.Empty, 自社色名 = x.HIN.自社色名 ?? string.Empty, 賞味期限 = x.STOK.賞味期限 == maxDate ? (DateTime?)null : x.STOK.賞味期限, 在庫数 = x.STOK.在庫数, ブランド名 = x.HIN.ブランド名 ?? string.Empty, シリーズ名 = x.HIN.シリーズ名 ?? string.Empty, 品群名 = x.HIN.品群名 ?? string.Empty }); #region 画面入力条件適用 string productCode = paramDic["品番"], productName = paramDic["品名"], colorName = paramDic["色名"], brandName = paramDic["ブランド"], seriesName = paramDic["シリーズ"], hingunName = paramDic["品群"]; if (!string.IsNullOrEmpty(productCode)) { result = result.Where(x => x.自社品番.Contains(productCode)); } if (!string.IsNullOrEmpty(productName)) { result = result.Where(x => x.自社品名.Contains(productName)); } if (!string.IsNullOrEmpty(colorName)) { result = result.Where(x => x.自社色名.Contains(colorName)); } if (!string.IsNullOrEmpty(brandName)) { result = result.Where(x => x.ブランド名.Contains(brandName)); } if (!string.IsNullOrEmpty(seriesName)) { result = result.Where(x => x.シリーズ名.Contains(seriesName)); } if (!string.IsNullOrEmpty(hingunName)) { result = result.Where(x => x.品群名.Contains(hingunName)); } #endregion return(result.ToList()); } }
/// <summary> /// 移動入力情報を削除する /// </summary> /// <param name="ds"> /// 移動データセット /// [0:T05_IDOHD、1:T05_IDODTL] /// </param> /// <param name="userId">ログインユーザID</param> /// <returns></returns> public void Delete(string slipNumber, int userId) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable)) { T05Service = new T05(context, userId); S03Service = new S03(context, userId); S04Service = new S04(context, userId, S04.機能ID.振替入力); int number = 0; if (int.TryParse(slipNumber, out number)) { try { var idohd = context.T05_IDOHD .Where(x => x.削除日時 == null && x.伝票番号 == number) .FirstOrDefault(); var idodtl = context.T05_IDODTL .Where(x => x.削除日時 == null && x.伝票番号 == number) .ToList(); // 伝票データが存在しない場合は処理しない。 if (idodtl == null || idodtl.Count == 0) { return; } // 1>> ヘッダ情報削除 T05Service.T05_IDOHD_Delete(number); // 2>> 明細情報削除 T05Service.T05_IDODTL_Delete(number); // 3>> 在庫情報削除 #region 在庫調整 foreach (T05_IDODTL row in idodtl) { int souko = row.行番号 == 2 ? (int)idohd.出荷元倉庫コード : (int)idohd.出荷先倉庫コード; // 対象データ設定 S03_STOK stok = new S03_STOK(); stok.庫コード = souko; stok.品番コード = row.品番コード; stok.賞味期限 = AppCommon.DateTimeToDate(row.賞味期限, DateTime.MaxValue); stok.在庫数 = row.行番号 == 2 ? row.数量 : row.数量 * (-1); // 旧賞味期限の在庫を更新 S03Service.S03_STOK_Update(stok); // 変更状態を確定 context.SaveChanges(); } #endregion // 4>> 入出庫データの物理削除 S04Service.PhysicalDeletionProductHistory(context, number, (int)S04.機能ID.振替入力); // 変更状態を確定 context.SaveChanges(); tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } } else { throw new KeyNotFoundException("伝票番号が正しくありません"); } } } }
/// <summary> /// セット品番マスタ登録処理 /// </summary> /// <param name="ds"> /// データセット /// [0:updTbl]登録・更新対象のデータテーブル /// [1:delTbl]削除対象のデータテーブル /// </param> public void Update(DataSet ds, int loginUserId) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); // データ登録・更新 DataTable updTbl = ds.Tables["MST10011_GetData"]; Dictionary <string, List <DataRow> > dicSetProducts = new Dictionary <string, List <DataRow> >(); string strKey = string.Empty; List <DataRow> hinList = new List <DataRow>(); foreach (DataRow rw in updTbl.Rows) { strKey = rw["セット品番"].ToString() + "_" + rw["色"].ToString(); if (dicSetProducts.Keys.Contains(strKey)) { hinList.Add(rw); dicSetProducts[strKey] = hinList; } else { hinList = new List <DataRow>(); hinList.Add(rw); dicSetProducts.Add(strKey, hinList); } } foreach (string key in dicSetProducts.Keys) { List <DataRow> kouseihinList = dicSetProducts[key]; M09_HIN hinban = null; for (int i = 0; i < kouseihinList.Count; i++) { DataRow rw = kouseihinList[i]; string strJishaHinban = rw["セット品番"].ToString(); string strIro = string.IsNullOrEmpty(rw["色"].ToString()) ? null : rw["色"].ToString(); if (i == 0) { if (strIro == null) { hinban = context.M09_HIN.Where(c => c.自社品番 == strJishaHinban && c.自社色 == null).FirstOrDefault(); } else { hinban = context.M09_HIN.Where(c => c.自社品番 == strJishaHinban && c.自社色 == strIro).FirstOrDefault(); } if (hinban == null) { continue; } var delData = context.M10_SHIN.Where(w => w.品番コード == hinban.品番コード).ToList(); if (delData != null) { foreach (M10_SHIN dtl in delData) { context.M10_SHIN.DeleteObject(dtl); } context.SaveChanges(); } } string strKoseiHinban = rw["構成品番"].ToString(); string strKoseiIro = string.IsNullOrEmpty(rw["構成品色"].ToString()) ? null : rw["構成品色"].ToString(); M09_HIN koseihinban = null; if (strKoseiIro == null) { koseihinban = context.M09_HIN.Where(c => c.自社品番 == strKoseiHinban && c.自社色 == null).FirstOrDefault(); } else { koseihinban = context.M09_HIN.Where(c => c.自社品番 == strKoseiHinban && c.自社色 == strKoseiIro).FirstOrDefault(); } if (koseihinban == null) { continue; } M10_SHIN addHin = new M10_SHIN(); addHin.品番コード = hinban.品番コード; addHin.部品行 = i + 1; addHin.構成品番コード = koseihinban.品番コード; addHin.使用数量 = int.Parse(rw["使用数量"].ToString()); addHin.登録者 = loginUserId; addHin.登録日時 = DateTime.Now; addHin.最終更新者 = loginUserId; addHin.最終更新日時 = DateTime.Now; context.M10_SHIN.AddObject(addHin); } } context.SaveChanges(); } }
/// <summary> /// 品番から消費税計算をおこなう /// </summary> /// <param name="context"></param> /// <param name="salesDate">売上日</param> /// <param name="productCode">品番コード</param> /// <param name="price">単価</param> /// <param name="qty">数量</param> /// /// <param name="taxKbn">税区分ID</param> /// <param name="taxKbn">消費税区分[M01_TOK.T消費税区分(S支払消費税区分)] 1:一括、2:個別、3:請求無し</param> /// <returns></returns> public decimal CalculateTax(DateTime salesDate, int productCode, decimal price, decimal qty, int taxKbnId, int taxKbn) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { var hin = context.M09_HIN .Where(w => w.削除日時 == null && w.品番コード == productCode) .FirstOrDefault(); if (hin == null) { return(0); } decimal conTax = 0; decimal taxRate = getTargetTaxRate(salesDate, hin.消費税区分 ?? 0); decimal calcValue = decimal.Multiply(price * qty, decimal.Divide(taxRate, 100m)); if (taxKbn == (int)CommonConstants.消費税区分.ID03_請求無) { return(conTax); } switch (taxKbnId) { case 1: // 切捨て if (calcValue > 0) { conTax += Math.Floor(calcValue); } else { conTax += Math.Ceiling(calcValue); } break; case 2: // 四捨五入 conTax += Math.Round(calcValue, 0); break; case 3: // 切上げ if (calcValue > 0) { conTax += Math.Ceiling(calcValue); } else { conTax += Math.Floor(calcValue); } break; default: // 上記以外は税計算なしとする break; } return(conTax); } }
/// <summary> /// 適正在庫問合せ検索情報取得 /// </summary> /// <param name="p自社コード">画面指定の自社コード</param> /// <param name="p倉庫コード">画面指定の倉庫コード</param> /// <param name="cond"> /// == 検索条件 == /// 自社品番(品番指定検索) /// 検索品名(品名Like検索) /// 商品分類 /// シリーズ /// ブランド /// </param> /// <returns></returns> public List <SearchDataMember> GetDataList(string p自社コード, string p倉庫コード, Dictionary <string, string> cond) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { try { int val = -1; // 在庫基本情報 var stockList = context.S03_STOK.Where(w => w.削除日時 == null) .GroupBy(g => new { g.庫コード, g.品番コード }) .Select(s => new BaseStockMember { 庫コード = s.Key.庫コード, 品番コード = s.Key.品番コード, 在庫数量 = s.Sum(m => m.在庫数) }) .Join(context.M09_HIN.Where(w => w.削除日時 == null), x => x.品番コード, y => y.品番コード, (x, y) => new { STOK = x, HIN = y }) .ToList(); // 雑コードを除く商品 stockList = stockList.Where(w => w.HIN.商品形態分類 != (int)CommonConstants.商品形態分類.雑コード).ToList(); #region 入力項目による絞込 // 自社コードの条件チェック if (!string.IsNullOrEmpty(p自社コード)) { int n自社コード = Int32.TryParse(p自社コード, out val) ? val : -1; var jis = context.M70_JIS .Where(w => w.削除日時 == null && w.自社コード == n自社コード) .FirstOrDefault(); // 自社倉庫、マルセン倉庫(xxx確保)の在庫を抽出 if (jis != null) { var soukList = context.M22_SOUK.Where(v => v.削除日時 == null && (v.寄託会社コード == n自社コード) || (v.場所会社コード == n自社コード)) .Select(s => s.庫コード).ToList(); stockList = stockList.Where(w => soukList.Contains(w.STOK.庫コード)).ToList(); } } // 倉庫コードの条件チェック if (!string.IsNullOrEmpty(p倉庫コード)) { int n倉庫コード = Int32.TryParse(p倉庫コード, out val) ? val : -1; stockList = stockList.Where(w => w.STOK.庫コード == n倉庫コード).ToList(); } // 自社品番の条件チェック string myProduct = cond["自社品番"]; if (!string.IsNullOrEmpty(myProduct)) { stockList = stockList.Where(w => w.HIN.自社品番 == myProduct).ToList(); } // 品名の条件チェック string productName = cond["検索品名"]; if (!string.IsNullOrEmpty(productName)) { stockList = stockList.Where(w => w.HIN.自社品名 != null && w.HIN.自社品名.Contains(productName)).ToList(); } // 商品分類の条件チェック int itemType; if (int.TryParse(cond["商品分類"], out itemType)) { if (itemType >= CommonConstants.商品分類.食品.GetHashCode()) { stockList = stockList.Where(w => w.HIN.商品分類 == itemType).ToList(); } } // ブランドの条件チェック string brand = cond["ブランド"]; if (!string.IsNullOrEmpty(brand)) { stockList = stockList.Where(w => w.HIN.ブランド == brand).ToList(); } // シリーズの条件チェック string series = cond["シリーズ"]; if (!string.IsNullOrEmpty(series)) { stockList = stockList.Where(w => w.HIN.シリーズ == series).ToList(); } #endregion // 検索データ取得 var dataList = stockList .GroupJoin(context.S03_STOK_JUST, x => new { soukCd = x.STOK.庫コード, hinCd = x.STOK.品番コード }, y => new { soukCd = y.庫コード, hinCd = y.品番コード }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { STOK = a.x.STOK, HIN = a.x.HIN, JUST = b }) .GroupJoin(context.M22_SOUK.Where(w => w.削除日時 == null), x => x.STOK.庫コード, y => y.庫コード, (x, y) => new { x, y }) .SelectMany(x => x.y.DefaultIfEmpty(), (c, d) => new { c.x.STOK, c.x.HIN, c.x.JUST, SOUK = d }) .GroupJoin(context.M06_IRO.Where(w => w.削除日時 == null), x => x.HIN.自社色, y => y.色コード, (x, y) => new { x, y }) .SelectMany(x => x.y.DefaultIfEmpty(), (e, f) => new { e.x.STOK, e.x.HIN, e.x.JUST, e.x.SOUK, IRO = f }) .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null), x => x.SOUK.寄託会社コード, y => y.自社コード, (x, y) => new { x, y }) .SelectMany(x => x.y.DefaultIfEmpty(), (g, h) => new { g.x.STOK, g.x.HIN, g.x.JUST, g.x.SOUK, g.x.IRO, JIS = h }) .Select(s => new SearchDataMember { 自社コード = s.JIS.自社コード, 自社名 = s.JIS.自社名 ?? "", 庫コード = s.STOK.庫コード, 庫名称 = s.SOUK != null ? s.SOUK.庫名 : "", 品番コード = s.STOK.品番コード, str品番コード = s.STOK.品番コード.ToString(), 自社品番コード = s.HIN.自社品番, 自社色コード = s.HIN.自社色, 自社品名 = s.HIN.自社品名, 色名称 = s.IRO != null ? s.IRO.色名称 : "", 適正数量 = s.JUST != null ? s.JUST.適正在庫数量 : 0, 最低数量 = s.JUST != null ? s.JUST.最低在庫数量 : 0, 実在庫数量 = s.STOK.在庫数量, 単位1 = s.HIN.単位, 単位2 = s.HIN.単位 }); // 表示条件の絞り込み string hKbn = cond["表示条件"]; if (hKbn == "1") { // 表示条件 1:適正数量に満たない商品または適正数量×2を超える商品 dataList = dataList.Where(w => w.実在庫数量 <w.適正数量 || w.実在庫数量> w.適正数量 * 2); } else if (hKbn == "2") { // 表示条件 2:最低数量に満たない商品 dataList = dataList.Where(w => w.実在庫数量 < w.最低数量); } else { // 表示条件 0:なし } return(dataList.OrderBy(o => o.品番コード).ThenBy(o => o.庫コード).ToList()); } catch (System.ArgumentException agex) { throw agex; } catch (Exception ex) { throw ex; } } }
/// <summary> /// 商品と地区による運賃計算 /// </summary> /// <param name="result"></param> /// <param name="p請求支払区分"></param> /// <param name="p得意先ID"></param> /// <param name="p発地ID"></param> /// <param name="p着地ID"></param> /// <param name="p商品ID"></param> /// <param name="p重量"></param> /// <param name="p数量"></param> public void GetUnitCostArea(DLY01010_TANKA result, int p請求支払区分, int p得意先ID, int p発地ID, int p着地ID, int p商品ID, decimal p重量, decimal p数量) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); int tcode = (from k in context.M01_TOK where k.得意先ID == p得意先ID && k.削除日付 == null select k.得意先KEY).FirstOrDefault(); if (p請求支払区分 == 0) { var tankadata = (from r in context.M02_TTAN1 where r.得意先KEY == tcode && r.商品ID == p商品ID && (r.発地ID == p発地ID || r.発地ID == 0) && (r.着地ID == p着地ID || r.着地ID == 0) && r.削除日付 == null orderby r.発地ID descending, r.着地ID descending select r).FirstOrDefault(); if (tankadata != null) { if (tankadata.計算区分 == 0) { result.Tanka = tankadata.売上単価; result.Kingaku = p数量 * result.Tanka; } else if (tankadata.計算区分 == 1) { result.Tanka = tankadata.売上単価; result.Kingaku = p重量 * result.Tanka; } else { result.Tanka = tankadata.売上単価; result.Kingaku = p重量 * p数量 * result.Tanka; } } else { result.Tanka = 0; result.Kingaku = 0; } } else { var tankadata = (from r in context.M03_YTAN1 where r.支払先KEY == tcode && r.商品ID == p商品ID && (r.発地ID == p発地ID || r.発地ID == 0) && (r.着地ID == p着地ID || r.着地ID == 0) && r.削除日付 == null orderby r.発地ID descending, r.着地ID descending select r).FirstOrDefault(); if (tankadata != null) { if (tankadata.計算区分 == 0) { result.Tanka = tankadata.支払単価; result.Kingaku = p数量 * result.Tanka; } else if (tankadata.計算区分 == 1) { result.Tanka = tankadata.支払単価; result.Kingaku = p重量 * result.Tanka; } else { result.Tanka = tankadata.支払単価 == null ? -1 : (decimal)tankadata.支払単価; result.Kingaku = p重量 * p数量 * result.Tanka; } } else { result.Tanka = 0; result.Kingaku = 0; } } } return; }
/// <summary> /// 棚卸更新処理 /// </summary> /// <param name="pMyCompany">会社コード</param> /// <param name="pStocktakingDate">棚卸日</param> /// <param name="pParamDic">パラメータ辞書</param> /// <param name="pUserId">ログインユーザID</param> public void UpdateStocktaking(DataSet ds, int pMyCompany, string pStocktakingDate, Dictionary <string, string> pParamDic, int pUserId, bool 新規FLG) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { // --------------------------- // 初期処理 // --------------------------- context.Connection.Open(); using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { DataTable tbl = ds.Tables[0]; // 登録用リスト List <S10_STOCKTAKING> 庫別棚卸在庫List = new List <S10_STOCKTAKING>(); // 倉庫単位で更新処理をする Dictionary <string, string> unitDic = new Dictionary <string, string>(); unitDic.Add("倉庫コード", pParamDic["倉庫コード"]); unitDic.Add("自社品番", string.Empty); unitDic.Add("自社品名", string.Empty); unitDic.Add("商品分類", string.Empty); unitDic.Add("ブランドコード", string.Empty); unitDic.Add("シリーズコード", string.Empty); // --------------------------- // データ設定 // --------------------------- foreach (DataRow row in tbl.Rows) { if (row.RowState != DataRowState.Deleted) { 庫別棚卸在庫List.Add(ConvertS10_STOCKTAKING_Entity(row, pUserId, com.GetDbDateTime())); } } // --------------------------- // 既存データの削除削除処理 // --------------------------- DateTime dt = DateTime.Parse(pStocktakingDate); Delete_S10_STOCKTAKING(context, pMyCompany, dt, unitDic); // --------------------------- // 更新処理 // --------------------------- foreach (var row in 庫別棚卸在庫List) { context.S10_STOCKTAKING.ApplyChanges(row); } // --------------------------- // 終了処理 // --------------------------- // 変更内容を確定 context.SaveChanges(); // トランザクションのコミット tran.Commit(); } catch (Exception ex) { // トランザクションのロールバック tran.Rollback(); throw ex; } } } }
/// <summary> /// 先月データ取得 /// </summary> /// <param name="s作成年月"></param> /// <returns></returns> public List <SERCHE_MST32010> LAST_MANTH_MST32010(string s作成年月) { DateTime d年月 = Convert.ToDateTime(s作成年月.Substring(0, 4).ToString() + "/" + s作成年月.Substring(5, 2).ToString() + "/" + "01"); int ii年月1 = AppCommon.IntParse(d年月.Year.ToString() + d年月.ToString("MM")); int ii年月2 = AppCommon.IntParse(d年月.AddMonths(1).Year.ToString() + d年月.AddMonths(1).ToString("MM")); int ii年月3 = AppCommon.IntParse(d年月.AddMonths(2).Year.ToString() + d年月.AddMonths(2).ToString("MM")); int ii年月4 = AppCommon.IntParse(d年月.AddMonths(3).Year.ToString() + d年月.AddMonths(3).ToString("MM")); int ii年月5 = AppCommon.IntParse(d年月.AddMonths(4).Year.ToString() + d年月.AddMonths(4).ToString("MM")); int ii年月6 = AppCommon.IntParse(d年月.AddMonths(5).Year.ToString() + d年月.AddMonths(5).ToString("MM")); int ii年月7 = AppCommon.IntParse(d年月.AddMonths(6).Year.ToString() + d年月.AddMonths(6).ToString("MM")); int ii年月8 = AppCommon.IntParse(d年月.AddMonths(7).Year.ToString() + d年月.AddMonths(7).ToString("MM")); int ii年月9 = AppCommon.IntParse(d年月.AddMonths(8).Year.ToString() + d年月.AddMonths(8).ToString("MM")); int ii年月10 = AppCommon.IntParse(d年月.AddMonths(9).Year.ToString() + d年月.AddMonths(9).ToString("MM")); int ii年月11 = AppCommon.IntParse(d年月.AddMonths(10).Year.ToString() + d年月.AddMonths(10).ToString("MM")); int ii年月12 = AppCommon.IntParse(d年月.AddMonths(11).Year.ToString() + d年月.AddMonths(11).ToString("MM")); d年月 = d年月.AddYears(-1); int i年月1 = AppCommon.IntParse(d年月.Year.ToString() + d年月.ToString("MM")); int i年月2 = AppCommon.IntParse(d年月.AddMonths(1).Year.ToString() + d年月.AddMonths(1).ToString("MM")); int i年月3 = AppCommon.IntParse(d年月.AddMonths(2).Year.ToString() + d年月.AddMonths(2).ToString("MM")); int i年月4 = AppCommon.IntParse(d年月.AddMonths(3).Year.ToString() + d年月.AddMonths(3).ToString("MM")); int i年月5 = AppCommon.IntParse(d年月.AddMonths(4).Year.ToString() + d年月.AddMonths(4).ToString("MM")); int i年月6 = AppCommon.IntParse(d年月.AddMonths(5).Year.ToString() + d年月.AddMonths(5).ToString("MM")); int i年月7 = AppCommon.IntParse(d年月.AddMonths(6).Year.ToString() + d年月.AddMonths(6).ToString("MM")); int i年月8 = AppCommon.IntParse(d年月.AddMonths(7).Year.ToString() + d年月.AddMonths(7).ToString("MM")); int i年月9 = AppCommon.IntParse(d年月.AddMonths(8).Year.ToString() + d年月.AddMonths(8).ToString("MM")); int i年月10 = AppCommon.IntParse(d年月.AddMonths(9).Year.ToString() + d年月.AddMonths(9).ToString("MM")); int i年月11 = AppCommon.IntParse(d年月.AddMonths(10).Year.ToString() + d年月.AddMonths(10).ToString("MM")); int i年月12 = AppCommon.IntParse(d年月.AddMonths(11).Year.ToString() + d年月.AddMonths(11).ToString("MM")); using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); var query = (from m05 in context.M05_CAR.Where(c => c.削除日付 == null) join m17 in context.M17_CYSN on m05.車輌KEY equals m17.車輌KEY into m17Group select new SERCHE_MST32010 { 車輌KEY = m05.車輌KEY, 車輌コード = m05.車輌ID, 車番 = m05.車輌番号, 月1 = m17Group.Where(c => c.年月 == i年月1).Select(c => c.売上予算).FirstOrDefault(), 月2 = m17Group.Where(c => c.年月 == i年月2).Select(c => c.売上予算).FirstOrDefault(), 月3 = m17Group.Where(c => c.年月 == i年月3).Select(c => c.売上予算).FirstOrDefault(), 月4 = m17Group.Where(c => c.年月 == i年月4).Select(c => c.売上予算).FirstOrDefault(), 月5 = m17Group.Where(c => c.年月 == i年月5).Select(c => c.売上予算).FirstOrDefault(), 月6 = m17Group.Where(c => c.年月 == i年月6).Select(c => c.売上予算).FirstOrDefault(), 月7 = m17Group.Where(c => c.年月 == i年月7).Select(c => c.売上予算).FirstOrDefault(), 月8 = m17Group.Where(c => c.年月 == i年月8).Select(c => c.売上予算).FirstOrDefault(), 月9 = m17Group.Where(c => c.年月 == i年月9).Select(c => c.売上予算).FirstOrDefault(), 月10 = m17Group.Where(c => c.年月 == i年月10).Select(c => c.売上予算).FirstOrDefault(), 月11 = m17Group.Where(c => c.年月 == i年月11).Select(c => c.売上予算).FirstOrDefault(), 月12 = m17Group.Where(c => c.年月 == i年月12).Select(c => c.売上予算).FirstOrDefault(), 年月1 = ii年月1, 年月2 = ii年月2, 年月3 = ii年月3, 年月4 = ii年月4, 年月5 = ii年月5, 年月6 = ii年月6, 年月7 = ii年月7, 年月8 = ii年月8, 年月9 = ii年月9, 年月10 = ii年月10, 年月11 = ii年月11, 年月12 = ii年月12, }).AsQueryable(); var queryLIST = query.ToList(); return(queryLIST); } }
/// <summary> /// Spread情報変更 【UPDATE】 /// </summary> /// <param name="p明細番号"></param> /// <param name="p明細行"></param> /// <param name="colname"></param> /// <param name="val"></param> public void INSERT_GetData(object o車輌コード, object s車番, object s車種, string s目標燃費, object val, string s作成年月) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { //*** 変数定義 ***// int i年月 = Convert.ToInt32(s作成年月.Substring(0, 4) + s作成年月.Substring(5, 2)); int i車輌コード = Convert.ToInt32(o車輌コード); decimal d目標燃費 = Convert.ToDecimal(val); DateTime d更新日時 = DateTime.Now; DateTime d登録日時 = DateTime.Now; //*** 終了 ***// using (var tran = new TransactionScope()) { var query = (from m17 in context.M17_CYSN from m05 in context.M05_CAR.Where(c => c.車輌KEY == m17.車輌KEY) from m06 in context.M06_SYA.Where(c => c.車種ID == m05.車種ID) where m05.車輌ID == i車輌コード && m17.年月 == i年月 select new SERCHE_MST32010 { 車輌コード = m05.車輌ID, 車番 = m05.車輌番号, //車種 = m06.車種名, //目標燃費 = m17.目標燃費, }).AsQueryable(); var ret = (from m17 in context.M17_CYSN from m05 in context.M05_CAR.Where(c => c.車輌KEY == m17.車輌KEY) where m05.車輌ID == i車輌コード select new UPDATE_MST32010 { 車輌KEY = m17.車輌KEY, }).AsQueryable(); List <UPDATE_MST32010> retList = ret.ToList(); int 車輌KEY = retList[0].車輌KEY; string sql = string.Empty; if (query.Count() == 0) { //INSERT処理 sql = string.Format("INSERT INTO M17_CYSN (車輌KEY , 年月 , 登録日時 , 更新日時 , 目標燃費 , 削除日付)VALUES('{0}','{1}','{2}','','{3}',NULL)" , 車輌KEY, i年月, d登録日時, d目標燃費); } else { //UPDATE処理 sql = string.Format("UPDATE M17_CYSN SET 目標燃費 = '{3}' , 更新日時 = '{2}' WHERE 車輌KEY = {0} AND 年月 = {1}" , 車輌KEY, i年月, d更新日時, d目標燃費); } context.Connection.Open(); int count = context.ExecuteStoreCommand(sql); // トリガが定義されていると、更新結果は複数行になる if (count > 0) { tran.Complete(); } else { // 更新行なし throw new Framework.Common.DBDataNotFoundException(); } } } }
/// <summary> /// 仕入詳細(返品)情報(品番情報含む)を取得する /// </summary> /// <param name="slipNumber">伝票番号</param> /// <returns></returns> private List <T03.T03_SRDTL_RT_Extension> getT03_SRDTL_RT_Extension(string slipNumber) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); int num; if (int.TryParse(slipNumber, out num)) { // 元伝票の明細番号を取得 var 元伝票番号 = context.T03_SRHD.Where(w => w.削除日時 == null && w.伝票番号 == num) .Select(s => s.元伝票番号) .FirstOrDefault(); var result = context.T03_SRDTL.Where(w => w.削除日時 == null && w.伝票番号 == num) .GroupJoin(context.T03_SRDTL.Where(w => w.削除日時 == null && w.伝票番号 == 元伝票番号), x => x.行番号, y => y.行番号, (x, y) => new { x, y }) .SelectMany(x => x.y.DefaultIfEmpty(), (a, b) => new { SRTDTL = a.x, SRDTL = b }) .GroupJoin(context.M09_HIN.Where(w => w.削除日時 == null), x => x.SRTDTL.品番コード, y => y.品番コード, (x, y) => new { x, y }) .SelectMany(x => x.y.DefaultIfEmpty(), (c, d) => new { c.x.SRTDTL, c.x.SRDTL, HIN = d }) .OrderBy(o => o.SRTDTL.伝票番号) .ThenBy(t => t.SRTDTL.行番号) .ToList(); if (context.T03_SRHD.Where(w => w.伝票番号 == num).Select(s => s.仕入区分).FirstOrDefault() == CommonConstants.仕入区分.返品.GetHashCode()) { // 返品レコードとしてデータを作成 var resultRtDtl = result.Select(x => new T03.T03_SRDTL_RT_Extension { 伝票番号 = x.SRTDTL.伝票番号, 行番号 = x.SRTDTL.行番号, 品番コード = x.SRTDTL.品番コード, 自社品番 = x.HIN.自社品番, 自社品名 = x.HIN.自社品名, 賞味期限 = x.SRTDTL.賞味期限, 仕入数量 = x.SRDTL == null ? (decimal?)null : x.SRDTL.数量, 数量 = x.SRTDTL.数量, 単位 = x.SRTDTL.単位, 単価 = x.SRTDTL.単価, 金額 = x.SRTDTL.金額, 税区分 = // No-94 Add x.HIN.消費税区分 == (int)CommonConstants.商品消費税区分.軽減税率 ? CommonConstants.消費税区分略称_軽減税率 : x.HIN.消費税区分 == (int)CommonConstants.商品消費税区分.非課税 ? CommonConstants.消費税区分略称_非課税 : string.Empty, 摘要 = x.SRTDTL.摘要, 消費税区分 = x.HIN.消費税区分 ?? 0, 商品分類 = x.HIN.商品分類 ?? 0 }) .ToList(); return(resultRtDtl); } else { // 仕入データとしてデータを作成 var resultSrDtl = result.Select(x => new T03.T03_SRDTL_RT_Extension { 伝票番号 = x.SRTDTL.伝票番号, 行番号 = x.SRTDTL.行番号, 品番コード = x.SRTDTL.品番コード, 自社品番 = x.HIN.自社品番, 自社品名 = x.HIN.自社品名, 賞味期限 = x.SRTDTL.賞味期限, 仕入数量 = x.SRTDTL.数量, 数量 = x.SRTDTL.数量, 単位 = x.SRTDTL.単位, 単価 = x.SRTDTL.単価, 金額 = x.SRTDTL.金額, 税区分 = // No-94 Add x.HIN.消費税区分 == (int)CommonConstants.商品消費税区分.軽減税率 ? CommonConstants.消費税区分略称_軽減税率 : x.HIN.消費税区分 == (int)CommonConstants.商品消費税区分.非課税 ? CommonConstants.消費税区分略称_非課税 : string.Empty, 摘要 = x.SRTDTL.摘要, 消費税区分 = x.HIN.消費税区分 ?? 0, 商品分類 = x.HIN.商品分類 ?? 0 }) .ToList(); return(resultSrDtl); } } else { return(new List <T03.T03_SRDTL_RT_Extension>()); } } }
/// <summary> /// 仕入ヘッダ情報を取得する /// </summary> /// <param name="companyCode">会社名コード</param> /// <param name="slipNumber">伝票番号</param> /// <param name="userId">ログインユーザID</param> /// <returns></returns> private List <T03.T03_SRHD_RT_Extension> getM03_SRHD_RT_Extension(string companyCode, string slipNumber, int userId) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); int code, num; if (int.TryParse(companyCode, out code) && int.TryParse(slipNumber, out num)) { var result = context.T03_SRHD.Where(w => w.削除日時 == null && w.会社名コード == code && w.伝票番号 == num) .GroupJoin(context.T03_SRHD.Where(w => w.削除日時 == null), x => x.元伝票番号, y => y.伝票番号, (x, y) => new { x, y }) .SelectMany(s => s.y.DefaultIfEmpty(), (a, b) => new { SRTHD = a.x, SRHD = b }) .ToList(); if (result.Select(s => s.SRTHD.仕入区分).FirstOrDefault() == CommonConstants.仕入区分.返品.GetHashCode()) { // 返品レコードとしてデータを作成 var resultRthd = result.Select(x => new T03.T03_SRHD_RT_Extension { 伝票番号 = x.SRTHD.伝票番号.ToString(), 会社名コード = x.SRTHD.会社名コード.ToString(), 仕入日 = x.SRTHD.仕入日, 入力区分 = x.SRTHD.入力区分, 仕入区分 = x.SRTHD.仕入区分, 仕入先コード = x.SRTHD.仕入先コード.ToString(), 仕入先枝番 = x.SRTHD.仕入先枝番.ToString(), 入荷先コード = x.SRTHD.入荷先コード.ToString(), 発注番号 = x.SRTHD.発注番号.ToString(), 備考 = x.SRTHD.備考, // No-94 Add Start 通常税率対象金額 = x.SRTHD.通常税率対象金額 ?? 0, 軽減税率対象金額 = x.SRTHD.軽減税率対象金額 ?? 0, 通常税率消費税 = x.SRTHD.通常税率消費税 ?? 0, 軽減税率消費税 = x.SRTHD.軽減税率消費税 ?? 0, // No-94 Add End // No-95 Add Start 小計 = x.SRTHD.小計 ?? 0, 総合計 = x.SRTHD.総合計 ?? 0, // No-95 Add End 消費税 = x.SRTHD.消費税, 元伝票番号 = x.SRHD == null ? "" : x.SRHD.伝票番号.ToString(), 元仕入日 = x.SRHD == null ? (DateTime?)null : x.SRHD.仕入日, データ状態 = false }) .ToList(); return(resultRthd); } else { // 仕入レコードとしてデータを作成 // ①新規伝票番号を取得 M88 seqSv = new M88(); int newSeqNum = seqSv.getNextNumber(CommonConstants.明細番号ID.ID01_売上_仕入_移動, userId); DateTime retDate = (DateTime)AppCommon.DateTimeToDate(DateTime.Now); var resultSrhd = result.Select(x => new T03.T03_SRHD_RT_Extension { 伝票番号 = newSeqNum.ToString(), 会社名コード = x.SRTHD.会社名コード.ToString(), 仕入日 = retDate, 入力区分 = x.SRTHD.入力区分, 仕入区分 = CommonConstants.仕入区分.返品.GetHashCode(), 仕入先コード = x.SRTHD.仕入先コード.ToString(), 仕入先枝番 = x.SRTHD.仕入先枝番.ToString(), 入荷先コード = x.SRTHD.入荷先コード.ToString(), 発注番号 = x.SRTHD.発注番号.ToString(), 備考 = x.SRTHD.備考, // No-94 Add Start 通常税率対象金額 = x.SRTHD.通常税率対象金額 ?? 0, 軽減税率対象金額 = x.SRTHD.軽減税率対象金額 ?? 0, 通常税率消費税 = x.SRTHD.通常税率消費税 ?? 0, 軽減税率消費税 = x.SRTHD.軽減税率消費税 ?? 0, // No-94 Add End // No-95 Add Start 小計 = x.SRTHD.小計 ?? 0, 総合計 = x.SRTHD.総合計 ?? 0, // No-95 Add End 消費税 = x.SRTHD.消費税, 元伝票番号 = x.SRTHD.伝票番号.ToString(), 元仕入日 = x.SRTHD.仕入日, データ状態 = true }) .ToList(); return(resultSrhd); } } else { return(new List <T03.T03_SRHD_RT_Extension>()); } } }
/// <summary> /// 確定済チェック /// </summary> /// <param name="自社コード"></param> /// <param name="得意先コード"></param> /// <param name="得意先枝番"></param> /// <param name="仕入先コード"></param> /// <param name="仕入先枝番"></param> /// <returns></returns> public DataTable CheckFix(string 自社コード, string 得意先コード, string 得意先枝番, string 仕入先コード, string 仕入先枝番) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); // パラメータ型変換 int iVal = 0; int company = int.TryParse(自社コード, out iVal) ? iVal : -1; int tCode = int.TryParse(得意先コード, out iVal) ? iVal : -1; int tEda = int.TryParse(得意先枝番, out iVal) ? iVal : -1; int sCode = int.TryParse(仕入先コード, out iVal) ? iVal : -1; int sEda = int.TryParse(仕入先枝番, out iVal) ? iVal : -1; IEnumerable <TKS90010_FIX_INFO> tFixData = null; IEnumerable <TKS90010_FIX_INFO> sFixData = null; // 得意先情報 if (!string.IsNullOrEmpty(得意先コード)) { var tokData = context.M01_TOK.Where(w => w.取引先コード == tCode && w.枝番 == tEda && w.削除日時 == null); tFixData = tokData .GroupJoin(context.S11_KAKUTEI.Where(w => w.確定区分 == (int)CommonConstants.確定区分.請求), x => new { jis = x.担当会社コード, tKbn = x.取引区分, day = (int)x.T締日 }, y => new { jis = y.自社コード, tKbn = y.取引区分, day = y.締日 }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { TOK = a.x, FIX = b }) .ToList() .Select(s => new TKS90010_FIX_INFO { 自社コード = s.FIX != null ? s.FIX.自社コード : (int?)null, 区分 = CommonConstants.確定区分_請求, 確定区分 = s.FIX != null ? s.FIX.確定区分 : (int?)null, 取引区分 = s.TOK.取引区分, 取引先コード = s.TOK.取引先コード.ToString(), 枝番 = s.TOK.枝番.ToString(), 取引先名 = s.TOK.略称名, 締日 = s.FIX != null ? s.FIX.締日 : (int?)null, 確定日 = s.FIX != null ? s.FIX.確定日 : (DateTime?)null }) .Union (tokData .GroupJoin(context.S11_KAKUTEI.Where(w => w.確定区分 == (int)CommonConstants.確定区分.支払), x => new { jis = x.担当会社コード, tKbn = x.取引区分, day = (int)x.S締日 }, y => new { jis = y.自社コード, tKbn = y.取引区分, day = y.締日 }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { TOK = a.x, FIX = b }) .ToList() .Select(s => new TKS90010_FIX_INFO { 自社コード = s.FIX != null ? s.FIX.自社コード : (int?)null, 区分 = CommonConstants.確定区分_支払, 確定区分 = s.FIX != null ? s.FIX.確定区分 : (int?)null, 取引区分 = s.TOK.取引区分, 取引先コード = s.TOK.取引先コード.ToString(), 枝番 = s.TOK.枝番.ToString(), 取引先名 = s.TOK.略称名, 締日 = s.FIX != null ? s.FIX.締日 : (int?)null, 確定日 = s.FIX != null ? s.FIX.確定日 : (DateTime?)null })); } // 仕入先情報 if (!string.IsNullOrEmpty(仕入先コード)) { var sTokData = context.M01_TOK.Where(w => w.取引先コード == sCode && w.枝番 == sEda && w.削除日時 == null); sFixData = sTokData .GroupJoin(context.S11_KAKUTEI.Where(w => w.確定区分 == (int)CommonConstants.確定区分.支払), x => new { jis = x.担当会社コード, tKbn = x.取引区分, day = (int)x.S締日 }, y => new { jis = y.自社コード, tKbn = y.取引区分, day = y.締日 }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { TOK = a.x, FIX = b }) .ToList() .Select(s => new TKS90010_FIX_INFO { 自社コード = s.FIX != null ? s.FIX.自社コード : (int?)null, 区分 = CommonConstants.確定区分_支払, 確定区分 = s.FIX != null ? s.FIX.確定区分 : (int?)null, 取引区分 = s.TOK.取引区分, 取引先コード = s.TOK.取引先コード.ToString(), 枝番 = s.TOK.枝番.ToString(), 取引先名 = s.TOK.略称名, 締日 = s.FIX != null ? s.FIX.締日 : (int?)null, 確定日 = s.FIX != null ? s.FIX.確定日 : (DateTime?)null }) .Union (sTokData .GroupJoin(context.S11_KAKUTEI.Where(w => w.確定区分 == (int)CommonConstants.確定区分.請求), x => new { jis = x.担当会社コード, tKbn = x.取引区分, day = (int)x.T締日 }, y => new { jis = y.自社コード, tKbn = y.取引区分, day = y.締日 }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { TOK = a.x, FIX = b }) .ToList() .Select(s => new TKS90010_FIX_INFO { 自社コード = s.FIX != null ? s.FIX.自社コード : (int?)null, 区分 = CommonConstants.確定区分_請求, 確定区分 = s.FIX != null ? s.FIX.確定区分 : (int?)null, 取引区分 = s.TOK.取引区分, 取引先コード = s.TOK.取引先コード.ToString(), 枝番 = s.TOK.枝番.ToString(), 取引先名 = s.TOK.略称名, 締日 = s.FIX != null ? s.FIX.締日 : (int?)null, 確定日 = s.FIX != null ? s.FIX.確定日 : (DateTime?)null })); } // 確定データを連結 tFixData = tFixData != null ? (sFixData != null ? tFixData.Concat(sFixData) : tFixData) : sFixData; // Datatable変換 DataTable fixDt = KESSVCEntry.ConvertListToDataTable(tFixData.ToList()); return(fixDt); } }
/// <summary> /// 確定テーブル更新 /// </summary> /// <param name="自社コード"></param> /// <param name="締日"></param> /// <param name="確定日"></param> /// <param name="取引区分"></param> /// <returns></returns> public int Update(string 自社コード, string 取引区分, string 確定区分, string 締日, string 確定日, int pLoginUserCode) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable)) { try { // パラメータ型変換 int iVal = 0; DateTime dt; DateTime minDt = DateTime.MinValue; int company = int.TryParse(自社コード, out iVal) ? iVal : -1; int fixKbn = int.TryParse(確定区分, out iVal) ? iVal : -1; int triKbn = int.TryParse(取引区分, out iVal) ? iVal : -1; int closingDays = int.TryParse(締日, out iVal) ? iVal : -1; DateTime?fixDay = DateTime.TryParse(確定日, out dt) ? dt : (DateTime?)null; if (fixDay == minDt) { fixDay = null; } // 更新行を特定 var s11Data = context.S11_KAKUTEI .Where(x => x.自社コード == company && x.取引区分 == triKbn && x.確定区分 == fixKbn && x.締日 == closingDays) .Select(c => c) .FirstOrDefault(); if (s11Data != null) { s11Data.確定日 = fixDay; s11Data.登録日時 = DateTime.Now; s11Data.登録者 = pLoginUserCode; s11Data.AcceptChanges(); } else { S11_KAKUTEI s11 = new S11_KAKUTEI(); s11.自社コード = company; s11.取引区分 = triKbn; s11.確定区分 = fixKbn; s11.締日 = closingDays; s11.確定日 = fixDay; s11.登録者 = pLoginUserCode; s11.登録日時 = DateTime.Now; context.S11_KAKUTEI.ApplyChanges(s11); } context.SaveChanges(); tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } } } return(1); }
/// <summary> /// 確定情報取得 /// </summary> /// <param name="自社コード"></param> /// <param name="締日"></param> /// <param name="取引先区分"></param> /// <returns></returns> public List <TKS90010_SearchMember> GetListData(string 自社コード, string 締日, string 取引区分) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); // パラメータ型変換 int iVal = 0; int company = int.TryParse(自社コード, out iVal) ? iVal : -1; int triKbn = int.TryParse(取引区分, out iVal) ? iVal : -1; int?closingDays = int.TryParse(締日, out iVal) ? iVal : (int?)null; // 得意先情報 IQueryable <M01_TOK> seiTokData, shiTokData; var tokData = context.M01_TOK.Where(w => w.取引区分 == triKbn && w.削除日時 == null); // 自社コードが指定されている場合、絞り込み if (!string.IsNullOrEmpty(自社コード)) { tokData = tokData.Where(w => w.担当会社コード == company); } seiTokData = tokData; shiTokData = tokData; // 締日が指定されている場合、絞り込み if (!string.IsNullOrEmpty(締日)) { switch (triKbn) { case (int)CommonConstants.取引区分.得意先: seiTokData = tokData.Where(w => w.T締日 == closingDays && w.T締日 > 0); seiTokData = tokData.Where(w => w.T締日 == closingDays); break; case (int)CommonConstants.取引区分.仕入先: case (int)CommonConstants.取引区分.加工先: shiTokData = tokData.Where(w => w.S締日 == closingDays && w.S締日 > 0); break; case (int)CommonConstants.取引区分.相殺: seiTokData = tokData.Where(w => (w.T締日 == closingDays && w.T締日 > 0)); shiTokData = tokData.Where(w => (w.S締日 == closingDays && w.S締日 > 0)); break; default: break; } } // 検索情報取得 // 請求確定データ var seiData = seiTokData.Where(w => w.T締日 != null && w.T締日 > 0) .GroupJoin(context.S11_KAKUTEI.Where(w => w.確定区分 == (int)CommonConstants.確定区分.請求), x => new { code = x.担当会社コード, tKbn = x.取引区分, day = (int)x.T締日 }, y => new { code = y.自社コード, tKbn = y.取引区分, day = y.締日 }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { TOK_T = a.x, FIX = b }) .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null), x => new { jis = x.TOK_T.担当会社コード }, y => new { jis = y.自社コード }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (c, d) => new { TOK_T = c.x.TOK_T, FIX = c.x.FIX, JIS = d }) .GroupBy(g => new { g.TOK_T.担当会社コード, g.JIS.自社名, g.TOK_T.取引区分, g.TOK_T.T締日, g.FIX.確定日, g.TOK_T.取引先コード, g.TOK_T.枝番, g.TOK_T.略称名 }) .ToList() .Select(s => new TKS90010_SearchMember { 自社名 = s.Key.自社名, 自社コード = s.Key.担当会社コード, 確定区分 = (int)CommonConstants.確定区分.請求, 区分 = CommonConstants.確定区分_請求, 取引区分ID = s.Key.取引区分, 取引区分 = s.Key.取引区分 == (int)CommonConstants.取引区分.得意先 ? CommonConstants.取引区分_得意先 : s.Key.取引区分 == (int)CommonConstants.取引区分.仕入先 ? CommonConstants.取引区分_仕入先 : s.Key.取引区分 == (int)CommonConstants.取引区分.加工先 ? CommonConstants.取引区分_加工先 : s.Key.取引区分 == (int)CommonConstants.取引区分.相殺 ? CommonConstants.取引区分_相殺 : string.Empty, ID = string.Format("{0:D4} - {1:D2}", s.Key.取引先コード, s.Key.枝番), 得意先名 = s.Key.略称名, 締日 = (int)s.Key.T締日, 確定日 = s.Key.確定日 }); // 支払確定データ var shrData = shiTokData.Where(w => w.S締日 != null) .GroupJoin(context.S11_KAKUTEI.Where(w => w.確定区分 == (int)CommonConstants.確定区分.支払), x => new { code = x.担当会社コード, tKbn = x.取引区分, day = (int)x.S締日 }, y => new { code = y.自社コード, tKbn = y.取引区分, day = y.締日 }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { TOK_S = a.x, FIX = b }) .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null), x => new { jis = x.TOK_S.担当会社コード }, y => new { jis = y.自社コード }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (c, d) => new { FIX = c.x.FIX, TOK_S = c.x.TOK_S, JIS = d }) .GroupBy(g => new { g.TOK_S.担当会社コード, g.JIS.自社名, g.TOK_S.取引区分, g.TOK_S.S締日, g.FIX.確定日, g.TOK_S.取引先コード, g.TOK_S.枝番, g.TOK_S.略称名 }) .ToList() .Select(s => new TKS90010_SearchMember { 自社名 = s.Key.自社名, 自社コード = s.Key.担当会社コード, 確定区分 = (int)CommonConstants.確定区分.支払, 区分 = CommonConstants.確定区分_支払, 取引区分ID = s.Key.取引区分, 取引区分 = s.Key.取引区分 == (int)CommonConstants.取引区分.得意先 ? CommonConstants.取引区分_得意先 : s.Key.取引区分 == (int)CommonConstants.取引区分.仕入先 ? CommonConstants.取引区分_仕入先 : s.Key.取引区分 == (int)CommonConstants.取引区分.加工先 ? CommonConstants.取引区分_加工先 : s.Key.取引区分 == (int)CommonConstants.取引区分.相殺 ? CommonConstants.取引区分_相殺 : string.Empty, ID = string.Format("{0:D4} - {1:D2}", s.Key.取引先コード, s.Key.枝番), 得意先名 = s.Key.略称名, 締日 = (int)s.Key.S締日, 確定日 = s.Key.確定日 }); // 請求データと支払データを結合 var result = seiData.Concat(shrData); return(result.OrderBy(o => o.自社コード) .ThenBy(o => o.確定区分) .ThenBy(o => o.締日) .ThenBy(o => o.ID) .ToList()); } }
/// <summary> /// T01_TRN+T02_UTRNのリスト取得 /// </summary> /// <param name="p明細番号">明細番号</param> /// <param name="p明細行">明細行</param> /// <returns>T01_TRN_MemberのList</returns> public List <T01_TRN_DATA> GetListDrive(int?p明細番号, int?p明細行) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); // 注意:T02が駆動表(明細行は1件のみ) var ret = (from t01 in context.T01_TRN.Where(x => x.入力区分 == 3) from uwk in context.M10_UHK.Where(x => x.得意先KEY == t01.得意先KEY && x.請求内訳ID == t01.請求内訳ID && x.削除日付 == null).DefaultIfEmpty() from drv in context.M04_DRV.Where(x => x.乗務員KEY == t01.乗務員KEY).DefaultIfEmpty() from tok in context.M01_TOK.Where(x => x.得意先KEY == t01.得意先KEY).DefaultIfEmpty() from shr in context.M01_TOK.Where(x => x.得意先KEY == t01.支払先KEY).DefaultIfEmpty() from sya in context.M06_SYA.Where(x => x.車種ID == t01.車種ID).DefaultIfEmpty() from car in context.M05_CAR.Where(x => x.車輌KEY == t01.車輌KEY).DefaultIfEmpty() where t01.明細番号 == p明細番号 orderby t01.明細行 select new T01_TRN_DATA { 明細番号 = t01.明細番号, 明細行 = (t01.明細行 == null) ? 0 : (int)t01.明細行, 行番号SUB = (t01.明細行 == null) ? (int?)null : t01.明細行, 登録日時 = t01.登録日時, 更新日時 = t01.更新日時, 明細区分 = t01.明細区分, 入力区分 = t01.入力区分, 請求日付 = t01.請求日付, 支払日付 = t01.支払日付, 配送日付 = t01.配送日付, 配送時間 = t01.配送時間, 得意先ID = tok.得意先ID, 請求内訳ID = (t01.請求内訳ID == null || t01.請求内訳ID == 0) ? null : t01.請求内訳ID, 請求内訳管理区分 = tok.請求内訳管理区分, 請求内訳名 = uwk.請求内訳名, 車輌ID = car.車輌ID, 車種ID = t01.車種ID, 車種名 = sya.車種名, 支払先ID = shr.得意先ID, 支払先名 = shr.略称名, 乗務員ID = drv.乗務員ID, 乗務員名 = drv.乗務員名, 担当部門 = (t01.自社部門ID == null || (int)t01.自社部門ID == 0) ? 0 : (int)t01.自社部門ID, 自社部門ID = (t01.自社部門ID == null || (int)t01.自社部門ID == 0) ? 0 : (int)t01.自社部門ID, 車輌番号 = t01.車輌番号, 支払先名2次 = t01.支払先名2次, 実運送乗務員 = t01.実運送乗務員, 乗務員連絡先 = t01.乗務員連絡先, 請求運賃計算区分ID = t01.請求運賃計算区分ID, 支払運賃計算区分ID = t01.支払運賃計算区分ID, 数量 = t01.数量, 単位 = t01.単位, 重量 = t01.重量, 走行KM = t01.走行KM, 実車KM = t01.実車KM, 待機時間 = t01.待機時間, 売上単価 = t01.売上単価, 売上金額 = t01.売上金額, 通行料 = t01.通行料, 請求割増1 = t01.請求割増1, 請求割増2 = t01.請求割増2, 請求消費税 = t01.請求消費税, 支払単価 = t01.支払単価, 支払金額 = t01.支払金額, 支払通行料 = t01.支払通行料, 支払割増1 = t01.支払割増1, 支払割増2 = t01.支払割増2, 支払消費税 = t01.支払消費税, 水揚金額 = t01.水揚金額, 社内区分 = t01.社内区分, 請求税区分 = t01.請求税区分, 支払税区分 = t01.支払税区分, 売上未定区分 = t01.売上未定区分, 支払未定区分 = t01.支払未定区分, 商品ID = t01.商品ID, 商品名 = t01.商品名, 発地ID = t01.発地ID, 発地名 = t01.発地名, 着地ID = t01.着地ID, 着地名 = t01.着地名, 請求摘要ID = t01.請求摘要ID, 請求摘要 = t01.請求摘要, 社内備考ID = t01.社内備考ID, 社内備考 = t01.社内備考, 入力者ID = t01.入力者ID, 確認名称区分 = t01.確認名称区分, // ----- 得意先名 = tok.略称名, }).ToList(); if (p明細行 == null) { return(ret.ToList()); } else { return(ret.Where(x => x.明細行 == p明細行).ToList()); } } }
/// <summary> /// F9(登録ボタン)での登録 /// </summary> public void NINSERT_GetData(List <SERCHE_MST32010> dt, string s作成年月) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); using (var tran = new TransactionScope()) { try { DateTime d年月 = Convert.ToDateTime(s作成年月.Substring(0, 4) + "/" + s作成年月.Substring(5, 2) + "/01"); int i開始年月 = Convert.ToInt32(s作成年月.Substring(0, 4) + s作成年月.Substring(5, 2)); int i終了年月 = AppCommon.IntParse(d年月.AddMonths(11).Year.ToString() + d年月.AddMonths(11).ToString("MM")); var del = (from m17 in context.M17_CYSN where m17.年月 >= i開始年月 && m17.年月 <= i終了年月 select m17); foreach (var row in del) { context.DeleteObject(row); } ; foreach (var row in dt) { M17_CYSN m17_row = new M17_CYSN(); m17_row.車輌KEY = row.車輌KEY; m17_row.年月 = row.年月1; m17_row.売上予算 = row.月1; m17_row.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row); context.SaveChanges(); M17_CYSN m17_row2 = new M17_CYSN(); m17_row2.車輌KEY = row.車輌KEY; m17_row2.年月 = row.年月2; m17_row2.売上予算 = row.月2; m17_row2.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row2); context.SaveChanges(); M17_CYSN m17_row3 = new M17_CYSN(); m17_row3.車輌KEY = row.車輌KEY; m17_row3.年月 = row.年月3; m17_row3.売上予算 = row.月3; m17_row3.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row3); context.SaveChanges(); M17_CYSN m17_row4 = new M17_CYSN(); m17_row4.車輌KEY = row.車輌KEY; m17_row4.年月 = row.年月4; m17_row4.売上予算 = row.月4; m17_row4.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row4); context.SaveChanges(); M17_CYSN m17_row5 = new M17_CYSN(); m17_row5.車輌KEY = row.車輌KEY; m17_row5.年月 = row.年月5; m17_row5.売上予算 = row.月5; m17_row5.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row5); context.SaveChanges(); M17_CYSN m17_row6 = new M17_CYSN(); m17_row6.車輌KEY = row.車輌KEY; m17_row6.年月 = row.年月6; m17_row6.売上予算 = row.月6; m17_row6.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row6); context.SaveChanges(); M17_CYSN m17_row7 = new M17_CYSN(); m17_row7.車輌KEY = row.車輌KEY; m17_row7.年月 = row.年月7; m17_row7.売上予算 = row.月7; m17_row7.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row7); context.SaveChanges(); M17_CYSN m17_row8 = new M17_CYSN(); m17_row8.車輌KEY = row.車輌KEY; m17_row8.年月 = row.年月8; m17_row8.売上予算 = row.月8; m17_row8.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row8); context.SaveChanges(); M17_CYSN m17_row9 = new M17_CYSN(); m17_row9.車輌KEY = row.車輌KEY; m17_row9.年月 = row.年月9; m17_row9.売上予算 = row.月9; m17_row9.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row9); context.SaveChanges(); M17_CYSN m17_row10 = new M17_CYSN(); m17_row10.車輌KEY = row.車輌KEY; m17_row10.年月 = row.年月10; m17_row10.売上予算 = row.月10; m17_row10.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row10); context.SaveChanges(); M17_CYSN m17_row11 = new M17_CYSN(); m17_row11.車輌KEY = row.車輌KEY; m17_row11.年月 = row.年月11; m17_row11.売上予算 = row.月11; m17_row11.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row11); context.SaveChanges(); M17_CYSN m17_row12 = new M17_CYSN(); m17_row12.車輌KEY = row.車輌KEY; m17_row12.年月 = row.年月12; m17_row12.売上予算 = row.月12; m17_row12.粗利予算 = 0; // newのエンティティに対してはAcceptChangesで新規追加となる context.M17_CYSN.ApplyChanges(m17_row12); context.SaveChanges(); } ; tran.Complete(); return; } catch (Exception ex) { throw ex; } } } }
public int PutAllData(int p明細番号, List <T01_TRN_DATA> t01list, int 担当者ID, int p確認名称区分) { int count = 0; using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); using (var tran = new TransactionScope()) { if (p明細番号 >= 0) { var rect01 = from x in context.T01_TRN where x.明細番号 == p明細番号 select x; foreach (var rec in rect01) { context.DeleteObject(rec); } } else { // 新番号取得 var 明細番号M = (from n in context.M88_SEQ where n.明細番号ID == 1 select n ).FirstOrDefault(); if (明細番号M == null) { return(-1); } p明細番号 = 明細番号M.現在明細番号 + 1; 明細番号M.現在明細番号 = p明細番号; 明細番号M.AcceptChanges(); } // T01 foreach (var t01trn in t01list) { if (t01trn.明細行 == 0) { continue; } if (t01trn.得意先ID == null) { continue; } var t01 = new T01_TRN(); var tokkey = (from t in context.M01_TOK where t.得意先ID == t01trn.得意先ID select(int?) t.得意先KEY).FirstOrDefault(); var shrkey = (from t in context.M01_TOK where t.得意先ID == t01trn.支払先ID select(int?) t.得意先KEY).FirstOrDefault(); var drvkey = (from t in context.M04_DRV where t.乗務員ID == t01trn.乗務員ID select(int?) t.乗務員KEY).FirstOrDefault(); var carkey = (from t in context.M05_CAR where t.車輌ID == t01trn.車輌ID select(int?) t.車輌KEY).FirstOrDefault(); t01.明細番号 = p明細番号; t01.明細行 = t01trn.明細行; t01.更新日時 = DateTime.Now; t01.登録日時 = t01trn.登録日時 == null ? DateTime.Now : t01trn.登録日時; t01.明細区分 = 1; t01.入力区分 = 3; t01.請求日付 = (DateTime)t01trn.請求日付; t01.支払日付 = t01trn.支払日付; t01.配送日付 = (DateTime)(t01trn.配送日付 == null?t01trn.請求日付:(DateTime)t01trn.配送日付); t01.配送時間 = t01trn.配送時間; t01.得意先KEY = tokkey; t01.請求内訳ID = t01trn.請求内訳ID; t01.車輌KEY = carkey; t01.車種ID = t01trn.車種ID; t01.支払先KEY = shrkey; t01.乗務員KEY = drvkey; t01.自社部門ID = t01trn.自社部門ID; t01.車輌番号 = t01trn.車輌番号; t01.支払先名2次 = t01trn.支払先名2次; t01.実運送乗務員 = t01trn.実運送乗務員; t01.乗務員連絡先 = t01trn.乗務員連絡先; t01.請求運賃計算区分ID = t01trn.請求運賃計算区分ID == null ? -1 : (int)t01trn.請求運賃計算区分ID; t01.支払運賃計算区分ID = t01trn.支払運賃計算区分ID == null ? -1 : (int)t01trn.支払運賃計算区分ID; t01.数量 = (decimal)(t01trn.数量 == null ? 0 : t01trn.数量); t01.単位 = t01trn.単位; t01.重量 = (decimal)(t01trn.重量 == null ? 0 : t01trn.重量); t01.走行KM = (int)(t01trn.走行KM == null?0:t01trn.走行KM); t01.実車KM = (int)(t01trn.実車KM == null?0:t01trn.実車KM); t01.待機時間 = (decimal)(t01trn.待機時間 == null ? 0 : t01trn.待機時間); t01.売上単価 = (decimal)(t01trn.売上単価 == null?0:t01trn.売上単価); t01.売上金額 = (int)(t01trn.売上金額 == null ? 0 : t01trn.売上金額); t01.通行料 = (int)(t01trn.通行料 == null ? 0 : t01trn.通行料); t01.請求割増1 = (int)(t01trn.請求割増1 == null ? 0 : t01trn.請求割増1); t01.請求割増2 = (int)(t01trn.請求割増2 == null?0:t01trn.請求割増2); t01.支払単価 = (decimal)(t01trn.支払単価 == null ? 0 : t01trn.支払単価); t01.支払金額 = (int)(t01trn.支払金額 == null ? 0 : t01trn.支払金額); t01.支払通行料 = (int)(t01trn.支払通行料 == null ? 0 : t01trn.支払通行料); t01.社内区分 = (int)(t01trn.社内区分 == null ? 1 : t01trn.社内区分); t01.請求税区分 = (int)(t01trn.請求税区分 == null ? 0 : t01trn.請求税区分); t01.支払税区分 = (int)(t01trn.支払税区分 == null?0:t01trn.支払税区分); t01.売上未定区分 = (int)(t01trn.売上未定区分 == null?0:t01trn.売上未定区分); t01.支払未定区分 = (int)(t01trn.支払未定区分 == null ? 0 : t01trn.支払未定区分); t01.商品ID = t01trn.商品ID; t01.商品名 = t01trn.商品名; t01.発地ID = t01trn.発地ID; t01.発地名 = t01trn.発地名; t01.着地ID = t01trn.着地ID; t01.着地名 = t01trn.着地名; t01.請求摘要ID = t01trn.請求摘要ID; t01.請求摘要 = t01trn.請求摘要; t01.請求消費税 = (int)(t01trn.請求消費税 == null ? 0 : t01trn.請求消費税); t01.支払割増1 = (int)(t01trn.支払割増1 == null ? 0 : t01trn.支払割増1); t01.支払割増2 = (int)(t01trn.支払割増2 == null ? 0 : t01trn.支払割増2); t01.支払消費税 = (int)(t01trn.支払消費税 == null ? 0 : t01trn.支払消費税); t01.水揚金額 = (int)(t01trn.水揚金額 == null ? 0 : t01trn.水揚金額); t01.社内備考ID = t01trn.社内備考ID; t01.社内備考 = t01trn.社内備考; t01.入力者ID = 担当者ID; t01.確認名称区分 = p確認名称区分; context.T01_TRN.ApplyChanges(t01); } context.SaveChanges(); tran.Complete(); } } return(p明細番号); }
public List <TKS19010_Member2> TKS19010_GetData(string p車輌From, string p車輌To, int?[] p車輌List, string s車輌List, string p作成締日, string p作成年, string p作成月, DateTime p集計期間From, DateTime p集計期間To) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { try { DateTime d作成年月; DateTime Wk; d作成年月 = DateTime.TryParse(p作成年 + "/" + p作成月 + "/" + 01, out Wk) ? Wk : DateTime.Today; int p作成年月; if (p作成月.Length == 1) { p作成年月 = AppCommon.IntParse(p作成年 + "0" + p作成月); } else { p作成年月 = AppCommon.IntParse(p作成年 + p作成月); } //日付格納LIST List <TKS19010_Member_day> retList_day = new List <TKS19010_Member_day>(); DateTime d日付 = DateTime.TryParse(p集計期間From.ToString(), out Wk) ? Wk :DateTime.Today; //日付、曜日計算処理 for (int i = 0; d日付 <= p集計期間To; d日付 = d日付.AddDays(1)) { retList_day.Add(new TKS19010_Member_day() { 日付 = d日付, 曜日 = ("日月火水木金土").Substring(AppCommon.IntParse(d日付.DayOfWeek.ToString("d")), 1) + "曜", }); } // List<TKS19010_Member1> retList = new List<TKS19010_Member1>(); context.Connection.Open(); //try //{ #region 集計 var query = (from rday in retList_day from m05 in context.M05_CAR.Where(q => q.削除日付 == null) join m17 in context.M17_CYSN.Where(q => q.年月 == p作成年月) on m05.車輌KEY equals m17.車輌KEY into m17Group join t01 in context.T01_TRN.Where(t01 => ((t01.入力区分 != 3) || (t01.入力区分 == 3 && t01.明細行 == 1))) on new { a = rday.日付, b = m05.車輌KEY } equals new { a = t01.請求日付, b = (int)(t01.車輌KEY == null ? 0 : t01.車輌KEY) } into t01Group //from t01g in t01Group.DefaultIfEmpty() orderby m05.車輌ID, rday.日付 select new TKS19010_Member1 { 日付 = rday.日付, 車輌ID = m05.車輌ID, 車輌名 = m05.車輌番号, 日計 = (t01Group.Sum(q => q.売上金額) == null ? 0 : t01Group.Sum(q => q.売上金額)) + (t01Group.Sum(q => q.請求割増1) == null ? 0 : t01Group.Sum(q => q.請求割増1)) + (t01Group.Sum(q => q.請求割増2) == null ? 0 : t01Group.Sum(q => q.請求割増2)), 予算 = m17Group.Select(q => q.売上予算).FirstOrDefault(), //コードFrom = p車輌From, //コードTo = p車輌To, //ピックアップ指定 = s車輌List, //開始日付 = p集計期間From, //終了日付 = p集計期間To, //年月 = d作成年月, }).AsQueryable(); var carlet = (from q in query group q by q.車輌ID into qGroup select new TKS19010_Let { 車輌ID = qGroup.Key, 合計 = qGroup.Sum(q => q.日計), }).AsQueryable(); query = (from q in query let bb = from b in carlet where b.合計 != 0 select b.車輌ID where bb.Contains(q.車輌ID) select new TKS19010_Member1 { 日付 = q.日付, 車輌ID = q.車輌ID, 車輌名 = q.車輌名, 日計 = q.日計, 予算 = q.予算, }).AsQueryable(); var query2 = (from rday in retList_day join t01 in context.T01_TRN.Where(t01 => ((t01.入力区分 != 3) || (t01.入力区分 == 3 && t01.明細行 == 1))) on new { a = rday.日付 } equals new { a = t01.請求日付 } into t01Group //from t01g in t01Group.DefaultIfEmpty() orderby rday.日付 select new TKS19010_Member1 { 日付 = rday.日付, 車輌ID = 0, 車輌名 = "全車輌", 日計 = (t01Group.Sum(q => q.売上金額) == null ? 0 : t01Group.Sum(q => q.売上金額)) + (t01Group.Sum(q => q.請求割増1) == null ? 0 : t01Group.Sum(q => q.請求割増1)) + (t01Group.Sum(q => q.請求割増2) == null ? 0 : t01Group.Sum(q => q.請求割増2)), 予算 = context.M17_CYSN.Where(q => q.年月 == p作成年月).Any() == false ? 0 : context.M17_CYSN.Where(q => q.年月 == p作成年月).Sum(q => q.売上予算), //コードFrom = p車輌From, //コードTo = p車輌To, //ピックアップ指定 = s車輌List, //開始日付 = p集計期間From, //終了日付 = p集計期間To, //年月 = d作成年月, }).AsQueryable(); var query3 = query; //車輌From処理 Min値 if (!string.IsNullOrEmpty(p車輌From)) { int i車輌From = AppCommon.IntParse(p車輌From); query = query.Where(c => c.車輌ID >= i車輌From); } //車輌To処理 Max値 if (!string.IsNullOrEmpty(p車輌To)) { int i車輌TO = AppCommon.IntParse(p車輌To); query = query.Where(c => c.車輌ID <= i車輌TO); } if (p車輌List.Length > 0) { if ((string.IsNullOrEmpty(p車輌From)) && (string.IsNullOrEmpty(p車輌To))) { query = query3.Where(q => p車輌List.Contains(q.車輌ID)); } else { query = query.Union(query3.Where(q => p車輌List.Contains(q.車輌ID))); } } query = query.Distinct(); query3 = query.Union(query2).OrderBy(q => q.車輌ID).ThenBy(q => q.日付); //var query3 = query.OrderBy(q => q.車輌ID).ThenBy(q => q.日付); var query4 = query3.ToList(); int m17code = 0; decimal Ruikei = 0; foreach (var Lst in query4) { if (m17code != Lst.車輌ID) { Ruikei = 0; m17code = Lst.車輌ID; } Ruikei += Lst.日計; Lst.累計 = Ruikei; Lst.予算残 = Lst.予算 - Ruikei; Lst.達成率 = Lst.予算 == 0 ? 0 : Math.Round((Ruikei / Lst.予算 * 100), 1, MidpointRounding.AwayFromZero); } ; #endregion //TKS19010_DATASET dset = new TKS19010_DATASET() //{ // 売上構成グラフ = query1, // 得意先上位グラフ = query2, // 傭車先上位グラフ = query3, // 損益分岐点グラフ = query4, //}; var bumid = (from que in query4 group que by new { que.車輌ID } into queGroup select new TKS19010_Member1() { 車輌ID = queGroup.Key.車輌ID, }).AsQueryable(); List <TKS19010_Member2> retList = new List <TKS19010_Member2>(); int cnt = 0; int?bumid1 = null, bumid2 = null, bumid3 = null, bumid4 = null; foreach (var id in bumid) { switch (cnt) { case 0: bumid1 = id.車輌ID; break; case 1: bumid2 = id.車輌ID; break; case 2: bumid3 = id.車輌ID; break; //case 3: // bumid4 = id.車輌ID; // break; } cnt += 1; if (cnt >= 3) { var q1 = query4.Where(q => q.車輌ID == bumid1); var q2 = query4.Where(q => q.車輌ID == bumid2); var q3 = query4.Where(q => q.車輌ID == bumid3); var q4 = query4.Where(q => q.車輌ID == bumid4); foreach (var row in q1) { TKS19010_Member2 list = new TKS19010_Member2() { 日付 = row.日付, 車輌ID1 = row.車輌ID, 車輌名1 = row.車輌名, 日計1 = row.日計, 累計1 = row.累計, 予算残1 = row.予算残, 達成率1 = row.達成率, 予算1 = row.予算, 車輌ID2 = q2.Where(q => q.日付 == row.日付).Select(q => q.車輌ID).FirstOrDefault(), 車輌名2 = q2.Where(q => q.日付 == row.日付).Select(q => q.車輌名).FirstOrDefault(), 日計2 = q2.Where(q => q.日付 == row.日付).Select(q => q.日計).FirstOrDefault(), 累計2 = q2.Where(q => q.日付 == row.日付).Select(q => q.累計).FirstOrDefault(), 予算残2 = q2.Where(q => q.日付 == row.日付).Select(q => q.予算残).FirstOrDefault(), 達成率2 = q2.Where(q => q.日付 == row.日付).Select(q => q.達成率).FirstOrDefault(), 予算2 = q2.Where(q => q.日付 == row.日付).Select(q => q.予算).FirstOrDefault(), 車輌ID3 = q3.Where(q => q.日付 == row.日付).Select(q => q.車輌ID).FirstOrDefault(), 車輌名3 = q3.Where(q => q.日付 == row.日付).Select(q => q.車輌名).FirstOrDefault(), 日計3 = q3.Where(q => q.日付 == row.日付).Select(q => q.日計).FirstOrDefault(), 累計3 = q3.Where(q => q.日付 == row.日付).Select(q => q.累計).FirstOrDefault(), 予算残3 = q3.Where(q => q.日付 == row.日付).Select(q => q.予算残).FirstOrDefault(), 達成率3 = q3.Where(q => q.日付 == row.日付).Select(q => q.達成率).FirstOrDefault(), 予算3 = q3.Where(q => q.日付 == row.日付).Select(q => q.予算).FirstOrDefault(), コードFrom = p車輌From, コードTo = p車輌To, ピックアップ指定 = s車輌List, 開始年月日 = p集計期間From, 終了年月日 = p集計期間To, 年月 = d作成年月, }; retList.Add(list); } cnt = 0; bumid1 = null; bumid2 = null; bumid3 = null; bumid4 = null; } } //余り分があれば if (cnt > 0) { var q1 = query4.Where(q => q.車輌ID == bumid1); var q2 = query4.Where(q => q.車輌ID == bumid2); var q3 = query4.Where(q => q.車輌ID == bumid3); var q4 = query4.Where(q => q.車輌ID == bumid4); foreach (var row in q1) { TKS19010_Member2 list = new TKS19010_Member2() { 日付 = row.日付, 車輌ID1 = row.車輌ID, 車輌名1 = row.車輌名, 日計1 = row.日計, 累計1 = row.累計, 予算残1 = row.予算残, 達成率1 = row.達成率, 予算1 = row.予算, 車輌ID2 = q2.Where(q => q.日付 == row.日付).Select(q => q.車輌ID).FirstOrDefault(), 車輌名2 = q2.Where(q => q.日付 == row.日付).Select(q => q.車輌名).FirstOrDefault(), 日計2 = q2.Where(q => q.日付 == row.日付).Select(q => q.日計).FirstOrDefault(), 累計2 = q2.Where(q => q.日付 == row.日付).Select(q => q.累計).FirstOrDefault(), 予算残2 = q2.Where(q => q.日付 == row.日付).Select(q => q.予算残).FirstOrDefault(), 達成率2 = q2.Where(q => q.日付 == row.日付).Select(q => q.達成率).FirstOrDefault(), 予算2 = q2.Where(q => q.日付 == row.日付).Select(q => q.予算).FirstOrDefault(), 車輌ID3 = q3.Where(q => q.日付 == row.日付).Select(q => q.車輌ID).FirstOrDefault(), 車輌名3 = q3.Where(q => q.日付 == row.日付).Select(q => q.車輌名).FirstOrDefault(), 日計3 = q3.Where(q => q.日付 == row.日付).Select(q => q.日計).FirstOrDefault(), 累計3 = q3.Where(q => q.日付 == row.日付).Select(q => q.累計).FirstOrDefault(), 予算残3 = q3.Where(q => q.日付 == row.日付).Select(q => q.予算残).FirstOrDefault(), 達成率3 = q3.Where(q => q.日付 == row.日付).Select(q => q.達成率).FirstOrDefault(), 予算3 = q3.Where(q => q.日付 == row.日付).Select(q => q.予算).FirstOrDefault(), コードFrom = p車輌From, コードTo = p車輌To, ピックアップ指定 = s車輌List, 開始年月日 = p集計期間From, 終了年月日 = p集計期間To, 年月 = d作成年月, }; retList.Add(list); } } return(retList); } catch (Exception ex) { throw ex; } } }
/// <summary> /// 対象年月日の棚卸更新の実行済み確認、棚卸入力確認を行う /// </summary> /// <param name="pMyCompany">会社コード</param> /// <param name="pStocktakingDate">棚卸日</param> /// <param name="pParamDic">パラメータ辞書</param> /// <returns></returns> public bool IsCheckRegistered(int pMyCompany, string pStocktakingDate, Dictionary <string, string> pParamDic) { DateTime dteStocktaking = DateTime.Parse(pStocktakingDate); using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { // 在庫テーブルのデータが棚卸更新済みかチェック // --------------------------- // 情報取得 // --------------------------- // 更新済棚卸在庫情報(品番マスタ,倉庫マスタ) var 更新済棚卸在庫List = GetStockTakingList(context, pMyCompany, pStocktakingDate, pParamDic, 1); var 在庫List = GetStockList(context, pMyCompany, pStocktakingDate, pParamDic); var stocktakingList = 更新済棚卸在庫List.Union(在庫List, new ParameterComparer()); #region 入力項目による絞込 // 自社品番の条件チェック string myProduct = pParamDic["自社品番"]; if (string.IsNullOrEmpty(myProduct) == false) { stocktakingList = stocktakingList.Where(w => w.自社品番 == myProduct); } // 品名の条件チェック string productName = pParamDic["自社品名"]; if (string.IsNullOrEmpty(productName) == false) { stocktakingList = stocktakingList.Where(w => w.自社品名 != null && w.自社品名.Contains(productName)); } // 商品分類の条件チェック int itemType; if (int.TryParse(pParamDic["商品分類"], out itemType) == true) { if (itemType >= CommonConstants.商品分類.食品.GetHashCode()) { stocktakingList = stocktakingList.Where(w => w.商品分類 == itemType); } } // ブランドの条件チェック string brand = pParamDic["ブランドコード"]; if (string.IsNullOrEmpty(brand) == false) { stocktakingList = stocktakingList.Where(w => w.ブランド == brand); } // シリーズの条件チェック string series = pParamDic["シリーズコード"]; if (string.IsNullOrEmpty(series) == false) { stocktakingList = stocktakingList.Where(w => w.シリーズ == series); } #endregion // --------------------------- // チェック処理 // --------------------------- bool retResult = stocktakingList.Count() > 0 && stocktakingList.All(c => c.更新済みFLG == 1); return(retResult); } }
public List <TKS19010_Member1> TKS19010_GetData_CSV(string p車輌From, string p車輌To, int?[] p車輌List, string s車輌List, string p作成締日, string p作成年, string p作成月, DateTime p集計期間From, DateTime p集計期間To) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { try { DateTime d作成年月; DateTime Wk; d作成年月 = DateTime.TryParse(p作成年 + "/" + p作成月 + "/" + 01, out Wk) ? Wk : DateTime.Today; int p作成年月; if (p作成月.Length == 1) { p作成年月 = AppCommon.IntParse(p作成年 + "0" + p作成月); } else { p作成年月 = AppCommon.IntParse(p作成年 + p作成月); } //日付格納LIST List <TKS19010_Member_day> retList_day = new List <TKS19010_Member_day>(); DateTime d日付 = DateTime.TryParse(p集計期間From.ToString(), out Wk) ? Wk : DateTime.Today; //日付、曜日計算処理 for (int i = 0; d日付 <= p集計期間To; d日付 = d日付.AddDays(1)) { retList_day.Add(new TKS19010_Member_day() { 日付 = d日付, 曜日 = ("日月火水木金土").Substring(AppCommon.IntParse(d日付.DayOfWeek.ToString("d")), 1) + "曜", }); } // List<TKS19010_Member1> retList = new List<TKS19010_Member1>(); context.Connection.Open(); //try //{ #region 集計 var query = (from rday in retList_day from m05 in context.M05_CAR.Where(q => q.削除日付 == null) join m17 in context.M17_CYSN.Where(q => q.年月 == p作成年月) on m05.車輌KEY equals m17.車輌KEY into m17Group join t01 in context.T01_TRN.Where(t01 => ((t01.入力区分 != 3) || (t01.入力区分 == 3 && t01.明細行 == 1))) on new { a = rday.日付, b = m05.車輌KEY } equals new { a = t01.請求日付, b = (int)(t01.車輌KEY == null ? 0 : t01.車輌KEY) } into t01Group //from t01g in t01Group.DefaultIfEmpty() orderby m05.車輌ID, rday.日付 select new TKS19010_Member1 { 日付 = rday.日付, 車輌ID = m05.車輌ID, 車輌名 = m05.車輌番号, 日計 = (t01Group.Sum(q => q.売上金額) == null ? 0 : t01Group.Sum(q => q.売上金額)) + (t01Group.Sum(q => q.請求割増1) == null ? 0 : t01Group.Sum(q => q.請求割増1)) + (t01Group.Sum(q => q.請求割増2) == null ? 0 : t01Group.Sum(q => q.請求割増2)), 予算 = m17Group.Select(q => q.売上予算).FirstOrDefault(), //コードFrom = p車輌From, //コードTo = p車輌To, //ピックアップ指定 = s車輌List, //開始日付 = p集計期間From, //終了日付 = p集計期間To, //年月 = d作成年月, }).AsQueryable(); var carlet = (from q in query group q by q.車輌ID into qGroup select new TKS19010_Let { 車輌ID = qGroup.Key, 合計 = qGroup.Sum(q => q.日計), }).AsQueryable(); query = (from q in query let bb = from b in carlet where b.合計 != 0 select b.車輌ID where bb.Contains(q.車輌ID) select new TKS19010_Member1 { 日付 = q.日付, 車輌ID = q.車輌ID, 車輌名 = q.車輌名, 日計 = q.日計, 予算 = q.予算, }).AsQueryable(); var query2 = (from rday in retList_day join t01 in context.T01_TRN.Where(t01 => ((t01.入力区分 != 3) || (t01.入力区分 == 3 && t01.明細行 == 1))) on new { a = rday.日付 } equals new { a = t01.請求日付 } into t01Group //from t01g in t01Group.DefaultIfEmpty() orderby rday.日付 select new TKS19010_Member1 { 日付 = rday.日付, 車輌ID = 0, 車輌名 = "全車輌", 日計 = (t01Group.Sum(q => q.売上金額) == null ? 0 : t01Group.Sum(q => q.売上金額)) + (t01Group.Sum(q => q.請求割増1) == null ? 0 : t01Group.Sum(q => q.請求割増1)) + (t01Group.Sum(q => q.請求割増2) == null ? 0 : t01Group.Sum(q => q.請求割増2)), 予算 = context.M17_CYSN.Where(q => q.年月 == p作成年月).Any() == false ? 0 : context.M17_CYSN.Where(q => q.年月 == p作成年月).Sum(q => q.売上予算), //コードFrom = p車輌From, //コードTo = p車輌To, //ピックアップ指定 = s車輌List, //開始日付 = p集計期間From, //終了日付 = p集計期間To, //年月 = d作成年月, }).AsQueryable(); var query3 = query; //車輌From処理 Min値 if (!string.IsNullOrEmpty(p車輌From)) { int i車輌From = AppCommon.IntParse(p車輌From); query = query.Where(c => c.車輌ID >= i車輌From); } //車輌To処理 Max値 if (!string.IsNullOrEmpty(p車輌To)) { int i車輌TO = AppCommon.IntParse(p車輌To); query = query.Where(c => c.車輌ID <= i車輌TO); } if (p車輌List.Length > 0) { if ((string.IsNullOrEmpty(p車輌From)) && (string.IsNullOrEmpty(p車輌To))) { query = query3.Where(q => p車輌List.Contains(q.車輌ID)); } else { query = query.Union(query3.Where(q => p車輌List.Contains(q.車輌ID))); } } query = query.Distinct(); query3 = query.Union(query2).OrderBy(q => q.車輌ID).ThenBy(q => q.日付); //var query3 = query.OrderBy(q => q.車輌ID).ThenBy(q => q.日付); var query4 = query3.ToList(); int m17code = 0; decimal Ruikei = 0; foreach (var Lst in query4) { if (m17code != Lst.車輌ID) { Ruikei = 0; m17code = Lst.車輌ID; } Ruikei += Lst.日計; Lst.累計 = Ruikei; Lst.予算残 = Lst.予算 - Ruikei; Lst.達成率 = Lst.予算 == 0 ? 0 : Math.Round((Ruikei / Lst.予算 * 100), 1, MidpointRounding.AwayFromZero); } ; #endregion return(query4); } catch (Exception ex) { throw ex; } } }
/// <summary> /// S13_DRVSBの更新 変動項目更新 /// </summary> /// <param name="s13SBdrvs">S13_DRVSB_Member</param> public void Update_Hendo(S13_DRV_Member s13drv, List <S13_DRVSB_Member> s13SBHen, List <S13_DRVSB_Member> s13SBJin, List <S13_DRVSB_Member> s13SBKotei) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { // トランザクションのインスタンス化(開始) using (var tran = new TransactionScope()) { context.Connection.Open(); var ret = (from x in context.S13_DRVSB where x.乗務員KEY == s13drv.乗務員KEY && x.集計年月 == s13drv.集計年月 select x).ToList(); foreach (var rec1 in ret) { context.DeleteObject(rec1); } foreach (S13_DRVSB_Member ddt in s13SBHen) { var dat = new S13_DRVSB() { 乗務員KEY = ddt.乗務員KEY, 集計年月 = ddt.集計年月, 経費項目ID = ddt.経費項目ID, 登録日時 = ddt.登録日時, 更新日時 = DateTime.Now, 経費項目名 = ddt.経費項目名, 固定変動区分 = ddt.固定変動区分, 金額 = ddt.金額, }; context.S13_DRVSB.ApplyChanges(dat); } foreach (S13_DRVSB_Member ddt in s13SBJin) { var dat = new S13_DRVSB() { 乗務員KEY = ddt.乗務員KEY, 集計年月 = ddt.集計年月, 経費項目ID = ddt.経費項目ID, 登録日時 = ddt.登録日時, 更新日時 = DateTime.Now, 経費項目名 = ddt.経費項目名, 固定変動区分 = ddt.固定変動区分, 金額 = ddt.金額, }; context.S13_DRVSB.ApplyChanges(dat); } foreach (S13_DRVSB_Member ddt in s13SBKotei) { var dat = new S13_DRVSB() { 乗務員KEY = ddt.乗務員KEY, 集計年月 = ddt.集計年月, 経費項目ID = ddt.経費項目ID, 登録日時 = ddt.登録日時, 更新日時 = DateTime.Now, 経費項目名 = ddt.経費項目名, 固定変動区分 = ddt.固定変動区分, 金額 = ddt.金額, }; context.S13_DRVSB.ApplyChanges(dat); } context.SaveChanges(); tran.Complete(); } } }
public List <SRY10010_Member> SRY10010_GetDataList(string s車輌From, string s車輌To, int?[] i車輌List, string s車輌List, DateTime d集計期間From, DateTime d集計期間To) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { string 車輌指定ピックアップ = string.Empty; int i集計期間From = AppCommon.IntParse(d集計期間From.ToString("yyyyMM")); int i集計期間To = AppCommon.IntParse(d集計期間To.ToString("yyyyMM")); List <SRY10010_Member> retList = new List <SRY10010_Member>(); context.Connection.Open(); try { //var 車輌自社締日 = (from m87 in context.M87_CNTL.Where(m87 => m87.管理ID == 1) // select new {m87.車輌自社締日}).ToList(); ////int iSime = AppCommon.IntParse(車輌自社締日[0].車輌自社締日.ToString()); //iSime += 1; //if ((iSime) >= 32) //{ // iSime = 1; //} //if (iSime.ToString().Length == 1){ // if (!DateTime.TryParse(d集計期間From.ToString("yyyy/MM/0") + iSime.ToString(), out d集計期間From)) // { // return retList; // } //} //else //{ // if (!DateTime.TryParse(d集計期間From.ToString("yyyy/MM/") + iSime.ToString(), out d集計期間From)) // { // return retList; // } //} //var time = (from s14 in context.V_S14_CAR.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) // select new SRY10010_jikan // { // KEY = s14.車輌KEY, // コード = (from m05 in context.M05_CAR.Where(c => c.車輌KEY == s14.車輌KEY) select m05.車輌ID).FirstOrDefault(), // 拘束時間 = s14.拘束時間, // }).ToList(); //List<SRY10010_jikan> time2 = new List<SRY10010_jikan>(); //foreach (var rec in time) //{ // // 各時間項目の時分を、分に変換する。 // rec.拘束時間 = LinqSub.時間TO分(rec.拘束時間); // time2.Add(rec); //} var query2 = (from s14sb in context.S14_CARSB join m07 in context.M07_KEI on s14sb.経費項目ID equals m07.経費項目ID into m07Group select new { s14sb.金額, s14sb.経費項目ID, s14sb.経費項目名, s14sb.固定変動区分, s14sb.更新日時, s14sb.車輌KEY, s14sb.集計年月, s14sb.登録日時, m07Group.FirstOrDefault().経費区分 } ); var query = (from m05 in context.M05_CAR.Where(m05 => m05.削除日付 == null) join m04 in context.M04_DRV on m05.乗務員KEY equals m04.乗務員KEY into m04Group join s14 in context.V_S14_CAR.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) on m05.車輌KEY equals s14.車輌KEY into s14Group join s14sb in query2.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) on m05.車輌KEY equals s14sb.車輌KEY into s14sbGroup select new SRY10010_Member { コード = m05.車輌ID, 車輌番号 = m05.車輌番号, 廃車日 = m05.廃車日, 乗務員名 = m04Group.FirstOrDefault().乗務員名, 収入日数 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round(s14Group.Sum(c => c.運送収入) / s14Group.Sum(c => c.稼動日数), 0), 収入時間 = (s14Group.Sum(c => c.拘束時間)) == 0 ? 0 : Math.Round((s14Group.Sum(c => c.運送収入)) / (decimal)((s14Group.Sum(c => c.拘束時間)) / 60), 0), 収入KM = s14Group.Sum(c => c.走行KM) == 0 ? 0 : Math.Round(s14Group.Sum(c => c.運送収入) / s14Group.Sum(c => c.走行KM), 0), 収入屯数 = s14Group.Sum(c => c.輸送屯数) == 0 ? 0 : Math.Round(s14Group.Sum(c => c.運送収入) / s14Group.Sum(c => c.輸送屯数), 0), 固定費日数 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round(s14sbGroup.Where(c => c.固定変動区分 == 0).Sum(c => c.金額) / s14Group.Sum(c => c.稼動日数), 0), 動費KM = s14Group.Sum(c => c.走行KM) == 0 ? 0 : Math.Round(s14sbGroup.Where(c => c.固定変動区分 == 1).Sum(c => c.金額) / s14Group.Sum(c => c.走行KM), 0), 修理日数 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round(s14sbGroup.Where(c => c.経費項目ID == s14sbGroup.Where(d => d.経費区分 == 5).Min(d => d.経費項目ID)).Sum(c => c.金額) / s14Group.Sum(c => c.稼動日数), 0), 修理KM = s14Group.Sum(c => c.走行KM) == 0 ? 0 : Math.Round(s14sbGroup.Where(c => c.経費項目ID == s14sbGroup.Where(d => d.経費区分 == 5).Min(d => d.経費項目ID)).Sum(c => c.金額) / s14Group.Sum(c => c.走行KM), 0), 益日数 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round((s14Group.Sum(c => c.運送収入) - s14sbGroup.Sum(c => c.金額)) / s14Group.Sum(c => c.稼動日数), 0), 益KM = s14Group.Sum(c => c.走行KM) == 0 ? 0 : Math.Round((s14Group.Sum(c => c.運送収入) - s14sbGroup.Sum(c => c.金額)) / s14Group.Sum(c => c.走行KM), 0), 稼働率 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round((decimal)(s14Group.Sum(c => c.拘束時間) / (s14Group.Sum(c => c.稼動日数) * 1440)), 2), //稼働率 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : (s14Group.Sum(c => c.稼動日数) * 1440), 集計年月From = d集計期間From, 集計年月To = d集計期間To, コードFrom = s車輌From, コードTo = s車輌To, 車輌List = 車輌指定ピックアップ == "" ? "無" : 車輌指定ピックアップ }).AsQueryable(); //foreach (SRY10010_Member row in query) //{ // foreach (SRY10010_jikan row2 in time2) // { // if (row.コード == row2.コード) // { // row.稼働率 = row.稼働率 == null ? 0 : row.稼働率 == 0 ? 0 : Math.Round((decimal)row2.拘束時間 / (decimal)row.稼働率, MidpointRounding.AwayFromZero); // } // } //} query = query.Distinct(); int i車輌FROM; int i車輌TO; //部門From処理 Min値 if (!string.IsNullOrEmpty(s車輌From)) { i車輌FROM = AppCommon.IntParse(s車輌From); } else { i車輌FROM = int.MinValue; } //部門To処理 Max値 if (!string.IsNullOrEmpty(s車輌To)) { i車輌TO = AppCommon.IntParse(s車輌To); } else { i車輌TO = int.MaxValue; } var intCause = i車輌List; if (string.IsNullOrEmpty(s車輌From + s車輌To)) { if (i車輌List.Length > 0) { query = query.Where(q => intCause.Contains(q.コード)); } } else { if (i車輌List.Length > 0) { query = query.Where(q => intCause.Contains(q.コード) || (q.コード >= i車輌FROM && q.コード <= i車輌TO)); } else { query = query.Where(q => (q.コード >= i車輌FROM && q.コード <= i車輌TO)); } } if (i車輌List.Length > 0) { for (int Count = 0; Count < query.Count(); Count++) { 車輌指定ピックアップ = 車輌指定ピックアップ + i車輌List[Count].ToString(); if (Count < i車輌List.Length) { if (Count == i車輌List.Length - 1) { break; } 車輌指定ピックアップ = 車輌指定ピックアップ + ","; } if (i車輌List.Length == 1) { break; } } } query = query.Distinct(); retList = query.Where(c => c.廃車日 == null || ((((DateTime)c.廃車日).Year * 100 + ((DateTime)c.廃車日).Month) >= i集計期間From)).ToList(); //retList = query.ToList(); return(retList); } catch (Exception ex) { throw ex; } } }
/// <summary> /// 納品書印刷データ取得 /// </summary> /// <param name="param"></param> /// <returns></returns> //20190919 mod-s CB 軽減税率対応 ccfg.自社区分 が 0の場合は現状のまま 1の場合はT02_URHDの会社名コードとccfg.自社コードが一致す //public List<PrintoutMember> GetPrintData(string 売上日From, string 売上日To, string 得意先コード, string 得意先枝番, string 伝票番号From, string 伝票番号To) public List <PrintoutMember> GetPrintData( string 売上日From, string 売上日To, string 得意先コード, string 得意先枝番, string 伝票番号From, string 伝票番号To, int?自社コード) //20190919 mod-e CB 軽減税率対応 { List <PrintoutMember> result = new List <PrintoutMember>(); // パラメータの型変換 DateTime dateVal; int iVal; if (string.IsNullOrEmpty(売上日From)) { dateVal = DateTime.MinValue; } else if (!DateTime.TryParse(売上日From, out dateVal)) { throw new Exception("必須パラメータ不足"); } DateTime DateFrom = dateVal; if (string.IsNullOrEmpty(売上日To)) { dateVal = DateTime.MaxValue; } else if (!DateTime.TryParse(売上日To, out dateVal)) { throw new Exception("必須パラメータ不足"); } DateTime DateTo = dateVal; int?code = int.TryParse(得意先コード, out iVal) ? iVal : (int?)null; int?eda = int.TryParse(得意先枝番, out iVal) ? iVal : (int?)null; int?denFrom = int.TryParse(伝票番号From, out iVal) ? iVal : (int?)null; int?denTo = int.TryParse(伝票番号To, out iVal) ? iVal : (int?)null; using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { // ヘッダ情報取得 var urhdList = context.T02_URHD .Where(w => w.削除日時 == null && w.売上日 >= DateFrom && w.売上日 <= DateTo); // 入力パラメータによるデータ絞込み if (code != null && eda != null) { urhdList = urhdList.Where(w => w.得意先コード == code && w.得意先枝番 == eda); } else if (code != null) { urhdList = urhdList.Where(w => w.得意先コード == code); } if (denFrom != null) { urhdList = urhdList.Where(w => w.伝票番号 >= denFrom); } if (denTo != null) { urhdList = urhdList.Where(w => w.伝票番号 <= denTo); } //20190919 add-s CB 軽減税率対応 //ccfg.自社区分 が 0の場合は現状のままccfg.自社区分が1の場合は、 //T02_URHDの会社名コードとccfg.自社コードが一致する if (自社コード != null) { urhdList = urhdList.Where(w => w.会社名コード == 自社コード); } //20190919 add-e CB 軽減税率対応 foreach (T02_URHD hdRow in urhdList.ToList()) { PrintoutMember prtMem = new PrintoutMember(); var Tok = context.M01_TOK .Where(w => w.削除日時 == null && w.取引先コード == hdRow.得意先コード && w.枝番 == hdRow.得意先枝番) .FirstOrDefault(); var jis_nusi = context.M70_JIS .Where(w => w.削除日時 == null && w.自社コード == hdRow.出荷元コード) .FirstOrDefault(); var jis_jisya = context.M70_JIS .Where(w => w.削除日時 == null && w.自社コード == hdRow.会社名コード) .FirstOrDefault(); var syukS = context.M01_TOK .Where(w => w.削除日時 == null && w.取引先コード == hdRow.出荷先コード && w.枝番 == hdRow.出荷先枝番) .FirstOrDefault(); var syukM = context.M01_TOK .Where(w => w.削除日時 == null && w.取引先コード == hdRow.出荷元コード && w.枝番 == hdRow.出荷元枝番) .FirstOrDefault(); // ヘッダ情報を設定 setPrintHeaderData(prtMem, hdRow, Tok, jis_nusi, jis_jisya, syukS, syukM); // 納品書明細情報データを作成 var urdtlList = context.T02_URDTL.Where(w => w.削除日時 == null && w.伝票番号 == hdRow.伝票番号) .GroupJoin(context.M09_HIN.Where(w => w.削除日時 == null), x => x.品番コード, y => y.品番コード, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { URDTL = a.x, HIN = b }) .GroupJoin(context.M10_TOKHIN.Where(w => w.削除日時 == null), x => new { 品番 = x.URDTL.品番コード, 得意先 = hdRow.得意先コード, 枝番 = hdRow.得意先枝番 }, // No-174 Mod y => new { 品番 = y.品番コード, 得意先 = y.取引先コード, 枝番 = y.枝番 }, // No-174 Mod (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (c, d) => new { c.x.URDTL, c.x.HIN, TOKHIN = d }) .Select(x => new DetailExtension { 行番号 = x.URDTL.行番号, // No-174 Add 品番 = x.HIN.自社品番, 得意先品番 = x.TOKHIN == null ? string.Empty : x.TOKHIN.得意先品番コード, 品名 = !string.IsNullOrEmpty(x.URDTL.自社品名) ? x.URDTL.自社品名 : x.HIN.自社品名, // No.389 Mod 数量 = x.URDTL.数量, 単位 = x.URDTL.単位, 単価 = x.URDTL.単価, 金額 = x.URDTL.金額, //20190902 CB add & mod-s //摘要 = x.URDTL.摘要 摘要 = x.URDTL.摘要, 消費税区分 = x.HIN.消費税区分 //20190902 CB add & mod-e }); //// 得意先品番(自社品番)の数量集計データを作成 //var query = // urdtlList.GroupBy(g => new { g.得意先品番, g.単価 }) // .Select(x => new DetailExtension // { // 品番 = x.Key.得意先品番, // 得意先品番 = string.Empty, // 品名 = x.FirstOrDefault().品名, // 数量 = x.Sum(s => s.数量), // 単位 = x.FirstOrDefault().単位, // 単価 = x.Sum(s => s.単価), // 金額 = x.Sum(s => s.金額), // //20190902 add & mod-s CB軽減税率対応 // //摘要 = x.FirstOrDefault().摘要 // 摘要 = x.FirstOrDefault().摘要, // 消費税区分 = x.FirstOrDefault().消費税区分 // //20190902 add & mod-e CB軽減税率対応 // }); // 納品書(下部)のデータ設定 int rowNum = 1; foreach (DetailExtension dtlRow in urdtlList.OrderBy(o => o.行番号)) // No-174 Mod { setPrintNouhinData(prtMem, dtlRow, rowNum); rowNum++; } // 納品書(上部)のデータ設定 rowNum = 1; foreach (DetailExtension dtlRow in urdtlList.OrderBy(o => o.行番号)) // No-174 Mod { setPrintDetailData(prtMem, dtlRow, rowNum); rowNum++; } result.Add(prtMem); } } return(result); }
public List <SRY10010_Member_CSV> SRY10010_GetData_CSV(string s車輌From, string s車輌To, int?[] i車輌List, string s車輌List, DateTime d集計期間From, DateTime d集計期間To) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { int i集計期間From = AppCommon.IntParse(d集計期間From.ToString("yyyyMM")); int i集計期間To = AppCommon.IntParse(d集計期間To.ToString("yyyyMM")); List <SRY10010_Member_CSV> retList = new List <SRY10010_Member_CSV>(); context.Connection.Open(); try { //var 車輌自社締日 = (from m87 in context.M87_CNTL.Where(m87 => m87.管理ID == 1) // select new {m87.車輌自社締日}).ToList(); ////int iSime = AppCommon.IntParse(車輌自社締日[0].車輌自社締日.ToString()); //iSime += 1; //if ((iSime) >= 32) //{ // iSime = 1; //} //if (iSime.ToString().Length == 1){ // if (!DateTime.TryParse(d集計期間From.ToString("yyyy/MM/0") + iSime.ToString(), out d集計期間From)) // { // return retList; // } //} //else //{ // if (!DateTime.TryParse(d集計期間From.ToString("yyyy/MM/") + iSime.ToString(), out d集計期間From)) // { // return retList; // } //} var query2 = (from s14sb in context.S14_CARSB join m07 in context.M07_KEI on s14sb.経費項目ID equals m07.経費項目ID into m07Group select new { s14sb.金額, s14sb.経費項目ID, s14sb.経費項目名, s14sb.固定変動区分, s14sb.更新日時, s14sb.車輌KEY, s14sb.集計年月, s14sb.登録日時, m07Group.FirstOrDefault().経費区分 } ); var query = (from m05 in context.M05_CAR.Where(m05 => m05.削除日付 == null) join m04 in context.M04_DRV on m05.乗務員KEY equals m04.乗務員KEY into m04Group join s14 in context.V_S14_CAR.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) on m05.車輌KEY equals s14.車輌KEY into s14Group join s14sb in query2.Where(c => c.集計年月 >= i集計期間From && c.集計年月 <= i集計期間To) on m05.車輌KEY equals s14sb.車輌KEY into s14sbGroup select new SRY10010_Member_CSV { コード = m05.車輌ID, 車輌番号 = m05.車輌番号, 廃車日 = m05.廃車日, 乗務員名 = m04Group.FirstOrDefault().乗務員名, 収入日数 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round(s14Group.Sum(c => c.運送収入) / s14Group.Sum(c => c.稼動日数), 0), 収入時間 = (s14Group.Sum(c => c.拘束時間) * 60) == 0 ? 0 : Math.Round((s14Group.Sum(c => c.運送収入)) / (decimal)((s14Group.Sum(c => c.拘束時間)) / 60), 0), 収入KM = s14Group.Sum(c => c.走行KM) == 0 ? 0 : Math.Round(s14Group.Sum(c => c.運送収入) / s14Group.Sum(c => c.走行KM), 0), 収入屯数 = s14Group.Sum(c => c.輸送屯数) == 0 ? 0 : Math.Round(s14Group.Sum(c => c.運送収入) / s14Group.Sum(c => c.輸送屯数), 0), 固定費日数 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round(s14sbGroup.Where(c => c.固定変動区分 == 0).Sum(c => c.金額) / s14Group.Sum(c => c.稼動日数), 0), 動費KM = s14Group.Sum(c => c.走行KM) == 0 ? 0 : Math.Round(s14sbGroup.Where(c => c.固定変動区分 == 1).Sum(c => c.金額) / s14Group.Sum(c => c.走行KM), 0), 修理日数 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round(s14sbGroup.Where(c => c.経費項目ID == s14sbGroup.Where(d => d.経費区分 == 5).Min(d => d.経費項目ID)).Sum(c => c.金額) / s14Group.Sum(c => c.稼動日数), 0), 修理KM = s14Group.Sum(c => c.走行KM) == 0 ? 0 : Math.Round(s14sbGroup.Where(c => c.経費項目ID == s14sbGroup.Where(d => d.経費区分 == 5).Min(d => d.経費項目ID)).Sum(c => c.金額) / s14Group.Sum(c => c.走行KM), 0), 益日数 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round((s14Group.Sum(c => c.運送収入) - s14sbGroup.Sum(c => c.金額)) / s14Group.Sum(c => c.稼動日数), 0), 益KM = s14Group.Sum(c => c.走行KM) == 0 ? 0 : Math.Round((s14Group.Sum(c => c.運送収入) - s14sbGroup.Sum(c => c.金額)) / s14Group.Sum(c => c.走行KM), 0), 稼働率 = s14Group.Sum(c => c.稼動日数) == 0 ? 0 : Math.Round((decimal)(s14Group.Sum(c => c.拘束時間) / (s14Group.Sum(c => c.稼動日数) * 1440)), 2), }).AsQueryable(); query = query.Distinct(); int i車輌FROM; int i車輌TO; //部門From処理 Min値 if (!string.IsNullOrEmpty(s車輌From)) { i車輌FROM = AppCommon.IntParse(s車輌From); } else { i車輌FROM = int.MinValue; } //部門To処理 Max値 if (!string.IsNullOrEmpty(s車輌To)) { i車輌TO = AppCommon.IntParse(s車輌To); } else { i車輌TO = int.MaxValue; } var intCause = i車輌List; if (string.IsNullOrEmpty(s車輌From + s車輌To)) { if (i車輌List.Length > 0) { query = query.Where(q => intCause.Contains(q.コード)); } } else { if (i車輌List.Length > 0) { query = query.Where(q => intCause.Contains(q.コード) || (q.コード >= i車輌FROM && q.コード <= i車輌TO)); } else { query = query.Where(q => (q.コード >= i車輌FROM && q.コード <= i車輌TO)); } } query = query.Distinct(); retList = query.Where(c => c.廃車日 == null || ((((DateTime)c.廃車日).Year * 100 + ((DateTime)c.廃車日).Month) >= i集計期間From)).ToList(); return(retList); } catch (Exception ex) { throw ex; } } }
/// <summary> /// JMI02010 印刷 /// </summary> /// <param name="p商品ID">乗務員コード</param> /// <returns>T01</returns> public List <JMI02010_Member_CSV> GetDataList_CSV(string p乗務員From, string p乗務員To, int?[] i乗務員List, int p作成締日, DateTime d集計期間From, DateTime d集計期間To, int p作成年度) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { DataTable tbl = new DataTable(); List <JMI02010_Member_CSV> retList = new List <JMI02010_Member_CSV>(); ////テストリスト型LINQ組込テスト //List<JMI> retList2 = new List<JMI>(); //retList2.Add(new JMI() { 日付 = DateTime.Now, day=1 }); context.Connection.Open(); ////テストリスト型LINQ組込テスト //var querymtest = (from m07 in context.M07_KEI // from rr2 in retList2 // select new JMI02010_M07 // { // 経費ID = m07.経費項目ID, // 経費名 = m07.経費項目名, // }).ToList(); //全件表示 var querym07 = (from m07 in context.M07_KEI select new JMI02010_M07 { 経費ID = m07.経費項目ID, 経費名 = m07.経費項目名, }).ToList(); var querywhere = querym07.Where(x => x.経費ID == 601).ToList(); string KEI1 = querywhere[0].経費名.ToString(); querywhere = querym07.Where(x => x.経費ID == 602).ToList(); string KEI2 = querywhere[0].経費名.ToString(); querywhere = querym07.Where(x => x.経費ID == 603).ToList(); string KEI3 = querywhere[0].経費名.ToString(); querywhere = querym07.Where(x => x.経費ID == 604).ToList(); string KEI4 = querywhere[0].経費名.ToString(); querywhere = querym07.Where(x => x.経費ID == 605).ToList(); string KEI5 = querywhere[0].経費名.ToString(); querywhere = querym07.Where(x => x.経費ID == 606).ToList(); string KEI6 = querywhere[0].経費名.ToString(); querywhere = querym07.Where(x => x.経費ID == 607).ToList(); string KEI7 = querywhere[0].経費名.ToString(); var query = (from t02 in context.T02_UTRN.Where(x => x.勤務開始日 >= d集計期間From && x.勤務開始日 <= d集計期間To) join m04 in context.M04_DRV on t02.乗務員KEY equals m04.乗務員KEY join t01 in context.T01_TRN.Where(t01 => t01.入力区分 != 3 || (t01.入力区分 == 3 && t01.明細行 != 1)) on t02.明細番号 equals t01.明細番号 into t01Group join t03 in context.T03_KTRN on t02.明細番号 equals t03.明細番号 into t03Group select new JMI02010_Member_CSV { 出庫 = t02.勤務開始日, 帰庫 = t02.勤務終了日, 車番 = t02.車輌番号, 社内金額 = t01Group.Where(order => order.支払先KEY == null).Sum(order => order.支払金額) == null ? 0 : t01Group.Where(order => order.支払先KEY == null).Sum(order => order.支払金額), 経費1 = t03Group.Where(order2 => order2.経費項目ID == 601 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 601 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費2 = t03Group.Where(order2 => order2.経費項目ID == 602 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 602 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費3 = t03Group.Where(order2 => order2.経費項目ID == 603 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 603 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費4 = t03Group.Where(order2 => order2.経費項目ID == 604 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 604 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費5 = t03Group.Where(order2 => order2.経費項目ID == 605 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 605 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費6 = t03Group.Where(order2 => order2.経費項目ID == 606 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 606 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費7 = t03Group.Where(order2 => order2.経費項目ID == 607 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 607 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), その他経費 = t03Group.Where(order2 => order2.経費項目ID != 601 && order2.経費項目ID != 602 && order2.経費項目ID != 603 && order2.経費項目ID != 604 && order2.経費項目ID != 605 && order2.経費項目ID != 606 && order2.経費項目ID != 607 && order2.経費項目ID != 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID != 601 && order2.経費項目ID != 602 && order2.経費項目ID != 603 && order2.経費項目ID != 604 && order2.経費項目ID != 605 && order2.経費項目ID != 606 && order2.経費項目ID != 607 && order2.経費項目ID != 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 燃料L数 = t03Group.Where(order2 => order2.経費項目ID == 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.数量) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.数量), 燃料代 = t03Group.Where(order2 => order2.経費項目ID == 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 走行KM = t02.走行KM == null ? 0 : t02.走行KM, 歩合率 = m04.歩合率 == null ? 0 : m04.歩合率, 歩合金額 = 0, コード = m04.乗務員ID, 乗務員名 = m04.乗務員名, 期間From = d集計期間From, 期間To = d集計期間To, }).AsQueryable(); if (!(string.IsNullOrEmpty(p乗務員From + p乗務員To) && i乗務員List.Length == 0)) { //乗務員が検索対象に入っていない時全データ取得 if (string.IsNullOrEmpty(p乗務員From + p乗務員To)) { query = query.Where(c => c.コード >= int.MaxValue); } //乗務員From処理 Min値 if (!string.IsNullOrEmpty(p乗務員From)) { int i乗務員FROM = AppCommon.IntParse(p乗務員From); query = query.Where(c => c.コード >= i乗務員FROM); } //乗務員To処理 Max値 if (!string.IsNullOrEmpty(p乗務員To)) { int i乗務員TO = AppCommon.IntParse(p乗務員To); query = query.Where(c => c.コード <= i乗務員TO); } if (i乗務員List.Length > 0) { var intCause = i乗務員List; query = query.Union(from t02 in context.T02_UTRN.Where(x => x.勤務開始日 >= d集計期間From && x.勤務開始日 <= d集計期間To) join m04 in context.M04_DRV on t02.乗務員KEY equals m04.乗務員KEY join t01 in context.T01_TRN.Where(t01 => t01.入力区分 != 3 || (t01.入力区分 == 3 && t01.明細行 != 1)) on t02.明細番号 equals t01.明細番号 into t01Group join t03 in context.T03_KTRN on t02.明細番号 equals t03.明細番号 into t03Group where intCause.Contains(m04.乗務員ID) select new JMI02010_Member_CSV { 出庫 = t02.勤務開始日, 帰庫 = t02.勤務終了日, 車番 = t02.車輌番号, 社内金額 = t01Group.Where(order => order.支払先KEY == null).Sum(order => order.支払金額) == null ? 0 : t01Group.Where(order => order.支払先KEY == null).Sum(order => order.支払金額), 経費1 = t03Group.Where(order2 => order2.経費項目ID == 601 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 601 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費2 = t03Group.Where(order2 => order2.経費項目ID == 602 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 602 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費3 = t03Group.Where(order2 => order2.経費項目ID == 603 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 603 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費4 = t03Group.Where(order2 => order2.経費項目ID == 604 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 604 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費5 = t03Group.Where(order2 => order2.経費項目ID == 605 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 605 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費6 = t03Group.Where(order2 => order2.経費項目ID == 606 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 606 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 経費7 = t03Group.Where(order2 => order2.経費項目ID == 607 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 607 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), その他経費 = t03Group.Where(order2 => order2.経費項目ID != 601 && order2.経費項目ID != 602 && order2.経費項目ID != 603 && order2.経費項目ID != 604 && order2.経費項目ID != 605 && order2.経費項目ID != 606 && order2.経費項目ID != 607 && order2.経費項目ID != 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID != 601 && order2.経費項目ID != 602 && order2.経費項目ID != 603 && order2.経費項目ID != 604 && order2.経費項目ID != 605 && order2.経費項目ID != 606 && order2.経費項目ID != 607 && order2.経費項目ID != 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 燃料L数 = t03Group.Where(order2 => order2.経費項目ID == 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.数量) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.数量), 燃料代 = t03Group.Where(order2 => order2.経費項目ID == 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額) == null ? 0 : t03Group.Where(order2 => order2.経費項目ID == 401 && order2.乗務員KEY == t02.乗務員KEY).Sum(order2 => order2.金額), 走行KM = t02.走行KM == null ? 0 : t02.走行KM, 歩合率 = m04.歩合率 == null ? 0 : m04.歩合率, 歩合金額 = 0, コード = m04.乗務員ID, 乗務員名 = m04.乗務員名, 期間From = d集計期間From, 期間To = d集計期間To, }); } else { query = query.Where(c => c.コード > int.MinValue && c.コード < int.MaxValue); } } query = query.Distinct(); //結果をリスト化 retList = query.ToList(); retList = (retList.OrderBy(a => a.コード).ThenBy(a => a.出庫)).ToList(); //retList = (from q in retList orderby q.コード, q.出庫 select q); return(retList); } }
/// <summary> /// NNG06010 印刷 /// </summary> /// <param name="p商品ID">部門コード</param> /// <returns>T01</returns> public List <NNG06010_Member_CSV> GetDataList_CSV(string p部門From, string p部門To, int?[] i部門List, int p作成締日, DateTime d集計期間From, DateTime d集計期間To, string p作成年度, string s部門List, int i表示順) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { List <NNG06010_Member_CSV> retList = new List <NNG06010_Member_CSV>(); context.Connection.Open(); int[] lst; lst = (from m71 in context.M71_BUM let t01l = from t01 in context.T01_TRN.Where(t01 => (t01.請求日付 >= d集計期間From && t01.請求日付 <= d集計期間To) && (t01.入力区分 != 3 || (t01.入力区分 == 3 && t01.明細行 == 1))) select t01.自社部門ID where t01l.Contains(m71.自社部門ID) select m71.自社部門ID).ToArray(); var query = (from m71 in context.M71_BUM join t01 in context.T01_TRN.Where(t01 => (t01.請求日付 >= d集計期間From && t01.請求日付 <= d集計期間To) && (t01.入力区分 != 3 || (t01.入力区分 == 3 && t01.明細行 == 1))) on m71.自社部門ID equals t01.自社部門ID into t01Group where t01Group.Where(t01 => t01.自社部門ID == m71.自社部門ID).Any() == true select new NNG06010_Member_CSV { コード = m71.自社部門ID, 部門名 = m71.自社部門名, 売上金額 = t01Group.Sum(t01 => t01.売上金額) == null ? 0 : t01Group.Sum(t01 => t01.売上金額), 割増1 = t01Group.Sum(t01 => t01.請求割増1) == null ? 0 : t01Group.Sum(t01 => t01.請求割増1), 割増2 = t01Group.Sum(t01 => t01.請求割増2) == null ? 0 : t01Group.Sum(t01 => t01.請求割増2), 通行料 = t01Group.Sum(t01 => t01.通行料) == null ? 0 : t01Group.Sum(t01 => t01.通行料), 売上合計 = t01Group.Sum(t01 => t01.売上金額 + t01.請求割増1 + t01.請求割増2 + t01.通行料) == null ? 0 : t01Group.Sum(t01 => t01.売上金額 + t01.請求割増1 + t01.請求割増2 + t01.通行料), 傭車使用売上 = t01Group.Where(t01gr => t01gr.支払先KEY > 0).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2 + t01gr.通行料), 支払金額 = t01Group.Where(t01gr => t01gr.支払先KEY > 0).Sum(t01gr => t01gr.支払金額), 支払通行料 = t01Group.Where(t01gr => t01gr.支払先KEY > 0).Sum(t01gr => t01gr.支払通行料), 差益 = t01Group.Where(t01gr => t01gr.支払先KEY > 0).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2 + t01gr.通行料 - t01gr.支払金額 - t01gr.支払通行料), 差益率 = t01Group.Where(t01gr => t01gr.支払先KEY > 0).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2 + t01gr.通行料) == 0 ? 0 : Math.Round((decimal)t01Group.Where(t01gr => t01gr.支払先KEY > 0).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2 + t01gr.通行料 - t01gr.支払金額 - t01gr.支払通行料) / t01Group.Where(t01gr => t01gr.支払先KEY > 0).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2 + t01gr.通行料), 2), 件数 = t01Group.Count(), 未定件数 = t01Group.Count(t01gr => t01gr.売上未定区分 == 1), かな読み = m71.かな読み, }).AsQueryable(); int i部門FROM; int i部門TO; //部門From処理 Min値 if (!string.IsNullOrEmpty(p部門From)) { i部門FROM = AppCommon.IntParse(p部門From); } else { i部門FROM = int.MinValue; } //部門To処理 Max値 if (!string.IsNullOrEmpty(p部門To)) { i部門TO = AppCommon.IntParse(p部門To); } else { i部門TO = int.MaxValue; } var intCause = i部門List; if (string.IsNullOrEmpty(p部門From + p部門To)) { if (i部門List.Length > 0) { query = query.Where(q => intCause.Contains(q.コード)); } } else { if (i部門List.Length > 0) { query = query.Where(q => intCause.Contains(q.コード) || (q.コード >= i部門FROM && q.コード <= i部門TO)); } else { query = query.Where(q => (q.コード >= i部門FROM && q.コード <= i部門TO)); } } //表示順序処理 switch (i表示順) { case 0: query = query.OrderBy(c => c.コード); break; case 1: query = query.OrderBy(c => c.かな読み); break; case 2: query = query.OrderByDescending(c => c.売上金額); break; } //結果をリスト化 query = query.Distinct(); retList = query.ToList(); return(retList); } }
/// <summary> /// 在庫数チェックを行う /// </summary> /// <param name="strStoreHouseCode">倉庫コード</param> /// <param name="ds">データセット</param> /// <param name="intUserId">ユーザID</param> /// <returns></returns> public Dictionary <int, string> CheckStockQty(string strStoreHouseCode, DataSet ds, int intUserId) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { Dictionary <int, string> resultDic = new Dictionary <int, string>(); DataRow hdRow = ds.Tables[TABLE_HEADER].Rows[0]; DataRow outDtRow = ds.Tables[SYUKO_TABLE_DETAIL].Rows[0]; DataRow inDtRow = ds.Tables[NYUKO_TABLE_DETAIL].Rows[0]; // 入荷先から対象の倉庫を取得 Common com = new Common(); int intSouk = int.Parse(strStoreHouseCode); // 出庫在庫チェック T05_IDODTL outRow = convertDataRowToT05_IDODTL_Entity(outDtRow); T05_IDODTL inRow = convertDataRowToT05_IDODTL_Entity(inDtRow); decimal sNowStockQty = 0; decimal outStockQty = 0; decimal preOutStockQty = 0; // 数量のみ変更する場合、前回数量を加味する if (CheckSameValue(hdRow, "出荷元倉庫コード") && CheckSameValue(outDtRow, "賞味期限") && CheckSameValue(outDtRow, "品番コード")) { preOutStockQty = ParseNumeric <decimal>(outDtRow["数量", DataRowVersion.Original]); } outStockQty = outRow.数量 - preOutStockQty; if (!com.CheckStokItemQty(intSouk, outRow.品番コード, outRow.賞味期限, out sNowStockQty, outStockQty)) { // キー:行番号、値:エラーメッセージ resultDic.Add(outRow.行番号, string.Format("出庫の在庫数が不足しています。(現在庫数:{0:#,0.##})", sNowStockQty)); } // 在庫を減らす場合,入庫在庫チェック(編集時) if (hdRow.RowState == DataRowState.Modified || inDtRow.RowState == DataRowState.Modified) { int org倉庫コード = ParseNumeric <int>(hdRow["出荷先倉庫コード", DataRowVersion.Original]); int org品番コード = ParseNumeric <int>(inDtRow["品番コード", DataRowVersion.Original]); DateTime?org賞味期限 = inDtRow["賞味期限", DataRowVersion.Original] != null && string.IsNullOrEmpty(inDtRow["賞味期限", DataRowVersion.Original].ToString()) ? org賞味期限 = null : org賞味期限 = DateTime.Parse(inDtRow["賞味期限", DataRowVersion.Original].ToString()); decimal inStockQty = 0; decimal preInStockQty = 0; // 数量のみ変更する場合、前回数量を加味する if (CheckSameValue(hdRow, "出荷先倉庫コード") && CheckSameValue(inDtRow, "賞味期限") && CheckSameValue(inDtRow, "品番コード")) { preInStockQty = ParseNumeric <decimal>(outDtRow["数量", DataRowVersion.Original]); } inStockQty = preInStockQty - inRow.数量; decimal nNowStockQty = 0; if (inStockQty > 0 && !com.CheckStokItemQty(org倉庫コード, org品番コード, org賞味期限, out nNowStockQty, inStockQty)) { // キー:行番号、値:エラーメッセージ resultDic.Add(inRow.行番号, string.Format("入庫の在庫数が不足しています。(現在庫数:{0:#,0.##})", nNowStockQty)); } } return(resultDic); } }
/// <summary> /// (日別)集計情報を取得する /// </summary> /// <param name="paramDic"></param> /// <returns></returns> public List <BSK04010_PrintMember_Day> GetPrintList_Day(Dictionary <string, string> paramDic) { // 検索パラメータ展開 int year, uriageKind, createType; int? company, staffCd, customerCd, customerEd; DateTime?startYm, endYm, createYm; getFormParams(paramDic, out year, out company, out staffCd, out customerCd, out customerEd, out startYm, out endYm, out createYm, out uriageKind, out createType); using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); // 対象とする取引区分を設定 List <int> kbnList = new List <int>(); if (uriageKind == (int)売上先.得意先) { kbnList.Add((int)CommonConstants.取引区分.得意先); kbnList.Add((int)CommonConstants.取引区分.相殺); } else if (uriageKind == (int)売上先.販社) { kbnList.Add((int)CommonConstants.取引区分.販社); } else { kbnList.Add((int)CommonConstants.取引区分.得意先); kbnList.Add((int)CommonConstants.取引区分.相殺); kbnList.Add((int)CommonConstants.取引区分.販社); } var tokList = context.M01_TOK.Where(w => w.削除日時 == null && kbnList.Contains(w.取引区分)); #region 条件絞り込み // 自社が指定されていれば条件追加 if (company != null) { var jis = context.M70_JIS.Where(w => w.自社コード == company).FirstOrDefault(); tokList = tokList.Where(w => w.担当会社コード == jis.自社コード); } // 担当者が指定されていれば条件追加 if (staffCd != null) { tokList = tokList.Where(w => w.T担当者コード == staffCd); } // 取引先が指定されていれば条件追加 if (customerCd != null && customerEd != null) { tokList = tokList.Where(w => w.取引先コード == customerCd && w.枝番 == customerEd); } if (customerCd != null && customerEd == null) { tokList = tokList.Where(w => w.取引先コード == customerCd); } #endregion // 集計用得意先情報を作成(速度改善のため) List <TOK_INFO> tokInfoList = getTokInfo(context, tokList); // 得意先毎に集計を実施 List <BSK04010_PrintMember_Day> resultList = new List <BSK04010_PrintMember_Day>(); foreach (TOK_INFO tok in tokInfoList) { // 日単位で集計データを取得 List <TallyMember> TallyList; // 売上先:得意先 if (tok.取引区分 == (int)CommonConstants.取引区分.得意先 || tok.取引区分 == (int)CommonConstants.取引区分.相殺) { TallyList = getDayAggregateData(context, tok, createYm); } // 売上先:販社 else { TallyList = getDayAggregateData_HAN(context, tok, createYm); } // 日単位の集計が終わったらプリントクラスに設定 // 印字用データ作成 BSK04010_PrintMember_Day printData; printData = setPrintListDay(TallyList); // 作成区分(売上ありのみ)が指定されている場合 if (createType == (int)作成区分.売上ありのみ) { if (printData.集計合計額 != 0) { resultList.Add(printData); } } else { resultList.Add(printData); } } // データリストを集計して構成比を作成 decimal total = Convert.ToDecimal(resultList.Sum(t => t.集計合計額)); // 合計がゼロとなるデータは出力対象外とする //if (total == 0) //return new List<BSK04010_PrintMember_Day>(); // 自社コード・担当者ID毎の合計を算出 var grpTotal = resultList.AsEnumerable() .GroupBy(g => new { g.自社コード, g.担当者ID }) .Select(s => new 担当者別集計合計 { 自社コード = s.Key.自社コード, 担当者コード = s.Key.担当者ID, 担当者別集計合計額 = s.Sum(m => m.集計合計額) }); // 構成比を計算 resultList = resultList.AsEnumerable() .GroupJoin(grpTotal, x => new { jis = x.自社コード, tnt = x.担当者ID }, y => new { jis = y.自社コード, tnt = y.担当者コード }, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { RET = a.x, CALC = b }) .GroupBy(g => new { g.RET.自社コード, g.RET.自社名, g.RET.担当者ID, g.RET.担当者名, g.RET.得意先コード, g.RET.得意先名, g.CALC.担当者別集計合計額 }) .Select(s => new BSK04010_PrintMember_Day { 自社コード = s.Key.自社コード, 自社名 = s.Key.自社名, 担当者ID = s.Key.担当者ID, 担当者名 = s.Key.担当者名, 得意先コード = s.Key.得意先コード, 得意先名 = s.Key.得意先名, 集計売上額01 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額01) / 1000), 集計売上額02 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額02) / 1000), 集計売上額03 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額03) / 1000), 集計売上額04 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額04) / 1000), 集計売上額05 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額05) / 1000), 集計売上額06 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額06) / 1000), 集計売上額07 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額07) / 1000), 集計売上額08 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額08) / 1000), 集計売上額09 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額09) / 1000), 集計売上額10 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額10) / 1000), 集計売上額11 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額11) / 1000), 集計売上額12 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額12) / 1000), 集計売上額13 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額13) / 1000), 集計売上額14 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額14) / 1000), 集計売上額15 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額15) / 1000), 集計売上額16 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額16) / 1000), 集計売上額17 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額17) / 1000), 集計売上額18 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額18) / 1000), 集計売上額19 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額19) / 1000), 集計売上額20 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額20) / 1000), 集計売上額21 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額21) / 1000), 集計売上額22 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額22) / 1000), 集計売上額23 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額23) / 1000), 集計売上額24 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額24) / 1000), 集計売上額25 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額25) / 1000), 集計売上額26 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額26) / 1000), 集計売上額27 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額27) / 1000), 集計売上額28 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額28) / 1000), 集計売上額29 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額29) / 1000), 集計売上額30 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額30) / 1000), 集計売上額31 = (long)Math.Floor((double)s.Sum(m => m.RET.集計売上額31) / 1000), 集計合計額 = (long)Math.Floor((double)s.Sum(m => m.RET.集計合計額) / 1000), 構成比率 = s.Key.担当者別集計合計額 != 0 ? Math.Round( Decimal.Divide(s.Sum(m => m.RET.集計合計額), s.Key.担当者別集計合計額) * 100, 2) : 0 }) .OrderBy(o => o.自社コード).ThenBy(o => o.担当者ID).ThenBy(o => o.得意先コード) .ToList(); return(resultList); } }
public List <SRY19010_Member> SRY19010_GetDataHinList(string s車輌From, string s車輌To, int?[] i車輌List, int p年月, int p前月, int p前年, int i表示順序, string s車輌List) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { string s作成年月; s作成年月 = p年月.ToString().Substring(0, 4) + "年" + p年月.ToString().Substring(4, 2) + "月度"; List <SRY19010_Member> retList = new List <SRY19010_Member>(); context.Connection.Open(); try { string 車輌ピックアップ指定 = string.Empty; var ZENGETU = (from s14c in context.S14_CAR where s14c.集計年月 == p前月 select new SRY19010g_Member { 車輌Key = s14c.車輌KEY, 燃費 = s14c.燃料L == 0 ? 0 : Math.Round((decimal)((s14c.走行KM / s14c.燃料L)), 2), 走行KM = s14c.走行KM, 燃料L = s14c.燃料L, }).AsQueryable(); var ZENNEN = (from s14c in context.S14_CAR where s14c.集計年月 == p前年 select new SRY19010g_Member { 車輌Key = s14c.車輌KEY, 燃費 = s14c.燃料L == 0 ? 0 : Math.Round((decimal)((s14c.走行KM / s14c.燃料L)), 2), 走行KM = s14c.走行KM, 燃料L = s14c.燃料L, }).AsQueryable(); var query = (from m05 in context.M05_CAR.Where(c => c.廃車区分 == 0 && c.削除日付 == null) from m04 in context.M04_DRV.Where(c => c.削除日付 == null && c.乗務員KEY == m05.乗務員KEY).DefaultIfEmpty() from s14 in context.S14_CAR.Where(c => c.集計年月 == p年月 && c.車輌KEY == m05.車輌KEY) from s14sb in context.S14_CARSB.Where(c => c.集計年月 == p年月 && c.車輌KEY == m05.車輌KEY && c.経費項目ID == 401).DefaultIfEmpty() from zengetu in ZENGETU.Where(c => c.車輌Key == m05.車輌KEY).DefaultIfEmpty() from zennen in ZENNEN.Where(c => c.車輌Key == m05.車輌KEY).DefaultIfEmpty() select new SRY19010_Member { 車輌ID = m05.車輌KEY, 車輌番号 = m05.車輌番号, 乗務員名 = m04.乗務員名, 日数 = s14.稼動日数 == null ? 0 : s14.稼動日数, 運賃 = s14.運送収入 == null ? 0 : s14.運送収入, 壱日当り = s14.稼動日数 == null ? 0 : s14.稼動日数 == 0 ? 0 : Math.Round((decimal)((s14.運送収入 / s14.稼動日数)), 0), 輸送屯数 = s14.輸送屯数 == null ? 0 : s14.輸送屯数, 走行KM = s14.走行KM == null ? 0 : s14.走行KM, 実車KM = s14.実車KM == null ? 0 : s14.実車KM, 燃料L = s14.燃料L == null ? 0 : s14.燃料L, 燃費 = s14.燃料L == null ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14.走行KM / s14.燃料L)), 2), 燃料代 = s14sb.金額 == null ? 0 : s14sb.金額, 前月燃費 = zengetu.燃費 == null ? 0 : zengetu.燃費, 前月対比 = zengetu.燃費 == null ? 0 : zengetu.燃費 == 0 ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14.走行KM / s14.燃料L) / zengetu.燃費), 0), 前月燃費差益 = zengetu.燃費 == null ? 0 : zengetu.燃費 == 0 ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14sb.金額 / s14.燃料L) * (s14.走行KM / zengetu.燃費)), 0), 前月走行KM = zengetu.走行KM == null ? 0 : zengetu.走行KM, 前月燃料L = zengetu.燃料L == null ? 0 : zengetu.燃料L, 前年燃費 = zennen.燃費 == null ? 0 : zennen.燃費, 前年対比 = zennen.燃費 == null ? 0 : zennen.燃費 == 0 ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14.走行KM / s14.燃料L) / zennen.燃費), 0), 前年燃費差益 = zennen.燃費 == null ? 0 : zennen.燃費 == 0 ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14sb.金額 / s14.燃料L) * (s14.走行KM / zennen.燃費)), 0), 前年走行KM = zennen.走行KM == null ? 0 : zennen.走行KM, 前年燃料L = zennen.燃料L == null ? 0 : zennen.燃料L, コードFrom = s車輌From, コードTo = s車輌To, 車輌ピックアップ = s車輌List, 作成年月 = s作成年月, }).AsQueryable(); //***検索条件***// if (!(string.IsNullOrEmpty(s車輌From + s車輌To) && i車輌List.Length == 0)) { //From & ToがNULLだった場合 if (string.IsNullOrEmpty(s車輌From + s車輌To)) { query = query.Where(c => c.車輌ID >= int.MaxValue); } //車輌From処理 Min値 if (!string.IsNullOrEmpty(s車輌From)) { int i車輌From = AppCommon.IntParse(s車輌From); query = query.Where(c => c.車輌ID >= i車輌From); } //車輌To処理 Max値 if (!string.IsNullOrEmpty(s車輌To)) { int i車輌TO = AppCommon.IntParse(s車輌To); query = query.Where(c => c.車輌ID <= i車輌TO); } if (i車輌List.Length > 0) { var intCause = i車輌List; query = query.Union(from m05 in context.M05_CAR.Where(c => c.廃車区分 == 0 && c.削除日付 == null) from m04 in context.M04_DRV.Where(c => c.削除日付 == null && c.乗務員KEY == m05.乗務員KEY).DefaultIfEmpty() from s14 in context.S14_CAR.Where(c => c.集計年月 == p年月 && c.車輌KEY == m05.車輌KEY) from s14sb in context.S14_CARSB.Where(c => c.集計年月 == p年月 && c.車輌KEY == m05.車輌KEY && c.経費項目ID == 401).DefaultIfEmpty() from zengetu in ZENGETU.Where(c => c.車輌Key == m05.車輌KEY).DefaultIfEmpty() from zennen in ZENNEN.Where(c => c.車輌Key == m05.車輌KEY).DefaultIfEmpty() where intCause.Contains(m05.車輌ID) select new SRY19010_Member { 車輌ID = m05.車輌KEY, 車輌番号 = m05.車輌番号, 乗務員名 = m04.乗務員名, 日数 = s14.稼動日数 == null ? 0 : s14.稼動日数, 運賃 = s14.運送収入 == null ? 0 : s14.運送収入, 壱日当り = s14.稼動日数 == null ? 0 : s14.稼動日数 == 0 ? 0 : Math.Round((decimal)((s14.運送収入 / s14.稼動日数)), 0), 輸送屯数 = s14.輸送屯数 == null ? 0 : s14.輸送屯数, 走行KM = s14.走行KM == null ? 0 : s14.走行KM, 実車KM = s14.実車KM == null ? 0 : s14.実車KM, 燃料L = s14.燃料L == null ? 0 : s14.燃料L, 燃費 = s14.燃料L == null ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14.走行KM / s14.燃料L)), 2), 燃料代 = s14sb.金額 == null ? 0 : s14sb.金額, 前月燃費 = zengetu.燃費 == null ? 0 : zengetu.燃費, 前月対比 = zengetu.燃費 == null ? 0 : zengetu.燃費 == 0 ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14.走行KM / s14.燃料L) / zengetu.燃費), 0), 前月燃費差益 = zengetu.燃費 == null ? 0 : zengetu.燃費 == 0 ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14sb.金額 / s14.燃料L) * (s14.走行KM / zengetu.燃費)), 0), 前月走行KM = zengetu.走行KM == null ? 0 : zengetu.走行KM, 前月燃料L = zengetu.燃料L == null ? 0 : zengetu.燃料L, 前年燃費 = zennen.燃費 == null ? 0 : zennen.燃費, 前年対比 = zennen.燃費 == null ? 0 : zennen.燃費 == 0 ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14.走行KM / s14.燃料L) / zennen.燃費), 0), 前年燃費差益 = zennen.燃費 == null ? 0 : zennen.燃費 == 0 ? 0 : s14.燃料L == 0 ? 0 : Math.Round((decimal)((s14sb.金額 / s14.燃料L) * (s14.走行KM / zennen.燃費)), 0), 前年走行KM = zennen.走行KM == null ? 0 : zennen.走行KM, 前年燃料L = zennen.燃料L == null ? 0 : zennen.燃料L, コードFrom = s車輌From, コードTo = s車輌To, 車輌ピックアップ = s車輌List, 作成年月 = s作成年月, }); } } else { //車輌FromがNullだった場合 if (string.IsNullOrEmpty(s車輌From)) { query = query.Where(c => c.車輌ID >= int.MinValue); } //車輌ToがNullだった場合 if (string.IsNullOrEmpty(s車輌To)) { query = query.Where(c => c.車輌ID <= int.MaxValue); } } //乗務員指定の表示 if (i車輌List.Length > 0) { for (int i = 0; i < query.Count(); i++) { 車輌ピックアップ指定 = 車輌ピックアップ指定 + i車輌List[i].ToString(); if (i < i車輌List.Length) { if (i == i車輌List.Length - 1) { break; } 車輌ピックアップ指定 = 車輌ピックアップ指定 + ","; } if (i車輌List.Length == 1) { break; } } } //表示順序変更 switch (i表示順序) { case 0: //車輌番号昇順 query = query.OrderBy(c => c.車輌ID); break; case 1: query = query.OrderByDescending(c => c.燃料L); break; case 2: //運送収入降順 query = query.OrderByDescending(c => c.燃費); break; } query = query.Where(c => c.日数 != 0 || c.運賃 != 0 || c.壱日当り != 0 || c.輸送屯数 != 0 || c.走行KM != 0 || c.実車KM != 0 || c.燃料L != 0 || c.燃費 != 0 || c.燃料代 != 0); retList = query.ToList(); return(retList); } catch (Exception ex) { throw ex; } } }
/// <summary> /// M74_KGRPの新規追加 /// </summary> /// <param name="M74kgrp">M74_KGRP_Member</param> //public void Insert(M74_KGRP_Member M74kgrp) //{ // using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) // { // context.Connection.Open(); // M74_KGRP m74 = new M74_KGRP(); // m74.グループ権限ID = M74kgrp.グループ権限ID; // m74.登録日時 = M74kgrp.登録日時; // m74.更新日時 = M74kgrp.更新日時; // try // { // // newノエンティティニ対シテハAcceptChangesデ新規追加トナル // context.M74_KGRP.ApplyChanges(m74); // context.SaveChanges(); // } // catch (UpdateException ex) // { // // PKey違反等 // Console.WriteLine(ex); // } // } //} /// <summary> /// M74_KGRPの更新 /// </summary> /// <param name="M74kgrp">M74_KGRP_Member</param> //public void Update(M74_KGRP_Member M74kgrp) //{ // using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) // { // context.Connection.Open(); // //更新行ヲ特定 // var m74 = // context.M74_KGRP // .Where(w => w.グループ権限ID == M74kgrp.グループ権限ID) // .FirstOrDefault(); // m74.グループ権限ID = M74kgrp.グループ権限ID; // m74.登録日時 = M74kgrp.登録日時; // m74.更新日時 = DateTime.Now; // m74.AcceptChanges(); // context.SaveChanges(); // } //} /// <summary> /// M74_KGRPの物理削除 /// </summary> /// <param name="M74kgrp">M74_KGRP_Member</param> //public void Delete(M74_KGRP_Member M74kgrp) //{ // using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) // { // context.Connection.Open(); // // 削除行を特定 // var m74 = // context.M74_KGRP // .Where(w => w.グループ権限ID == M74kgrp.グループ権限ID) // .FirstOrDefault(); // context.DeleteObject(m74); // context.SaveChanges(); // } //} /// <summary> /// 権限マスタの更新 /// 削除→追加(Delete→Insert) /// </summary> /// <param name="M74kgrp"></param> public void UPD_Data(List <M74_KGRP_UPD_Menber> pmM74, int pグループ権限ID, string pM74KGRPName) { using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { context.Connection.Open(); // データ削除 using (var tran = new TransactionScope()) { string sql = string.Empty; sql = string.Format("DELETE M74_KGRP WHERE M74_KGRP.グループ権限ID = {0} ", pグループ権限ID); int count = context.ExecuteStoreCommand(sql); tran.Complete(); } #region 権限グループ名マスタ登録・更新 //var M74Name = (from x in context.M74_KGRP_NAME // where x.グループ権限ID == pグループ権限ID // select x).FirstOrDefault(); var M74Name = context.M74_KGRP_NAME .Where(w => w.グループ権限ID == pグループ権限ID) .FirstOrDefault(); if (M74Name != null) { //Update M74Name.グループ権限名 = pM74KGRPName; M74Name.AcceptChanges(); context.SaveChanges(); } else { //Insert M74_KGRP_NAME m74ins = new M74_KGRP_NAME() { グループ権限ID = pグループ権限ID, グループ権限名 = pM74KGRPName, }; try { // newのエンティティに対してはAcceptChangesで新規追加となる context.M74_KGRP_NAME.ApplyChanges(m74ins); context.SaveChanges(); } catch (UpdateException ex) { // PKey違反等 Console.WriteLine(ex); } } #endregion #region 権限マスタ登録・更新 try { // 新規追加 foreach (M74_KGRP_UPD_Menber mM74 in pmM74) { M74_KGRP m74ins = new M74_KGRP() { グループ権限ID = mM74.グループ権限ID, プログラムID = mM74.プログラムID, タブグループ番号 = mM74.TabID, 使用可能FLG = mM74.使用可能FLG == true ? 1 : 0, データ更新FLG = mM74.データ更新FLG == true ? 1 : 0, 登録日時 = DateTime.Today, 更新日時 = DateTime.Today, 削除日付 = null }; // newのエンティティに対してはAcceptChangesで新規追加となる context.M74_KGRP.ApplyChanges(m74ins); } } catch (UpdateException ex) { // PKey違反等 Console.WriteLine(ex); throw ex; } context.SaveChanges(); #endregion } }