Esempio n. 1
0
        ///-------------------------------------------------------------------
        /// <summary>
        ///     商品情報配列取得 </summary>
        /// <returns>
        ///     clsCsvSyohinクラス配列</returns>
        ///-------------------------------------------------------------------
        private ClsCsvData.ClsCsvSyohin_New[] GetSyohinData()
        {
            button1.Text = "商品マスターを読み込み中です・・・";
            System.Threading.Thread.Sleep(10);
            Application.DoEvents();

            Cursor = Cursors.WaitCursor;

            ClsCsvData.ClsCsvSyohin_New[] syohins = null;

            try
            {
                // 商品CSVデータ配列読み込み
                string[] Sy_Array = System.IO.File.ReadAllLines(Properties.Settings.Default.商品マスター, Encoding.Default);

                int  toDate   = 0;
                int  x        = 0;
                int  cnt      = 0;
                bool Syubai   = false;
                int  totalCnt = Sy_Array.Length;

                // プログレスバー初期化
                progressBar1.Minimum = 0;
                progressBar1.Maximum = totalCnt;
                progressBar1.Value   = 0;

                foreach (var item in Sy_Array)
                {
                    cnt++;
                    progressBar1.Value = cnt;

                    string[] t = item.Split(',');
                    //string cStart_Sale_YMD = "";      // 商品販売開始日付
                    string cLast_Sale_YMD = "";         // 商品販売終了日付

                    // 削除フラグ
                    string Header = t[0].Replace("\"", "");

                    // 1行目見出し行は読み飛ばす
                    if (Header == "SYOHIN_CD")
                    {
                        continue;
                    }

                    //// リストビューに表示
                    //listBox1.Items.Add(t[0].Replace("\"", "").PadLeft(8, '0') + " " + t[1].Replace("\"", ""));
                    //listBox1.TopIndex = listBox1.Items.Count - 1;

                    //// プログレスバー
                    ////System.Threading.Thread.Sleep(10);
                    //Application.DoEvents();

                    // 有効開始日、有効終了日で終売を調べる
                    //cStart_Sale_YMD = t[9].Replace("\"", "");   // 商品販売開始日付
                    cLast_Sale_YMD = t[10].Replace("\"", "");   // 商品販売終了日付(終売日)

                    toDate = Utility.StrtoInt(DateTime.Today.Year.ToString() + DateTime.Today.Month.ToString("D2") + DateTime.Today.Day.ToString("D2"));

                    if (Utility.StrtoInt(cLast_Sale_YMD) > 0)
                    {
                        if (toDate > Utility.StrtoInt(cLast_Sale_YMD))
                        {
                            // 終売商品
                            Syubai = true;
                        }
                        else
                        {
                            // 終売ではない
                            Syubai = false;
                        }
                    }

                    Array.Resize(ref syohins, x + 1);

                    // 返り値
                    syohins[x] = new ClsCsvData.ClsCsvSyohin_New
                    {
                        SYOHIN_CD        = t[0].Replace("\"", ""),
                        SYOHIN_NM        = t[1].Replace("\"", ""),
                        SYOHIN_SNM       = t[2].Replace("\"", ""),
                        SIRESAKI_CD      = t[3].Replace("\"", ""),
                        SIRESAKI_NM      = t[4].Replace("\"", ""),
                        SIRESAKI_KANA_NM = t[5].Replace("\"", ""),
                        JAN_CD           = t[6].Replace("\"", ""),
                        SYOHIN_KIKAKU    = t[7].Replace("\"", ""),
                        CASE_IRISU       = Utility.StrtoDouble(t[8].Replace("\"", "")),
                        START_SALE_YMD   = t[9].Replace("\"", ""),
                        LAST_SALE_YMD    = t[10].Replace("\"", ""),
                        SHUBAI           = Syubai,
                        SYOHIN_KIND_L_CD = t[12].Replace("\"", ""),
                        SYOHIN_KIND_M_CD = t[13].Replace("\"", ""),
                        SYOHIN_KIND_S_CD = t[14].Replace("\"", ""),
                        SYOHIN_KIND_CD   = t[15].Replace("\"", "")
                    };

                    x++;
                }

                System.Threading.Thread.Sleep(10);
                Application.DoEvents();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            Cursor = Cursors.Default;
            return(syohins);
        }
Esempio n. 2
0
        ///----------------------------------------------------------------------
        /// <summary>
        ///     FAX注文書印刷処理 </summary>
        /// <param name="prnName">
        ///     プリンタ名</param>
        /// <param name="copies">
        ///     印刷部数</param>
        /// <param name="ptof">
        ///     ファイルに出力</param>
        ///----------------------------------------------------------------------
        private void prnSheet(string prnName, int copies, bool ptof)
        {
            //マウスポインタを待機にする
            this.Cursor = Cursors.WaitCursor;

            // Excel起動
            string sAppPath = System.AppDomain.CurrentDomain.BaseDirectory;

            Excel.Application oXls = new Excel.Application();

            Excel.Workbook oXlsBook = (Excel.Workbook)(oXls.Workbooks.Open(Properties.Settings.Default.FAX注文書, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                           Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                           Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                           Type.Missing, Type.Missing));

            Excel.Worksheet oxlsSheet   = (Excel.Worksheet)oXlsBook.Sheets[1];
            Excel.Worksheet oxlsMsSheet = (Excel.Worksheet)oXlsBook.Sheets[1]; // テンプレートシート
            oxlsSheet.Select(Type.Missing);

            Excel.Range rng        = null;
            Excel.Range rngFormura = null;

            int pCnt = 1;   // ページカウント

            object[,] rtnArray = null;

            try
            {
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    // チェックされている行を対象とする
                    if (dataGridView1[colChk, i].Value.ToString() == "False")
                    {
                        continue;
                    }

                    // テンプレートシートを追加する
                    pCnt++;
                    oxlsMsSheet.Copy(Type.Missing, oXlsBook.Sheets[pCnt - 1]);
                    oxlsSheet = (Excel.Worksheet)oXlsBook.Sheets[pCnt];

                    // シートのセルを一括して配列に取得します
                    rng = oxlsMsSheet.Range[oxlsMsSheet.Cells[1, 1], oxlsMsSheet.Cells[oxlsMsSheet.UsedRange.Rows.Count, oxlsMsSheet.UsedRange.Columns.Count]];
                    //rng.Value2 = "";
                    //rtnArray = (object[,])rng.Value2;
                    rtnArray = rng.Value2;
                    rtnArray = rng.Formula;

                    // 年月
                    rtnArray[1, 1]  = txtYear.Text.Substring(0, 1);
                    rtnArray[1, 7]  = txtYear.Text.Substring(1, 1);
                    rtnArray[1, 13] = txtYear.Text.Substring(2, 1);
                    rtnArray[1, 19] = txtYear.Text.Substring(3, 1);

                    rtnArray[1, 31] = txtMonth.Text.PadLeft(2, '0').Substring(0, 1);
                    rtnArray[1, 37] = txtMonth.Text.PadLeft(2, '0').Substring(1, 1);

                    // パターンID
                    string pPID = dataGridView1[colPtnID, i].Value.ToString().PadLeft(3, '0');
                    rtnArray[1, 79] = pPID.Substring(0, 1);
                    rtnArray[1, 85] = pPID.Substring(1, 1);
                    rtnArray[1, 91] = pPID.Substring(2, 1);

                    // 枝番
                    pPID             = dataGridView1[colSecoundNum, i].Value.ToString().PadLeft(2, '0');
                    rtnArray[3, 121] = pPID.Substring(0, 1);
                    rtnArray[3, 127] = pPID.Substring(1, 1);

                    // 得意先コード
                    pPID             = dataGridView1[colNouCode, i].Value.ToString().PadLeft(7, '0');
                    rtnArray[1, 121] = pPID.Substring(0, 1);
                    rtnArray[1, 127] = pPID.Substring(1, 1);
                    rtnArray[1, 133] = pPID.Substring(2, 1);
                    rtnArray[1, 139] = pPID.Substring(3, 1);
                    rtnArray[1, 145] = pPID.Substring(4, 1);
                    rtnArray[1, 151] = pPID.Substring(5, 1);
                    rtnArray[1, 157] = pPID.Substring(6, 1);

                    // 得意先名
                    rtnArray[3, 31] = Utility.NulltoStr(dataGridView1[colNouName, i].Value);

                    //// 更新日:2018/11/01
                    //DateTime uDt;
                    //if (DateTime.TryParse(dataGridView1[colDate, i].Value.ToString(), out uDt))
                    //{
                    //    rtnArray[15, 2] = uDt.ToShortDateString() + " 更新";
                    //}
                    //else
                    //{
                    //    rtnArray[15, 2] = string.Empty;
                    //}


                    ClsOrderPattern = dbPtn.Single(a => a.ID == Utility.StrtoInt(dataGridView1[colID, i].Value.ToString()));

                    // コメント1:2020/04/01
                    if (Utility.NulltoStr(ClsOrderPattern.comment1) != string.Empty)
                    {
                        rtnArray[5, 1] = Utility.NulltoStr(ClsOrderPattern.comment1);
                    }

                    // 会社名:2020/04/01
                    if (Utility.NulltoStr(ClsOrderPattern.comment2) != string.Empty)
                    {
                        rtnArray[3, 133] = Utility.NulltoStr(ClsOrderPattern.comment2);
                    }

                    // 担当者:2020/04/01
                    if (Utility.NulltoStr(ClsOrderPattern.comment3) != string.Empty)
                    {
                        rtnArray[4, 133] = Utility.NulltoStr(ClsOrderPattern.comment3);
                    }

                    // FAX:2020/04/01
                    if (Utility.NulltoStr(ClsOrderPattern.comment4) != string.Empty)
                    {
                        rtnArray[5, 133] = Utility.NulltoStr(ClsOrderPattern.comment4);
                    }

                    string sIrisu = string.Empty;
                    string sTani  = string.Empty;

                    string _G_Code = "";
                    int    _R_Days = 0;
                    int    xR      = 9;

                    for (int r = 0; r < global.MAX_GYO; r++)
                    {
                        switch (r)
                        {
                        case 0:
                            _G_Code = ClsOrderPattern.G_Code1;
                            _R_Days = ClsOrderPattern.G_Read1;
                            break;

                        case 1:
                            _G_Code = ClsOrderPattern.G_Code2;
                            _R_Days = ClsOrderPattern.G_Read2;
                            break;

                        case 2:
                            _G_Code = ClsOrderPattern.G_Code3;
                            _R_Days = ClsOrderPattern.G_Read3;
                            break;

                        case 3:
                            _G_Code = ClsOrderPattern.G_Code4;
                            _R_Days = ClsOrderPattern.G_Read4;
                            break;

                        case 4:
                            _G_Code = ClsOrderPattern.G_Code5;
                            _R_Days = ClsOrderPattern.G_Read5;
                            break;

                        case 5:
                            _G_Code = ClsOrderPattern.G_Code6;
                            _R_Days = ClsOrderPattern.G_Read6;
                            break;

                        case 6:
                            _G_Code = ClsOrderPattern.G_Code7;
                            _R_Days = ClsOrderPattern.G_Read7;
                            break;

                        case 7:
                            _G_Code = ClsOrderPattern.G_Code8;
                            _R_Days = ClsOrderPattern.G_Read8;
                            break;

                        case 8:
                            _G_Code = ClsOrderPattern.G_Code9;
                            _R_Days = ClsOrderPattern.G_Read9;
                            break;

                        case 9:
                            _G_Code = ClsOrderPattern.G_Code10;
                            _R_Days = ClsOrderPattern.G_Read10;
                            break;

                        case 10:
                            _G_Code = ClsOrderPattern.G_Code11;
                            _R_Days = ClsOrderPattern.G_Read11;
                            break;

                        case 11:
                            _G_Code = ClsOrderPattern.G_Code12;
                            _R_Days = ClsOrderPattern.G_Read12;
                            break;

                        case 12:
                            _G_Code = ClsOrderPattern.G_Code13;
                            _R_Days = ClsOrderPattern.G_Read13;
                            break;

                        case 13:
                            _G_Code = ClsOrderPattern.G_Code14;
                            _R_Days = ClsOrderPattern.G_Read14;
                            break;

                        case 14:
                            _G_Code = ClsOrderPattern.G_Code15;
                            _R_Days = ClsOrderPattern.G_Read15;
                            break;

                        default:
                            break;
                        }

                        // 2020/04/08 コメント化
                        //csvSyohin = Utility.GetSyohinData(SyoArray, SySzArray, ShiireArray, _G_Code);

                        // 商品情報取得 2020/04/09
                        csvSyohin = Utility.GetSyohinsFromDataTable(global.dtSyohin, _G_Code);

                        int xRow  = r * 2 + xR;
                        int xRow2 = r * 2 + xR + 1;

                        if (csvSyohin.SYOHIN_CD == "")
                        {
                            rtnArray[xRow, 1]   = string.Empty;
                            rtnArray[xRow2, 1]  = string.Empty;
                            rtnArray[xRow, 23]  = string.Empty;
                            rtnArray[xRow, 44]  = string.Empty;
                            rtnArray[xRow, 48]  = string.Empty;
                            rtnArray[xRow2, 48] = string.Empty;
                            rtnArray[xRow, 60]  = string.Empty;
                            rtnArray[xRow, 74]  = string.Empty;
                            rtnArray[xRow2, 60] = string.Empty;
                        }
                        else
                        {
                            rtnArray[xRow, 1]   = csvSyohin.SIRESAKI_NM;
                            rtnArray[xRow2, 1]  = csvSyohin.SYOHIN_NM;
                            rtnArray[xRow, 23]  = csvSyohin.SYOHIN_KIKAKU;
                            rtnArray[xRow, 44]  = csvSyohin.CASE_IRISU;
                            rtnArray[xRow, 48]  = csvSyohin.SYOHIN_CD.PadLeft(8, '0');
                            rtnArray[xRow2, 48] = _R_Days + "日前";

                            // 納価売価取得:2020/04/10
                            ClsCsvData.ClsCsvNoukaBaika noukaBaika = Utility.GetNoukaBaikaFromDataTable(pPID, csvSyohin.SYOHIN_CD.PadLeft(8, '0'), global.dtNoukaBaika);

                            //rtnArray[xRow, 60] = noukaBaika.NOUKA;  // 2020/04/10
                            //rtnArray[xRow, 74] = noukaBaika.BAIKA;  // 2020/04/10

                            rtnArray[xRow, 60] = String.Format("{0:0.##}", noukaBaika.NOUKA);  // 2020/08/05 小数点以下対応
                            rtnArray[xRow, 74] = String.Format("{0:0.##}", noukaBaika.BAIKA);  // 2020/08/05 小数点以下対応

                            rtnArray[xRow2, 60] = csvSyohin.JAN_CD;
                        }
                    }

                    // 備考
                    //rtnArray[62, 2] = s.備考;

                    // 配列からシートセルに一括してデータをセットします
                    rng        = oxlsSheet.Range[oxlsSheet.Cells[1, 1], oxlsSheet.Cells[oxlsSheet.UsedRange.Rows.Count, oxlsSheet.UsedRange.Columns.Count]];
                    rng.Value2 = rtnArray;
                }

                // 確認のためExcelのウィンドウを表示する
                oXls.Visible = true;

                // 1枚目はテンプレートシートなので印刷時には削除する
                oXls.DisplayAlerts = false;
                oXlsBook.Sheets[1].Delete();

                // 印刷:2020/04/14
                if (radioButton1.Checked)
                {
                    // 印刷
                    oXlsBook.PrintOutEx(Type.Missing, Type.Missing, copies, true, prnName, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                }

                // 確認のためExcelのウィンドウを非表示にする
                oXls.Visible = false;

                // Excel出力:2020/04/14
                if (radioButton2.Checked)
                {
                    //ダイアログボックスの初期設定
                    DialogResult   ret;
                    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                    saveFileDialog1.Title            = "FAX発注書";
                    saveFileDialog1.OverwritePrompt  = true;
                    saveFileDialog1.RestoreDirectory = true;
                    saveFileDialog1.FileName         = "FAX発注書";
                    saveFileDialog1.Filter           = "Microsoft Office Excelファイル(*.xlsx)|*.xlsx|全てのファイル(*.*)|*.*";

                    //ダイアログボックスを表示し「保存」ボタンが選択されたらファイル名を表示
                    string fileName;
                    ret = saveFileDialog1.ShowDialog();

                    if (ret == System.Windows.Forms.DialogResult.OK)
                    {
                        fileName = saveFileDialog1.FileName;
                        oXlsBook.SaveAs(fileName, Type.Missing, Type.Missing,
                                        Type.Missing, Type.Missing, Type.Missing,
                                        Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing,
                                        Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                    }
                }

                // 終了メッセージ
                MessageBox.Show("終了しました");
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "出力処理", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

            finally
            {
                // ウィンドウを非表示にする
                oXls.Visible = false;

                // 保存処理
                oXls.DisplayAlerts = false;

                // Bookをクローズ
                oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);

                // Excelを終了
                oXls.Quit();

                // COM オブジェクトの参照カウントを解放する
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsMsSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oXls);

                oXls        = null;
                oXlsBook    = null;
                oxlsSheet   = null;
                oxlsMsSheet = null;

                GC.Collect();

                //マウスポインタを元に戻す
                this.Cursor = Cursors.Default;
            }
        }
Esempio n. 3
0
        ///----------------------------------------------------------------
        /// <summary>
        ///     基幹システムCSVデータ作成 </summary>
        /// <returns>
        ///     作成件数</returns>
        ///----------------------------------------------------------------
        private int CsvDataOutput()
        {
            int orderCnt = tblOrder.Count();

            if (orderCnt == 0)
            {
                MessageBox.Show("発注データはありません", "対象データなし", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(0);
            }

            progressBar1.Visible = true;
            int rCnt = 0;
            int dCnt = 0;

            try
            {
                Cursor = Cursors.WaitCursor;

                foreach (var r in tblOrder.OrderBy(a => a.ID))
                {
                    // 店着日付クラス配列作成
                    Utility.SetTenDate(tenDates, r);

                    string cTokuisakiCD = r.TokuisakiCode.ToString("D7");
                    string cTokuisakiNM = "";

                    // 2020/04/09
                    cTokuisakiNM = Utility.GetTokuisakiFromDataTable(cTokuisakiCD, global.dtTokuisaki).TOKUISAKI_NM;

                    string cNouhinDT = string.Empty;
                    string cDT       = global.DTKBN;

                    // 商品発注明細クラス : 2020/04/12
                    ClsGoods[] goods = Utility.SetGoodsTabla(r, tenDates, tblOrderHistories);

                    // 商品明細
                    for (int i = 0; i < goods.Length; i++)
                    {
                        if (goods[i].Code == string.Empty)
                        {
                            continue;
                        }

                        // 終売取消はネグる
                        if (goods[i].Syubai == global.SYUBAI_TORIKESHI)
                        {
                            continue;
                        }

                        int hCnt = 0;

                        // コメント化 2020/04/12
                        //// 発注数があるか?
                        //for (int iX = 0; iX < 7; iX++)
                        //{
                        //    hCnt += Utility.StrtoInt(goods[i].Suu[iX]);
                        //}

                        //// 発注数がなければネグる
                        //if (hCnt == global.flgOff)
                        //{
                        //    continue;
                        //}

                        // 商品情報取得
                        ClsCsvData.ClsCsvSyohin_New syohin = Utility.GetSyohinsFromDataTable(global.dtSyohin, goods[i].Code.PadLeft(8, '0'));  // 2020/04/09

                        // 店着日別発注数
                        for (int iX = 0; iX < goods[i].Target.Length; iX++)
                        {
                            // 対象ステータスで判断:2020/04/13
                            if (!goods[i].Target[iX])
                            {
                                continue;
                            }

                            if (Utility.StrtoInt(goods[i].Suu[iX]) == global.flgOff)
                            {
                                // 発注数空白、0はネグる
                                continue;
                            }

                            // 納品日(店着日)
                            cNouhinDT = tenDates[iX].Year + tenDates[iX].Month.PadLeft(2, '0') + tenDates[iX].Day.PadLeft(2, '0');

                            // 納品単価取得
                            ClsCsvData.ClsCsvNouhinTanka clsTanka = GetNouhinTanka(goods[i].Code, cTokuisakiCD, Utility.StrtoInt(cNouhinDT), global.dtSyohinNoukaBaika);

                            // CSVクラス配列追加
                            Array.Resize(ref csvDatas, dCnt + 1);
                            csvDatas[dCnt] = new ClsCsvData.ClsCsvCSV()
                            {
                                TOKUISAKI_CD = cTokuisakiCD,
                                TOKUISAKI_NM = cTokuisakiNM,
                                NOUHIN_DATE  = cNouhinDT,
                                SYOHIN_CD    = goods[i].Code.PadLeft(8, '0'),
                                SYOHIN_NM    = syohin.SYOHIN_NM,
                                SUU          = goods[i].Suu[iX],

                                // 納品単価マスタから取得 2020/08/06
                                NOUKA = clsTanka.NOUHIN_TANKA.ToString(),   // 2020/08/06
                                BAIKA = clsTanka.KOURI_TANKA.ToString(),    // 2020/08/06

                                // コメント化 2020/08/06
                                //NOUKA = goods[i].Nouka.ToString(),
                                //BAIKA = goods[i].Baika.ToString(),

                                DT_KBN = global.DTKBN
                            };

                            // リストビューに表示
                            listBox1.Items.Add(cTokuisakiCD + " " + cTokuisakiNM + " " + cNouhinDT.Substring(0, 4) + "/" + cNouhinDT.Substring(4, 2) + "/" + cNouhinDT.Substring(6, 2) + " " +
                                               goods[i].Code.PadLeft(8, '0') + " " + syohin.SYOHIN_NM + "(" + goods[i].Suu[iX] + ")");

                            listBox1.TopIndex = listBox1.Items.Count - 1;

                            // プログレスバー
                            progressBar1.Value = (rCnt + 1) * 100 / orderCnt;
                            //System.Threading.Thread.Sleep(10);
                            Application.DoEvents();

                            dCnt++;
                        }
                    }

                    rCnt++;
                }

                listBox1.Items.Add("終了しました..... 出力件数 " + dCnt.ToString("#,##0") + "件");

                listBox1.TopIndex = listBox1.Items.Count - 1;
                System.Threading.Thread.Sleep(500);
                Application.DoEvents();

                Cursor = Cursors.Default;

                if (csvDatas != null)
                {
                    // ファイルへ書き出し
                    CsvDataWrite(csvDatas);

                    // 終了メッセージ
                    MessageBox.Show(csvDatas.Length + "件のCSVデータ出力が終了しました", "処理完了", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    return(csvDatas.Length);
                }
                else
                {
                    return(global.flgOff);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);

                if (csvDatas != null)
                {
                    return(csvDatas.Length);
                }
                else
                {
                    return(global.flgOff);
                }
            }
        }