Example #1
0
        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;
                }
            }
        }
Example #2
0
        /// <summary>
        /// 商品在庫残高一覧表情報取得
        /// </summary>
        /// <param name="pMyCompany">画面指定の自社コード</param>
        /// <param name="pDate">締年月</param>
        /// <param name="pParamDic">
        ///  == 検索条件 ==
        ///  自社品番(品番指定検索)
        ///  検索品名(品名Like検索)
        ///  商品分類
        ///  シリーズ
        ///  ブランド
        /// </param>
        /// <param name="pCoefficient">係数</param>
        /// <returns></returns>
        public List <SearchDataMember> GetPrintList(int pMyCompany, string pDate, Dictionary <string, string> pParamDic, decimal pCoefficient)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                try
                {
                    int yearMonth = int.Parse(pDate.Replace("/", ""));

                    // ===========================
                    // 在庫基本情報取得
                    // ===========================
                    // 月次在庫情報取得
                    var stocktakingList =
                        context.S05_STOK_MONTH.Where(w => w.締年月 == yearMonth)
                        .Join(context.M09_HIN.Where(w => w.削除日時 == null),
                              x => x.品番コード,
                              y => y.品番コード,
                              (x, y) => new { STOK_MONTH = x, HIN = y })
                        .Join(context.M22_SOUK.Where(w => w.削除日時 == null &&
                                                     w.場所会社コード == pMyCompany),
                              x => x.STOK_MONTH.庫コード,
                              y => y.庫コード,
                              (x, y) => new { x.STOK_MONTH, x.HIN, SOUK = y })
                        .ToList();

                    #region 入力項目による絞込

                    // 倉庫の条件チェック
                    string Warehouse = pParamDic["倉庫コード"];
                    if (string.IsNullOrEmpty(Warehouse) == false)
                    {
                        stocktakingList = stocktakingList.Where(w => w.STOK_MONTH.庫コード == int.Parse(Warehouse)).ToList();
                    }

                    // 自社品番の条件チェック
                    string myProduct = pParamDic["自社品番"];
                    if (string.IsNullOrEmpty(myProduct) == false)
                    {
                        stocktakingList = stocktakingList.Where(w => w.HIN.自社品番 == myProduct).ToList();
                    }

                    // 品名の条件チェック
                    string productName = pParamDic["自社品名"];
                    if (string.IsNullOrEmpty(productName) == false)
                    {
                        stocktakingList = stocktakingList.Where(w => w.HIN.自社品名 != null && w.HIN.自社品名.Contains(productName)).ToList();
                    }

                    // 商品分類の条件チェック
                    int itemType;
                    if (int.TryParse(pParamDic["商品分類コード"], out itemType) == true)
                    {
                        if (itemType >= CommonConstants.商品分類.食品.GetHashCode())
                        {
                            stocktakingList = stocktakingList.Where(w => w.HIN.商品分類 == itemType).ToList();
                        }
                    }

                    // ブランドの条件チェック
                    string brand = pParamDic["ブランドコード"];
                    if (string.IsNullOrEmpty(brand) == false)
                    {
                        stocktakingList = stocktakingList.Where(w => w.HIN.ブランド == brand).ToList();
                    }

                    // シリーズの条件チェック
                    string series = pParamDic["シリーズコード"];
                    if (string.IsNullOrEmpty(series) == false)
                    {
                        stocktakingList = stocktakingList.Where(w => w.HIN.シリーズ == series).ToList();
                    }

                    #endregion

                    // ===========================
                    // 直近の仕入単価(最少額)を取得
                    // ===========================
                    // 年月末日の取得
                    DateTime dteEndofMonth = getDateEndofMonth(yearMonth);

                    // 品番毎の直近日付を取得する
                    var LatestList =
                        context.T03_SRHD.Where(w => w.削除日時 == null && w.仕入日 < dteEndofMonth)
                        .Join(context.T03_SRDTL.Where(w => w.削除日時 == null),
                              x => x.伝票番号,
                              y => y.伝票番号,
                              (x, y) => new { SHD = x, SDTL = y })
                        .GroupBy(g => new { g.SDTL.品番コード, g.SDTL.賞味期限 })
                        .Select(s => new
                    {
                        品番コード = s.Key.品番コード,
                        賞味期限  = s.Key.賞味期限,
                        仕入日   = s.Max(m => m.SHD.仕入日),
                    })
                        .OrderBy(o => o.品番コード)
                        .ToList();


                    // 直近の仕入単価(最少額)を取得
                    DateTime dteMaxDate = AppCommon.GetMaxDate();

                    var PurchaseList =
                        LatestList
                        .Join(context.T03_SRHD.Where(w => w.削除日時 == null),
                              x => x.仕入日,
                              y => y.仕入日,
                              (x, y) => new { Latest = x, SRHD = y })
                        .Join(context.T03_SRDTL.Where(w => w.削除日時 == null),
                              x => new { dno = x.SRHD.伝票番号, hin = x.Latest.品番コード, date = x.Latest.賞味期限 },
                              y => new { dno = y.伝票番号, hin = y.品番コード, date = y.賞味期限 },
                              (x, y) => new { x.Latest, x.SRHD, SDTL = y })
                        .GroupBy(g => new { g.SDTL.品番コード, g.SDTL.賞味期限 })
                        .Select(s => new SearchDataUnitPrice
                    {
                        品番コード = s.Key.品番コード,
                        賞味期限  = s.Key.賞味期限 ?? dteMaxDate,
                        仕入単価  = s.Min(m => m.SDTL.単価),
                    })
                        .OrderBy(o => o.品番コード)
                        .ToList();

                    // ===========================
                    // 帳票データ取得
                    // ===========================
                    var dataList =
                        stocktakingList
                        .GroupJoin(context.M06_IRO.Where(w => w.削除日時 == null),
                                   x => x.HIN.自社色,
                                   y => y.色コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (a, b) => new { a.x.STOK_MONTH, a.x.HIN, a.x.SOUK, IRO = b })
                        .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                                   x => x.SOUK.寄託会社コード,
                                   y => y.自社コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (c, d) => new { c.x.STOK_MONTH, c.x.HIN, c.x.SOUK, c.x.IRO, JIS = d })
                        .GroupJoin(PurchaseList.Where(w => w.品番コード > 0),
                                   x => new { dno = x.STOK_MONTH.品番コード, date = x.STOK_MONTH.賞味期限 },
                                   y => new { dno = y.品番コード, date = y.賞味期限 },
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (e, f) => new { e.x.STOK_MONTH, e.x.HIN, e.x.SOUK, e.x.IRO, e.x.JIS, Purchase = f })
                        .Select(x => new SearchDataMember
                    {
                        自社コード   = x.JIS.自社コード,
                        自社名     = x.JIS.自社名 ?? "",
                        庫コード    = x.STOK_MONTH.庫コード.ToString(),
                        庫名称     = x.SOUK != null ? x.SOUK.庫略称名 : "",
                        品番コード   = x.STOK_MONTH.品番コード.ToString(),
                        自社品番コード = x.HIN.自社品番,
                        自社色コード  = x.HIN.自社色,
                        品番名称    = x.HIN.自社品名,
                        色名称     = x.IRO != null ? x.IRO.色名称 : "",
                        賞味期限    = AppCommon.GetMaxDate() == x.STOK_MONTH.賞味期限 ? "" : x.STOK_MONTH.賞味期限.ToString("yyyy/MM/dd"),
                        数量      = x.STOK_MONTH.在庫数量,
                        単位      = x.HIN.単位,
                        単価      = (x.Purchase != null ? x.Purchase.仕入単価 : x.HIN.原価 ?? 0) * pCoefficient,
                        金額      = x.STOK_MONTH.在庫数量 * (x.Purchase != null ? x.Purchase.仕入単価 : x.HIN.原価 ?? 0) * pCoefficient
                    })
                        .OrderBy(o => o.自社コード)
                        .ThenBy(t => t.庫コード)
                        .ThenBy(t => t.品番コード)
                        .ThenBy(t => t.自社色コード)
                        .ThenBy(t => t.賞味期限)
                    ;

                    return(dataList.ToList());
                }
                catch (System.ArgumentException agex)
                {
                    throw agex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Example #3
0
        /// <summary>
        /// 請求書印字データを取得する
        /// </summary>
        /// <param name="condition">
        ///  == 検索条件 ==
        ///  自社コード
        ///  作成年月日
        ///  作成年月
        ///  作成締日
        ///  得意先コード
        ///  得意先枝番
        /// </param>
        /// <param name="ds">
        /// [0]請求一覧データ
        /// </param>
        /// <returns></returns>
        public DataSet GetPrintData(Dictionary <string, string> condition, DataSet ds)
        {
            DataSet   dsResult = new DataSet();
            DataTable tbl      = ds.Tables[0];

            // パラメータの型変換
            int      ival;
            int      myCompany   = int.Parse(condition["自社コード"]);
            int      createYM    = int.Parse(condition["作成年月"].Replace("/", ""));
            DateTime printDate   = DateTime.Parse(condition["作成年月日"]);
            int?     closingDate = int.TryParse(condition["作成締日"], out ival) ? ival : (int?)null;
            int?     customerCd  = int.TryParse(condition["得意先コード"], out ival) ? ival : (int?)null;
            int?     customerEda = int.TryParse(condition["得意先枝番"], out ival) ? ival : (int?)null;

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                foreach (DataRow row in tbl.Rows)
                {
                    SearchDataMember mem = getSearchDataMemberRow(row);

                    if (mem.印刷区分 == false)
                    {
                        continue;
                    }

                    // 前月情報を取得
                    DateTime befYearMonth  = new DateTime(createYM / 100, createYM % 100, 1).AddMonths(-1);
                    int      iBefYearMonth = befYearMonth.Year * 100 + befYearMonth.Month;

                    #region 必要情報の取得

                    // 対象の請求ヘッダを取得
                    var seihd =
                        context.S01_SEIHD.Where(w =>
                                                w.自社コード == myCompany &&
                                                w.請求年月 == createYM &&
                                                (w.請求締日 == closingDate || closingDate == null) &&
                                                w.請求先コード == mem.得意先コード &&
                                                w.請求先枝番 == mem.得意先枝番 &&
                                                w.入金日 == mem.入金日 &&
                                                w.回数 == mem.回数)
                        .FirstOrDefault();

                    // 取引先情報を取得
                    var tok =
                        context.M01_TOK.Where(w =>
                                              w.削除日時 == null &&
                                              w.取引先コード == seihd.請求先コード &&
                                              w.枝番 == seihd.請求先枝番)
                        .FirstOrDefault();

                    // 前月の入金日
                    //int befPaymentDate = iBefYearMonth * 100 + tok.T入金日1 ?? 31;

                    // 前月の請求ヘッダを取得
                    var befSeihd =
                        context.S01_SEIHD.Where(w =>
                                                w.自社コード == myCompany &&
                                                w.請求年月 == iBefYearMonth &&
                                                //(w.請求締日 == closingDate || closingDate == null) &&
                                                w.請求先コード == mem.得意先コード &&
                                                w.請求先枝番 == mem.得意先枝番 &&
                                                //w.入金日 == befPaymentDate &&
                                                w.回数 == mem.回数)
                        .OrderByDescending(w => w.請求締日)
                        .ThenByDescending(w => w.回数)
                        .FirstOrDefault();

                    #endregion

                    // 前月の締期間を算出
                    //DateTime befEndDate = AppCommon.GetClosingDate(befYearMonth.Year, befYearMonth.Month, closingDate, 0);
                    //DateTime befStrDate = befEndDate.AddMonths(-1).AddDays(-1);
                    long 前月入金額;
                    // 各入金額を取得する
                    if (befSeihd != null)
                    {
                        前月入金額 = getNyukinData(context, seihd.自社コード, seihd.請求先コード, seihd.請求先枝番, (DateTime)befSeihd.集計開始日, (DateTime)befSeihd.集計最終日);
                    }
                    else
                    {
                        DateTime befEndDate = AppCommon.GetClosingDate(befYearMonth.Year, befYearMonth.Month, closingDate, 0);
                        DateTime befStrDate = befEndDate.AddMonths(-1).AddDays(-1);
                        前月入金額 = getNyukinData(context, seihd.自社コード, seihd.請求先コード, seihd.請求先枝番, befEndDate, befStrDate);
                    }
                    long 今月入金額 = getNyukinData(context, seihd.自社コード, seihd.請求先コード, seihd.請求先枝番, (DateTime)seihd.集計開始日, (DateTime)seihd.集計最終日);

                    #region 帳票ヘッダ情報取得
                    var hdResult =
                        context.S01_SEIHD.Where(w =>
                                                w.自社コード == myCompany &&
                                                w.請求年月 == createYM &&
                                                w.請求締日 == mem.締日 &&
                                                w.請求先コード == mem.得意先コード &&
                                                w.請求先枝番 == mem.得意先枝番 &&
                                                w.入金日 == mem.入金日 &&
                                                w.回数 == mem.回数)
                        .GroupJoin(context.M01_TOK.Where(w => w.削除日時 == null),
                                   x => new { コード = x.請求先コード, 枝番 = x.請求先枝番 },
                                   y => new { コード = y.取引先コード, 枝番 = y.枝番 },
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (a, b) => new { SEIHD = a.x, TOK = b })
                        .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                                   x => x.SEIHD.自社コード,
                                   y => y.自社コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (c, d) => new { c.x.SEIHD, c.x.TOK, JIS = d })
                        .ToList()
                        .Select(x => new PrintHeaderMember
                    {
                        PagingKey = string.Concat(x.SEIHD.請求先コード, "-", x.SEIHD.請求先枝番, "-", x.SEIHD.入金日, ">", x.SEIHD.回数),
                        自社コード     = x.SEIHD.自社コード.ToString(),
                        請求年月      = x.SEIHD.請求年月.ToString(),
                        請求先コード    = x.SEIHD.請求先コード.ToString(),
                        請求先枝番     = x.SEIHD.請求先枝番.ToString(),
                        得意先コード    = string.Format("{0:D4}", x.SEIHD.請求先コード),    // No.223 Mod
                        得意先枝番     = string.Format("{0:D2}", x.SEIHD.請求先枝番),     // No.233 Mod
                        回数        = x.SEIHD.回数,
                        請求年       = x.SEIHD.請求年月 / 100,
                        請求月       = x.SEIHD.請求年月 % 100,
                        請求先郵便番号   = x.TOK.郵便番号,
                        請求先住所1    = x.TOK.住所1,
                        請求先住所2    = x.TOK.住所2,
                        得意先名称     = x.TOK.得意先名1,
                        得意先名称2    = x.TOK.得意先名2,
                        得意先部課名称   = x.TOK.部課名称,
                        自社名称      = x.JIS.自社名,
                        自社郵便番号    = x.JIS.郵便番号,
                        自社住所      = x.JIS.住所1.Trim() + x.JIS.住所2.Trim(),
                        自社TEL     = x.JIS.電話番号,
                        自社FAX     = x.JIS.FAX,
                        締日        = (x.TOK.T締日 >= 31) ? "末" : x.TOK.T締日.ToString(),
                        発行日付      = printDate.ToString("yyyy/MM/dd"),
                        前回請求額     = x.SEIHD.前月残高,

                        //20190906 mod-s CB 軽減税率対応 DB値を設定に変更
                        //今回入金額 = 今月入金額,
                        //繰越残高 = (前月入金額 - (befSeihd != null ? befSeihd.当月請求額 : 0)),
                        今回入金額 = x.SEIHD.入金額,
                        繰越残高  = x.SEIHD.繰越残高,
                        //20190906 mod-e CB 軽減税率対応

                        御買上額  = x.SEIHD.売上額,
                        消費税S  = x.SEIHD.消費税,
                        消費税K  = 0,
                        今回請求額 = x.SEIHD.当月請求額,

                        //20190903 mod&add-s CB 軽減税率対応
                        //振込先 = x.JIS.振込銀行1
                        振込先      = x.JIS.振込銀行1,
                        通常税率対象金額 = x.SEIHD.通常税率対象金額,
                        軽減税率対象金額 = x.SEIHD.軽減税率対象金額,
                        通常税率消費税  = x.SEIHD.通常税率消費税,
                        軽減税率消費税  = x.SEIHD.軽減税率消費税,
                        非税売上額    = x.SEIHD.非税売上額,
                        集計最終日    = x.SEIHD.集計最終日
                                   //20190903 add-e CB 軽減税率対応
                    });
                    #endregion

                    #region 帳票明細情報取得
                    var dtlResult =
                        context.S01_SEIDTL.Where(w =>
                                                 w.自社コード == myCompany &&
                                                 w.請求年月 == createYM &&
                                                 w.請求締日 == mem.締日 &&
                                                 w.請求先コード == mem.得意先コード &&
                                                 w.請求先枝番 == mem.得意先枝番 &&
                                                 w.入金日 == mem.入金日 &&
                                                 w.回数 == mem.回数)
                        .GroupJoin(context.M09_HIN.Where(w => w.削除日時 == null),
                                   x => x.品番コード,
                                   y => y.品番コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (a, b) => new { SDTL = a.x, HIN = b })
                        .GroupJoin(context.M10_TOKHIN.Where(w => w.削除日時 == null && w.取引先コード == mem.得意先コード && w.枝番 == mem.得意先枝番),
                                   x => x.HIN.品番コード,
                                   y => y.品番コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (c, d) => new { c.x.SDTL, c.x.HIN, TOKHIN = d })
                        .ToList()
                        .Select(x => new PrintDetailMember
                    {
                        PagingKey = string.Concat(x.SDTL.請求先コード, "-", x.SDTL.請求先枝番, "-", x.SDTL.入金日, ">", x.SDTL.回数),
                        自社コード     = x.SDTL.自社コード.ToString(),
                        請求年月      = x.SDTL.請求年月.ToString(),
                        請求先コード    = x.SDTL.請求先コード.ToString(),
                        請求先枝番     = x.SDTL.請求先枝番.ToString(),
                        得意先コード    = string.Format("{0:D4}", x.SDTL.請求先コード),         // No.223 Mod
                        得意先枝番     = string.Format("{0:D2}", x.SDTL.請求先枝番),          // No.223 Mod
                        回数        = x.SDTL.回数,

                        伝票番号 = x.SDTL.伝票番号,                      // No-181 Mod
                        売上日  = x.SDTL.売上日.ToString("yyyy/MM/dd"),
                        自社品番 = x.HIN.自社品番,
                        相手品番 = x.TOKHIN == null ? "" : x.TOKHIN.得意先品番コード,
                        品番名称 = !string.IsNullOrEmpty(x.SDTL.自社品名) ? x.SDTL.自社品名 : x.HIN.自社品名,             // No.389 Mod
                        数量   = x.SDTL.数量,
                        単価   = x.SDTL.単価,
                        金額   = x.SDTL.金額,

                        //20190902 CB mod - s 軽減税率対応
                        //軽減税率適用 = x.HIN.消費税区分 == (int)CommonConstants.商品消費税区分.軽減税率 ? "*" : ""
                        軽減税率適用 = x.HIN.消費税区分 == (int)CommonConstants.商品消費税区分.軽減税率 ? "軽"
                                                : x.HIN.消費税区分 == (int)CommonConstants.商品消費税区分.非課税 ? "非" : "",
                        //20190902 CB mod - e
                        摘要 = x.SDTL.摘要
                    })
                        .OrderBy(o => o.売上日).ThenBy(o => o.伝票番号);               // No-181 Add
                    #endregion

                    #region 期間内の入金明細
                    var nyukinDtl =
                        context.T11_NYKNHD.Where(c =>
                                                 c.入金先自社コード == myCompany &&
                                                 c.得意先コード == mem.得意先コード &&
                                                 c.得意先枝番 == mem.得意先枝番 &&
                                                 c.入金日 >= seihd.集計開始日 &&
                                                 c.入金日 <= seihd.集計最終日 &&
                                                 c.削除日時 == null
                                                 )
                        .GroupJoin(context.T11_NYKNDTL.Where(c => c.削除日時 == null),
                                   x => x.伝票番号,
                                   y => y.伝票番号,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (a, b) => new { HD = a.x, DTL = b })
                        .GroupJoin(context.M99_COMBOLIST.Where(c =>
                                                               c.分類 == "随時" &&
                                                               c.機能 == "入金問合せ" &&
                                                               c.カテゴリ == "金種"),
                                   x => x.DTL.金種コード,
                                   y => y.コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (a, b) => new { NYU = a.x, CMB = b })
                        .ToList()
                        .Select(x => new PrintDetailMember
                    {
                        PagingKey = string.Concat(mem.得意先コード, "-", mem.得意先枝番, "-", mem.入金日, ">", mem.回数),
                        自社コード     = myCompany.ToString(),
                        請求年月      = createYM.ToString(),
                        請求先コード    = mem.得意先コード.ToString(),
                        請求先枝番     = mem.得意先枝番.ToString(),
                        得意先コード    = string.Format("{0:D4}", mem.得意先コード),                // No.223 Mod
                        得意先枝番     = string.Format("{0:D2}", mem.得意先枝番),                 // No.223 Mod
                        回数        = mem.回数,

                        伝票番号 = x.NYU.HD.伝票番号,                              // No-181 Mod
                        売上日  = x.NYU.HD.入金日.ToString("yyyy/MM/dd"),
                        自社品番 = string.Empty,
                        相手品番 = string.Empty,
                        品番名称 = x.CMB.表示名 == null ? string.Empty : x.CMB.表示名,
                        数量   = 0,
                        単価   = 0,
                        金額   = x.NYU.DTL.金額,

                        軽減税率適用 = "",
                        摘要     = x.NYU.DTL.摘要,
                    });


                    //売上日→伝票番号の順でソート
                    var dtl = dtlResult.Concat(nyukinDtl).OrderBy(o => o.売上日).ThenBy(o => o.伝票番号);


                    #endregion

                    //20190910 CB add - s 軽減税率対応
                    //S01_SEIHDの集計最終日を基準としてM73_ZEIから税率を取得
                    DataTable dt;
                    dt = KESSVCEntry.ConvertListToDataTable <PrintHeaderMember>(hdResult.AsQueryable().ToList());

                    M73 M73Service;
                    M73Service = new M73();

                    foreach (DataRow dr in dt.Rows)
                    {
                        // drを使った処理(カラムにアクセスする場合は dr["カラム名"]と表記)
                        DateTime?DateTimeWk = (DateTime)dr["集計最終日"];

                        if (DateTimeWk != null)
                        {
                            //共通関数仕様 +1日
                            DateTime answer = (DateTime)DateTimeWk;
                            answer = answer.AddDays(1);

                            List <M73.M73_ZEI_Member> lstM73 = M73Service.GetData(answer, -1);

                            dr["軽減税率"] = lstM73[0].軽減税率;
                            dr["消費税率"] = lstM73[0].消費税率;
                        }
                    }
                    //20190910 CB add - e 軽減税率対応

                    //20190910 CB mod - s 軽減税率対応
                    //DataTable hdDt = KESSVCEntry.ConvertListToDataTable<PrintHeaderMember>(hdResult.AsQueryable().ToList());
                    DataTable hdDt = dt;
                    //20190910 CB mod - e 軽減税率対応

                    hdDt.TableName = PRINT_HEADER_TABLE_NAME;
                    DataTable dtlDt = KESSVCEntry.ConvertListToDataTable <PrintDetailMember>(dtl.AsQueryable().ToList());
                    dtlDt.TableName = PRINT_DETAIL_TABLE_NAME;

                    if (dtlDt.Rows.Count == 0 && (decimal)hdDt.Rows[0]["今回請求額"] != 0)
                    {
                        DataRow dr = dtlDt.NewRow();

                        dr["PagingKey"] = hdDt.Rows[0]["PagingKey"];
                        dr["自社コード"]     = hdDt.Rows[0]["自社コード"];
                        dr["請求年月"]      = hdDt.Rows[0]["請求年月"];
                        dr["請求先コード"]    = hdDt.Rows[0]["請求先コード"];
                        dr["請求先枝番"]     = hdDt.Rows[0]["請求先枝番"];
                        dr["得意先コード"]    = hdDt.Rows[0]["得意先コード"];
                        dr["得意先枝番"]     = hdDt.Rows[0]["得意先枝番"];
                        dr["回数"]        = hdDt.Rows[0]["回数"];

                        dtlDt.Rows.Add(dr);
                    }

                    if (dsResult.Tables.Contains(hdDt.TableName))
                    {
                        // 2件目以降
                        dsResult.Tables[PRINT_HEADER_TABLE_NAME].Merge(hdDt);
                        dsResult.Tables[PRINT_DETAIL_TABLE_NAME].Merge(dtlDt);
                    }
                    else
                    {
                        // 1件目
                        dsResult.Tables.Add(hdDt);
                        dsResult.Tables.Add(dtlDt);
                    }
                }
            }

            return(dsResult);
        }
Example #4
0
        /// <summary>
        /// M14_GSYAのデータ取得
        /// </summary>
        /// <param name="pG車種IDID">G車種ID</param>
        /// <returns>M14_GSYA_Member</returns>
        public List <M14_GSYA_Member> GetData(int?pG車種ID, int pオプションコード)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                var query = (from m14 in context.M14_GSYA
                             where m14.削除日付 == null
                             select new M14_GSYA_Member
                {
                    G車種ID = m14.G車種ID,
                    登録日時 = m14.登録日時,
                    更新日時 = m14.更新日時,
                    G車種名 = m14.G車種名,
                    略称名 = m14.略称名,
                    CO2排出係数1 = m14.CO2排出係数1,
                    CO2排出係数2 = m14.CO2排出係数2,
                    事業用区分 = m14.事業用区分,
                    ディーゼル区分 = m14.ディーゼル区分,
                    小型普通区分 = m14.小型普通区分,
                    低公害区分 = m14.低公害区分,
                    削除日付 = m14.削除日付,
                }).AsQueryable();

                //データが1件もない状態で<< < > >>を押された時の処理
                if ((pG車種ID == null || pG車種ID == 0) && query.Count() == 0)
                {
                    return(null);
                }

                if (pG車種ID != null)
                {
                    if (pG車種ID == -1)
                    {
                        //全件取得
                        return(query.ToList());
                    }

                    if (pオプションコード == 0)
                    {
                        query = query.Where(c => c.G車種ID == pG車種ID);
                    }

                    else if (pオプションコード == -1)
                    {
                        //p車種IDの1つ前のIDを取得
                        query = query.Where(c => (c.削除日付 == null));

                        query = query.Where(c => c.G車種ID < pG車種ID);
                        if (query.Count() >= 2)
                        {
                            query = query.Where(c => c.G車種ID < pG車種ID);
                        }
                        query = query.OrderByDescending(c => c.G車種ID);
                    }
                    else
                    {
                        //p車種IDの1つ後のIDを取得
                        query = query.Where(c => (c.削除日付 == null));
                        query = query.Where(c => c.G車種ID > pG車種ID);

                        if (query.Count() >= 2)
                        {
                            query = query.Where(c => c.G車種ID > pG車種ID);
                        }
                        query = query.OrderBy(c => c.G車種ID);
                    }
                }
                else
                {
                    if (pオプションコード == 0)
                    {
                        //車種IDの先頭のIDを取得
                        query = query.Where(c => (c.削除日付 == null));
                        query = query.OrderBy(c => c.G車種ID);
                    }
                    else if (pオプションコード == 1)
                    {
                        //車種IDの最後のIDを取得
                        query = query.Where(c => (c.削除日付 == null));
                        query = query.OrderByDescending(c => c.G車種ID);
                    }
                    else
                    {
                        //pオプションコード == 2
                        //query = query.Where(c => (c.削除日付 == null));
                        //query = query.OrderBy(c => c.G車種ID < pG車種ID + 1);
                    }
                }

                var ret = query.FirstOrDefault();
                List <M14_GSYA_Member> result = new List <M14_GSYA_Member>();
                if (ret != null)
                {
                    result.Add(ret);
                }
                return(result);
            }
        }
Example #5
0
        /// <summary>
        /// 得意先別車種別単価一覧表プレビュー用出力
        /// 得意先別車種別単価一覧表CSV用出力
        /// </summary>
        /// <returns></returns>
        /// <param name="s01toks">S01_toks__Member</param>
        public List <S01_TOKS_Member_Preview_csv> GetSearchListData(string p得意先IDFrom, string p得意先IDTo, string p処理年月From, string p処理年月To, string p回数From, string p回数To, int[] i得意先List)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                var query = (from s01 in context.S01_TOKS
                             from m01 in context.M01_TOK.Where(m01 => m01.得意先KEY == s01.得意先KEY)
                             //where s01.削除日付 == null

                             select new S01_TOKS_Member_Preview_csv
                {
                    得意先KEY = m01.得意先ID,
                    得意先名 = m01.略称名,
                    集計年月 = s01.集計年月,
                    回数 = s01.回数,
                    締集計開始日 = s01.締集計開始日,
                    締集計終了日 = s01.締集計終了日,
                    締日前月残高 = s01.締日前月残高,
                    締日入金現金 = s01.締日入金手形,
                    締日入金手形 = s01.締日入金手形,
                    締日入金その他 = s01.締日入金その他,
                    締日売上金額 = s01.締日売上金額,
                    締日通行料 = s01.締日通行料,
                    締日非課税売上 = s01.締日非課税売上,
                    締日課税売上 = s01.締日課税売上,
                    締日消費税 = s01.締日消費税,
                    締日内傭車売上 = s01.締日内傭車売上,
                    締日内傭車料 = s01.締日内傭車料,
                    締日未定件数 = s01.締日未定件数,
                    締日件数 = s01.締日件数,
                });


                if (!string.IsNullOrEmpty(p得意先IDFrom))
                {
                    int ip得意先IDFrom = AppCommon.IntParse(p得意先IDFrom);
                    query = query.Where(c => c.得意先KEY >= ip得意先IDFrom);
                }
                if (!string.IsNullOrEmpty(p得意先IDTo))
                {
                    int ip得意先IDTo = AppCommon.IntParse(p得意先IDTo);
                    query = query.Where(c => c.得意先KEY <= ip得意先IDTo);
                }

                if (!string.IsNullOrEmpty(p処理年月From))
                {
                    int ip処理年月From = AppCommon.IntParse(p処理年月From);
                    query = query.Where(c => c.集計年月 >= ip処理年月From);
                }
                if (!string.IsNullOrEmpty(p処理年月To))
                {
                    int ip処理年月To = AppCommon.IntParse(p処理年月To);
                    query = query.Where(c => c.集計年月 <= ip処理年月To);
                }

                if (!string.IsNullOrEmpty(p回数From))
                {
                    int ip回数From = AppCommon.IntParse(p回数From);
                    query = query.Where(c => c.回数 >= ip回数From);
                }
                if (!string.IsNullOrEmpty(p回数To))
                {
                    int ip回数To = AppCommon.IntParse(p回数To);
                    query = query.Where(c => c.集計年月 <= ip回数To);
                }


                if (i得意先List.Length > 0)
                {
                    var intCause = i得意先List;

                    query = query.Union(from s01 in context.S01_TOKS
                                        from m01 in context.M01_TOK.Where(m01 => m01.得意先KEY == s01.得意先KEY)
                                        where intCause.Contains(m01.得意先KEY)
                                        select new S01_TOKS_Member_Preview_csv
                    {
                        得意先KEY  = m01.得意先ID,
                        得意先名    = m01.略称名,
                        集計年月    = s01.集計年月,
                        回数      = s01.回数,
                        締集計開始日  = s01.締集計開始日,
                        締集計終了日  = s01.締集計終了日,
                        締日前月残高  = s01.締日前月残高,
                        締日入金現金  = s01.締日入金手形,
                        締日入金手形  = s01.締日入金手形,
                        締日入金その他 = s01.締日入金その他,
                        締日売上金額  = s01.締日売上金額,
                        締日通行料   = s01.締日通行料,
                        締日非課税売上 = s01.締日非課税売上,
                        締日課税売上  = s01.締日課税売上,
                        締日消費税   = s01.締日消費税,
                        締日内傭車売上 = s01.締日内傭車売上,
                        締日内傭車料  = s01.締日内傭車料,
                        締日未定件数  = s01.締日未定件数,
                        締日件数    = s01.締日件数,
                    });
                }


                //削除データ検索条件

                query = query.OrderBy(c => (c.得意先KEY));

                return(query.ToList());
            }
        }
Example #6
0
        /// <summary>
        /// 調整計算確定処理をおこなう
        /// </summary>
        /// <param name="paramDic">パラメータDic</param>
        /// <param name="userId">ログインユーザID</param>
        public void SetConfirm(Dictionary <string, string> paramDic, int userId)
        {
            int compCd   = int.Parse(paramDic[PARAM_NAME_COMPANY]),
                year     = int.Parse(paramDic[PARAM_NAME_YEAR].Replace("/", ""));
            decimal rate = decimal.Parse(paramDic[PARAM_NAME_RATE]);

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    try
                    {
                        // 取引先情報取得
                        var hanData =
                            context.M70_JIS
                            .Where(w => w.削除日時 == null && w.自社コード == compCd)
                            .Join(context.M01_TOK,
                                  x => new { code = x.取引先コード ?? 0, eda = x.枝番 ?? 0 },
                                  y => new { code = y.取引先コード, eda = y.枝番 },
                                  (x, y) => new { JIS = x, TOK = y })
                            .FirstOrDefault();

                        // 決算月・請求締日から売上集計期間を算出する
                        int pMonth = hanData.JIS.決算月 ?? CommonConstants.DEFAULT_SETTLEMENT_MONTH,
                            pYear  = pMonth < 4 ? year + 1 : year;

                        DateTime lastMonth   = new DateTime(pYear, pMonth, 1);
                        DateTime targetMonth = lastMonth.AddMonths(-11);

                        while (targetMonth <= lastMonth)
                        {
                            // 開始日は前月締日を設定
                            // No.101-3 Mod Start
                            DateTime calcStartDate =
                                AppCommon.GetClosingDate(targetMonth.AddMonths(-1).Year, targetMonth.AddMonths(-1).Month, hanData.TOK.T締日 ?? CommonConstants.DEFAULT_CLOSING_DAY);
                            // 終了日は当月締日の前日を設定
                            DateTime calcEndDate =
                                AppCommon.GetClosingDate(targetMonth.Year, targetMonth.Month, hanData.TOK.T締日 ?? CommonConstants.DEFAULT_CLOSING_DAY).AddDays(-1);
                            // No.101-3 Mod End

                            var hdList =
                                context.T02_URHD_HAN
                                .Where(v => v.削除日時 == null &&
                                       v.販社コード == compCd &&
                                       v.売上日 >= calcStartDate && v.売上日 <= calcEndDate);

                            foreach (var hdRow in hdList)
                            {
                                // 売上ヘッダ情報更新
                                hdRow.消費税    = hdRow.調整消費税 ?? 0;
                                hdRow.最終更新者  = userId;
                                hdRow.最終更新日時 = com.GetDbDateTime();

                                hdRow.AcceptChanges();

                                // 仕入情報が存在するか
                                var srhd =
                                    context.T03_SRHD_HAN.Where(w => w.削除日時 == null && w.伝票番号 == hdRow.伝票番号)
                                    .FirstOrDefault();

                                if (srhd != null)
                                {
                                    // 仕入がある場合は値を更新する
                                    srhd.消費税    = hdRow.調整消費税;
                                    srhd.最終更新者  = userId;
                                    srhd.最終更新日時 = com.GetDbDateTime();

                                    srhd.AcceptChanges();
                                }


                                // 売上明細情報更新
                                foreach (var dtlRow in context.T02_URDTL_HAN.Where(w => w.削除日時 == null && w.伝票番号 == hdRow.伝票番号))
                                {
                                    dtlRow.単価     = dtlRow.調整単価 ?? 0;
                                    dtlRow.金額     = dtlRow.調整金額;
                                    dtlRow.最終更新者  = userId;
                                    dtlRow.最終更新日時 = com.GetDbDateTime();

                                    dtlRow.AcceptChanges();

                                    if (srhd != null)
                                    {
                                        // 仕入があれば対象の仕入明細の値を更新する
                                        var srdtl =
                                            context.T03_SRDTL_HAN.Where(w => w.伝票番号 == dtlRow.伝票番号 && w.行番号 == dtlRow.行番号)
                                            .FirstOrDefault();

                                        if (srdtl == null)
                                        {
                                            continue;
                                        }

                                        srdtl.単価     = dtlRow.調整単価 ?? 0;
                                        srdtl.金額     = dtlRow.調整金額 ?? 0;
                                        srdtl.最終更新者  = userId;
                                        srdtl.最終更新日時 = com.GetDbDateTime();

                                        srdtl.AcceptChanges();
                                    }
                                }
                            }

                            // データ更新後に締集計をおこなう
                            TKS01010 clampService = new TKS01010();
                            // 集計処理に必要なデータを作成
                            var jis =
                                context.M70_JIS.Where(w =>
                                                      w.削除日時 == null && w.自社区分 == (int)CommonConstants.自社区分.自社)
                                .First();

                            TKS01010.TKS01010_SearchMember srcMem = new TKS01010.TKS01010_SearchMember();
                            srcMem.ID     = string.Format("{0:D3} - {1:D2}", hanData.TOK.取引先コード, hanData.TOK.枝番);
                            srcMem.得意先コード = hanData.TOK.取引先コード;
                            srcMem.得意先枝番  = hanData.TOK.枝番;
                            srcMem.得意先名   = hanData.TOK.得意先名1;
                            // No.101-3 Mod Start
                            srcMem.締日 = hanData.TOK.T締日 ?? CommonConstants.DEFAULT_CLOSING_DAY;
                            // No.101-3 Mod End
                            srcMem.開始日付1 = calcStartDate;
                            srcMem.終了日付1 = calcEndDate;
                            // No.101-3 Mod Start
                            srcMem.入金日 =
                                AppCommon.GetClosingDate(targetMonth.Year, targetMonth.Month, hanData.TOK.T入金日1 ?? CommonConstants.DEFAULT_CLOSING_DAY, hanData.TOK.Tサイト1 ?? 0);    // No-169 Mod
                            // No.101-3 Mod End

                            List <TKS01010.TKS01010_SearchMember> list = new List <TKS01010.TKS01010_SearchMember>();
                            list.Add(srcMem);
                            DataTable dt = KESSVCEntry.ConvertListToDataTable(list);
                            DataSet   ds = new DataSet();
                            ds.Tables.Add(dt);

                            // 集計実行
                            clampService.BillingAggregation(ds, jis.自社コード, targetMonth.Year * 100 + targetMonth.Month, userId);


                            // 次データの為に各値をカウントアップ
                            targetMonth = targetMonth.AddMonths(1);
                        }


                        // 変更状態を確定
                        context.SaveChanges();

                        // トランザクションコミット
                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        // トランザクションロールバック
                        tran.Rollback();
                        throw ex;
                    }
                }// end transaction
            }
        }
Example #7
0
        /// <summary>
        /// 都度請求締集計処理
        /// </summary>
        /// <param name="paramDic"></param>
        /// <param name="userId"></param>
        public void BillingAggregation(Dictionary <string, string> paramDic, int userId)
        {
            string companyCd, startDate, endDate;

            try
            {
                // 画面パラメータ展開
                companyCd = paramDic[PARAMS_NAME_COMPANY];
                startDate = paramDic[PARAMS_NAME_CREATE_DATE_START];
                endDate   = paramDic[PARAMS_NAME_CREATE_DATE_END];
            }
            catch (Exception e)
            {
                throw e;
            }

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (DbTransaction tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    try
                    {
                        TKS01010 tok01010 = new TKS01010();

                        // パラメータ型変換
                        int iCompany = int.Parse(companyCd);
                        DateTime
                            tStartDate = DateTime.Parse(startDate),
                            tEndDate   = DateTime.Parse(endDate);

                        // 得意先取得
                        List <M01_TOK> tokList = getTargetTOK(context, iCompany);

                        foreach (M01_TOK tok in tokList)
                        {
                            DateTime targetDate = tStartDate;
                            while (targetDate <= tEndDate)
                            {
                                TKS01010.TKS01010_SearchMember mem = new TKS01010.TKS01010_SearchMember();
                                mem.ID      = string.Format("{0} - {1}", tok.取引先コード, tok.枝番);
                                mem.得意先コード  = tok.取引先コード;
                                mem.得意先枝番   = tok.枝番;
                                mem.得意先名    = tok.得意先名1;
                                mem.締日      = targetDate.Day;
                                mem.区分      = string.Empty;
                                mem.開始日付1   = targetDate;
                                mem.終了日付1   = targetDate;
                                mem.開始日付2   = null;
                                mem.終了日付2   = null;
                                mem.開始日付3   = null;
                                mem.終了日付3   = null;
                                mem.クリア開始日付 = targetDate;
                                mem.クリア終了日付 = targetDate;
                                mem.入金日     = targetDate;

                                // 締集計の処理に投げる
                                tok01010.getAggregateData(context, iCompany, targetDate.Year * 100 + targetDate.Month, mem, 1, userId);

                                targetDate = targetDate.AddDays(1);
                            } // -- end loop date
                        }     // -- end loop tok

                        context.SaveChanges();

                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        throw ex;
                    }
                }
            }
        }
Example #8
0
        /// <summary>
        /// 仕入明細問合せ検索をおこなう
        /// </summary>
        /// <param name="p自社コード"></param>
        /// <param name="cond">
        /// === 検索条件辞書 ===
        /// 仕入日From - 仕入日To
        /// 入金日From - 入金日To
        /// 入力区分
        /// 仕入先コード - 仕入先枝番
        /// 入荷先コード
        /// </param>
        /// <returns></returns>
        public List <SearchDataMember> GetDataList(int p自社コード, Dictionary <string, string> cond)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                try
                {
                    #region パラメータの型変換

                    DateTime?
                        sDateFrom = stringToDate(cond, "仕入日From"),
                        sDateTo   = stringToDate(cond, "仕入日To"),
                        nDateFrom = stringToDate(cond, "入金日From"),
                        nDateTo   = stringToDate(cond, "入金日To");

                    int ival;
                    int?inputType = int.TryParse(cond["入力区分"], out ival) ? (ival >= 0 ? ival : (int?)null) : (int?)null;
                    int?
                        supCode     = int.TryParse(cond["仕入先コード"], out ival) ? ival : (int?)null,
                        supEda      = int.TryParse(cond["仕入先枝番"], out ival) ? ival : (int?)null,
                        arrivalCode = int.TryParse(cond["入荷先コード"], out ival) ? ival : (int?)null;

                    string hinban = cond["自社品番"];               // No.396 Add

                    #endregion

                    // 基本情報取得
                    var srDataList =
                        context.T03_SRHD.Where(w => w.削除日時 == null && w.会社名コード == p自社コード)
                        .Join(context.T03_SRDTL.Where(w => w.削除日時 == null),
                              x => x.伝票番号,
                              y => y.伝票番号,
                              (x, y) => new { SHD = x, SDTL = y })
                        .GroupJoin(context.M09_HIN,    //.Where(w => w.削除日時 == null),
                                   x => x.SDTL.品番コード,
                                   y => y.品番コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(), (x, y) => new { x.x.SHD, x.x.SDTL, HIN = y });

                    #region 条件絞込

                    // 仕入日From - To
                    if (sDateFrom != null)
                    {
                        srDataList = srDataList.Where(w => w.SHD.仕入日 >= sDateFrom);
                    }

                    if (sDateTo != null)
                    {
                        srDataList = srDataList.Where(w => w.SHD.仕入日 <= sDateTo);
                    }

                    // 入金日From - To
                    // TODO:保留

                    // 入力区分
                    if (inputType != null)
                    {
                        srDataList = srDataList.Where(w => w.SHD.入力区分 == inputType);
                    }

                    // 仕入先
                    if (supCode != null && supEda != null)
                    {
                        srDataList = srDataList.Where(w => w.SHD.仕入先コード == supCode && w.SHD.仕入先枝番 == supEda);
                    }

                    // 入荷先
                    if (arrivalCode != null)
                    {
                        srDataList = srDataList.Where(w => w.SHD.入荷先コード == arrivalCode);
                    }

                    // 自社品番
                    if (!string.IsNullOrEmpty(hinban))
                    {
                        srDataList = srDataList.Where(w => w.HIN.自社品番 == hinban);
                    }
                                                                                       // No.396 Add

                    #endregion

                    // 返品分のデータを取得する
                    //var returnList = srDataList.Where(w => w.SRHD.仕入区分 == (int)CommonConstants.仕入区分.返品).ToList();

                    #region 各名称を取得して検索メンバークラスに整形
                    var resultList =
                        srDataList
                        .GroupJoin(context.M01_TOK,    //.Where(w => w.削除日時 == null),
                                   x => new { code = x.SHD.仕入先コード, eda = x.SHD.仕入先枝番 },
                                   y => new { code = y.取引先コード, eda = y.枝番 },
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (a, b) => new { a.x.SHD, a.x.SDTL, a.x.HIN, TOK = b })
                        .GroupJoin(context.M06_IRO,
                                   x => x.HIN.自社色,
                                   y => y.色コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (e, f) => new { e.x.SHD, e.x.SDTL, e.x.TOK, e.x.HIN, IRO = f })
                        .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                                   x => x.SHD.会社名コード,
                                   y => y.自社コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (g, h) => new { g.x.SHD, g.x.SDTL, g.x.TOK, g.x.HIN, g.x.IRO, JIS = h })
                        // 入荷先
                        .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                                   x => x.SHD.入荷先コード,
                                   y => y.自社コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (e, f) => new { e.x.SHD, e.x.SDTL, e.x.TOK, e.x.HIN, e.x.IRO, e.x.JIS, JIS2 = f })
                        .ToList()
                        .Select(x => new SearchDataMember
                    {
                        会社名コード = x.SHD.会社名コード,
                        自社名    = x.JIS.自社名 ?? "",                       // No.227,228 Add
                        仕入日    = x.SHD.仕入日.ToShortDateString(),         // No.130-3 Mod
                        // No-128 Mod Start
                        支払日 = x.TOK.S入金日1 == 0 ? string.Empty : x.SHD.仕入日.Day >= (x.TOK.S締日 ?? 31) ?
                              // No.101-5 Mod Start
                              new DateTime(x.SHD.仕入日.Year, x.SHD.仕入日.Month, ((x.TOK.S入金日1 ?? 31) >= 28 ? DateTime.DaysInMonth(x.SHD.仕入日.Year, x.SHD.仕入日.Month) : x.TOK.S入金日1 ?? 31)).AddMonths((x.TOK.Sサイト1 ?? 0) + 1).ToShortDateString() :        // No.130-3 Mod
                              new DateTime(x.SHD.仕入日.Year, x.SHD.仕入日.Month, ((x.TOK.S入金日1 ?? 31) >= 28 ? DateTime.DaysInMonth(x.SHD.仕入日.Year, x.SHD.仕入日.Month) : x.TOK.S入金日1 ?? 31)).AddMonths(x.TOK.Sサイト1 ?? 0).ToShortDateString(),               // No.130-3 Mod
                        // No.101-5 Mod End
                        // No-128 Mod End
                        仕入区分コード = x.SHD.仕入区分,              // No.396 Add
                        仕入区分    = x.SHD.仕入区分 == (int)CommonConstants.仕入区分.通常 ? CommonConstants.仕入区分_通常 :
                                  x.SHD.仕入区分 == (int)CommonConstants.仕入区分.返品 ? CommonConstants.仕入区分_返品 :
                                  string.Empty,
                        入力区分 = x.SHD.入力区分 == (int)CommonConstants.入力区分.仕入入力 ? CommonConstants.入力区分_仕入入力 :
                               x.SHD.入力区分 == (int)CommonConstants.入力区分.売上入力 ? CommonConstants.入力区分_売上入力 :
                               string.Empty,
                        伝票番号     = x.SHD.伝票番号,
                        元伝票番号    = x.SHD.元伝票番号 != null ? x.SHD.元伝票番号.ToString() : string.Empty,
                        行番号      = x.SDTL.行番号,
                        仕入先コード   = string.Format("{0:D4} - {1:D2}", x.SHD.仕入先コード, x.SHD.仕入先枝番), // No.227,228
                        仕入先名     = x.TOK.略称名,
                        入荷先名     = x.JIS2 != null ? x.JIS2.自社名 : "",                            // No.396 Add
                        品番コード    = x.SDTL.品番コード,
                        自社品番     = x.HIN.自社品番,
                        自社品名     = !string.IsNullOrEmpty(x.SDTL.自社品名) ? x.SDTL.自社品名 : x.HIN.自社品名,         // No.390 Mod
                        自社色      = x.IRO != null ? x.IRO.色名称 : string.Empty,
                        賞味期限     = x.SDTL.賞味期限 == null ? null : x.SDTL.賞味期限.Value.ToShortDateString(),    // No.130-3 Mod
                        数量       = x.SHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? x.SDTL.数量 : x.SDTL.数量 * -1,
                        単価       = x.SDTL.単価,
                        単位       = x.SDTL.単位,
                        金額       = x.SHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? x.SDTL.金額 : x.SDTL.金額 * -1,                 // No.396 Mod
                        消費税      = x.SHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? (x.SHD.消費税 ?? 0) : (x.SHD.消費税 ?? 0) * -1,   // No.396 Add
                        通常税率対象金額 = x.HIN.消費税区分 == 0 ? (x.SHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? x.SDTL.金額 : x.SDTL.金額 * -1) : 0,
                        軽減税率対象金額 = x.HIN.消費税区分 == 1 ? (x.SHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? x.SDTL.金額 : x.SDTL.金額 * -1) : 0,
                        非課税対象金額  = x.HIN.消費税区分 == 2 ? (x.SHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? x.SDTL.金額 : x.SDTL.金額 * -1) : 0,
                        通常税率消費税  = x.SHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? (x.SHD.通常税率消費税 ?? 0) : (x.SHD.通常税率消費税 ?? 0) * -1,
                        軽減税率消費税  = x.SHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? (x.SHD.軽減税率消費税 ?? 0) : (x.SHD.軽減税率消費税 ?? 0) * -1,
                        摘要       = x.SDTL.摘要,
                        発注番号     = x.SHD.発注番号
                    })
                        .OrderBy(o => o.仕入日)
                        .ThenBy(t => t.伝票番号)
                        .ThenBy(t => t.行番号)
                        .ThenBy(t => t.会社名コード)
                        .ToList();
                    #endregion

                    if (inputType == null || inputType != CommonConstants.入力区分.仕入入力.GetHashCode())
                    {
                        // 販社データ取得
                        var hanList = GetHanDataList(context, p自社コード, cond);
                        // 既存リストに追加
                        resultList.AddRange(hanList);
                        // リスト追加後にソート実施
                        resultList = resultList.OrderBy(o => o.仕入日).ThenBy(t => t.伝票番号).ThenBy(t => t.行番号).ThenBy(t => t.会社名コード).ToList();
                    }

                    return(resultList);
                }
                catch (System.ArgumentException agex)
                {
                    throw agex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Example #9
0
        /// <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["MST19011_GetData"];
                foreach (DataRow rw in updTbl.Rows)
                {
                    string  strJishaHinban = rw["自社品番"].ToString();
                    string  strIro         = string.IsNullOrEmpty(rw["色"].ToString()) ? null : rw["色"].ToString();
                    M09_HIN hinban;

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

                    int i得意先コード = int.Parse(rw["得意先コード"].ToString());
                    int i枝番     = int.Parse(rw["枝番"].ToString());

                    // 対象データ取得
                    var data =
                        context.M02_BAIKA
                        .Where(w => w.得意先コード == i得意先コード &&
                               w.枝番 == i枝番 &&
                               w.品番コード == hinban.品番コード)
                        .FirstOrDefault();

                    if (data == null)
                    {
                        // 新規登録
                        M02_BAIKA m02baika = new M02_BAIKA();
                        m02baika.得意先コード = i得意先コード;
                        m02baika.枝番     = i枝番;
                        m02baika.品番コード  = hinban.品番コード;
                        m02baika.単価     = decimal.Parse(rw["単価"].ToString());
                        m02baika.登録者    = loginUserId;
                        m02baika.登録日時   = DateTime.Now;
                        m02baika.最終更新者  = loginUserId;
                        m02baika.最終更新日時 = DateTime.Now;

                        context.M02_BAIKA.ApplyChanges(m02baika);
                    }
                    else
                    {
                        // データ更新
                        data.単価     = decimal.Parse(rw["単価"].ToString());
                        data.最終更新者  = loginUserId;
                        data.最終更新日時 = DateTime.Now;
                        data.削除者    = null;
                        data.削除日時   = null;

                        data.AcceptChanges();
                    }
                }
                context.SaveChanges();
            }
        }
Example #10
0
        /// <summary>
        /// JMI06010 印刷
        /// </summary>
        /// <param name="p商品ID">乗務員コード</param>
        /// <returns>T01</returns>
        public List <JMI06010_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)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                int drvfrom = AppCommon.IntParse(p乗務員From) == 0 ? int.MinValue : AppCommon.IntParse(p乗務員From);
                int drvto   = AppCommon.IntParse(p乗務員To) == 0 ? int.MaxValue : AppCommon.IntParse(p乗務員To);
                if ((string.IsNullOrEmpty(p乗務員From + p乗務員To) && i乗務員List.Length != 0))
                {
                    drvfrom = int.MaxValue;
                    drvto   = int.MaxValue;
                }

                List <JMI06010_Member_CSV> retList  = new List <JMI06010_Member_CSV>();
                List <JMI06010_Date>       retList2 = new List <JMI06010_Date>();

                context.Connection.Open();

                for (DateTime dDate = d集計期間From; dDate <= d集計期間To; dDate = dDate.AddDays(1))
                {
                    retList2.Add(new JMI06010_Date()
                    {
                        日付 = dDate
                    });
                }

                int[] lst;
                lst = (from m04 in context.M04_DRV
                       let t01l = from t01 in context.T01_TRN.Where(t01 => (t01.請求日付 >= d集計期間From && t01.請求日付 <= d集計期間To) && (t01.入力区分 != 3 || (t01.入力区分 == 3 && t01.明細行 != 1))) select t01.乗務員KEY
                                  let t02l = from t02 in context.V_T02_UTRN.Where(t02 => t02.労務日 >= d集計期間From && t02.労務日 <= d集計期間To) select t02.乗務員KEY
                                             let t03l = from t03 in context.T03_KTRN.Where(t03 => t03.経費発生日 >= d集計期間From && t03.経費発生日 <= d集計期間To) select t03.乗務員KEY
                                                        where t01l.Contains(m04.乗務員KEY) || t02l.Contains(m04.乗務員KEY) || t03l.Contains(m04.乗務員KEY)
                                                        select m04.乗務員KEY).ToArray();

                var query2 = (from t in context.T03_KTRN
                              join m07 in context.M07_KEI on t.経費項目ID equals m07.経費項目ID
                              where m07.固定変動区分 == 1
                              select new JMI06010_KTRN
                {
                    日付 = t.経費発生日,
                    経費項目ID = t.経費項目ID,
                    金額 = t.金額,
                    乗務員KEY = t.乗務員KEY,
                }).AsQueryable();

                var query = (from retdate in retList2
                             from m04 in context.M04_DRV.Where(c => (c.乗務員ID >= drvfrom && c.乗務員ID <= drvto || (i乗務員List.Contains(c.乗務員ID))))
                             join t01 in context.T01_TRN.Where(t01 => (t01.請求日付 >= d集計期間From && t01.請求日付 <= d集計期間To) && (t01.入力区分 != 3 || (t01.入力区分 == 3 && t01.明細行 != 1))) on retdate.日付 equals t01.請求日付 into t01Group
                             join t02 in context.V_T02_UTRN.Where(t02 => t02.労務日 >= d集計期間From && t02.労務日 <= d集計期間To) on retdate.日付 equals t02.労務日 into t02Group
                             join t03 in query2.Where(t03 => t03.日付 >= d集計期間From && t03.日付 <= d集計期間To) on retdate.日付 equals t03.日付 into t03Group
                             let t01l = from t01 in context.T01_TRN.Where(t01 => t01.請求日付 >= d集計期間From && t01.請求日付 <= d集計期間To) select t01.乗務員KEY
                                        let t02l = from t02 in context.V_T02_UTRN.Where(t02 => t02.労務日 >= d集計期間From && t02.労務日 <= d集計期間To) select t02.乗務員KEY
                                                   let t03l = from t03 in context.T03_KTRN.Where(t03 => t03.経費発生日 >= d集計期間From && t03.経費発生日 <= d集計期間To) select t03.乗務員KEY
                                                              where lst.Contains(m04.乗務員KEY)
                                                              //where t01l.Contains(m04.乗務員KEY) || t02l.Contains(m04.乗務員KEY) || t03l.Contains(m04.乗務員KEY)
                                                              orderby m04.乗務員ID, retdate.日付
                             select new JMI06010_Member_CSV
                {
                    日付 = retdate.日付,
                    売上金額 = t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2) == null ? 0 : t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2),
                    通行料 = t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.通行料) == null ? 0 : t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.通行料),
                    売上合計 = t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2 + t01gr.通行料) == null ? 0 : t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2 + t01gr.通行料),
                    社内金額 = t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付 && t01gr.支払先KEY == null).Sum(t01 => t01.支払金額) == null ? 0 : t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付 && t01gr.支払先KEY == null).Sum(t01 => t01.支払金額),
                    歩合金額 = Math.Round((t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付 && t01gr.支払先KEY == null).Sum(t01 => t01.支払金額) * m04.歩合率 / 100), 0) == null ? 0 : Math.Round((t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付 && t01gr.支払先KEY == null).Sum(t01 => t01.支払金額) * m04.歩合率 / 100), 0),
                    経費合計 = t03Group.Where(t03gr => t03gr.乗務員KEY == m04.乗務員KEY && t03gr.日付 == retdate.日付).Sum(t03gr => t03gr.金額),
                    拘束H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.拘束時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.拘束時間),
                    運転H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.運転時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.運転時間),
                    高速H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.高速時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.高速時間),
                    作業H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.作業時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.作業時間),
                    待機H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.待機時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.待機時間),
                    休憩H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.休憩時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.休憩時間),
                    残業H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.残業時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.残業時間),
                    深夜H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.深夜時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.深夜時間),
                    走行KM = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.走行KM) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.走行KM),
                    実車KM = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.実車KM) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.実車KM),
                    コード = m04.乗務員ID,
                    乗務員名 = m04.乗務員名,
                    歩合率 = m04.歩合率,
                }).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 retdate in retList2
                //							from m04 in context.M04_DRV
                //							join t01 in context.T01_TRN.Where(t01 => (t01.請求日付 >= d集計期間From && t01.請求日付 <= d集計期間To) && (t01.入力区分 != 3 || (t01.入力区分 == 3 && t01.明細行 != 1))) on retdate.日付 equals t01.請求日付 into t01Group
                //							join t02 in context.V_T02_UTRN.Where(t02 => t02.労務日 >= d集計期間From && t02.労務日 <= d集計期間To) on retdate.日付 equals t02.労務日 into t02Group
                //							join t03 in query2.Where(t03 => t03.日付 >= d集計期間From && t03.日付 <= d集計期間To) on retdate.日付 equals t03.日付 into t03Group
                //							let t01l = from t01 in context.T01_TRN.Where(t01 => t01.請求日付 >= d集計期間From && t01.請求日付 <= d集計期間To) select t01.乗務員KEY
                //							let t02l = from t02 in context.V_T02_UTRN.Where(t02 => t02.労務日 >= d集計期間From && t02.労務日 <= d集計期間To) select t02.乗務員KEY
                //							let t03l = from t03 in context.T03_KTRN.Where(t03 => t03.経費発生日 >= d集計期間From && t03.経費発生日 <= d集計期間To) select t03.乗務員KEY
                //							where lst.Contains(m04.乗務員KEY) && intCause.Contains(m04.乗務員ID)
                //							//where t01l.Contains(m04.乗務員KEY) || t02l.Contains(m04.乗務員KEY) || t03l.Contains(m04.乗務員KEY)
                //							orderby m04.乗務員ID, retdate.日付
                //							select new JMI06010_Member_CSV
                //							{
                //								日付 = retdate.日付,
                //								売上金額 = t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2) == null ? 0 : t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2),
                //								通行料 = t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.通行料) == null ? 0 : t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.通行料),
                //								売上合計 = t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2 + t01gr.通行料) == null ? 0 : t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付).Sum(t01gr => t01gr.売上金額 + t01gr.請求割増1 + t01gr.請求割増2 + t01gr.通行料),
                //								社内金額 = t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付 && t01gr.支払先KEY == null).Sum(t01 => t01.支払金額) == null ? 0 : t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付 && t01gr.支払先KEY == null).Sum(t01 => t01.支払金額),
                //								歩合金額 = Math.Round((t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付 && t01gr.支払先KEY == null).Sum(t01 => t01.支払金額) * m04.歩合率 / 100), 0) == null ? 0 : Math.Round((t01Group.Where(t01gr => t01gr.乗務員KEY == m04.乗務員KEY && t01gr.請求日付 == retdate.日付 && t01gr.支払先KEY == null).Sum(t01 => t01.支払金額) * m04.歩合率 / 100), 0),
                //								経費合計 = t03Group.Where(t03gr => t03gr.乗務員KEY == m04.乗務員KEY && t03gr.日付 == retdate.日付).Sum(t03gr => t03gr.金額),
                //								拘束H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.拘束時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.拘束時間),
                //								運転H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.運転時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.運転時間),
                //								高速H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.高速時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.高速時間),
                //								作業H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.作業時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.作業時間),
                //								待機H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.待機時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.待機時間),
                //								休憩H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.休憩時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.休憩時間),
                //								残業H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.残業時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.残業時間),
                //								深夜H = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.深夜時間) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.深夜時間),
                //								走行KM = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.走行KM) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.走行KM),
                //								実車KM = t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.実車KM) == null ? 0 : t02Group.Where(t02gr => t02gr.乗務員KEY == m04.乗務員KEY && t02gr.労務日 == retdate.日付).Sum(t02gr => t02gr.実車KM),
                //								コード = m04.乗務員ID,
                //								乗務員名 = m04.乗務員名,
                //								歩合率 = m04.歩合率,

                //							});
                //	}
                //	else
                //	{
                //		query = query.Where(c => c.コード > int.MinValue && c.コード < int.MaxValue);
                //	}

                //}

                query = query.Distinct();
                //結果をリスト化

                retList = (from q in query.ToArray()
                           orderby q.コード, q.日付
                           select new JMI06010_Member_CSV
                {
                    日付 = q.日付,
                    売上金額 = q.売上金額,
                    通行料 = q.通行料,
                    売上合計 = q.売上合計,
                    社内金額 = q.社内金額,
                    歩合金額 = q.歩合金額,
                    経費合計 = q.経費合計,
                    拘束H = KyoeiSystem.Framework.Common.LinqSub.分TO時間(q.拘束H),
                    運転H = KyoeiSystem.Framework.Common.LinqSub.分TO時間(q.運転H),
                    高速H = KyoeiSystem.Framework.Common.LinqSub.分TO時間(q.高速H),
                    作業H = KyoeiSystem.Framework.Common.LinqSub.分TO時間(q.作業H),
                    待機H = KyoeiSystem.Framework.Common.LinqSub.分TO時間(q.待機H),
                    休憩H = KyoeiSystem.Framework.Common.LinqSub.分TO時間(q.休憩H),
                    残業H = KyoeiSystem.Framework.Common.LinqSub.分TO時間(q.残業H),
                    深夜H = KyoeiSystem.Framework.Common.LinqSub.分TO時間(q.深夜H),
                    走行KM = q.走行KM,
                    実車KM = q.実車KM,
                    コード = q.コード,
                    乗務員名 = q.乗務員名,
                    歩合率 = q.歩合率,
                }).ToList();
                return(retList);
            }
        }
Example #11
0
        /// <summary>
        /// RunStoredDLY16010で作成されたワークを取得
        /// </summary>
        /// <returns>W_DLY16010_Memberのリスト</returns>
        private List <W_DLY16010_Member> GetListDLY16010()
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                var ret = (from x in context.W_DLY16010
                           select new W_DLY16010_Member
                {
                    H_運行日付 = x.H_運行日付,
                    D_乗務員ID = x.D_乗務員ID,
                    D_乗務員名 = x.D_乗務員名,
                    D_車種ID = x.D_車種ID,
                    D_車種名 = x.D_車種名,
                    D_車輌ID = x.D_車輌ID,
                    D_車輌番号 = x.D_車輌番号,
                    D_得意先ID1 = x.D_得意先ID1,
                    D_得意先名1 = x.D_得意先名1,
                    D_商品名1 = x.D_商品名1,
                    D_発地名1 = x.D_発地名1,
                    D_着地名1 = x.D_着地名1,
                    D_数量1 = x.D_数量1,
                    D_重量1 = x.D_重量1,
                    D_配送時間1 = x.D_配送時間1,
                    D_得意先ID2 = x.D_得意先ID2,
                    D_得意先名2 = x.D_得意先名2,
                    D_商品名2 = x.D_商品名2,
                    D_発地名2 = x.D_発地名2,
                    D_着地名2 = x.D_着地名2,
                    D_数量2 = x.D_数量2,
                    D_重量2 = x.D_重量2,
                    D_配送時間2 = x.D_配送時間2,
                    D_得意先ID3 = x.D_得意先ID3,
                    D_得意先名3 = x.D_得意先名3,
                    D_商品名3 = x.D_商品名3,
                    D_発地名3 = x.D_発地名3,
                    D_着地名3 = x.D_着地名3,
                    D_数量3 = x.D_数量3,
                    D_重量3 = x.D_重量3,
                    D_配送時間3 = x.D_配送時間3,
                    D_得意先ID4 = x.D_得意先ID4,
                    D_得意先名4 = x.D_得意先名4,
                    D_商品名4 = x.D_商品名4,
                    D_発地名4 = x.D_発地名4,
                    D_着地名4 = x.D_着地名4,
                    D_数量4 = x.D_数量4,
                    D_重量4 = x.D_重量4,
                    D_配送時間4 = x.D_配送時間4,
                    D_得意先ID5 = x.D_得意先ID5,
                    D_得意先名5 = x.D_得意先名5,
                    D_商品名5 = x.D_商品名5,
                    D_発地名5 = x.D_発地名5,
                    D_着地名5 = x.D_着地名5,
                    D_数量5 = x.D_数量5,
                    D_重量5 = x.D_重量5,
                    D_配送時間5 = x.D_配送時間5,
                }).ToList();

                return(ret);
            }
        }
Example #12
0
        /// <summary>
        /// 売上明細問合せ検索をおこなう(販社)
        /// </summary>
        /// <param name="p自社コード"></param>
        /// <param name="p自社販社区分"></param>
        /// <param name="cond">
        /// === 検索条件辞書 ===
        /// 売上日From
        /// 売上日To
        /// 売上区分
        /// 得意先コード
        /// 得意先枝番
        /// </param>
        /// <returns></returns>
        public List <SearchDataMember> GetData_Hansha(int p自社コード, Dictionary <string, string> cond)
        {
            // 画面パラメータを展開
            DateTime wkDt;
            int      wkVal;
            DateTime?salesDateFrom = DateTime.TryParse(cond["売上日From"], out wkDt) ? wkDt : (DateTime?)null,
                    salesDateTo    = DateTime.TryParse(cond["売上日To"], out wkDt) ? wkDt : (DateTime?)null;
            int salesKbn           = int.Parse(cond["売上区分"]);
            int?customerCode       = int.TryParse(cond["得意先コード"], out wkVal) ? wkVal : (int?)null,
               customerEda         = int.TryParse(cond["得意先枝番"], out wkVal) ? wkVal : (int?)null;
            string myProductCode   = cond["自社品番"];

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                try
                {
                    // 売上区分(名称)データ取得
                    var salesKbnData =
                        context.M99_COMBOLIST
                        .Where(w => w.分類 == "随時" && w.機能 == "請求明細問合せ" && w.カテゴリ == "売上区分");

                    // (販社)売上データ
                    var urHanData =
                        context.M70_JIS
                        .Where(w => w.削除日時 == null &&
                               w.取引先コード != null &&
                               w.枝番 != null &&
                               w.自社区分 == (int)CommonConstants.自社区分.販社)
                        .Join(context.T02_URHD_HAN.Where(w => w.削除日時 == null),
                              x => x.自社コード,
                              y => y.販社コード,
                              (x, y) => new { JIS = x, UHD_HAN = y })
                        .Join(context.T02_URDTL_HAN.Where(w => w.削除日時 == null),
                              x => x.UHD_HAN.伝票番号,
                              y => y.伝票番号,
                              (x, y) => new { JIS = x.JIS, UHD = x.UHD_HAN, UDTL = y })
                        .Join(context.M09_HIN.Where(w => w.削除日時 == null),
                              x => x.UDTL.品番コード,
                              y => y.品番コード,
                              (x, y) => new { JIS = x.JIS, UHD = x.UHD, UDTL = x.UDTL, HIN = y });

                    #region 検索条件による絞込み

                    if (salesDateFrom != null)
                    {
                        urHanData = urHanData.Where(x => x.UHD.売上日 >= salesDateFrom);
                    }

                    if (salesDateTo != null)
                    {
                        urHanData = urHanData.Where(x => x.UHD.売上日 <= salesDateTo);
                    }

                    if (salesKbn > 0)
                    {
                        urHanData = urHanData.Where(w => w.UHD.売上区分 == salesKbn);
                    }

                    if (!string.IsNullOrEmpty(myProductCode))
                    {
                        urHanData = urHanData.Where(w => w.HIN.自社品番 == myProductCode);
                    }

                    if (customerCode != null && customerEda != null)
                    {
                        urHanData = urHanData.Where(w => w.JIS.取引先コード == customerCode && w.JIS.枝番 == customerEda);
                    }

                    #endregion

                    var resultList =
                        urHanData
                        .Join(salesKbnData,
                              x => x.UHD.売上区分,
                              y => y.コード,
                              (x, y) => new { x.UHD, x.UDTL, x.JIS, x.HIN, KBN = y })
                        .GroupJoin(context.M01_TOK,
                                   x => new { code = (int)x.JIS.取引先コード, eda = (int)x.JIS.枝番 },
                                   y => new { code = y.取引先コード, eda = y.枝番 },
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (a, b) => new { a.x.UHD, a.x.UDTL, a.x.JIS, a.x.HIN, a.x.KBN, TOK = b })
                        .GroupJoin(context.M06_IRO,
                                   x => x.HIN.自社色,
                                   y => y.色コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (e, f) => new { e.x.UHD, e.x.UDTL, e.x.JIS, e.x.HIN, e.x.KBN, e.x.TOK, IRO = f })
                        .OrderBy(o => o.UHD.販社コード)
                        .ThenBy(t => t.JIS.枝番)
                        .ThenBy(t => t.UHD.売上日)
                        .ThenBy(t => t.UHD.伝票番号)
                        .ThenBy(t => t.UDTL.行番号)
                        .ToList()
                        .Select(x => new SearchDataMember
                    {
                        会社名コード = x.UHD.会社名コード,                      // No.227,228 Add
                        自社名    = x.JIS.自社名 ?? "",                   // No.227,228 Add
                        売上日    = x.UHD.売上日.ToShortDateString(),
                        請求日    = x.UHD.売上日.Day > x.TOK.T締日 ?
                                 AppCommon.GetClosingDate(x.UHD.売上日.Year, x.UHD.売上日.Month, x.TOK.T締日 ?? 31, 1).ToShortDateString() :
                                 AppCommon.GetClosingDate(x.UHD.売上日.Year, x.UHD.売上日.Month, x.TOK.T締日 ?? 31, 0).ToShortDateString(),
                        売上区分   = x.KBN.表示名,
                        伝票番号   = x.UHD.伝票番号.ToString(),
                        元伝票番号  = string.Empty,
                        行番号    = x.UDTL.行番号,
                        得意先コード = string.Format("{0:D4} - {1:D2}", x.JIS.取引先コード, x.JIS.枝番),          // No.227,228 Add
                        得意先    = x.TOK != null ? x.TOK.略称名 : string.Empty,
                        品番コード  = x.UDTL.品番コード,
                        自社品番   = x.HIN != null ? x.HIN.自社品番 : string.Empty,
                        自社品名   = !string.IsNullOrEmpty(x.UDTL.自社品名) ? x.UDTL.自社品名 :
                                 x.HIN != null ? x.HIN.自社品名 : string.Empty,                                                 // No.390 Mod
                        自社色   = x.IRO != null ? x.IRO.色名称 : string.Empty,
                        賞味期限  = x.UDTL.賞味期限 == null ? null : x.UDTL.賞味期限.Value.ToShortDateString(),
                        単価    = x.UDTL.単価,
                        数量    = x.UDTL.数量,
                        単位    = x.UDTL.単位,
                        金額    = x.UDTL.金額 == null ? 0 : x.UHD.売上区分 < (int)CommonConstants.売上区分.通常売上返品 ? (int)x.UDTL.金額 : (int)x.UDTL.金額 * -1,
                        摘要    = x.UDTL.摘要,
                        受注番号  = x.UHD.受注番号.ToString(),
                        品伝票番号 = x.UHD.品伝票番号.ToString(),
                    })
                        .ToList();

                    return(resultList);
                }
                catch (System.ArgumentException agex)
                {
                    throw agex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Example #13
0
        /// <summary>
        /// 入金予定表の基本情報を取得する
        /// </summary>
        /// <param name="condition">
        ///  == 検索条件 ==
        /// 自社コード
        /// 入金年月
        /// 入金日
        /// 全入金日
        /// 得意先コード
        /// 得意先枝番
        /// 作成区分
        /// </param>
        /// <returns></returns>
        private List <PrintMenber> getCommonData(Dictionary <string, string> condition)
        {
            // 検索パラメータを展開
            int  myCompany, paymentYearMonth, createType;
            int? paymentDay, customerCode, customerEda;
            bool isAllDays;

            getFormParams(condition, out myCompany, out paymentYearMonth, out paymentDay, out isAllDays, out customerCode, out customerEda, out createType);

            try
            {
                using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
                {
                    // 対象として取引区分:得意先、相殺、販社を対象とする
                    List <int> kbnList = new List <int>()
                    {
                        (int)CommonConstants.取引区分.得意先, (int)CommonConstants.取引区分.相殺, (int)CommonConstants.取引区分.販社
                    };

                    // 集計得意先を取得
                    List <M01_TOK> tokList =
                        context.M01_TOK.Where(w => w.削除日時 == null &&
                                              kbnList.Contains(w.取引区分) &&
                                              w.担当会社コード == myCompany).ToList();
                    // 請求情報取得 No.414 Mod
                    var seiData = context.S01_SEIHD
                                  .Where(w => w.自社コード == myCompany &&
                                         w.入金日 / 100 == paymentYearMonth).ToList();

                    #region 条件絞り込み
                    // 締日が指定されている場合 No.414 Mod
                    if (paymentDay != null)
                    {
                        int      ival;
                        DateTime closeDay = AppCommon.GetClosingDate(paymentYearMonth / 100, paymentYearMonth % 100, (int)paymentDay, 0);
                        int      nyuknDay = Int32.TryParse(closeDay.ToShortDateString().Replace("/", ""), out ival) ? ival : -1;

                        // 請求ヘッダ.入金日に一致するデータを取得
                        seiData = seiData.Where(w => w.入金日 == nyuknDay).ToList();
                    }

                    // 取引先が指定されている場合
                    if (customerCode != null && customerEda != null)
                    {
                        tokList = tokList.Where(w => w.取引先コード == customerCode && w.枝番 == customerEda).ToList();
                    }

                    if (customerCode != null && customerEda == null)
                    {
                        tokList = tokList.Where(w => w.取引先コード == customerCode).ToList();
                    }
                    #endregion

                    tokList = tokList.OrderBy(o => o.取引先コード).ThenBy(t => t.枝番).ToList();

                    #region 集計処理
                    // 得意先毎に集計を実施
                    List <PrintMenber> resultList = new List <PrintMenber>();
                    foreach (M01_TOK tok in tokList)
                    {
                        var resultData = seiData.Where(w => w.請求先コード == tok.取引先コード &&
                                                       w.請求先枝番 == tok.枝番)
                                         .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                                                    x => x.自社コード,
                                                    y => y.自社コード,
                                                    (x, y) => new { x, y })
                                         .SelectMany(z => z.y.DefaultIfEmpty(),
                                                     (a, b) => new { SHD = a.x, JIS = b })
                                         .ToList()
                                         .Select(s => new PrintMenber
                        {
                            自社コード  = s.SHD.自社コード,
                            自社名    = s.JIS.自社名,
                            得意先コード = string.Format("{0:D4} - {1:D2}", tok.取引先コード, tok.枝番),
                            取引先コード = tok.取引先コード,
                            枝番     = tok.枝番,
                            得意先名   = tok.略称名,
                            締処理    = "済",
                            売上額    = s.SHD.売上額,
                            消費税    = s.SHD.消費税,
                            回収予定額  = s.SHD.売上額 + s.SHD.消費税,
                            請求年月   = s.SHD.集計最終日 != null?
                                     Convert.ToDateTime(s.SHD.集計最終日).ToShortDateString() : s.SHD.請求年月日.ToShortDateString(),                             // No.414 Mod
                            締日 = s.SHD.請求締日,

                            現金・振込・小切手 = tok.Tサイト2 == null ? s.SHD.売上額 + s.SHD.消費税 :
                                        tok.T入金日2 == null ? s.SHD.売上額 + s.SHD.消費税 :

                                        // T請求区分:1(以上)の場合
                                        // 請求条件金額の手形をxx枚発行し残金を現金とする
                                        tok.T請求区分 == (int)CommonConstants.請求・支払区分.ID01_以上 ?
                                        //tok.T請求条件 > 0 ?
                                        //    (s.SHD.売上額 + s.SHD.消費税) % tok.T請求条件 :
                                        //    0 :
                                        tok.T請求条件 - (s.SHD.売上額 + s.SHD.消費税) > 0 ?
                                        (s.SHD.売上額 + s.SHD.消費税) :
                                        0 :

                                        // T請求区分:(以下)の場合
                                        // 請求条件金額の手形を発行し、残金を現金とする
                                        tok.T請求条件 > 0 ?
                                        (s.SHD.売上額 + s.SHD.消費税) - tok.T請求条件 > 0 ?
                                        (s.SHD.売上額 + s.SHD.消費税) - tok.T請求条件 :
                                        s.SHD.売上額 + s.SHD.消費税 :
                                        // 手形請求条件金額に満たない場合、全額を現金に振り分ける
                                        s.SHD.売上額 + s.SHD.消費税,

                            手形 = tok.Tサイト2 == null ? 0 :
                                 tok.T入金日2 == null ? 0 :

                                 // T請求区分:1(以上)の場合
                                 // 請求条件金額の手形をxx枚発行する
                                 tok.T請求区分 == (int)CommonConstants.請求・支払区分.ID01_以上 ?
                                 //tok.T請求条件 > 0 ?
                                 //    ((s.SHD.売上額 + s.SHD.消費税) / tok.T請求条件) * tok.T請求条件 :
                                 //    s.SHD.売上額 + s.SHD.消費税 :
                                 tok.T請求条件 - (s.SHD.売上額 + s.SHD.消費税) <= 0 ?
                                 s.SHD.売上額 + s.SHD.消費税 :
                                 0:
                                 // T請求区分:2(以下)の場合
                                 // 請求条件金額の手形を発行する
                                 s.SHD.売上額 + s.SHD.消費税 - tok.T請求条件 >= 0 ?
                                 tok.T請求条件 :
                                 0,

                            入金予定日 = s.SHD.入金日.ToString().Insert(4, "/").Insert(7, "/"),
                            期日    = tok.Tサイト2 == null ? null :
                                    tok.T入金日2 == null ? null :
                                    AppCommon.GetClosingDate(s.SHD.請求年月 / 100,
                                                             s.SHD.請求年月 % 100,
                                                             (int)tok.T入金日2,
                                                             (int)tok.Tサイト2).ToShortDateString()
                        });


                        resultList.AddRange(resultData);
                    }
                    #endregion

                    // 条件絞り込み
                    // 入金予定ありのみ
                    if (createType == 1 || createType == 3)
                    {
                        resultList = resultList.Where(w => w.回収予定額 != 0).ToList();
                    }

                    //請求処理前の得意先データを作成
                    if (createType == 3)
                    {
                        List <PrintMenber> addMiSeikyuuList = CreateMiseikyu(context, myCompany, paymentYearMonth, paymentDay, customerCode, customerEda);

                        //NULLチェック
                        if (addMiSeikyuuList != null)
                        {
                            resultList.AddRange(addMiSeikyuuList);
                        }
                    }

                    return(resultList
                           .OrderBy(o => o.自社コード)
                           .ThenBy(t => t.入金予定日)
                           .ThenBy(t => t.請求年月)
                           .ThenBy(t => t.得意先コード)
                           .ToList());
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #14
0
        /// <summary>
        /// データ取得
        /// </summary>
        public void SEARCH_MST900601(DataSet ds, int no)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();
                try
                {
                    using (DbTransaction transaction = context.Connection.BeginTransaction())
                    {
                        //変数宣言
                        DataTable dt;
                        dt = ds.Tables["CSV取り込み"];

                        switch (no)
                        {
                        case 0:
                            #region TRN


                            foreach (DataRow row in dt.Rows)
                            {
                                // 20150715 wada add エラーでない行を登録対象とする。
                                if (!row.HasErrors)
                                {
                                    int i明細番号 = ConvertToInt(row["明細番号"]);
                                    int i明細行  = ConvertToInt(row["明細行"]);
                                    // 新番号取得
                                    var 明細番号M = (from n in context.M88_SEQ
                                                 where n.明細番号ID == 1
                                                 select n
                                                 ).FirstOrDefault();
                                    if (明細番号M.現在明細番号 < i明細番号)
                                    {
                                        int p明細番号 = i明細番号 + 1;
                                        明細番号M.現在明細番号 = p明細番号;
                                        明細番号M.AcceptChanges();
                                    }
                                    if (i明細番号 == 0)
                                    {
                                        i明細番号 = 明細番号M.現在明細番号 + 1;
                                        i明細行  = 1;

                                        int p明細番号 = i明細番号;
                                        明細番号M.現在明細番号 = p明細番号;
                                        明細番号M.AcceptChanges();
                                    }

                                    int i得意先KEY = ConvertToInt(row["得意先KEY"]);
                                    int i支払先KEY = ConvertToInt(row["支払先KEY"]);
                                    int i車輌KEY  = ConvertToInt(row["車輌KEY"]);
                                    int i乗務員KEY = ConvertToInt(row["乗務員KEY"]);
                                    //得意先
                                    var ret = (from m01 in context.M01_TOK
                                               where m01.得意先ID == i得意先KEY
                                               select new MST90060_KEY
                                    {
                                        Key = m01.得意先KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret)
                                    {
                                        i得意先KEY = keys.Key;
                                    }
                                    //支払先
                                    var ret1 = (from m01 in context.M01_TOK
                                                where m01.得意先ID == i支払先KEY
                                                select new MST90060_KEY
                                    {
                                        Key = m01.得意先KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret1)
                                    {
                                        i支払先KEY = keys.Key;
                                    }
                                    //車輌
                                    var ret2 = (from m05 in context.M05_CAR
                                                where m05.車輌ID == i車輌KEY
                                                select new MST90060_KEY
                                    {
                                        Key = m05.車輌KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret2)
                                    {
                                        i車輌KEY = keys.Key;
                                    }
                                    //乗務員
                                    var ret3 = (from m04 in context.M04_DRV
                                                where m04.乗務員ID == i乗務員KEY
                                                select new MST90060_KEY
                                    {
                                        Key = m04.乗務員KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret3)
                                    {
                                        i乗務員KEY = keys.Key;
                                    }


                                    T01_TRN t01 = new T01_TRN();
                                    t01.明細番号       = i明細番号;                                      //ConvertToInt(row["明細番号"]);
                                    t01.明細行        = i明細行;                                       //ConvertToInt(row["明細行"]);
                                    t01.登録日時       = DateTime.Now;
                                    t01.更新日時       = DateTime.Now;
                                    t01.明細区分       = ConvertToInt(row["明細区分"]);
                                    t01.入力区分       = ConvertToInt(row["入力区分"]);
                                    t01.請求日付       = ConvertToDateTime(row["請求日付"]);
                                    t01.支払日付       = ConvertToDateTime(row["支払日付"]);
                                    t01.配送日付       = ConvertToDateTime(row["配送日付"]);
                                    t01.配送時間       = ConvertToDecimal(row["配送時間"]);
                                    t01.得意先KEY     = i得意先KEY;
                                    t01.請求内訳ID     = ConvertToIntNullable(row["請求内訳ID"]);
                                    t01.車輌KEY      = i車輌KEY;
                                    t01.車種ID       = ConvertToIntNullable(row["車種ID"]);
                                    t01.支払先KEY     = i支払先KEY;
                                    t01.乗務員KEY     = i乗務員KEY;
                                    t01.自社部門ID     = ConvertToInt(row["自社部門ID"]);
                                    t01.車輌番号       = ConvertToStringNullable(row["車輌番号"]);
                                    t01.支払先名2次     = ConvertToStringNullable(row["支払先名2次"]);
                                    t01.実運送乗務員     = ConvertToStringNullable(row["実運送乗務員"]);
                                    t01.乗務員連絡先     = ConvertToStringNullable(row["乗務員連絡先"]);
                                    t01.請求運賃計算区分ID = ConvertToInt(row["請求運賃計算区分ID"]);
                                    t01.支払運賃計算区分ID = ConvertToInt(row["支払運賃計算区分ID"]);
                                    t01.数量         = ConvertToDecimal(row["数量"]);
                                    t01.単位         = ConvertToStringNullable(row["単位"]);
                                    t01.重量         = ConvertToDecimal(row["重量"]);
                                    t01.走行KM       = ConvertToInt(row["走行KM"]);
                                    t01.実車KM       = ConvertToInt(row["実車KM"]);
                                    t01.待機時間       = ConvertToDecimal(row["重量"]);
                                    t01.売上単価       = ConvertToDecimal(row["売上単価"]);
                                    t01.売上金額       = ConvertToInt(row["売上金額"]);
                                    t01.通行料        = ConvertToInt(row["通行料"]);
                                    t01.請求割増1      = ConvertToInt(row["請求割増1"]);
                                    t01.請求割増2      = ConvertToInt(row["請求割増2"]);
                                    t01.請求消費税      = ConvertToInt(row["請求消費税"]);
                                    t01.支払単価       = ConvertToDecimal(row["支払単価"]);
                                    t01.支払金額       = ConvertToInt(row["支払金額"]);
                                    t01.支払通行料      = ConvertToInt(row["支払通行料"]);
                                    t01.支払割増1      = ConvertToInt(row["支払割増1"]);
                                    t01.支払割増2      = ConvertToInt(row["支払割増2"]);
                                    t01.支払消費税      = ConvertToInt(row["支払消費税"]);
                                    t01.水揚金額       = ConvertToInt(row["水揚金額"]);
                                    t01.社内区分       = ConvertToInt(row["社内区分"]);
                                    t01.請求税区分      = ConvertToInt(row["請求税区分"]);
                                    t01.支払税区分      = ConvertToInt(row["支払税区分"]);
                                    t01.商品ID       = ConvertToIntNullable(row["商品ID"]);
                                    t01.商品名        = ConvertToStringNullable(row["商品名"]);
                                    t01.発地ID       = ConvertToIntNullable(row["発地ID"]);
                                    t01.発地名        = ConvertToStringNullable(row["発地名"]);
                                    t01.着地ID       = ConvertToIntNullable(row["着地ID"]);
                                    t01.着地名        = ConvertToStringNullable(row["着地名"]);
                                    t01.請求摘要ID     = ConvertToIntNullable(row["請求摘要ID"]);
                                    t01.請求摘要       = ConvertToStringNullable(row["請求摘要"]);
                                    t01.社内備考ID     = ConvertToIntNullable(row["社内備考ID"]);
                                    t01.社内備考       = ConvertToStringNullable(row["社内備考"]);
                                    t01.入力者ID      = ConvertToIntNullable(row["入力者ID"]);

                                    context.T01_TRN.ApplyChanges(t01);
                                }
                            }
                            context.SaveChanges();
                            transaction.Commit();
                            break;
                            #endregion

                        case 1:
                            #region UTRN
                            foreach (DataRow row in dt.Rows)
                            {
                                // 20150715 wada add エラーでない行を登録対象とする。
                                if (!row.HasErrors)
                                {
                                    int i明細番号 = ConvertToInt(row["明細番号"]);
                                    int i明細行  = ConvertToInt(row["明細行"]);
                                    // 新番号取得
                                    var 明細番号M = (from n in context.M88_SEQ
                                                 where n.明細番号ID == 1
                                                 select n
                                                 ).FirstOrDefault();
                                    if (明細番号M.現在明細番号 < i明細番号)
                                    {
                                        int p明細番号 = i明細番号 + 1;
                                        明細番号M.現在明細番号 = p明細番号;
                                        明細番号M.AcceptChanges();
                                    }
                                    if (i明細番号 == 0)
                                    {
                                        i明細番号 = 明細番号M.現在明細番号 + 1;
                                        i明細行  = 1;

                                        int p明細番号 = i明細番号;
                                        明細番号M.現在明細番号 = p明細番号;
                                        明細番号M.AcceptChanges();
                                    }

                                    int i車輌KEY  = ConvertToInt(row["車輌KEY"]);
                                    int i乗務員KEY = ConvertToInt(row["乗務員KEY"]);
                                    //車輌
                                    var ret = (from m05 in context.M05_CAR
                                               where m05.車輌ID == i車輌KEY
                                               select new MST90060_KEY
                                    {
                                        Key = m05.車輌KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret)
                                    {
                                        i車輌KEY = keys.Key;
                                    }
                                    //乗務員
                                    var ret1 = (from m04 in context.M04_DRV
                                                where m04.乗務員ID == i乗務員KEY
                                                select new MST90060_KEY
                                    {
                                        Key = m04.乗務員KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret1)
                                    {
                                        i乗務員KEY = keys.Key;
                                    }


                                    T02_UTRN t02 = new T02_UTRN();
                                    t02.明細番号   = i明細番号;                                         // ConvertToInt(row["明細番号"]);
                                    t02.明細行    = i明細行;                                          // ConvertToInt(row["明細行"]);
                                    t02.登録日時   = DateTime.Now;
                                    t02.更新日時   = DateTime.Now;
                                    t02.明細区分   = 1;
                                    t02.入力区分   = 2;
                                    t02.実運行日開始 = ConvertToDateTimeNullable(row["実運行日開始"]);
                                    t02.実運行日終了 = ConvertToDateTimeNullable(row["実運行日終了"]);
                                    t02.車輌KEY  = i車輌KEY;
                                    t02.乗務員KEY = i乗務員KEY;
                                    t02.車種ID   = ConvertToIntNullable(row["車種ID"]);
                                    t02.車輌番号   = ConvertToStringNullable(row["車輌番号"]);
                                    t02.自社部門ID = ConvertToIntNullable(row["自社部門ID"]);
                                    t02.出庫時間   = ConvertToDecimal(row["出庫時間"]);
                                    t02.帰庫時間   = ConvertToDecimal(row["帰庫時間"]);
                                    t02.出勤区分ID = ConvertToInt(row["出勤区分ID"]);
                                    t02.拘束時間   = ConvertToDecimal(row["拘束時間"]);
                                    t02.運転時間   = ConvertToDecimal(row["運転時間"]);
                                    t02.高速時間   = ConvertToDecimal(row["高速時間"]);
                                    t02.作業時間   = ConvertToDecimal(row["作業時間"]);
                                    t02.待機時間   = ConvertToDecimal(row["待機時間"]);
                                    t02.休憩時間   = ConvertToDecimal(row["休憩時間"]);
                                    t02.残業時間   = ConvertToDecimal(row["残業時間"]);
                                    t02.深夜時間   = ConvertToDecimal(row["深夜時間"]);
                                    t02.走行KM   = ConvertToInt(row["走行KM"]);
                                    t02.実車KM   = ConvertToInt(row["実車KM"]);
                                    t02.輸送屯数   = ConvertToDecimal(row["輸送屯数"]);
                                    t02.出庫KM   = ConvertToInt(row["出庫KM"]);
                                    t02.帰庫KM   = ConvertToInt(row["帰庫KM"]);
                                    t02.備考     = ConvertToStringNullable(row["備考"]);
                                    t02.勤務開始日  = ConvertToDateTime(row["勤務開始日"]);
                                    t02.勤務終了日  = ConvertToDateTime(row["勤務終了日"]);
                                    t02.労務日    = ConvertToDateTime(row["労務日"]);
                                    t02.入力者ID  = ConvertToIntNullable(row["入力者ID"]);
                                    context.T02_UTRN.ApplyChanges(t02);
                                }
                            }
                            context.SaveChanges();
                            transaction.Commit();
                            break;
                            #endregion

                        case 2:
                            #region KTRN  注:データベースが車輌IDになっている。
                            foreach (DataRow row in dt.Rows)
                            {
                                // 20150715 wada add エラーでない行を登録対象とする。
                                if (!row.HasErrors)
                                {
                                    int i明細番号 = ConvertToInt(row["明細番号"]);
                                    int i明細行  = ConvertToInt(row["明細行"]);
                                    // 新番号取得
                                    var 明細番号M = (from n in context.M88_SEQ
                                                 where n.明細番号ID == 1
                                                 select n
                                                 ).FirstOrDefault();
                                    if (明細番号M.現在明細番号 < i明細番号)
                                    {
                                        int p明細番号 = i明細番号;
                                        明細番号M.現在明細番号 = p明細番号;
                                        明細番号M.AcceptChanges();
                                    }
                                    if (i明細番号 == 0)
                                    {
                                        i明細番号 = 明細番号M.現在明細番号 + 1;
                                        i明細行  = 1;

                                        int p明細番号 = i明細番号;
                                        明細番号M.現在明細番号 = p明細番号;
                                        明細番号M.AcceptChanges();
                                    }

                                    int i支払先KEY = ConvertToInt(row["支払先KEY"]);
                                    int i乗務員KEY = ConvertToInt(row["乗務員KEY"]);
                                    int i車輌KEY  = ConvertToInt(row["車輌ID"]);
                                    //支払先
                                    var ret = (from m01 in context.M01_TOK
                                               where m01.得意先ID == i支払先KEY
                                               select new MST90060_KEY
                                    {
                                        Key = m01.得意先KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret)
                                    {
                                        i支払先KEY = keys.Key;
                                    }
                                    //乗務員
                                    var ret1 = (from m04 in context.M04_DRV
                                                where m04.乗務員ID == i乗務員KEY
                                                select new MST90060_KEY
                                    {
                                        Key = m04.乗務員KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret1)
                                    {
                                        i乗務員KEY = keys.Key;
                                    }
                                    //車輌
                                    var ret2 = (from m05 in context.M05_CAR
                                                where m05.車輌ID == i車輌KEY
                                                select new MST90060_KEY
                                    {
                                        Key = m05.車輌KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret2)
                                    {
                                        i車輌KEY = keys.Key;
                                    }


                                    T03_KTRN t03 = new T03_KTRN();
                                    t03.明細番号   = i明細番号;                                         // ConvertToInt(row["明細番号"]);
                                    t03.明細行    = i明細行;                                          // ConvertToInt(row["明細行"]);
                                    t03.登録日時   = DateTime.Now;
                                    t03.更新日時   = DateTime.Now;
                                    t03.明細区分   = 1;
                                    t03.入力区分   = 1;
                                    t03.経費発生日  = ConvertToDateTimeNullable(row["経費発生日"]);
                                    t03.車輌ID   = i車輌KEY;
                                    t03.車輌番号   = ConvertToStringNullable(row["車輌番号"]);
                                    t03.メーター   = ConvertToIntNullable(row["メーター"]);
                                    t03.乗務員KEY = i乗務員KEY;
                                    t03.支払先KEY = i支払先KEY;
                                    t03.自社部門ID = ConvertToIntNullable(row["自社部門ID"]);
                                    t03.経費項目ID = ConvertToIntNullable(row["経費項目ID"]);
                                    t03.経費補助名称 = ConvertToStringNullable(row["経費補助名称"]);
                                    t03.単価     = ConvertToDecimal(row["単価"]);
                                    t03.内軽油税分  = ConvertToDecimal(row["内軽油税分"]);
                                    t03.数量     = ConvertToDecimal(row["数量"]);
                                    t03.金額     = ConvertToInt(row["金額"]);
                                    t03.収支区分   = ConvertToIntNullable(row["収支区分"]);
                                    t03.摘要ID   = ConvertToIntNullable(row["摘要ID"]);
                                    t03.摘要名    = ConvertToStringNullable(row["摘要名"]);
                                    t03.入力者ID  = ConvertToIntNullable(row["入力者ID"]);

                                    context.T03_KTRN.ApplyChanges(t03);
                                }
                            }
                            context.SaveChanges();
                            transaction.Commit();
                            break;
                            #endregion

                        case 3:
                            #region NTRN
                            foreach (DataRow row in dt.Rows)
                            {
                                // 20150715 wada add エラーでない行を登録対象とする。
                                if (!row.HasErrors)
                                {
                                    int i明細番号 = ConvertToInt(row["明細番号"]);
                                    int i明細行  = ConvertToInt(row["明細行"]);
                                    // 新番号取得
                                    var 明細番号M = (from n in context.M88_SEQ
                                                 where n.明細番号ID == 1
                                                 select n
                                                 ).FirstOrDefault();
                                    if (明細番号M.現在明細番号 < i明細番号)
                                    {
                                        int p明細番号 = 明細番号M.現在明細番号 + 1;
                                        明細番号M.現在明細番号 = p明細番号;
                                        明細番号M.AcceptChanges();
                                    }
                                    if (i明細番号 == 0)
                                    {
                                        i明細番号 = 明細番号M.現在明細番号 + 1;
                                        i明細行  = 1;

                                        int p明細番号 = i明細番号;
                                        明細番号M.現在明細番号 = p明細番号;
                                        明細番号M.AcceptChanges();
                                    }

                                    int i得意先KEY = ConvertToInt(row["取引先KEY"]);
                                    //得意先
                                    var ret = (from m01 in context.M01_TOK
                                               where m01.得意先ID == i得意先KEY
                                               select new MST90060_KEY
                                    {
                                        Key = m01.得意先KEY,
                                    }).AsQueryable();
                                    foreach (var keys in ret)
                                    {
                                        i得意先KEY = keys.Key;
                                    }

                                    T04_NYUK t04 = new T04_NYUK();
                                    t04.明細番号   = i明細番号;                                         // ConvertToInt(row["明細番号"]);
                                    t04.明細行    = i明細行;                                          // ConvertToInt(row["明細行"]);
                                    t04.登録日時   = DateTime.Now;
                                    t04.更新日時   = DateTime.Now;
                                    t04.明細区分   = ConvertToInt(row["明細区分"]);
                                    t04.入出金日付  = ConvertToDateTimeNullable(row["入出金日付"]);
                                    t04.取引先KEY = i得意先KEY;
                                    t04.入出金区分  = ConvertToInt(row["入出金区分"]);
                                    t04.入出金金額  = ConvertToInt(row["入出金金額"]);
                                    t04.摘要ID   = ConvertToIntNullable(row["摘要ID"]);
                                    t04.摘要名    = ConvertToStringNullable(row["摘要名"]);
                                    t04.手形日付   = ConvertToDateTimeNullable(row["手形日付"]);
                                    t04.入力者ID  = ConvertToIntNullable(row["入力者ID"]);

                                    context.T04_NYUK.ApplyChanges(t04);
                                }
                            }
                            context.SaveChanges();
                            transaction.Commit();
                            break;
                            #endregion
                        }
                        return;
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Example #15
0
        /// <summary>
        /// M92_KZEIのデータ取得
        /// </summary>
        public List <M92_KZEI_Member> GetData(DateTime?p適用開始年月日, int?pオプションコード)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                var query = (from M92 in context.M92_KZEI
                             select new M92_KZEI_Member
                {
                    適用開始年月日 = M92.適用開始年月日,
                    軽油引取税率 = M92.軽油引取税率,
                    削除日付 = M92.削除日付,
                }).AsQueryable();

                if (p適用開始年月日 != null)
                {
                    if (pオプションコード == 0)
                    {
                        query = query.Where(c => c.適用開始年月日 == p適用開始年月日);
                    }
                    else if (pオプションコード == -1)
                    {
                        //自社IDの1つ前のIDを取得
                        query = query.Where(c => c.適用開始年月日 <= p適用開始年月日);
                        if (query.Count() >= 2)
                        {
                            query = query.Where(c => c.適用開始年月日 < p適用開始年月日);
                        }
                        query = query.OrderByDescending(c => c.適用開始年月日);
                    }
                    else
                    {
                        //自社IDの1つ後のIDを取得
                        query = query.Where(c => c.適用開始年月日 >= p適用開始年月日);
                        if (query.Count() >= 2)
                        {
                            query = query.Where(c => c.適用開始年月日 > p適用開始年月日);
                        }
                        query = query.OrderBy(c => c.適用開始年月日);
                    }
                }
                else
                {
                    if (pオプションコード == 0)
                    {
                        //自社IDの先頭のIDを取得
                        query = query.OrderBy(c => c.適用開始年月日);
                    }
                    else if (pオプションコード == 1)
                    {
                        query = query.Where(c => c.削除日付 == null);
                        query = query.OrderByDescending(c => c.適用開始年月日);
                        if (pオプションコード == 0)
                        {
                            query = query.OrderBy(c => c.適用開始年月日);
                        }
                    }
                }

                var ret = query.FirstOrDefault();
                List <M92_KZEI_Member> result = new List <M92_KZEI_Member>();
                if (ret != null)
                {
                    result.Add(ret);
                }
                return(query.ToList());
            }
        }
Example #16
0
        /// <summary>
        /// 仕入データ問合せ検索をおこなう
        /// </summary>
        /// <param name="p自社コード"></param>
        /// <param name="cond">
        /// === 検索条件辞書 ===
        /// 仕入日From - 仕入日To
        /// 入金日From - 入金日To
        /// 入力区分
        /// 仕入先コード - 仕入先枝番
        /// 入荷先コード
        /// </param>
        /// <returns></returns>
        public List <SearchDataMember> GetDataList(int p自社コード, Dictionary <string, string> cond)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                try
                {
                    #region パラメータの型変換

                    DateTime?
                        sDateFrom = stringToDate(cond, "仕入日From"),
                        sDateTo   = stringToDate(cond, "仕入日To"),
                        nDateFrom = stringToDate(cond, "入金日From"),
                        nDateTo   = stringToDate(cond, "入金日To");

                    int ival;
                    int?inputType = int.TryParse(cond["入力区分"], out ival) ? (ival >= 0 ? ival : (int?)null) : (int?)null;
                    int?
                        supCode     = int.TryParse(cond["仕入先コード"], out ival) ? ival : (int?)null,
                        supEda      = int.TryParse(cond["仕入先枝番"], out ival) ? ival : (int?)null,
                        arrivalCode = int.TryParse(cond["入荷先コード"], out ival) ? ival : (int?)null;

                    #endregion

                    // 基本情報取得
                    var srDataList =
                        context.T03_SRHD.Where(w => w.削除日時 == null && w.会社名コード == p自社コード)
                        .Join(context.T03_SRDTL
                              .Where(w => w.削除日時 == null)
                              .GroupBy(g => new { g.伝票番号 })
                              .Select(x => new { x.Key.伝票番号, 合計金額 = x.Sum(s => s.金額) }),
                              x => x.伝票番号,
                              y => y.伝票番号,
                              (x, y) => new { SRHD = x, SRDTL = y });

                    #region 条件絞込

                    // 仕入日From - To
                    if (sDateFrom != null)
                    {
                        srDataList = srDataList.Where(w => w.SRHD.仕入日 >= sDateFrom);
                    }

                    if (sDateTo != null)
                    {
                        srDataList = srDataList.Where(w => w.SRHD.仕入日 <= sDateTo);
                    }

                    // 入金日From - To
                    // TODO:保留

                    // 入力区分
                    if (inputType != null)
                    {
                        srDataList = srDataList.Where(w => w.SRHD.入力区分 == inputType);
                    }

                    // 仕入先
                    if (supCode != null && supEda != null)
                    {
                        srDataList = srDataList.Where(w => w.SRHD.仕入先コード == supCode && w.SRHD.仕入先枝番 == supEda);
                    }

                    // 入荷先
                    if (arrivalCode != null)
                    {
                        srDataList = srDataList.Where(w => w.SRHD.入荷先コード == arrivalCode);
                    }

                    #endregion

                    // 返品分のデータを取得する
                    var returnList = srDataList.Where(w => w.SRHD.仕入区分 == (int)CommonConstants.仕入区分.返品).ToList();

                    #region 各名称を取得して検索メンバークラスに整形
                    var resultList =
                        srDataList.Where(w => w.SRHD.仕入区分 < (int)CommonConstants.仕入区分.返品).ToList()
                        // 返品分の仕入情報
                        .GroupJoin(returnList,
                                   x => x.SRHD.伝票番号,
                                   y => y.SRHD.元伝票番号,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (p, q) => new { p.x.SRHD, p.x.SRDTL, RTSR = q })
                        // 会社名
                        .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                                   x => x.SRHD.会社名コード,
                                   y => y.自社コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (a, b) => new { a.x.SRHD, a.x.SRDTL, a.x.RTSR, JIS1 = b })
                        // 仕入先
                        .GroupJoin(context.M01_TOK.Where(w => w.削除日時 == null),
                                   x => new { code = x.SRHD.仕入先コード, eda = x.SRHD.仕入先枝番 },
                                   y => new { code = y.取引先コード, eda = y.枝番 },
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (c, d) => new { c.x.SRHD, c.x.SRDTL, c.x.RTSR, c.x.JIS1, TOK = d })
                        // 入荷先
                        .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                                   x => x.SRHD.入荷先コード,
                                   y => y.自社コード,
                                   (x, y) => new { x, y })
                        .SelectMany(x => x.y.DefaultIfEmpty(),
                                    (e, f) => new { e.x.SRHD, e.x.SRDTL, e.x.RTSR, e.x.JIS1, e.x.TOK, JIS2 = f })
                        .ToList()
                        .Select(x => new SearchDataMember
                    {
                        伝票番号   = x.SRHD.伝票番号,                //No.406 Mod
                        返品伝票番号 = x.RTSR != null ? x.RTSR.SRHD.伝票番号.ToString() : "",
                        会社名コード = x.SRHD.会社名コード.ToString(),
                        自社名    = x.JIS1 != null ? x.JIS1.自社名 : "",
                        仕入日    = x.SRHD.仕入日.ToString("yyyy/MM/dd"),
                        支払日    = "",     // TODO:一応足しておく
                        入力区分   = x.SRHD.入力区分.ToString(),
                        入力区分名  = CommonConstants.Get入力区分Dic()[x.SRHD.入力区分],
                        仕入先コード = string.Format("{0:D4} - {1:D2}", x.SRHD.仕入先コード, x.SRHD.仕入先枝番),         // No.227,228 Mod
                        仕入先名   = x.TOK != null ? x.TOK.略称名 : "",
                        入荷先コード = x.SRHD.入荷先コード.ToString(),
                        入荷先名   = x.JIS2 != null ? x.JIS2.自社名 : "",
                        発注番号   = x.SRHD.発注番号.ToString(),
                        備考     = x.SRHD.備考,
                        合計金額   = x.SRDTL.合計金額,
                        消費税    = x.SRHD.消費税 ?? 0,
                        返品合計金額 = x.RTSR != null ? (x.RTSR.SRDTL.合計金額 * -1) : 0,
                        返品消費税  = x.RTSR != null ? (x.RTSR.SRHD.消費税 * -1) ?? 0 : 0
                    })
                        .ToList();
                    #endregion

                    if (inputType == null || inputType != CommonConstants.入力区分.仕入入力.GetHashCode())
                    {
                        var hanList = GetHanDataList(context, p自社コード, cond);
                        // 既存リストに追加
                        resultList.AddRange(hanList);
                    }

                    // リスト追加後にソート実施
                    resultList = resultList.OrderBy(o => o.仕入日).ThenBy(t => t.伝票番号).ToList();          //No.406 Mod

                    return(resultList);
                }
                catch (System.ArgumentException agex)
                {
                    throw agex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Example #17
0
        /// <summary>
        /// 調整計算をおこなう
        /// </summary>
        /// <param name="paramDic">パラメータDic</param>
        /// <param name="userId">ログインユーザID</param>
        public List <BSK05010_SearchMember> SetCalculate(Dictionary <string, string> paramDic, int userId)
        {
            int compCd         = int.Parse(paramDic[PARAM_NAME_COMPANY]),
                year           = int.Parse(paramDic[PARAM_NAME_YEAR].Replace("/", ""));
            decimal rate       = decimal.Parse(paramDic[PARAM_NAME_RATE]);
            M73     zeiService = new M73();

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    try
                    {
                        var hanData =
                            context.M70_JIS
                            .Where(w => w.削除日時 == null && w.自社コード == compCd)
                            .Join(context.M01_TOK,
                                  x => new { code = x.取引先コード ?? 0, eda = x.枝番 ?? 0 },
                                  y => new { code = y.取引先コード, eda = y.枝番 },
                                  (x, y) => new { JIS = x, TOK = y })
                            .FirstOrDefault();

                        // 決算月・請求締日から売上集計期間を算出する
                        int pMonth = hanData.JIS.決算月 ?? CommonConstants.DEFAULT_SETTLEMENT_MONTH,
                            pYear  = pMonth < 4 ? year + 1 : year;

                        // 締日前日が集計最終日
                        // No.101-3 Mod Start
                        DateTime priodEndDate =
                            AppCommon.GetClosingDate(pYear, pMonth, hanData.TOK.T締日 ?? CommonConstants.DEFAULT_CLOSING_DAY).AddDays(-1);
                        // No.101-3 Mod End

                        // 最終日から12ヶ月遡って翌日を集計開始日とする
                        DateTime priodStrDate = priodEndDate.AddMonths(-12).AddDays(1);

                        //debugLog.WriteLine(string.Format("集計期間:{0}~{1}", priodStrDate.ToString("yyyy/MM/dd"), priodEndDate.ToString("yyyy/MM/dd")));

                        #region 販社明細の調整計算(単価・金額)
                        // 対象期間内の販社売上明細を取得
                        var dtlList =
                            context.T02_URDTL_HAN
                            .Where(w =>
                                   w.削除日時 == null &&
                                   context.T02_URHD_HAN
                                   .Where(v => v.削除日時 == null &&
                                          v.販社コード == compCd &&
                                          v.売上日 >= priodStrDate && v.売上日 <= priodEndDate)
                                   .Select(s => s.伝票番号)
                                   .Contains(w.伝票番号));

                        foreach (var data in dtlList)
                        {
                            decimal calcRate = rate / 100m + 1;
                            // 調整比率を調整額として反映
                            data.調整単価 = Math.Round(data.単価 * calcRate, 0);
                            data.調整金額 = decimal.ToInt32(Math.Round((data.金額 ?? 0) * calcRate, 0));

                            //debugLog.WriteLine(string.Format("Rate:{0:#,0.##}", calcRate));
                            //debugLog.WriteLine(string.Format("単価:{0:#,0} ⇒ {1:#,0.##}", data.単価, data.調整単価));
                            //debugLog.WriteLine(string.Format("金額:{0:#,0} ⇒ {1:#,0.##}", data.金額, data.調整金額));
                            //debugLog.WriteLine("--------------------");

                            data.AcceptChanges();
                        }
                        #endregion

                        // 変更状態を確定
                        context.SaveChanges();

                        #region 販社ヘッダの調整計算(消費税)
                        var hdList =
                            context.T02_URHD_HAN
                            .Where(w => w.削除日時 == null &&
                                   w.販社コード == compCd &&
                                   w.売上日 >= priodStrDate && w.売上日 <= priodEndDate);

                        foreach (var data in hdList)
                        {
                            int sumTax = 0;
                            foreach (var row in context.T02_URDTL_HAN.Where(w => w.削除日時 == null && w.伝票番号 == data.伝票番号))
                            {
                                // No.101-3 Mod Start
                                sumTax += decimal.ToInt32(
                                    zeiService.getCalculatTax(hanData.TOK.T税区分ID, data.売上日, row.品番コード, row.調整金額 ?? 0, row.数量, hanData.TOK.T消費税区分));     // No.272 Mod
                                // No.101-3 Mod End
                            }

                            data.調整消費税 = sumTax;
                            data.調整比率  = rate;
                            data.AcceptChanges();
                        }

                        #endregion

                        // 変更状態を確定
                        context.SaveChanges();

                        // トランザクションコミット
                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        // トランザクションロールバック
                        tran.Rollback();
                        throw ex;
                    }
                }// end transaction
            }

            // データを再取得して返却
            return(GetDataList(paramDic));
        }
Example #18
0
        public List <SHR13010_Member> SHR13010_GetDataHinList(string s取引先From, string s取引先To, int?[] i取引先List, int i作成年, int i作成月, DateTime d集計月, string s作成年月度, int i作成区分, int i取引区分)
        {
            string 取引先指定ピックアップ = string.Empty;

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                List <SHR13010_Member> retList = new List <SHR13010_Member>();
                context.Connection.Open();

                //売上データ【全件抽出】
                var query = (from m01 in context.M01_TOK.Where(c => c.削除日付 == null && c.親子区分ID != 3)
                             join s01 in context.S01_TOKS.Where(c => c.回数 == 1) on m01.得意先KEY equals s01.得意先KEY into Group
                             from s01Group in Group
                             group new { s01Group, m01 } by new { m01.得意先ID, m01.略称名, m01.Tサイト日, m01.T集金日, s01Group.集計年月 } into grGroup
                             select new SHR13010_Company_Sales
                {
                    コード = grGroup.Key.得意先ID,
                    取引先名 = grGroup.Key.略称名,
                    サイト = grGroup.Key.Tサイト日,
                    集計日付 = grGroup.Key.集計年月,
                    集金日 = grGroup.Key.T集金日,
                    通行料 = grGroup.Sum(c => c.s01Group.締日通行料),
                    消費税 = grGroup.Sum(c => c.s01Group.締日消費税),
                    売上金額 = grGroup.Sum(c => c.s01Group.締日売上金額),
                    売上金額計 = grGroup.Sum(c => c.s01Group.締日売上金額 + c.s01Group.締日消費税 + c.s01Group.締日通行料),
                }).ToList();

                //支払データ【全件抽出】
                var query2 = (from m01 in context.M01_TOK.Where(c => c.削除日付 == null && c.親子区分ID != 3)
                              join s02 in context.S02_YOSS.Where(c => c.回数 == 1) on m01.得意先KEY equals s02.支払先KEY into Group
                              from s02Group in Group
                              group new { m01, s02Group } by new { m01.得意先ID, m01.略称名, m01.Sサイト日, m01.S集金日, s02Group.集計年月 } into grGroup
                              select new SHR13010_Company_Payment
                {
                    コードs = grGroup.Key.得意先ID,
                    取引先名s = grGroup.Key.略称名,
                    サイトs = grGroup.Key.Sサイト日,
                    集計日付s = grGroup.Key.集計年月,
                    集金日s = grGroup.Key.S集金日,
                    支払通行料 = grGroup.Sum(c => c.s02Group.締日通行料),
                    支払消費税 = grGroup.Sum(c => c.s02Group.締日消費税),
                    傭車金額 = grGroup.Sum(c => c.s02Group.締日売上金額),
                    傭車金額計 = grGroup.Sum(c => c.s02Group.締日売上金額 + c.s02Group.締日消費税 + c.s02Group.締日通行料),
                }).ToList();

                //集計日付に会社ごとのサイト数を計算し【請求月】を算出
                for (int i = 0; i < query.Count; i++)
                {
                    if (Convert.ToDateTime((query[i].集計日付).ToString().Substring(0, 4) + "/" + query[i].集計日付.ToString().Substring(4, 2) + "/01").AddMonths(query[i].サイト) == d集計月)
                    {
                        //サイト数を計算したデータと入力されたデータが同じなら挿入
                        query[i].請求月 = Convert.ToDateTime((query[i].集計日付).ToString().Substring(0, 4) + "/" + query[i].集計日付.ToString().Substring(4, 2) + "/01").AddMonths(query[i].サイト);
                    }
                    else
                    {
                        //集計の必要のないデータには【1111年11月11日】を挿入
                        query[i].請求月 = Convert.ToDateTime("1111/11/11");
                    }
                }
                ;


                //集計日付に会社ごとのサイト数を計算し【支払月】を算出
                for (int i = 0; i < query2.Count; i++)
                {
                    if (Convert.ToDateTime((query2[i].集計日付s).ToString().Substring(0, 4) + "/" + query2[i].集計日付s.ToString().Substring(4, 2) + "/01").AddMonths(query2[i].サイトs) == d集計月)
                    {
                        //サイト数を計算したデータと入力されたデータが同じなら挿入
                        query2[i].支払月s = Convert.ToDateTime((query2[i].集計日付s).ToString().Substring(0, 4) + "/" + query2[i].集計日付s.ToString().Substring(4, 2) + "/01").AddMonths(query2[i].サイトs);
                    }
                    else
                    {
                        //集計の必要のないデータには【1111年11月11日】を挿入
                        query2[i].支払月s = Convert.ToDateTime("1111/11/11");
                    }
                }
                ;

                //必要のないデータを変数化し【RemoveAll】で取り除く
                DateTime Value = Convert.ToDateTime("1111/11/11");
                query.RemoveAll(c => c.請求月 == Value);
                query2.RemoveAll(c => c.支払月s == Value);

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                #region 売上と支払 両方ともデータがあるとき
                if (query.Count() != 0 && query2.Count() != 0)
                {
                    //2つのクエリの【和集合】を求める
                    var retquery = (from s01 in query select s01.コード).Union(
                        from s02 in query2 select s02.コードs).AsQueryable();

                    //【売上】と【支払】データを1つにまとめる
                    var join = (from ret in retquery
                                from m01 in context.M01_TOK.Where(c => c.削除日付 == null && c.親子区分ID != 3)
                                from q01 in query.Where(c => c.コード == m01.得意先ID).DefaultIfEmpty()
                                from q02 in query2.Where(c => c.コードs == m01.得意先ID).DefaultIfEmpty()
                                group new { m01, q01, q02 } by
                                new
                    {
                        m01.得意先ID,
                        m01.略称名,
                        m01.Tサイト日,
                        m01.Sサイト日,
                        m01.T集金日,
                        m01.S集金日,
                        m01.親子区分ID,
                        m01.取引区分,
                    } into grGroup
                                select new SHR13010_Member
                    {
                        コード = grGroup.Key.得意先ID == null ? 0 : grGroup.Key.得意先ID,
                        取引先名 = grGroup.Key.略称名 == null ? "" : grGroup.Key.略称名,
                        サイト = grGroup.Key.Tサイト日 == null ? 0 : grGroup.Key.Tサイト日,
                        サイトs = grGroup.Key.Sサイト日 == null ? 0 : grGroup.Key.Sサイト日,
                        集金日 = grGroup.Key.T集金日 == null ? 0 : grGroup.Key.T集金日,
                        S集金日 = grGroup.Key.S集金日 == null ? 0 : grGroup.Key.S集金日,
                        親子区分 = grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子" == null ? "" : grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子",
                        取引区分 = grGroup.Key.取引区分 == null ? 10 : grGroup.Key.取引区分,
                        作成年月度 = s作成年月度 == null ? "" : s作成年月度,
                        取引先指定 = s取引先From + "~" + s取引先To,
                        取引先ピックアップ = 取引先指定ピックアップ == "" ? "" : 取引先指定ピックアップ,
                    }).AsQueryable();



                    //<<<データの絞込み>>>
                    if (!(string.IsNullOrEmpty(s取引先From + s取引先To) && i取引先List.Length == 0))
                    {
                        if (string.IsNullOrEmpty(s取引先From + s取引先To))
                        {
                            join = join.Where(c => c.コード >= int.MaxValue);
                        }

                        if (!string.IsNullOrEmpty(s取引先From))
                        {
                            int i取引先From = AppCommon.IntParse(s取引先From);
                            join = join.Where(c => c.コード >= i取引先From);
                        }

                        if (!string.IsNullOrEmpty(s取引先To))
                        {
                            int i取引先To = AppCommon.IntParse(s取引先To);
                            join = join.Where(c => c.コード <= i取引先To);
                        }

                        if (i取引先List.Length > 0)
                        {
                            var intCouse = i取引先List;
                            join = join.Union(from ret in retquery
                                              from m01 in context.M01_TOK.Where(c => c.削除日付 == null && c.親子区分ID != 3)
                                              from q01 in query.Where(c => c.コード == m01.得意先ID).DefaultIfEmpty()
                                              from q02 in query2.Where(c => c.コードs == m01.得意先ID).DefaultIfEmpty()
                                              group new { m01, q01, q02 } by
                                              new
                            {
                                m01.得意先ID,
                                m01.略称名,
                                m01.Tサイト日,
                                m01.Sサイト日,
                                m01.T集金日,
                                m01.S集金日,
                                m01.親子区分ID,
                                m01.取引区分,
                            } into grGroup
                                              where intCouse.Contains(grGroup.Key.得意先ID)
                                              select new SHR13010_Member
                            {
                                コード         = grGroup.Key.得意先ID == null ? 0 : grGroup.Key.得意先ID,
                                取引先名        = grGroup.Key.略称名 == null ? "" : grGroup.Key.略称名,
                                サイト         = grGroup.Key.Tサイト日 == null ? 0 : grGroup.Key.Tサイト日,
                                サイトs        = grGroup.Key.Sサイト日 == null ? 0 : grGroup.Key.Sサイト日,
                                集金日         = grGroup.Key.T集金日 == null ? 0 : grGroup.Key.T集金日,
                                S集金日        = grGroup.Key.S集金日 == null ? 0 : grGroup.Key.S集金日,
                                親子区分        = grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子" == null ? "" : grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子",
                                取引区分        = grGroup.Key.取引区分 == null ? 10 : grGroup.Key.取引区分,
                                作成年月度       = s作成年月度 == null ? "" : s作成年月度,
                                取引先指定       = s取引先From + "~" + s取引先To,
                                取引先ピックアップ = 取引先指定ピックアップ == "" ? "" : 取引先指定ピックアップ,
                            }).OrderBy(c => c.コード).AsQueryable();

                            //取引先指定の表示
                            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;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(s取引先From))
                        {
                            join = join.Where(c => c.コード >= int.MinValue);
                        }

                        if (string.IsNullOrEmpty(s取引先To))
                        {
                            join = join.Where(c => c.コード <= int.MaxValue);
                        }
                    }

                    //【売上】・【支払】・【売上/支払】データをList化
                    List <SHR13010_Member>          LIST        = join.ToList();
                    List <SHR13010_Company_Sales>   SalesList   = query.ToList();
                    List <SHR13010_Company_Payment> PaymentList = query2.ToList();
                    List <SHR13010_Member>          queryLIST   = new List <SHR13010_Member>();

                    int?name = 0;
                    foreach (var data in LIST)
                    {
                        if (name != data.コード)
                        {
                            queryLIST.Add(data);
                        }
                        name = data.コード;
                    }

                    //売上と支払を1つにしたデータをLoop
                    for (int i = 0; i < queryLIST.Count(); i++)
                    {
                        //QueryListに当てはまる【売上】データがある場合、データ挿入
                        for (int x = 0; x < SalesList.Count(); x++)
                        {
                            if (queryLIST[i].コード == SalesList[x].コード)
                            {
                                queryLIST[i].請求月   = SalesList[x].集計日付;
                                queryLIST[i].通行料   = SalesList[x].通行料;
                                queryLIST[i].消費税   = SalesList[x].消費税;
                                queryLIST[i].売上金額  = SalesList[x].売上金額;
                                queryLIST[i].売上金額計 = SalesList[x].売上金額計;
                            }
                            else
                            {
                                continue;
                            }
                        }

                        //QueryListに当てはまる【支払】データがある場合、データ挿入
                        for (int y = 0; y < PaymentList.Count(); y++)
                        {
                            if (queryLIST[i].コード == PaymentList[y].コードs)
                            {
                                queryLIST[i].支払月   = PaymentList[y].集計日付s;
                                queryLIST[i].支払通行料 = PaymentList[y].支払通行料;
                                queryLIST[i].支払消費税 = PaymentList[y].支払消費税;
                                queryLIST[i].傭車金額  = PaymentList[y].傭車金額;
                                queryLIST[i].傭車金額計 = PaymentList[y].傭車金額計;
                            }
                            else
                            {
                                continue;
                            }
                        }
                    }
                    //帳票の【売上額】と【支払額】を比較して額が多いほうの差分データを挿入
                    for (int i = 0; i < queryLIST.Count(); i++)
                    {
                        if (queryLIST[i].売上金額計 > queryLIST[i].傭車金額計)
                        {
                            queryLIST[i].売上 = queryLIST[i].売上金額計 - queryLIST[i].傭車金額計;
                        }
                        else if (queryLIST[i].売上金額計 < queryLIST[i].傭車金額計)
                        {
                            queryLIST[i].支払 = queryLIST[i].傭車金額計 - queryLIST[i].売上金額計;
                        }
                        else
                        {
                            continue;
                        }
                    }



                    //取引ありのみ表示
                    if (i作成区分 == 0)
                    {
                        queryLIST = queryLIST.Where(c => c.売上金額計 != 0 || c.傭車金額計 != 0).ToList();
                    }
                    //【全取引】の企業のみ
                    if (i取引区分 == 1)
                    {
                        queryLIST = queryLIST.Where(c => c.取引区分 == 0).ToList();
                    }

                    //親子区分【子】を非表示に
                    queryLIST = queryLIST.Where(c => c.親子区分 != "子").ToList();

                    //表示順序変更
                    queryLIST = queryLIST.OrderBy(c => c.コード).ToList();

                    return(queryLIST.ToList());
                }
                #endregion

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                #region 売上データのみ
                else if (query.Count() != 0 && query2.Count() == 0)
                {
                    var retquery = (from s01 in query select s01.コード).Union(
                        from s02 in query2 select s02.コードs).Distinct().AsQueryable();

                    var join = (from ret in retquery
                                from m01 in context.M01_TOK.Where(c => c.削除日付 == null && c.親子区分ID != 3)
                                from q01 in query.Where(c => c.コード == m01.得意先ID).DefaultIfEmpty()
                                group new { m01, q01 } by
                                new
                    {
                        m01.得意先ID,
                        m01.略称名,
                        m01.Tサイト日,
                        m01.Sサイト日,
                        m01.T集金日,
                        m01.S集金日,
                        m01.親子区分ID,
                        m01.取引区分,
                    } into grGroup
                                select new SHR13010_Member
                    {
                        コード = grGroup.Key.得意先ID,
                        取引先名 = grGroup.Key.略称名,
                        サイト = grGroup.Key.Tサイト日,
                        サイトs = grGroup.Key.Sサイト日,
                        集金日 = grGroup.Key.T集金日,
                        S集金日 = grGroup.Key.T集金日,
                        請求月 = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.集計日付) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.集計日付),
                        支払月 = 0,
                        通行料 = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.通行料) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.通行料),
                        支払通行料 = 0,
                        消費税 = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.消費税) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.消費税),
                        支払消費税 = 0,
                        売上金額 = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.売上金額) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.売上金額),
                        傭車金額 = 0,
                        売上金額計 = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.売上金額計) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.売上金額計),
                        傭車金額計 = 0,
                        売上 = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.売上金額計) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.売上金額計),
                        支払 = 0,
                        親子区分 = grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子",
                        取引区分 = grGroup.Key.取引区分,
                        作成年月度 = s作成年月度,
                        取引先指定 = s取引先From + "~" + s取引先To,
                        取引先ピックアップ = 取引先指定ピックアップ == "" ? "" : 取引先指定ピックアップ,
                    }).AsQueryable();

                    //<<<データの絞込み>>>
                    if (!(string.IsNullOrEmpty(s取引先From + s取引先To) && i取引先List.Length == 0))
                    {
                        if (string.IsNullOrEmpty(s取引先From + s取引先To))
                        {
                            join = join.Where(c => c.コード >= int.MaxValue);
                        }

                        if (!string.IsNullOrEmpty(s取引先From))
                        {
                            int i取引先From = AppCommon.IntParse(s取引先From);
                            join = join.Where(c => c.コード >= i取引先From);
                        }

                        if (!string.IsNullOrEmpty(s取引先To))
                        {
                            int i取引先To = AppCommon.IntParse(s取引先To);
                            join = join.Where(c => c.コード <= i取引先To);
                        }

                        if (i取引先List.Length > 0)
                        {
                            var intCouse = i取引先List;
                            join = join.Union(from ret in retquery
                                              from m01 in context.M01_TOK.Where(c => c.削除日付 == null && c.親子区分ID != 3)
                                              from q01 in query.Where(c => c.コード == m01.得意先ID).DefaultIfEmpty()
                                              group new { m01, q01 } by
                                              new
                            {
                                m01.得意先ID,
                                m01.略称名,
                                m01.Tサイト日,
                                m01.Sサイト日,
                                m01.T集金日,
                                m01.S集金日,
                                m01.親子区分ID,
                                m01.取引区分,
                            } into grGroup
                                              where intCouse.Contains(grGroup.Key.得意先ID)
                                              select new SHR13010_Member
                            {
                                コード         = grGroup.Key.得意先ID,
                                取引先名        = grGroup.Key.略称名,
                                サイト         = grGroup.Key.Tサイト日,
                                サイトs        = grGroup.Key.Sサイト日,
                                集金日         = grGroup.Key.T集金日,
                                S集金日        = grGroup.Key.T集金日,
                                請求月         = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.集計日付) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.集計日付),
                                支払月         = 0,
                                通行料         = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.通行料) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.通行料),
                                支払通行料       = 0,
                                消費税         = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.消費税) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.消費税),
                                支払消費税       = 0,
                                売上金額        = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.売上金額) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.売上金額),
                                傭車金額        = 0,
                                売上金額計       = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.売上金額計) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.売上金額計),
                                傭車金額計       = 0,
                                売上          = query.Where(c => c.コード == grGroup.Key.得意先ID).Sum(c => c.売上金額計) == 0 ? 0 : query.Where(c => c.コード == grGroup.Key.得意先ID).Distinct().Sum(c => c.売上金額計),
                                支払          = 0,
                                親子区分        = grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子",
                                取引区分        = grGroup.Key.取引区分,
                                作成年月度       = s作成年月度,
                                取引先指定       = s取引先From + "~" + s取引先To,
                                取引先ピックアップ = 取引先指定ピックアップ == "" ? "" : 取引先指定ピックアップ,
                            });

                            //取引先指定の表示
                            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;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(s取引先From))
                        {
                            join = join.Where(c => c.コード >= int.MinValue);
                        }

                        if (string.IsNullOrEmpty(s取引先To))
                        {
                            join = join.Where(c => c.コード <= int.MaxValue);
                        }
                    }


                    //取引ありのみ表示
                    if (i作成区分 == 0)
                    {
                        join = join.Where(c => c.売上金額計 != 0 || c.傭車金額計 != 0).Distinct();
                    }

                    //【全取引】の企業のみ
                    if (i取引区分 == 1)
                    {
                        join = join.Where(c => c.取引区分 == 0).Distinct();
                    }

                    //親子区分【子】を非表示に
                    join = join.Where(c => c.親子区分 != "子");

                    //表示順序変更
                    join = join.OrderBy(c => c.コード);

                    return(join.ToList());
                }
                #endregion

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                #region 支払データのみ

                else if (query.Count() == 0 && query2.Count() != 0)
                {
                    var retquery = (from s01 in query select s01.コード).Union(
                        from s02 in query2 select s02.コードs).AsQueryable();


                    var join = (from ret in retquery
                                from m01 in context.M01_TOK.Where(c => c.削除日付 == null && c.親子区分ID != 3)
                                from q02 in query2.Where(c => c.コードs == m01.得意先ID).DefaultIfEmpty()
                                group new { m01, q02 } by
                                new
                    {
                        m01.得意先ID,
                        m01.略称名,
                        m01.Tサイト日,
                        m01.Sサイト日,
                        m01.T集金日,
                        m01.S集金日,
                        m01.親子区分ID,
                        m01.取引区分,
                    } into grGroup
                                select new SHR13010_Member
                    {
                        コード = grGroup.Key.得意先ID,
                        取引先名 = grGroup.Key.略称名,
                        サイト = grGroup.Key.Tサイト日,
                        サイトs = grGroup.Key.Sサイト日,
                        集金日 = grGroup.Key.T集金日,
                        S集金日 = grGroup.Key.T集金日,
                        請求月 = 0,
                        支払月 = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.集計日付s) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Distinct().Sum(c => c.集計日付s),
                        通行料 = 0,
                        支払通行料 = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.支払通行料) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.支払通行料),
                        消費税 = 0,
                        支払消費税 = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.支払消費税) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.支払消費税),
                        売上金額 = 0,
                        傭車金額 = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額),
                        売上金額計 = 0,
                        傭車金額計 = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額計) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額計),
                        売上 = 0,
                        支払 = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額計) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額計),
                        親子区分 = grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子" == null ? "" : grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子",
                        取引区分 = grGroup.Key.取引区分 == null ? 10 : grGroup.Key.取引区分,
                        作成年月度 = s作成年月度,
                        取引先指定 = s取引先From + "~" + s取引先To,
                        取引先ピックアップ = 取引先指定ピックアップ == "" ? "" : 取引先指定ピックアップ,
                    }).AsQueryable().Distinct();

                    //<<<データの絞込み>>>
                    if (!(string.IsNullOrEmpty(s取引先From + s取引先To) && i取引先List.Length == 0))
                    {
                        if (string.IsNullOrEmpty(s取引先From + s取引先To))
                        {
                            join = join.Where(c => c.コード >= int.MaxValue);
                        }

                        if (!string.IsNullOrEmpty(s取引先From))
                        {
                            int i取引先From = AppCommon.IntParse(s取引先From);
                            join = join.Where(c => c.コード >= i取引先From);
                        }

                        if (!string.IsNullOrEmpty(s取引先To))
                        {
                            int i取引先To = AppCommon.IntParse(s取引先To);
                            join = join.Where(c => c.コード <= i取引先To);
                        }

                        if (i取引先List.Length > 0)
                        {
                            var intCouse = i取引先List;
                            join = join.Union(from ret in retquery
                                              from m01 in context.M01_TOK.Where(c => c.削除日付 == null && c.親子区分ID != 3)
                                              from q02 in query2.Where(c => c.コードs == m01.得意先ID).DefaultIfEmpty()
                                              group new { m01, q02 } by
                                              new
                            {
                                m01.得意先ID,
                                m01.略称名,
                                m01.Tサイト日,
                                m01.Sサイト日,
                                m01.T集金日,
                                m01.S集金日,
                                m01.親子区分ID,
                                m01.取引区分,
                            } into grGroup
                                              where intCouse.Contains(grGroup.Key.得意先ID)
                                              select new SHR13010_Member
                            {
                                コード         = grGroup.Key.得意先ID,
                                取引先名        = grGroup.Key.略称名,
                                サイト         = grGroup.Key.Tサイト日,
                                サイトs        = grGroup.Key.Sサイト日,
                                集金日         = grGroup.Key.T集金日,
                                S集金日        = grGroup.Key.T集金日,
                                請求月         = 0,
                                支払月         = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.集計日付s) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Distinct().Sum(c => c.集計日付s),
                                通行料         = 0,
                                支払通行料       = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.支払通行料) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.支払通行料),
                                消費税         = 0,
                                支払消費税       = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.支払消費税) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.支払消費税),
                                売上金額        = 0,
                                傭車金額        = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額),
                                売上金額計       = 0,
                                傭車金額計       = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額計) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額計),
                                売上          = 0,
                                支払          = query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額計) == 0 ? 0 : query2.Where(c => c.コードs == grGroup.Key.得意先ID).Sum(c => c.傭車金額計),
                                親子区分        = grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子" == null ? "" : grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子",
                                取引区分        = grGroup.Key.取引区分 == null ? 10 : grGroup.Key.取引区分,
                                作成年月度       = s作成年月度,
                                取引先指定       = s取引先From + "~" + s取引先To,
                                取引先ピックアップ = 取引先指定ピックアップ == "" ? "" : 取引先指定ピックアップ,
                            });

                            //取引先指定の表示
                            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;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(s取引先From))
                        {
                            join = join.Where(c => c.コード >= int.MinValue);
                        }

                        if (string.IsNullOrEmpty(s取引先To))
                        {
                            join = join.Where(c => c.コード <= int.MaxValue);
                        }
                    }


                    //取引ありのみ表示
                    if (i作成区分 == 0)
                    {
                        join = join.Where(c => c.売上金額計 != 0 || c.傭車金額計 != 0);
                    }

                    //【全取引】の企業のみ
                    if (i取引区分 == 1)
                    {
                        join = join.Where(c => c.取引区分 == 0);
                    }

                    //親子区分【子】を非表示に
                    join = join.Where(c => c.親子区分 != "子");

                    //表示順序変更
                    join = join.OrderBy(c => c.コード);

                    return(join.ToList());
                }
                #endregion

                ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                #region データ無し

                else
                {
                    var join = (from m01 in context.M01_TOK.Where(c => c.削除日付 == null && c.親子区分ID != 3)
                                from s01 in context.S01_TOKS.Where(c => c.得意先KEY == m01.得意先KEY && c.回数 == 1).DefaultIfEmpty()
                                from s02 in context.S02_YOSS.Where(c => c.支払先KEY == m01.得意先KEY && c.回数 == 1).DefaultIfEmpty()
                                group new { m01, s01, s02 } by new
                    {
                        m01.得意先ID,
                        m01.略称名,
                        m01.Tサイト日,
                        m01.Sサイト日,
                        m01.T集金日,
                        m01.S集金日,
                        m01.親子区分ID,
                        m01.取引区分,
                    } into grGroup
                                select new SHR13010_Member
                    {
                        コード = grGroup.Key.得意先ID,
                        取引先名 = grGroup.Key.略称名,
                        サイト = grGroup.Key.Tサイト日,
                        サイトs = grGroup.Key.Sサイト日,
                        集金日 = grGroup.Key.T集金日,
                        S集金日 = grGroup.Key.T集金日,
                        請求月 = 0,
                        支払月 = 0,
                        通行料 = 0,
                        支払通行料 = 0,
                        消費税 = 0,
                        支払消費税 = 0,
                        売上金額 = 0,
                        傭車金額 = 0,
                        売上金額計 = 0,
                        傭車金額計 = 0,
                        売上 = 0,
                        支払 = 0,
                        親子区分 = grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子" == null ? "" : grGroup.Key.親子区分ID == 0 ? "" : grGroup.Key.親子区分ID == 1 ? "親" : grGroup.Key.親子区分ID == 2 ? "親" : "子",
                        取引区分 = grGroup.Key.取引区分 == null ? 10 : grGroup.Key.取引区分,
                        作成年月度 = s作成年月度,
                        取引先指定 = s取引先From + "~" + s取引先To,
                        取引先ピックアップ = 取引先指定ピックアップ == "" ? "" : 取引先指定ピックアップ,
                    }).Distinct().AsQueryable();

                    #endregion


                    //作成区分が0だった場合
                    if (i作成区分 == 0)
                    {
                        //売上・支払が発生していないデータを除く
                        join = join.Where(c => c.売上金額計 != 0 || c.傭車金額計 != 0);
                    }
                    return(join.ToList());
                }

                /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
        }
Example #19
0
        /// <summary>
        /// 調整見込計算をおこなった結果を取得する
        /// </summary>
        /// <param name="paramDic">パラメータDic</param>
        /// <returns></returns>
        public List <BSK05010_SearchMember> GetDataList(Dictionary <string, string> paramDic)
        {
            int compCd   = int.Parse(paramDic[PARAM_NAME_COMPANY]),
                year     = int.Parse(paramDic[PARAM_NAME_YEAR].Replace("/", ""));
            decimal rate = decimal.Parse(paramDic[PARAM_NAME_RATE]);

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                var jis =
                    context.M70_JIS
                    .Where(w => w.削除日時 == null && w.自社コード == compCd)
                    .FirstOrDefault();

                // 決算月から請求年月の範囲を取得
                int      month        = jis.決算月 ?? CommonConstants.DEFAULT_SETTLEMENT_MONTH;
                DateTime priodEndDate = new DateTime(month < 4 ? year + 1 : year, month, 1);
                DateTime priodStrDate = priodEndDate.AddMonths(-11);
                int      sYearMonth   = priodStrDate.Year * 100 + priodStrDate.Month,
                         eYearMonth   = priodEndDate.Year * 100 + priodEndDate.Month;

                DateTime      targetDate = priodStrDate;
                List <string> targetList = new List <string>();
                while (targetDate <= priodEndDate)
                {
                    targetList.Add(targetDate.ToString("yyyy/MM"));
                    targetDate = targetDate.AddMonths(1);
                }

                var urData = getSalesAjustData(context, year, compCd);

                var seiData =
                    context.S01_SEIHD
                    .Where(w => w.請求先コード == jis.取引先コード &&
                           w.請求先枝番 == jis.枝番 &&
                           w.請求年月 >= sYearMonth && w.請求年月 <= eYearMonth)
                    .GroupBy(g => new { g.自社コード, g.請求年月 })
                    .OrderBy(o => o.Key.請求年月)
                    .ToList()
                    .Select(s => new
                {
                    決算対象年月  = string.Format("{0}/{1:D2}", s.Key.請求年月 / 100, s.Key.請求年月 % 100),
                    決算調整前金額 = s.Sum(m => m.売上額) - s.Sum(m => m.値引額),
                })
                    .Select(s => new BSK05010_SearchMember
                {
                    決算対象年月   = s.決算対象年月,
                    決算調整前金額  = s.決算調整前金額,
                    決算調整見込金額 = (long)Math.Round(s.決算調整前金額 * (rate / 100 + 1), 0),
                });

                var result =
                    targetList.AsQueryable()
                    .GroupJoin(seiData,
                               x => x,
                               y => y.決算対象年月,
                               (x, y) => new { x, y })
                    .SelectMany(z => z.y.DefaultIfEmpty(),
                                (a, b) => new { 対象年月 = a.x, SEI = b })
                    .ToList()
                    .Select(s => new BSK05010_SearchMember
                {
                    決算対象年月   = s.対象年月,
                    決算調整前金額  = s.SEI != null ? s.SEI.決算調整前金額 : 0,
                    決算調整見込金額 = s.SEI != null ? s.SEI.決算調整見込金額 : 0,
                    決算調整後金額  = urData.ContainsKey(s.対象年月) ? urData[s.対象年月] : (long?)null
                });

                return(result.ToList());
            }
        }
Example #20
0
        /// <summary>
        /// TKS11010 締日帳票CSV
        /// </summary>
        /// <param name="p商品ID">得意先コード</param>
        /// <returns>S02</returns>
        public List <TKS11010_Member_CSV> SEARCH_TKS11010_GetDataList_CSV(string p得意先From, string p得意先To, int?[] i得意先List, string p作成集金日, bool b全集金日, string p作成年, string p作成月, int 作成区分_CValue, int?集計, DateTime?d集計期間From, DateTime?d集計期間To)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                List <TKS11010_Member_CSV> retList   = new List <TKS11010_Member_CSV>();
                List <TKS11010_Member_CSV> queryList = new List <TKS11010_Member_CSV>();
                context.Connection.Open();

                //支払先指定 表示用
                string 得意先指定表示 = string.Empty;
                //サイト計算
                var query2 = (from m01 in context.M01_TOK.Where(m01 => m01.削除日付 == null && m01.親子区分ID != 3)
                              select new TKS11010_Member2
                {
                    得意先ID = m01.得意先ID,
                    得意先名 = m01.略称名,
                    得意先KEY = m01.得意先KEY,
                    サイト = m01.Tサイト日,
                    締日 = m01.T締日,
                    集金日 = m01.T集金日,
                    親子区分ID = m01.親子区分ID,
                    作成年月 = 集計 ?? 0,
                }).ToList();

                DateTime d集計年月 = DateTime.Now;
                for (int i = 0; i < query2.Count; i++)
                {
                    if (DateTime.TryParse(((p作成年).ToString() + "/" + (p作成月).ToString() + "/" + "01"), out d集計年月))
                    {
                        query2[i].年月 = ((d集計年月.AddMonths(Convert.ToInt32(-query2[i].サイト)).Year) * 100) + (d集計年月.AddMonths(Convert.ToInt32(-query2[i].サイト)).Month);
                    }
                    ;
                }
                ;

                var query = (from q01 in query2
                             join v01 in context.S01_TOKS on new { q01.得意先KEY, nen = q01.年月 } equals new { v01.得意先KEY, nen = v01.集計年月 } into v01Group
                             join nyukin in context.S01_TOKS on new { q01.得意先KEY, nen = q01.作成年月 } equals new { nyukin.得意先KEY, nen = nyukin.集計年月 } into nyukinGroup
                             select new TKS11010_Member_CSV
                {
                    得意先コード = q01.得意先ID,
                    得意先名 = q01.得意先名,
                    親子区分ID = q01.親子区分ID == 0 ? "" : q01.親子区分ID == 1 ? "親" : q01.親子区分ID == 2 ? "親" : "子",
                    集金日 = q01.集金日 == null ? 0 : q01.集金日,
                    サイト = q01.サイト == null ? 0 : q01.サイト,
                    売上金額 = v01Group.Sum(v01g => v01g.締日売上金額),
                    内課税額 = v01Group.Sum(v01g => v01g.締日課税売上),
                    消費税 = v01Group.Sum(v01g => v01g.締日消費税),
                    通行料 = v01Group.Sum(v01g => v01g.締日通行料),
                    回収予定額 = v01Group.Sum(v01g => v01g.締日売上金額 + v01g.締日通行料 + v01g.締日消費税),
                    請求年月 = null,
                    締日 = q01.締日 == null ? 0 : q01.締日,
                    当月入金額 = nyukinGroup.Sum(c => c.締日入金現金 + c.締日入金手形),
                    入金調整額 = nyukinGroup.Sum(c => c.締日入金その他),
                    入金合計額 = nyukinGroup.Sum(c => c.締日入金現金 + c.締日入金手形 + c.締日入金その他),
                    集計年月 = q01.年月,
                    全集金日 = p作成集金日 == string.Empty ? "全集金日" : p作成集金日,
                    対象年月 = d集計期間From,
                    表示区分 = 作成区分_CValue == 0 ? "(回収予定あり得意先のみ)" : 作成区分_CValue == 1 ? "(回収予定無し得意先含む)" : "",
                }).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 (b全集金日 == true)
                    {
                        query = query.Where(c => c.集金日 >= 1 && c.集金日 <= 31);
                    }

                    //締日処理 
                    if (!string.IsNullOrEmpty(p作成集金日))
                    {
                        int?p変換作成締日 = AppCommon.IntParse(p作成集金日);
                        query = query.Where(c => c.集金日 == p変換作成締日);
                    }

                    if (i得意先List.Length > 0)
                    {
                        var intCause = i得意先List;
                        query = query.Union(from q01 in query2
                                            join v01 in context.S01_TOKS on new { q01.得意先KEY, nen = q01.年月 } equals new { v01.得意先KEY, nen = v01.集計年月 } into v01Group
                                            join nyukin in context.S01_TOKS on new { q01.得意先KEY, nen = q01.作成年月 } equals new { nyukin.得意先KEY, nen = nyukin.集計年月 } into nyukinGroup
                                            where intCause.Contains(q01.得意先ID)
                                            select new TKS11010_Member_CSV
                        {
                            得意先コード = q01.得意先ID,
                            得意先名   = q01.得意先名,
                            親子区分ID = q01.親子区分ID == 0 ? "" : q01.親子区分ID == 1 ? "親" : q01.親子区分ID == 2 ? "親" : "子",
                            集金日    = q01.集金日 == null ? 0 : q01.集金日,
                            サイト    = q01.サイト == null ? 0 : q01.サイト,
                            売上金額   = v01Group.Sum(v01g => v01g.締日売上金額),
                            内課税額   = v01Group.Sum(v01g => v01g.締日課税売上),
                            消費税    = v01Group.Sum(v01g => v01g.締日消費税),
                            通行料    = v01Group.Sum(v01g => v01g.締日通行料),
                            回収予定額  = v01Group.Sum(v01g => v01g.締日売上金額 + v01g.締日通行料 + v01g.締日消費税),
                            請求年月   = null,
                            締日     = q01.締日 == null ? 0 : q01.締日,
                            当月入金額  = nyukinGroup.Sum(c => c.締日入金現金 + c.締日入金手形),
                            入金調整額  = nyukinGroup.Sum(c => c.締日入金その他),
                            入金合計額  = nyukinGroup.Sum(c => c.締日入金現金 + c.締日入金手形 + c.締日入金その他),
                            集計年月   = q01.年月,
                            全集金日   = p作成集金日 == string.Empty ? "全集金日" : p作成集金日,
                            対象年月   = d集計期間From,
                            表示区分   = 作成区分_CValue == 0 ? "(回収予定あり得意先のみ)" : 作成区分_CValue == 1 ? "(回収予定無し得意先含む)" : "",
                        }).AsQueryable();

                        //全締日集計処理
                        if (b全集金日 == true)
                        {
                            query = query.Where(c => c.集金日 >= 1 && c.集金日 <= 31);
                        }

                        //締日処理 
                        if (!string.IsNullOrEmpty(p作成集金日))
                        {
                            int?p変換作成締日 = AppCommon.IntParse(p作成集金日);
                            query = query.Where(c => c.集金日 == p変換作成締日);
                        }
                    }
                }
                else
                {
                    //得意先From処理 Min値
                    if (string.IsNullOrEmpty(p得意先From))
                    {
                        query = query.Where(c => c.得意先コード >= int.MinValue);
                    }

                    //得意先To処理 Max値
                    if (string.IsNullOrEmpty(p得意先To))
                    {
                        query = query.Where(c => c.得意先コード <= int.MaxValue);
                    }

                    //全締日集計処理
                    if (b全集金日 == true)
                    {
                        query = query.Where(c => c.集金日 >= 1 && c.集金日 <= 31);
                    }

                    //締日処理
                    if (!string.IsNullOrEmpty(p作成集金日))
                    {
                        int?p変換作成締日 = AppCommon.IntParse(p作成集金日);
                        query = query.Where(c => c.集金日 == p変換作成締日);
                    }
                }

                //内訳別表示処理
                //売上あり:0
                //売上なし:1
                switch (作成区分_CValue)
                {
                //支払取引全体
                case 0:
                    query = query.Where(c => c.回収予定額 != 0);
                    break;

                //支払先
                case 1:
                    //query = query.Where(c => c.回収予定額 >= 0);
                    break;

                default:
                    break;
                }

                //支払先指定の表示
                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;
                        }
                    }
                }

                List <TKS11010_Member_CSV> queryLIST = new List <TKS11010_Member_CSV>();
                queryLIST = query.ToList();

                for (int i = 0; i < queryLIST.Count(); i++)
                {
                    if (queryLIST[i].請求年月 == null)
                    {
                        if (queryLIST[i].サイト != null)
                        {
                            DateTime Wk;
                            Wk = DateTime.TryParse(p作成年 + "/" + p作成月 + "/" + "01", out Wk) ? Wk : DateTime.Today;
                            DateTime dtBirth = Wk;
                            dtBirth           = dtBirth.AddMonths(Convert.ToInt32(-queryLIST[i].サイト));
                            queryLIST[i].請求年月 = dtBirth;
                        }
                    }
                }
                return(queryLIST.ToList());
            }
        }
Example #21
0
        /// <summary>
        /// M14_GSYAの新規追加
        /// </summary>
        /// <param name="m14gsya">M14_GSYA_Member</param>
        public int Update(int?pG車種ID, string pG車種名, string 略称名, decimal?CO2排出係数1, decimal?CO2排出係数2, int?事業用区分, int?ディーゼル区分, int?小型普通貨物区分, int?低公害者区分, bool pMaintenanceFlg, bool pGetNextNumber)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                if (pGetNextNumber)
                {
                    pG車種ID = GetNextNumber();
                }

                //更新行を特定
                var ret = from x in context.M14_GSYA
                          where (x.G車種ID == pG車種ID)
                          orderby x.G車種ID
                          select x;
                var data = ret.FirstOrDefault();

                //更新
                if (data == null)
                {
                    M14_GSYA m14 = new M14_GSYA();
                    m14.G車種ID    = (int)pG車種ID;
                    m14.登録日時     = m14.登録日時;
                    m14.更新日時     = m14.更新日時;
                    m14.G車種名     = pG車種名;
                    m14.略称名      = 略称名;
                    m14.CO2排出係数1 = CO2排出係数1;
                    m14.CO2排出係数2 = CO2排出係数2;
                    m14.事業用区分    = 事業用区分;
                    m14.ディーゼル区分  = ディーゼル区分;
                    m14.小型普通区分   = 小型普通貨物区分;
                    m14.低公害区分    = 低公害者区分;
                    m14.削除日付     = null;

                    //登録時、記述
                    context.M14_GSYA.ApplyChanges(m14);
                }
                //登録
                else
                {
                    if (pMaintenanceFlg)
                    {
                        return(-1);
                    }

                    data.G車種ID    = (int)pG車種ID;
                    data.登録日時     = DateTime.Now;
                    data.G車種名     = pG車種名;
                    data.略称名      = 略称名;
                    data.CO2排出係数1 = CO2排出係数1;
                    data.CO2排出係数2 = CO2排出係数2;
                    data.事業用区分    = 事業用区分;
                    data.ディーゼル区分  = ディーゼル区分;
                    data.小型普通区分   = 小型普通貨物区分;
                    data.低公害区分    = 低公害者区分;
                    data.削除日付     = null;

                    //更新時、記述
                    data.AcceptChanges();
                }
                //データベースへの最終登録
                context.SaveChanges();
            }
            return(1);
        }
Example #22
0
        /// <summary>
        /// 自社部門マスタ一覧検索データ取得
        /// </summary>
        /// <returns></returns>
        public List <M71_BUM_Member> GetSearchDataForList(string 自社部門コードFROM, string 自社部門コードTO, int[] i自社部門IDList, string 表示方法)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();


                var ret = (from m71 in context.M71_BUM
                           where m71.削除日付 == null
                           select new M71_BUM_Member
                {
                    自社部門ID = m71.自社部門ID,
                    登録日時 = m71.登録日時,
                    更新日時 = m71.更新日時,
                    自社部門名 = m71.自社部門名,
                    かな読み = m71.かな読み,
                    法人ナンバー = m71.法人ナンバー,
                }).AsQueryable();

                if (!(string.IsNullOrEmpty(自社部門コードFROM + 自社部門コードTO) && i自社部門IDList.Length == 0))
                {
                    if (string.IsNullOrEmpty(自社部門コードFROM + 自社部門コードTO))
                    {
                        ret = ret.Where(c => c.自社部門ID >= int.MaxValue);
                    }
                    if (!string.IsNullOrEmpty(自社部門コードFROM))
                    {
                        int i自社部門コードFROM = AppCommon.IntParse(自社部門コードFROM);
                        ret = ret.Where(c => c.自社部門ID >= i自社部門コードFROM);
                    }
                    if (!string.IsNullOrEmpty(自社部門コードTO))
                    {
                        int i自社部門コードTO = AppCommon.IntParse(自社部門コードTO);
                        ret = ret.Where(c => c.自社部門ID <= i自社部門コードTO);
                    }

                    if (i自社部門IDList.Length > 0)
                    {
                        var intCause = i自社部門IDList;

                        ret = ret.Union(from m71 in context.M71_BUM
                                        where m71.削除日付 == null && intCause.Contains(m71.自社部門ID)
                                        select new M71_BUM_Member
                        {
                            自社部門ID = m71.自社部門ID,
                            登録日時   = m71.登録日時,
                            更新日時   = m71.更新日時,
                            自社部門名  = m71.自社部門名,
                            かな読み   = m71.かな読み,
                            法人ナンバー = m71.法人ナンバー,
                        });
                    }
                }

                ret = ret.Distinct();

                if (表示方法 == "0")
                {
                    ret.OrderBy(c => c.自社部門ID);
                }
                else
                {
                    ret.OrderBy(c => c.かな読み);
                }


                return(ret.ToList());
            }
        }
Example #23
0
        /// <summary>
        /// S01_TOKSの更新
        /// </summary>
        /// <param name="s01toks">S01_TOKS_Member</param>
        public void Update(S01_TOKS_Member s01toks)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                // トランザクションのインスタンス化(開始)
                using (var tran = new TransactionScope())
                {
                    context.Connection.Open();

                    //更新行を特定
                    var ret = from x in context.S01_TOKS
                              where (x.得意先KEY == (from tok in context.M01_TOK where tok.得意先ID == s01toks.得意先KEY select tok.得意先KEY).FirstOrDefault() &&
                                     x.集計年月 == s01toks.集計年月 && x.回数 == s01toks.回数)
                              select x;
                    var s01 = ret.FirstOrDefault();


                    if ((s01 != null))
                    {
                        s01.得意先KEY  = (from tok in context.M01_TOK where tok.得意先ID == s01toks.得意先KEY select tok.得意先KEY).FirstOrDefault();
                        s01.集計年月    = s01toks.集計年月;
                        s01.回数      = s01toks.回数;
                        s01.登録日時    = s01toks.登録日時;
                        s01.更新日時    = s01toks.更新日時;
                        s01.締集計開始日  = s01toks.締集計開始日;
                        s01.締集計終了日  = s01toks.締集計終了日;
                        s01.締日前月残高  = s01toks.締日前月残高;
                        s01.締日入金現金  = s01toks.締日入金現金;
                        s01.締日入金手形  = s01toks.締日入金手形;
                        s01.締日入金その他 = s01toks.締日入金その他;
                        s01.締日売上金額  = s01toks.締日売上金額;
                        s01.締日通行料   = s01toks.締日通行料;
                        s01.締日課税売上  = s01toks.締日課税売上;
                        s01.締日非課税売上 = s01toks.締日非課税売上;
                        s01.締日消費税   = s01toks.締日消費税;
                        s01.締日内傭車売上 = s01toks.締日内傭車売上;
                        s01.締日内傭車料  = s01toks.締日内傭車料;
                        s01.締日未定件数  = s01toks.締日未定件数;
                        s01.締日件数    = s01toks.締日件数;
                        s01.締日      = s01toks.締日;

                        s01.AcceptChanges();
                    }
                    else
                    {
                        context.S01_TOKS.AddObject(
                            new S01_TOKS()
                        {
                            得意先KEY  = (from tok in context.M01_TOK where tok.得意先ID == s01toks.得意先KEY select tok.得意先KEY).FirstOrDefault(),
                            集計年月    = s01toks.集計年月,
                            回数      = s01toks.回数,
                            登録日時    = s01toks.登録日時,
                            更新日時    = s01toks.更新日時,
                            締集計開始日  = s01toks.締集計開始日,
                            締集計終了日  = s01toks.締集計終了日,
                            締日前月残高  = s01toks.締日前月残高,
                            締日入金現金  = s01toks.締日入金現金,
                            締日入金手形  = s01toks.締日入金手形,
                            締日入金その他 = s01toks.締日入金その他,
                            締日売上金額  = s01toks.締日売上金額,
                            締日通行料   = s01toks.締日通行料,
                            締日課税売上  = s01toks.締日課税売上,
                            締日非課税売上 = s01toks.締日非課税売上,
                            締日消費税   = s01toks.締日消費税,
                            締日内傭車売上 = s01toks.締日内傭車売上,
                            締日内傭車料  = s01toks.締日内傭車料,
                            締日未定件数  = s01toks.締日未定件数,
                            締日件数    = s01toks.締日件数,
                            締日      = s01toks.締日,
                        }
                            );

                        context.SaveChanges();
                        //var p2 = (from x in context.S01_TOKS where x.得意先KEY == s01toks.得意先KEY && x.集計年月 == s01toks.集計年月 && x.回数 == s01toks.回数 select x.得意先KEY).FirstOrDefault();
                        //s01toks.得意先KEY = p2;
                    }

                    context.SaveChanges();

                    tran.Complete();
                }
            }
        }
Example #24
0
        /// <summary>
        /// M71_BUMのデータ取得
        /// </summary>
        /// <param name="p自社ID">自社ID</param>
        /// <returns>M71_BUM_Member</returns>
        public List <M71_BUM_Member> GetData(int?p自社部門ID, int pオプションコード)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                var query = (from m71 in context.M71_BUM
                             //where m71.削除日付 == null
                             select new M71_BUM_Member
                {
                    自社部門ID = m71.自社部門ID,
                    登録日時 = m71.登録日時,
                    更新日時 = m71.更新日時,
                    自社部門名 = m71.自社部門名,
                    かな読み = m71.かな読み,
                    法人ナンバー = m71.法人ナンバー,
                    削除日付 = m71.削除日付,
                }).AsQueryable();

                //データが1件もない状態で<< < > >>を押された時の処理
                if ((p自社部門ID == null || p自社部門ID == 0) && query.Where(c => c.削除日付 == null).Count() == 0)
                {
                    return(null);
                }

                if (p自社部門ID != null)
                {
                    if (p自社部門ID == -1)
                    {
                        //全件取得
                        return(query.ToList());
                    }

                    if (pオプションコード == 0)
                    {
                        query = query.Where(c => c.自社部門ID == p自社部門ID);
                    }

                    else if (pオプションコード == -1)
                    {
                        //p車種IDの1つ前のIDを取得
                        query = query.Where(c => (c.削除日付 == null));

                        query = query.Where(c => c.自社部門ID < p自社部門ID);
                        if (query.Count() >= 2)
                        {
                            query = query.Where(c => c.自社部門ID < p自社部門ID);
                        }
                        query = query.OrderByDescending(c => c.自社部門ID);
                    }
                    else
                    {
                        //p車種IDの1つ後のIDを取得
                        query = query.Where(c => (c.削除日付 == null));
                        query = query.Where(c => c.自社部門ID > p自社部門ID);

                        if (query.Count() >= 2)
                        {
                            query = query.Where(c => c.自社部門ID > p自社部門ID);
                        }
                        query = query.OrderBy(c => c.自社部門ID);
                    }
                }
                else
                {
                    if (pオプションコード == 0)
                    {
                        query = query.Where(c => (c.削除日付 == null));
                        //車種IDの先頭のIDを取得
                        query = query.OrderBy(c => c.自社部門ID);
                    }
                    else if (pオプションコード == 1)
                    {
                        query = query.Where(c => (c.削除日付 == null));
                        //車種IDの最後のIDを取得
                        query = query.OrderByDescending(c => c.自社部門ID);
                    }
                    else
                    {
                        //pオプションコード == 2
                        query = query.Where(c => (c.削除日付 == null));
                        query = query.OrderBy(c => c.自社部門ID < p自社部門ID + 1);
                    }
                }

                var ret = query.FirstOrDefault();
                List <M71_BUM_Member> result = new List <M71_BUM_Member>();
                if (ret != null)
                {
                    result.Add(ret);
                }
                return(query.ToList());
            }
        }
Example #25
0
        /// <summary>
        /// 出力情報を取得する
        /// </summary>
        /// <param name="paramDic"></param>
        /// <returns></returns>
        public List <BSK09010_PrintMember> GetPrintList(Dictionary <string, string> paramDic)
        {
            // パラメータ展開
            int yearMonth = int.Parse(paramDic["対象年月"].Replace("/", ""));

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                var baseList =
                    context.M01_TOK
                    .Where(w => w.削除日時 == null && w.取引区分 == (int)CommonConstants.取引区分.相殺)
                    .GroupJoin(context.S01_SEIHD.Where(w => w.請求年月 == yearMonth),
                               x => new { c = x.取引先コード, e = x.枝番 },
                               y => new { c = y.請求先コード, e = y.請求先枝番 },
                               (x, y) => new { x, y })
                    .SelectMany(z => z.y.DefaultIfEmpty(),
                                (a, b) => new { TOK = a.x, SEI = b })
                    .GroupJoin(context.S02_SHRHD.Where(w => w.支払年月 == yearMonth),
                               x => new { c = x.TOK.取引先コード, e = x.TOK.枝番 },
                               y => new { c = y.支払先コード, e = y.支払先枝番 },
                               (x, y) => new { x, y })
                    .SelectMany(z => z.y.DefaultIfEmpty(),
                                (c, d) => new { c.x.TOK, c.x.SEI, SHR = d })
                    .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                               x => x.SEI.自社コード,
                               y => y.自社コード,
                               (x, y) => new { x, y })
                    .SelectMany(z => z.y.DefaultIfEmpty(),
                                (e, f) => new { e.x.TOK, e.x.SEI, e.x.SHR, JIS = f })
                    .Where(w => w.SEI != null && w.SHR != null)
                    .Select(s => new
                {
                    s.JIS.自社コード,                        // No.227,228 Add
                    s.JIS.自社名,                          // No.227,228 Add
                    s.TOK.取引先コード,
                    s.TOK.枝番,
                    取引先名 = s.TOK.略称名,                 // No.229 Mod
                    s.SEI.入金日,
                    s.SHR.支払日,
                    s.SEI.当月請求額,
                    支払予定額 = s.SHR.支払額 + s.SHR.消費税
                });
                DateTime wdt;
                var      resultList =
                    baseList
                    .ToList()
                    .Select(s => new BSK09010_PrintMember
                {
                    自社コード   = s.自社コード,
                    自社名     = s.自社名,
                    得意先コード  = string.Format("{0:D4} - {0:D2}", s.取引先コード, s.枝番),                                                                                                      // No.223 Mod
                    得意先名    = s.取引先名,
                    入金日     = DateTime.TryParseExact(s.入金日.ToString(), "yyyyMMdd", null, DateTimeStyles.None, out wdt) ? wdt.ToShortDateString() : DateTime.Now.ToShortDateString(), // No-168 Mod
                    支払日     = DateTime.TryParseExact(s.支払日.ToString(), "yyyyMMdd", null, DateTimeStyles.None, out wdt) ? wdt.ToShortDateString() : DateTime.Now.ToShortDateString(), // No-168 Mod
                    請求予定額   = s.当月請求額,
                    支払予定額   = s.支払予定額,
                    相殺請求予定額 = s.当月請求額 - s.支払予定額
                });

                return(resultList.ToList());
            }
        }
Example #26
0
        /// <summary>
        /// 売上明細問い合わせリスト取得
        /// </summary>
        /// <param name="p検索日付From">検索日付From(未選択の場合はnull)</param>
        /// <param name="p検索日付To">検索日付To(未選択の場合はnull)</param>
        /// <param name="p検索日付区分">検索日付区分</param>
        /// <param name="p売上未定区分">売上未定区分(0:全件 1:未定のみ 2:確定のみ 3:金額が未入力のみ)</param>
        /// <returns>DLY13010_Memberのリスト</returns>
        public DLY13010_DATASET GetListDLY13010(int?p担当者ID,
                                                int?p車輌ID, int?p乗務員ID
                                                , DateTime?p検索日付From, DateTime?p検索日付To, int p検索日付区分
                                                , int?p自社部門ID, int?p売上未定区分
                                                , string p商品名, string p発地名, string p着地名, string p請求摘要, string p社内備考
                                                , string 表示順指定0, string 表示順指定1, string 表示順指定2, string 表示順指定3, string 表示順指定4, string 自社部門Value
                                                , int p乗務員FROM, int p乗務員TO
                                                , int p車輌FROM, int p車輌TO
                                                , int?[] p乗務員
                                                , int?[] p車輌
                                                )
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();
                DLY13010_DATASET result = new DLY13010_DATASET();
                var query = (from t02 in context.T02_UTRN.Where(x => x.明細行 == 1)
                             from m04 in context.M04_DRV.Where(x => x.乗務員KEY == t02.乗務員KEY).DefaultIfEmpty()
                             from m05 in context.M05_CAR.Where(x => x.車輌KEY == t02.車輌KEY).DefaultIfEmpty()
                             from m78 in context.M78_SYK.Where(x => x.出勤区分ID == t02.出勤区分ID).DefaultIfEmpty()
                             where (p担当者ID == null || p担当者ID == 0 || t02.入力者ID == p担当者ID) &&
                             (p自社部門ID == null || p自社部門ID == 0 || t02.自社部門ID == p自社部門ID) &&
                             (p車輌ID == null || p車輌ID == 0 || m05.車輌ID == p車輌ID)
                             select new DLY13010_Member
                {
                    出庫日付 = t02.実運行日開始,
                    帰庫日付 = t02.実運行日終了,
                    出勤区分 = m78.出勤区分名,
                    出社時間 = t02.出庫時間 == null ? 0 : t02.出庫時間,
                    退社時間 = t02.帰庫時間 == null ? 0 : t02.帰庫時間,
                    自社部門ID = t02.自社部門ID,
                    乗務員ID = m04.乗務員ID,
                    運転者名 = m04.乗務員名,
                    車輌ID = m05.車輌ID,
                    車輌番号 = t02.車輌番号,
                    車種ID = t02.車種ID,
                    拘束時間 = (decimal)t02.拘束時間 == null ? 0 : (decimal)t02.拘束時間,
                    運転時間 = (decimal)t02.運転時間 == null ? 0 : (decimal)t02.運転時間,
                    作業時間 = (decimal)t02.作業時間 == null ? 0 : (decimal)t02.作業時間,
                    待機時間 = (decimal)t02.待機時間 == null ? 0 : (decimal)t02.待機時間,
                    休憩時間 = (decimal)t02.休憩時間 == null ? 0 : (decimal)t02.休憩時間,
                    残業時間 = (decimal)t02.残業時間 == null ? 0 : (decimal)t02.残業時間,
                    深夜時間 = (decimal)t02.深夜時間 == null ? 0 : (decimal)t02.深夜時間,
                    走行km = t02.走行KM == null ? 0 : t02.走行KM,
                    実車km = t02.実車KM == null ? 0 : t02.実車KM,
                    輸送屯数 = t02.輸送屯数 == null ? 0 : t02.輸送屯数,
                    出庫km = t02.出庫KM == null ? 0 : t02.出庫KM,
                    帰庫km = t02.帰庫KM == null ? 0 : t02.帰庫KM,
                    明細番号 = t02.明細番号,
                    明細行 = t02.明細行,
                    明細区分 = t02.明細区分,
                    入力区分 = t02.入力区分,
                    s入力区分 = t02.入力区分 == 1 ? "運転日報" : t02.入力区分 == 2 ? "日報入力" : "",
                    検索日付From = p検索日付From,
                    検索日付To = p検索日付To,
                    部門指定 = 自社部門Value,
                    表示順序 = 表示順指定0 + " ," + 表示順指定1 + " ," + 表示順指定2 + " ," + 表示順指定3 + " ," + 表示順指定4,
                }).Distinct().AsQueryable();

                List <DLY13010_Member> ret = null;
                if (p車輌ID != null || p乗務員ID != null || p検索日付From != null || p検索日付To != null)
                {
                    //車輌検索
                    if (p車輌ID != null)
                    {
                        query = query.Where(c => c.車輌ID == p車輌ID);
                    }
                    //乗員検索
                    if (p乗務員ID != null)
                    {
                        query = query.Where(c => c.乗務員ID == p乗務員ID);
                    }
                    //d適用開始日Fromの値がNULLの時
                    if (p検索日付From != null)
                    {
                        query = query.Where(c => c.出庫日付 >= p検索日付From);
                    }
                    //d適用開始日Fromの値がNULLの時
                    if (p検索日付To != null)
                    {
                        query = query.Where(c => c.出庫日付 <= p検索日付To);
                    }
                    //d適用開始日From、d適用開始日Toの値がある時
                    if (p検索日付From != null && p検索日付To != null)
                    {
                        query = query.Where(c => c.出庫日付 >= p検索日付From && c.出庫日付 <= p検索日付To);
                    }
                    ret = query.ToList();
                }
                else
                {
                    ret = query.ToList();
                }

                // コードの範囲指定での絞り込み
                if (p乗務員FROM >= 0)
                {
                    ret = query.Where(x => x.乗務員ID >= p乗務員FROM).ToList();
                }
                if (p乗務員TO >= 0)
                {
                    ret = query.Where(x => x.乗務員ID <= p乗務員TO).ToList();
                }
                if (p車輌FROM >= 0)
                {
                    ret = query.Where(x => x.車輌ID >= p車輌FROM).ToList();
                }
                if (p車輌TO >= 0)
                {
                    ret = query.Where(x => x.車輌ID <= p車輌TO).ToList();
                }

                // コード一覧の絞込み
                if (p乗務員.Length > 0)
                {
                    ret = query.Where(x => p乗務員.Contains(x.乗務員ID)).ToList();
                }
                if (p車輌.Length > 0)
                {
                    ret = query.Where(x => p車輌.Contains(x.車輌ID)).ToList();
                }

                result.DataList = ret.ToList();
                return(result);

                //合計計算処理
                //result.TotalList.Add(new DLY13010_TOTAL_Member());
                //foreach (var rec in result.DataList)
                //{
                //result.TotalList[0].現金通行料合計 += rec.売上金額;
                //result.TotalList[0].プレート合計 += rec.通行料;
                //result.TotalList[0].フェリー代合計 += rec.支払金額;
                //result.TotalList[0].電話代合計 += rec.支払通行料;
                //result.TotalList[0].稼動金額合計 += (rec.売上金額 + rec.通行料) - (rec.支払金額 + rec.支払通行料);
                //}
            }
        }
Example #27
0
        /// <summary>
        /// 請求一覧検索情報取得
        /// </summary>
        /// <param name="condition">
        ///  == 検索条件 ==
        ///  自社コード
        ///  作成年月日
        ///  作成年月
        ///  作成締日
        ///  得意先コード
        ///  得意先枝番
        /// </param>
        /// <returns></returns>
        public List <SearchDataMember> GetDataList(Dictionary <string, string> condition)
        {
            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                try
                {
                    // パラメータの型変換
                    int ival;
                    int myCompany   = int.Parse(condition["自社コード"]);
                    int createYM    = int.Parse(condition["作成年月"].Replace("/", ""));
                    int?closingDate = int.TryParse(condition["作成締日"], out ival) ? ival : (int?)null;
                    int?customerCd  = int.TryParse(condition["得意先コード"], out ival) ? ival : (int?)null;
                    int?customerEda = int.TryParse(condition["得意先枝番"], out ival) ? ival : (int?)null;

                    var result =
                        context.S01_SEIHD
                        .Where(w => w.自社コード == myCompany && w.請求年月 == createYM && (closingDate == null || w.請求締日 == closingDate))
                        .Join(context.M01_TOK.Where(w => w.削除日時 == null),
                              x => new { コード = x.請求先コード, 枝番 = x.請求先枝番 },
                              y => new { コード = y.取引先コード, 枝番 = y.枝番 },
                              (x, y) => new { x, y })
                        .Select(x => new { SEIHD = x.x, TOK = x.y })
                        .OrderBy(o => o.SEIHD.請求年月日)
                        .ThenBy(t => t.SEIHD.請求先コード)
                        .ThenBy(t => t.SEIHD.請求先枝番)
                        .ToList();

                    // 取引先の指定があれば条件を追加
                    if (customerCd != null && customerEda != null)
                    {
                        result = result.Where(w =>
                                              w.SEIHD.請求先コード == customerCd &&
                                              w.SEIHD.請求先枝番 == customerEda)
                                 .ToList();
                    }
                    else if (customerCd != null)
                    {
                        result = result.Where(w =>
                                              w.SEIHD.請求先コード == customerCd)
                                 .ToList();
                    }


                    // 返却用にデータを整形
                    var dataList =
                        result.Select(x => new SearchDataMember
                    {
                        印刷区分   = true,
                        ID     = string.Format("{0:D4} - {1:D2}", x.SEIHD.請求先コード, x.SEIHD.請求先枝番),   // No.223 Add
                        自社コード  = x.SEIHD.自社コード,
                        締日     = x.SEIHD.請求締日,
                        請求年月   = x.SEIHD.請求年月,
                        得意先コード = x.SEIHD.請求先コード,
                        得意先枝番  = x.SEIHD.請求先枝番,
                        得意先名   = x.TOK.略称名,
                        回数     = x.SEIHD.回数,
                        集計期間   = string.Format("{0:yyyy/MM/dd}~{1:yyyy/MM/dd}", x.SEIHD.集計開始日, x.SEIHD.集計最終日),
                        当月請求額  = x.SEIHD.当月請求額,
                        郵便番号   = x.TOK.郵便番号,
                        住所1    = x.TOK.住所1,
                        住所2    = x.TOK.住所2,
                        電話番号   = x.TOK.電話番号,
                        入金日    = x.SEIHD.入金日
                    })
                        .ToList();

                    return(dataList.ToList());
                }
                catch (System.ArgumentException agex)
                {
                    throw agex;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Example #28
0
        public List <MasterList_Member> GetMasterList(string param)
        {
            List <MasterList_Member> result = new List <MasterList_Member>();

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                string selsts = UnselectedChar;
                context.Connection.Open();
                switch (param)
                {
                //case "得意先":
                //    result = (from mst in context.M01_TOK
                //              where mst.取引区分 == 0 || mst.取引区分 == 1
                //                 && mst.削除日付 == null
                //              orderby mst.得意先ID
                //              select new MasterList_Member
                //              {
                //                  選択 = selsts,
                //                  コード = mst.得意先ID,
                //                  表示名 = mst.得意先名1,
                //              }
                //              ).ToList();
                //    break;
                //case "支払先":
                //    result = (from mst in context.M01_TOK
                //              where mst.取引区分 == 0 || mst.取引区分 == 2
                //                 && mst.削除日付 == null
                //              orderby mst.得意先ID
                //              select new MasterList_Member
                //              {
                //                  選択 = selsts,
                //                  コード = mst.得意先ID,
                //                  表示名 = mst.得意先名1,
                //              }
                //              ).ToList();
                //    break;
                //case "仕入先":
                //    result = (from mst in context.M01_TOK
                //              where mst.取引区分 == 0 || mst.取引区分 == 3
                //                 && mst.削除日付 == null
                //              orderby mst.得意先ID
                //              select new MasterList_Member
                //              {
                //                  選択 = selsts,
                //                  コード = mst.得意先ID,
                //                  表示名 = mst.得意先名1,
                //              }
                //              ).ToList();
                //    break;
                case "乗務員":
                    result = (from mst in context.M04_DRV
                              where mst.削除日付 == null
                              orderby mst.乗務員ID
                              select new MasterList_Member
                    {
                        選択 = selsts,
                        コード = mst.乗務員ID,
                        表示名 = mst.乗務員名,
                    }
                              ).ToList();
                    break;

                case "車輌":
                    result = (from mst in context.M05_CAR
                              where mst.削除日付 == null
                              orderby mst.車輌ID
                              select new MasterList_Member
                    {
                        選択 = selsts,
                        コード = mst.車輌ID,
                        表示名 = mst.車輌番号,
                    }
                              ).ToList();
                    break;
                    //case "車種":
                    //    result = (from mst in context.M06_SYA
                    //              where mst.削除日付 == null
                    //              orderby mst.車種ID
                    //              select new MasterList_Member
                    //              {
                    //                  選択 = selsts,
                    //                  コード = mst.車種ID,
                    //                  表示名 = mst.車種名,
                    //              }
                    //              ).ToList();
                    //    break;
                    //case "発地":
                    //    result = (from mst in context.M08_TIK
                    //              where mst.削除日付 == null
                    //              orderby mst.発着地ID
                    //              select new MasterList_Member
                    //              {
                    //                  選択 = selsts,
                    //                  コード = mst.発着地ID,
                    //                  表示名 = mst.発着地名,
                    //              }).ToList();
                    //    break;
                    //case "着地":
                    //    result = (from mst in context.M08_TIK
                    //              where mst.削除日付 == null
                    //              orderby mst.発着地ID
                    //              select new MasterList_Member
                    //              {
                    //                  選択 = selsts,
                    //                  コード = mst.発着地ID,
                    //                  表示名 = mst.発着地名,
                    //              }
                    //              ).ToList();
                    //    break;
                    //case "商品":
                    //    result = (from mst in context.M09_HIN
                    //              where mst.削除日付 == null
                    //              orderby mst.商品ID
                    //              select new MasterList_Member
                    //              {
                    //                  選択 = selsts,
                    //                  コード = mst.商品ID,
                    //                  表示名 = mst.商品名,
                    //              }
                    //              ).ToList();
                    //    break;
                }
            }
            return(result);
        }
Example #29
0
        /// <summary>
        /// 請求データ削除
        /// </summary>
        /// <param name="condition"></param>
        /// <param name="ds"></param>
        /// <returns></returns>
        public bool DataDelete(DataSet ds)
        {
            DataTable tbl = ds.Tables[0];

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();
                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    try
                    {
                        foreach (DataRow row in tbl.Rows)
                        {
                            SearchDataMember mem = getSearchDataMemberRow(row);
                            if (mem.印刷区分 == false)
                            {
                                //印刷区分falseは削除対象外
                                continue;
                            }

                            var delList =
                                context.S01_SEIDTL
                                .Where(w =>
                                       w.自社コード == mem.自社コード &&
                                       w.請求年月 == mem.請求年月 &&
                                       w.請求締日 == mem.締日 &&
                                       w.請求先コード == mem.得意先コード &&
                                       w.請求先枝番 == mem.得意先枝番 &&
                                       w.入金日 == mem.入金日 &&
                                       w.回数 == mem.回数);

                            foreach (var delData in delList)
                            {
                                context.S01_SEIDTL.DeleteObject(delData);
                            }

                            var delHead =
                                context.S01_SEIHD
                                .Where(w =>
                                       w.自社コード == mem.自社コード &&
                                       w.請求年月 == mem.請求年月 &&
                                       w.請求締日 == mem.締日 &&
                                       w.請求先コード == mem.得意先コード &&
                                       w.請求先枝番 == mem.得意先枝番 &&
                                       w.入金日 == mem.入金日 &&
                                       w.回数 == mem.回数);
                            foreach (var del in delHead)
                            {
                                context.S01_SEIHD.DeleteObject(del);
                            }
                        }
                        context.SaveChanges();
                    }
                    catch
                    {
                        tran.Rollback();
                        throw;
                    }
                    tran.Commit();
                }
            }

            return(true);
        }
Example #30
0
        /// <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();
            }
        }