/// <summary> /// ヘッダ情報を印刷データに格納する /// </summary> /// <param name="prtMem"></param> /// <param name="hdRow"></param> /// <param name="jis_nusi"></param> /// <param name="jis"></param> /// <param name="syuk"></param> private void setPrintHeaderData(PrintoutMember prtMem, T02_URHD hdRow, M01_TOK Tok, M70_JIS jis_nusi, M70_JIS jis, M01_TOK syukS, M01_TOK syukM) { prtMem.出荷主 = hdRow.出荷元名; prtMem.品先名1 = hdRow.出荷先名; if (Tok != null) { prtMem.得意先名1 = Tok.得意先名1; prtMem.得意先名2 = Tok.得意先名2; prtMem.得意先郵便番号 = Tok.郵便番号; prtMem.得意先住所1 = Tok.住所1; prtMem.得意先住所2 = Tok.住所2; prtMem.得意先TEL = Tok.電話番号; prtMem.得意先FAX = Tok.FAX; } prtMem.品先名1 = hdRow.出荷先名; if (syukS != null) { prtMem.品先名1 = syukS.得意先名1; prtMem.品先名2 = syukS.得意先名2; prtMem.品先郵便番号 = syukS.郵便番号; prtMem.品先住所1 = syukS.住所1; prtMem.品先住所2 = syukS.住所2; prtMem.品先TEL = syukS.電話番号; prtMem.品先FAX = syukS.FAX; } prtMem.出荷日 = hdRow.出荷日.ToString("yyyy/MM/dd"); prtMem.出荷元名1 = hdRow.出荷元名; if (syukM != null) { prtMem.出荷元名2 = syukM.得意先名2; prtMem.出荷元郵便番号 = syukM.郵便番号; prtMem.出荷元住所1 = syukM.住所1; prtMem.出荷元住所2 = syukM.住所2; prtMem.出荷元TEL = syukM.電話番号; prtMem.出荷元FAX = syukM.FAX; } prtMem.自社名 = jis.自社名; prtMem.自社郵便番号 = jis.郵便番号; prtMem.自社住所1 = jis.住所1; prtMem.自社住所2 = jis.住所2; prtMem.自社TEL = jis.電話番号; prtMem.自社FAX = jis.FAX; prtMem.伝票番号 = hdRow.伝票番号.ToString(); prtMem.品伝票番号 = hdRow.品伝票番号.ToString(); prtMem.伝票備考 = hdRow.備考; }
/// <summary> /// 納品書明細情報を印刷データに格納する /// </summary> /// <param name="prtMem"></param> /// <param name="dtlRow"></param> /// <param name="rowNum"></param> private void setPrintNouhinData(PrintoutMember prtMem, DetailExtension dtlRow, int rowNum) { //20190902 add-s CB軽減税率対応 string 消費税区分wk = ""; if (dtlRow.消費税区分 == (int)CommonConstants.商品消費税区分.軽減税率) { 消費税区分wk = "軽 "; } else if (dtlRow.消費税区分 == (int)CommonConstants.商品消費税区分.非課税) { 消費税区分wk = "非 "; } //20190902 add-e CB軽減税率対応 switch (rowNum) { case 1: prtMem.行番号1 = rowNum; prtMem.品番1 = dtlRow.品番; prtMem.得意先品番1 = dtlRow.得意先品番; prtMem.品名1 = dtlRow.品名; prtMem.数量1 = dtlRow.数量; prtMem.単位1 = dtlRow.単位; prtMem.単価1 = dtlRow.単価; prtMem.金額1 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要1 = dtlRow.摘要; prtMem.摘要1 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; case 2: prtMem.行番号2 = rowNum; prtMem.品番2 = dtlRow.品番; prtMem.得意先品番2 = dtlRow.得意先品番; prtMem.品名2 = dtlRow.品名; prtMem.数量2 = dtlRow.数量; prtMem.単位2 = dtlRow.単位; prtMem.単価2 = dtlRow.単価; prtMem.金額2 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要2 = dtlRow.摘要; prtMem.摘要2 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; case 3: prtMem.行番号3 = rowNum; prtMem.品番3 = dtlRow.品番; prtMem.得意先品番3 = dtlRow.得意先品番; prtMem.品名3 = dtlRow.品名; prtMem.数量3 = dtlRow.数量; prtMem.単位3 = dtlRow.単位; prtMem.単価3 = dtlRow.単価; prtMem.金額3 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要3 = dtlRow.摘要; prtMem.摘要3 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; case 4: prtMem.行番号4 = rowNum; prtMem.品番4 = dtlRow.品番; prtMem.得意先品番4 = dtlRow.得意先品番; prtMem.品名4 = dtlRow.品名; prtMem.数量4 = dtlRow.数量; prtMem.単位4 = dtlRow.単位; prtMem.単価4 = dtlRow.単価; prtMem.金額4 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要4 = dtlRow.摘要; prtMem.摘要4 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; case 5: prtMem.行番号5 = rowNum; prtMem.品番5 = dtlRow.品番; prtMem.得意先品番5 = dtlRow.得意先品番; prtMem.品名5 = dtlRow.品名; prtMem.数量5 = dtlRow.数量; prtMem.単位5 = dtlRow.単位; prtMem.単価5 = dtlRow.単価; prtMem.金額5 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要5 = dtlRow.摘要; prtMem.摘要5 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; case 6: prtMem.行番号6 = rowNum; prtMem.品番6 = dtlRow.品番; prtMem.得意先品番6 = dtlRow.得意先品番; prtMem.品名6 = dtlRow.品名; prtMem.数量6 = dtlRow.数量; prtMem.単位6 = dtlRow.単位; prtMem.単価6 = dtlRow.単価; prtMem.金額6 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要6 = dtlRow.摘要; prtMem.摘要6 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; case 7: prtMem.行番号7 = rowNum; prtMem.品番7 = dtlRow.品番; prtMem.得意先品番7 = dtlRow.得意先品番; prtMem.品名7 = dtlRow.品名; prtMem.数量7 = dtlRow.数量; prtMem.単位7 = dtlRow.単位; prtMem.単価7 = dtlRow.単価; prtMem.金額7 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要7 = dtlRow.摘要; prtMem.摘要7 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; case 8: prtMem.行番号8 = rowNum; prtMem.品番8 = dtlRow.品番; prtMem.得意先品番8 = dtlRow.得意先品番; prtMem.品名8 = dtlRow.品名; prtMem.数量8 = dtlRow.数量; prtMem.単位8 = dtlRow.単位; prtMem.単価8 = dtlRow.単価; prtMem.金額8 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要8 = dtlRow.摘要; prtMem.摘要8 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; case 9: prtMem.行番号9 = rowNum; prtMem.得意先品番9 = dtlRow.得意先品番; prtMem.品番9 = dtlRow.品番; prtMem.品名9 = dtlRow.品名; prtMem.数量9 = dtlRow.数量; prtMem.単位9 = dtlRow.単位; prtMem.単価9 = dtlRow.単価; prtMem.金額9 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要9 = dtlRow.摘要; prtMem.摘要9 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; case 10: prtMem.行番号10 = rowNum; prtMem.得意先品番10 = dtlRow.得意先品番; prtMem.品番10 = dtlRow.品番; prtMem.品名10 = dtlRow.品名; prtMem.数量10 = dtlRow.数量; prtMem.単位10 = dtlRow.単位; prtMem.単価10 = dtlRow.単価; prtMem.金額10 = dtlRow.金額; //20190902 mod-s CB軽減税率対応 //prtMem.摘要10 = dtlRow.摘要; prtMem.摘要10 = 消費税区分wk + dtlRow.摘要; //20190902 CB mod-s break; } }
/// <summary> /// 納品書印刷データ取得 /// </summary> /// <param name="param"></param> /// <returns></returns> //20190919 mod-s CB 軽減税率対応 ccfg.自社区分 が 0の場合は現状のまま 1の場合はT02_URHDの会社名コードとccfg.自社コードが一致す //public List<PrintoutMember> GetPrintData(string 売上日From, string 売上日To, string 得意先コード, string 得意先枝番, string 伝票番号From, string 伝票番号To) public List <PrintoutMember> GetPrintData( string 売上日From, string 売上日To, string 得意先コード, string 得意先枝番, string 伝票番号From, string 伝票番号To, int?自社コード) //20190919 mod-e CB 軽減税率対応 { List <PrintoutMember> result = new List <PrintoutMember>(); // パラメータの型変換 DateTime dateVal; int iVal; if (string.IsNullOrEmpty(売上日From)) { dateVal = DateTime.MinValue; } else if (!DateTime.TryParse(売上日From, out dateVal)) { throw new Exception("必須パラメータ不足"); } DateTime DateFrom = dateVal; if (string.IsNullOrEmpty(売上日To)) { dateVal = DateTime.MaxValue; } else if (!DateTime.TryParse(売上日To, out dateVal)) { throw new Exception("必須パラメータ不足"); } DateTime DateTo = dateVal; int?code = int.TryParse(得意先コード, out iVal) ? iVal : (int?)null; int?eda = int.TryParse(得意先枝番, out iVal) ? iVal : (int?)null; int?denFrom = int.TryParse(伝票番号From, out iVal) ? iVal : (int?)null; int?denTo = int.TryParse(伝票番号To, out iVal) ? iVal : (int?)null; using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString())) { // ヘッダ情報取得 var urhdList = context.T02_URHD .Where(w => w.削除日時 == null && w.売上日 >= DateFrom && w.売上日 <= DateTo); // 入力パラメータによるデータ絞込み if (code != null && eda != null) { urhdList = urhdList.Where(w => w.得意先コード == code && w.得意先枝番 == eda); } else if (code != null) { urhdList = urhdList.Where(w => w.得意先コード == code); } if (denFrom != null) { urhdList = urhdList.Where(w => w.伝票番号 >= denFrom); } if (denTo != null) { urhdList = urhdList.Where(w => w.伝票番号 <= denTo); } //20190919 add-s CB 軽減税率対応 //ccfg.自社区分 が 0の場合は現状のままccfg.自社区分が1の場合は、 //T02_URHDの会社名コードとccfg.自社コードが一致する if (自社コード != null) { urhdList = urhdList.Where(w => w.会社名コード == 自社コード); } //20190919 add-e CB 軽減税率対応 foreach (T02_URHD hdRow in urhdList.ToList()) { PrintoutMember prtMem = new PrintoutMember(); var Tok = context.M01_TOK .Where(w => w.削除日時 == null && w.取引先コード == hdRow.得意先コード && w.枝番 == hdRow.得意先枝番) .FirstOrDefault(); var jis_nusi = context.M70_JIS .Where(w => w.削除日時 == null && w.自社コード == hdRow.出荷元コード) .FirstOrDefault(); var jis_jisya = context.M70_JIS .Where(w => w.削除日時 == null && w.自社コード == hdRow.会社名コード) .FirstOrDefault(); var syukS = context.M01_TOK .Where(w => w.削除日時 == null && w.取引先コード == hdRow.出荷先コード && w.枝番 == hdRow.出荷先枝番) .FirstOrDefault(); var syukM = context.M01_TOK .Where(w => w.削除日時 == null && w.取引先コード == hdRow.出荷元コード && w.枝番 == hdRow.出荷元枝番) .FirstOrDefault(); // ヘッダ情報を設定 setPrintHeaderData(prtMem, hdRow, Tok, jis_nusi, jis_jisya, syukS, syukM); // 納品書明細情報データを作成 var urdtlList = context.T02_URDTL.Where(w => w.削除日時 == null && w.伝票番号 == hdRow.伝票番号) .GroupJoin(context.M09_HIN.Where(w => w.削除日時 == null), x => x.品番コード, y => y.品番コード, (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (a, b) => new { URDTL = a.x, HIN = b }) .GroupJoin(context.M10_TOKHIN.Where(w => w.削除日時 == null), x => new { 品番 = x.URDTL.品番コード, 得意先 = hdRow.得意先コード, 枝番 = hdRow.得意先枝番 }, // No-174 Mod y => new { 品番 = y.品番コード, 得意先 = y.取引先コード, 枝番 = y.枝番 }, // No-174 Mod (x, y) => new { x, y }) .SelectMany(z => z.y.DefaultIfEmpty(), (c, d) => new { c.x.URDTL, c.x.HIN, TOKHIN = d }) .Select(x => new DetailExtension { 行番号 = x.URDTL.行番号, // No-174 Add 品番 = x.HIN.自社品番, 得意先品番 = x.TOKHIN == null ? string.Empty : x.TOKHIN.得意先品番コード, 品名 = !string.IsNullOrEmpty(x.URDTL.自社品名) ? x.URDTL.自社品名 : x.HIN.自社品名, // No.389 Mod 数量 = x.URDTL.数量, 単位 = x.URDTL.単位, 単価 = x.URDTL.単価, 金額 = x.URDTL.金額, //20190902 CB add & mod-s //摘要 = x.URDTL.摘要 摘要 = x.URDTL.摘要, 消費税区分 = x.HIN.消費税区分 //20190902 CB add & mod-e }); //// 得意先品番(自社品番)の数量集計データを作成 //var query = // urdtlList.GroupBy(g => new { g.得意先品番, g.単価 }) // .Select(x => new DetailExtension // { // 品番 = x.Key.得意先品番, // 得意先品番 = string.Empty, // 品名 = x.FirstOrDefault().品名, // 数量 = x.Sum(s => s.数量), // 単位 = x.FirstOrDefault().単位, // 単価 = x.Sum(s => s.単価), // 金額 = x.Sum(s => s.金額), // //20190902 add & mod-s CB軽減税率対応 // //摘要 = x.FirstOrDefault().摘要 // 摘要 = x.FirstOrDefault().摘要, // 消費税区分 = x.FirstOrDefault().消費税区分 // //20190902 add & mod-e CB軽減税率対応 // }); // 納品書(下部)のデータ設定 int rowNum = 1; foreach (DetailExtension dtlRow in urdtlList.OrderBy(o => o.行番号)) // No-174 Mod { setPrintNouhinData(prtMem, dtlRow, rowNum); rowNum++; } // 納品書(上部)のデータ設定 rowNum = 1; foreach (DetailExtension dtlRow in urdtlList.OrderBy(o => o.行番号)) // No-174 Mod { setPrintDetailData(prtMem, dtlRow, rowNum); rowNum++; } result.Add(prtMem); } } return(result); }
/// <summary> /// 出荷明細情報を印刷データに格納する /// </summary> /// <param name="prtMem"></param> /// <param name="dtlRow"></param> /// <param name="rowNum"></param> private void setPrintDetailData(PrintoutMember prtMem, DetailExtension dtlRow, int rowNum) { switch (rowNum) { case 1: prtMem.明細品番1 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名1 = dtlRow.品名; prtMem.明細数量1 = dtlRow.数量; prtMem.明細単位1 = dtlRow.単位; prtMem.明細摘要1 = dtlRow.摘要; break; case 2: prtMem.明細品番2 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名2 = dtlRow.品名; prtMem.明細数量2 = dtlRow.数量; prtMem.明細単位2 = dtlRow.単位; prtMem.明細摘要2 = dtlRow.摘要; break; case 3: prtMem.明細品番3 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名3 = dtlRow.品名; prtMem.明細数量3 = dtlRow.数量; prtMem.明細単位3 = dtlRow.単位; prtMem.明細摘要3 = dtlRow.摘要; break; case 4: prtMem.明細品番4 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名4 = dtlRow.品名; prtMem.明細数量4 = dtlRow.数量; prtMem.明細単位4 = dtlRow.単位; prtMem.明細摘要4 = dtlRow.摘要; break; case 5: prtMem.明細品番5 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名5 = dtlRow.品名; prtMem.明細数量5 = dtlRow.数量; prtMem.明細単位5 = dtlRow.単位; prtMem.明細摘要5 = dtlRow.摘要; break; case 6: prtMem.明細品番6 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名6 = dtlRow.品名; prtMem.明細数量6 = dtlRow.数量; prtMem.明細単位6 = dtlRow.単位; prtMem.明細摘要6 = dtlRow.摘要; break; case 7: prtMem.明細品番7 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名7 = dtlRow.品名; prtMem.明細数量7 = dtlRow.数量; prtMem.明細単位7 = dtlRow.単位; prtMem.明細摘要7 = dtlRow.摘要; break; case 8: prtMem.明細品番8 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名8 = dtlRow.品名; prtMem.明細数量8 = dtlRow.数量; prtMem.明細単位8 = dtlRow.単位; prtMem.明細摘要8 = dtlRow.摘要; break; case 9: prtMem.明細品番9 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名9 = dtlRow.品名; prtMem.明細数量9 = dtlRow.数量; prtMem.明細単位9 = dtlRow.単位; prtMem.明細摘要9 = dtlRow.摘要; break; case 10: prtMem.明細品番10 = string.IsNullOrEmpty(dtlRow.得意先品番) ? dtlRow.品番 : dtlRow.得意先品番; prtMem.明細品名10 = dtlRow.品名; prtMem.明細数量10 = dtlRow.数量; prtMem.明細単位10 = dtlRow.単位; prtMem.明細摘要10 = dtlRow.摘要; break; } }