Пример #1
0
        /// <summary>
        /// 販社仕入情報を取得する
        /// </summary>
        /// <param name="context"></param>
        /// <param name="p自社コード"></param>
        /// <param name="cond"></param>
        /// <returns></returns>
        private List <SearchDataMember> GetHanDataList(TRAC3Entities context, int p自社コード, Dictionary <string, string> cond)
        {
            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_HAN.Where(w => w.削除日時 == null && w.会社名コード == p自社コード)
                    .Join(context.T03_SRDTL_HAN
                          .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 })
                    .GroupJoin(context.T02_URHD.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, URHD = b })
                    .Where(w =>
                           w.URHD.売上区分 != (int)CommonConstants.売上区分.メーカー販社商流直送 &&
                           w.URHD.売上区分 != (int)CommonConstants.売上区分.メーカー販社商流直送返品);

                #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:保留

                // 入力区分
                // REMARKS:販社ヘッダには入力区分が無いので未指定(売上入力固定)

                // 仕入先
                // REMARKS:画面からの仕入先指定は不可

                // 入荷先
                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.URHD.元伝票番号,
                               (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, JIS = b })
                    // 仕入先
                    .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                               x => x.SRHD.仕入先コード,
                               y => 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.JIS, SJIS = 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.JIS, e.x.SJIS, NJIS = f })
                    .ToList()
                    .Select(x => new SearchDataMember
                {
                    伝票番号   = x.SRHD.伝票番号,                //No.406 Mod
                    返品伝票番号 = x.RTSR != null ? x.RTSR.SRHD.伝票番号.ToString() : "",
                    会社名コード = x.SRHD.会社名コード.ToString(),
                    自社名    = x.JIS != null ? x.JIS.自社名 : "",
                    仕入日    = x.SRHD.仕入日.ToString("yyyy/MM/dd"),
                    支払日    = "",     // TODO:一応足しておく
                    入力区分   = CommonConstants.入力区分.売上入力.GetHashCode().ToString(),
                    入力区分名  = CommonConstants.Get入力区分Dic()[CommonConstants.入力区分.売上入力.GetHashCode()],
                    仕入先コード = string.Format("{0:D4} - {1:D2}", x.SJIS.取引先コード, x.SJIS.枝番),            // No.227,228 Mod
                    仕入先名   = x.SJIS != null ? x.SJIS.自社名 : "",
                    入荷先コード = x.SRHD.入荷先コード.ToString(),
                    入荷先名   = x.NJIS != null ? x.NJIS.自社名 : "",
                    発注番号   = 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

                return(resultList);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #2
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;
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 販社仕入情報を取得する
        /// </summary>
        /// <param name="context"></param>
        /// <param name="p自社コード"></param>
        /// <param name="cond"></param>
        /// <returns></returns>
        private List <SearchDataMember> GetHanDataList(TRAC3Entities context, int p自社コード, Dictionary <string, string> cond)
        {
            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["自社品番"];
                #endregion

                // 基本情報の取得
                var srDataList =
                    context.T03_SRHD_HAN.Where(w => w.削除日時 == null && w.会社名コード == p自社コード)
                    .Join(context.T03_SRDTL_HAN.Where(w => w.削除日時 == null),
                          x => x.伝票番号,
                          y => y.伝票番号,
                          (x, y) => new { SRHD = x, SRDTL = y })
                    .GroupJoin(context.T02_URHD.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, URHD = f })
                    .Where(w =>
                           w.URHD.売上区分 != (int)CommonConstants.売上区分.メーカー販社商流直送 &&
                           w.URHD.売上区分 != (int)CommonConstants.売上区分.メーカー販社商流直送返品)
                    // 商品マスタ
                    .GroupJoin(context.M09_HIN.Where(w => w.削除日時 == null),
                               x => x.SRDTL.品番コード,
                               y => y.品番コード,
                               (x, y) => new { x, y })
                    .SelectMany(x => x.y.DefaultIfEmpty(), (a, b) => new { a.x.SRHD, a.x.SRDTL, a.x.URHD, HIN = b })
                    // 色名称
                    .GroupJoin(context.M06_IRO.Where(w => w.削除日時 == null),
                               x => x.HIN.自社色,
                               y => y.色コード,
                               (x, y) => new { x, y })
                    .SelectMany(x => x.y.DefaultIfEmpty(),
                                (c, d) => new { c.x.SRHD, c.x.SRDTL, c.x.URHD, c.x.HIN, IRO = d });

                #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:保留

                // 入力区分
                // REMARKS:販社ヘッダには入力区分が無いので未指定(売上入力固定)

                // 仕入先
                // REMARKS:画面からの仕入先指定は不可

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

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

                #endregion

                #region 各名称を取得して検索メンバークラスに整形
                var resultList =
                    srDataList
                    // 会社名
                    .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.URHD, a.x.HIN, a.x.IRO, JIS = b })
                    // 仕入先
                    .GroupJoin(context.M70_JIS.Where(w => w.削除日時 == null),
                               x => x.SRHD.仕入先コード,
                               y => y.自社コード,
                               (x, y) => new { x, y })
                    .SelectMany(x => x.y.DefaultIfEmpty(),
                                (c, d) => new { c.x.SRHD, c.x.SRDTL, c.x.URHD, c.x.HIN, c.x.IRO, c.x.JIS, SJIS = 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.URHD, e.x.HIN, e.x.IRO, e.x.JIS, e.x.SJIS, NJIS = f })
                    .ToList()
                    .Select(x => new SearchDataMember
                {
                    会社名コード  = x.SRHD.会社名コード,
                    自社名     = x.JIS != null ? x.JIS.自社名 : "",
                    仕入日     = x.SRHD.仕入日.ToString("yyyy/MM/dd"),
                    支払日     = "",    // TODO:一応足しておく
                    仕入区分コード = x.SRHD.仕入区分,
                    仕入区分    = x.SRHD.仕入区分 == (int)CommonConstants.仕入区分.通常 ? CommonConstants.仕入区分_通常 :
                              x.SRHD.仕入区分 == (int)CommonConstants.仕入区分.返品 ? CommonConstants.仕入区分_返品 :
                              string.Empty,
                    //入力区分 = CommonConstants.入力区分.売上入力.GetHashCode().ToString(),
                    入力区分   = CommonConstants.Get入力区分Dic()[CommonConstants.入力区分.売上入力.GetHashCode()],
                    伝票番号   = x.SRHD.伝票番号,
                    元伝票番号  = x.URHD != null ? x.URHD.元伝票番号.ToString() : string.Empty,
                    行番号    = x.SRDTL.行番号,
                    仕入先コード = x.SRHD.仕入先コード.ToString(),
                    仕入先名   = x.SJIS != null ? x.SJIS.自社名 : "",
                    入荷先名   = x.NJIS != null ? x.NJIS.自社名 : "",
                    品番コード  = x.SRDTL.品番コード,
                    自社品番   = x.HIN != null ? x.HIN.自社品番 : string.Empty,
                    自社品名   = !string.IsNullOrEmpty(x.SRDTL.自社品名) ? x.SRDTL.自社品名 : x.HIN.自社品名,           // No.390 Mod
                    自社色    = x.IRO != null ? x.IRO.色名称 : string.Empty,
                    賞味期限   = x.SRDTL.賞味期限 == null ? null : x.SRDTL.賞味期限.Value.ToShortDateString(),
                    数量     = x.SRHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? x.SRDTL.数量 : x.SRDTL.数量 * -1,
                    単価     = x.SRDTL.単価,
                    単位     = x.SRDTL.単位,
                    金額     = x.SRHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? x.SRDTL.金額 : x.SRDTL.金額 * -1,
                    消費税    = x.SRHD.仕入区分 < (int)CommonConstants.仕入区分.返品 ? (x.SRHD.消費税 ?? 0) : (x.SRHD.消費税 ?? 0) * -1,
                    摘要     = x.SRDTL.摘要,
                    発注番号   = x.SRHD.発注番号,
                }).ToList();

                #endregion

                return(resultList);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }