/*************************************************************
         * 登録ボタン押下時の処理
         *************************************************************/
        private void btnAppend_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("登録しますか?") == DialogResult.Yes)
            {
                // 登録データのオブジェクトを作成
                var entity = new Fare()
                {
                    code = textRegCode.Text,
                    year = Const.TARGET_YEAR,
                    name = textRegName.Text,
                    price_budget = Conversion.Parse(textRegPriceBudget.Text),
                    price_actual = Conversion.Parse(textRegPriceActual.Text),
                    note = textRegNote.Text,
                    update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                    update_date = DateTime.Now,
                    del_flg = Const.FLG_OFF
                };

                // データ登録処理(既に同じコードが存在する場合は登録しない)
                using (var context = new CostAccountingEntities())
                {
                    var target = from t in context.Fare
                                 where t.code.Equals(entity.code) && t.year.Equals(entity.year)
                                 select t;
                    if (target.Count() == 0)
                    {
                        context.Fare.Add(entity);
                        context.SaveChanges();

                        Logger.Info(Message.INF003, new string[] { this.Text, Message.create(textRegCode, textRegName) });
                        Program.MessageBoxAfter("登録しました。");

                        Form_Prepare_FareReg_Load(sender, e);
                    }
                    else
                    {
                        Program.MessageBoxError("既に同じコードの設備が登録されています。");
                    }

                }
            }
        }
        /*************************************************************
         * 登録ボタン押下時の処理
         *************************************************************/
        private void btnAppend_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("登録しますか?") == DialogResult.Yes)
            {
                // 登録データのオブジェクトを作成
                var entity = new ProductCode()
                {
                    code = textRegCode.Text,
                    year = Const.TARGET_YEAR,
                    name = textRegName.Text,
                    unit = textRegUnit.Text,
                    kbn = getProductKbn(groupKbn1),
                    note = textRegNote.Text,
                    update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                    update_date = DateTime.Now,
                    del_flg = Const.FLG_OFF
                };

                // データ登録処理(既に同じコードが存在する場合は登録しない)
                using (var context = new CostAccountingEntities())
                {
                    var target = from t in context.ProductCode
                                 where t.code.Equals(entity.code) && t.year.Equals(entity.year)
                                 select t;
                    if (target.Count() == 0)
                    {
                        context.ProductCode.Add(entity);
                        context.SaveChanges();

                        Logger.Info(Message.INF003, new string[] { this.Text, Message.create(textRegCode, textRegName) });
                        Program.MessageBoxAfter("登録し、再検索を行いました。");
                        btnSearch_Click(sender, e);
                    }
                    else
                    {
                        Program.MessageBoxError("既に同じコードの商品が登録されています。");
                    }

                }
            }
        }
        /*************************************************************
         * CSVファイル登録ボタン押下時の処理
         *************************************************************/
        private void btnFileReg_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(labelFilePath.Text))
            {
                Program.MessageBoxError("CSVファイルを選択してください。");
                return;

            }

            string productKbn = getProductKbn(groupKbn2);
            if (string.IsNullOrEmpty(productKbn))
            {
                Program.MessageBoxError("商品区分を選択してください。");
                return;
            }

            if (Program.MessageBoxBefore(productKbn + "として登録しますか?" + Environment.NewLine
                + "※現在登録されている" + productKbn + "データは削除されます※") == DialogResult.Yes)
            {
                using (var context = new CostAccountingEntities())
                {
                    // データ削除処理
                    var target = from t in context.ProductCode
                                 where t.year.Equals(Const.TARGET_YEAR)
                                    && t.kbn.Equals(productKbn)
                                 select t;

                    context.ProductCode.RemoveRange(target);

                    // データ登録処理
                    foreach (ListViewItem items in listView.Items)
                    {
                        // 登録データのオブジェクトを作成
                        var entity = new ProductCode()
                        {
                            code = items.SubItems[0].Text,
                            year = Const.TARGET_YEAR,
                            name = items.SubItems[1].Text,
                            unit = items.SubItems[2].Text,
                            kbn = productKbn,
                            note = string.Empty,
                            update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                            update_date = DateTime.Now,
                            del_flg = Const.FLG_OFF
                        };
                        context.ProductCode.Add(entity);
                    }
                    context.SaveChanges();
                }

                Logger.Info(Message.INF003, new string[] { this.Text, Message.create(labelFilePath, recordCnt) + productKbn });
                Program.MessageBoxAfter("登録し、再検索を行いました。");
                btnSearch_Click(sender, e);
            }
        }
        /*************************************************************
         * 削除ボタン押下時の処理
         *************************************************************/
        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("削除しますか?") == DialogResult.Yes)
            {
                using (var context = new CostAccountingEntities())
                {
                    var target = from t in context.ProductCode
                                 where t.year.Equals(Const.TARGET_YEAR)
                                    && t.code.Equals(textRegCode.Text)
                                 select t;

                    if (target.Count() > 0)
                    {
                        //target.First().del_flg = Const.FLG_ON;
                        context.ProductCode.Remove(target.First());
                    }
                    context.SaveChanges();
                }

                Logger.Info(Message.INF005, new string[] { this.Text, Message.create(textRegCode, textRegName) });
                Program.MessageBoxAfter("削除し、再検索を行いました。");
                btnSearch_Click(sender, e);
            }
        }
        /*************************************************************
         * 登録ボタン押下時の処理
         *************************************************************/
        private void btnAppend_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("登録しますか?") != DialogResult.Yes)
                return;

            // データ登録処理(削除→登録を行う)
            using (var context = new CostAccountingEntities())
            {
                // データ削除
                var target = from t in context.Other
                             where t.year.Equals(Const.TARGET_YEAR)
                             select t;
                context.Other.RemoveRange(target);

                // データ登録
                var plan = new Other()
                {
                    year = Const.TARGET_YEAR,
                    category = (int)Const.CATEGORY_TYPE.Budget,
                    wage_m = Conversion.Parse(wageM_plan.Text),
                    wage_f = Conversion.Parse(wageF_plan.Text),
                    wage_indirect = Conversion.Parse(wageIndirect_plan.Text),
                    utilities_fd = Conversion.Parse(utilitiesFD_plan.Text),
                    utilities_ad = Conversion.Parse(utilitiesAD_plan.Text),
                    allocation_fd = Conversion.Parse(allocationFD_plan.Text),
                    allocation_ad = Conversion.Parse(allocationAD_plan.Text),
                    allocation_labor = Conversion.Parse(allocationLabor_plan.Text),
                    allocation_sale = Conversion.Parse(allocationSale_plan.Text),
                    allocation_mng = Conversion.Parse(allocationMng_plan.Text),
                    allocation_ext = Conversion.Parse(allocationExt_plan.Text),
                    rate_expend = Conversion.Parse(rateExpend_plan.Text),
                    rate_loss = Conversion.Parse(rateLoss_plan.Text),
                    tray_num = Conversion.Parse(trayNum_plan.Text),
                    update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                    update_date = DateTime.Now,
                    del_flg = Const.FLG_OFF
                };

                var actual = new Other()
                {
                    year = Const.TARGET_YEAR,
                    category = (int)Const.CATEGORY_TYPE.Actual,
                    wage_m = Conversion.Parse(wageM_actual.Text),
                    wage_f = Conversion.Parse(wageF_actual.Text),
                    wage_indirect = Conversion.Parse(wageIndirect_actual.Text),
                    utilities_fd = Conversion.Parse(utilitiesFD_actual.Text),
                    utilities_ad = Conversion.Parse(utilitiesAD_actual.Text),
                    allocation_fd = Conversion.Parse(allocationFD_actual.Text),
                    allocation_ad = Conversion.Parse(allocationAD_actual.Text),
                    allocation_labor = Conversion.Parse(allocationLabor_actual.Text),
                    allocation_sale = Conversion.Parse(allocationSale_actual.Text),
                    allocation_mng = Conversion.Parse(allocationMng_actual.Text),
                    allocation_ext = Conversion.Parse(allocationExt_actual.Text),
                    rate_expend = Conversion.Parse(rateExpend_actual.Text),
                    rate_loss = Conversion.Parse(rateLoss_actual.Text),
                    tray_num = Conversion.Parse(trayNum_actual.Text),
                    update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                    update_date = DateTime.Now,
                    del_flg = Const.FLG_OFF
                };

                context.Other.Add(plan);
                context.Other.Add(actual);
                context.SaveChanges();
            }

            Logger.Info(Message.INF003, new string[] { this.Text, "-" });
            Program.MessageBoxAfter("登録しました。");
        }
        /*************************************************************
         * フォーム終了時の処理
         *************************************************************/
        private void Form_Common_SelectYear_FormClosing(object sender, FormClosingEventArgs e)
        {
            // DBファイルのバキューム処理
            string dbPath = System.Configuration.ConfigurationManager.AppSettings["dbPath"];
            using (SQLiteConnection connection = new SQLiteConnection("Data Source=" + dbPath))
            {
                connection.Open();
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    command.CommandText = "vacuum;";
                    command.ExecuteNonQuery();
                }
            }

            // DBサイズの記録
            string today = DateTime.Now.ToString("yyyyMMdd");

            using (var context = new CostAccountingEntities())
            {
                var target = from t in context.DbSize
                             where t.ymd.Equals(today)
                             select t;

                if (target.Count() == decimal.Zero)
                {

                    // 登録データのオブジェクトを作成
                    DateTime dt = DateTime.Now;
                    var entity = new DbSize()
                    {
                        ymd = today,
                        size = new FileInfo(dbPath).Length / 1024,  // KB単位でDBファイルのサイズを記録
                        update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                        update_date = DateTime.Now
                    };

                    // データ登録
                    context.DbSize.Add(entity);
                }
                else
                {
                    target.First().size = new FileInfo(dbPath).Length / 1024;  // KB単位でDBファイルのサイズを記録
                    target.First().update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName);
                    target.First().update_date = DateTime.Now;
                }
                context.SaveChanges();
            }

            // DBファイルのバックアップ
            string bkDir = new FileInfo(dbPath).DirectoryName + @"\" + "backup";

            if (!Directory.Exists(bkDir))
                Directory.CreateDirectory(bkDir);

            FileInfo dbFile = new FileInfo(dbPath);
            string bkFile = bkDir + @"\" + dbFile.Name + "." + today;
            dbFile.CopyTo(bkFile, true);

            // 一定期間を過ぎたDBのバックアップファイルを削除する
            foreach (string file in Directory.GetFiles(bkDir))
            {
                FileInfo target = new FileInfo(file);
                string ymd = target.Extension.TrimStart('.');

                today = Regex.Replace(today, @"(\d{4})(\d{2})(\d{2})", @"$1/$2/$3");
                ymd = Regex.Replace(ymd, @"(\d{4})(\d{2})(\d{2})", @"$1/$2/$3");

                TimeSpan span = DateTime.Parse(today) - DateTime.Parse(ymd);

                if (span.Days > Conversion.Parse(Properties.Resources.bkfileStoragePeriod))
                    target.Delete();
            }

            Logger.Info(Message.INF002);
        }
        /*************************************************************
         * 初期データ登録ボタン押下時の処理
         *************************************************************/
        private void btnDefaultDataReg_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("初期データを登録しますか?" + Environment.NewLine + "※現在登録されているデータは削除されます※") == DialogResult.Yes)
            {
                using (var context = new CostAccountingEntities())
                {
                    // データ削除処理
                    var target = from t in context.Item
                                 where t.year.Equals(Const.TARGET_YEAR)
                                 select t;

                    context.Item.RemoveRange(target);

                    string itemData = Properties.Resources.defaultItemData;
                    string[] items = itemData.Split(',');

                    // データ登録処理
                    foreach (string item in items)
                    {
                        string[] data = item.Split('#');
                        var entity = new Item()
                        {
                            code = data[0],
                            year = Const.TARGET_YEAR,
                            name = data[1],
                            note = string.Empty,
                            update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                            update_date = DateTime.Now,
                            del_flg = Const.FLG_OFF
                        };
                        context.Item.Add(entity);
                    }
                    context.SaveChanges();
                }
                Program.MessageBoxAfter("登録しました。");
                Form_Prepare_ItemReg_Load(sender, e);
            }
        }
        /*************************************************************
         * 修正ボタン押下時の処理
         *************************************************************/
        private void btnChange_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("更新しますか?") == DialogResult.Yes)
            {
                using (var context = new CostAccountingEntities())
                {
                    var target = from t in context.Machine
                                 where t.year.Equals(Const.TARGET_YEAR)
                                    && t.code.Equals(textRegCode.Text)
                                 select t;

                    if (target.Count() > 0)
                    {
                        target.First().code = textRegCode.Text;
                        target.First().name = textRegName.Text;
                        target.First().rate_budget = Conversion.Parse(textRegRateBudget.Text);
                        target.First().rate_actual = Conversion.Parse(textRegRateActual.Text);
                        target.First().note = textRegNote.Text;
                        target.First().update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName);
                        target.First().update_date = DateTime.Now;
                    }
                    context.SaveChanges();
                }

                Logger.Info(Message.INF004, new string[] { this.Text, Message.create(textRegCode, textRegName) });
                Program.MessageBoxAfter("更新しました。");
                Form_Prepare_MachineReg_Load(sender, e);
            }
        }
        /*************************************************************
         * 登録ボタン押下時の処理
         *************************************************************/
        private void btnAppend_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("登録しますか?") != DialogResult.Yes)
                return;

            using (var context = new CostAccountingEntities())
            {
                foreach (int month in monthPairText.Keys)
                {
                    var target = from t in context.CostMngTotal
                                 where t.year.Equals(Const.TARGET_YEAR)
                                    && t.month.Equals(month)
                                    && t.category.Equals((int)category)
                                    && t.del_flg.Equals(Const.FLG_OFF)
                                 select t;

                    if (target.Count() == decimal.Zero)
                    {
                        // 登録処理
                        var entity = new CostMngTotal()
                        {
                            year = Const.TARGET_YEAR,
                            month = month,
                            category = (int)category,
                            manufacturing_personnel = Conversion.Parse(monthPairText[month][0].Text),
                            manufacturing_depreciation = Conversion.Parse(monthPairText[month][1].Text),
                            manufacturing_rent = Conversion.Parse(monthPairText[month][2].Text),
                            manufacturing_repair = Conversion.Parse(monthPairText[month][3].Text),
                            manufacturing_stock = Conversion.Parse(monthPairText[month][4].Text),
                            manufacturing_other = Conversion.Parse(monthPairText[month][5].Text),
                            selling_personnel = Conversion.Parse(monthPairText[month][6].Text),
                            selling_depreciation = Conversion.Parse(monthPairText[month][7].Text),
                            selling_other = Conversion.Parse(monthPairText[month][8].Text),
                            operating_expenses = Conversion.Parse(monthPairText[month][9].Text),
                            update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                            update_date = DateTime.Now,
                            del_flg = Const.FLG_OFF
                        };
                        context.CostMngTotal.Add(entity);
                    }
                    else
                    {
                        // 修正処理
                        target.First().manufacturing_personnel = Conversion.Parse(monthPairText[month][0].Text);
                        target.First().manufacturing_depreciation = Conversion.Parse(monthPairText[month][1].Text);
                        target.First().manufacturing_rent = Conversion.Parse(monthPairText[month][2].Text);
                        target.First().manufacturing_repair = Conversion.Parse(monthPairText[month][3].Text);
                        target.First().manufacturing_stock = Conversion.Parse(monthPairText[month][4].Text);
                        target.First().manufacturing_other = Conversion.Parse(monthPairText[month][5].Text);
                        target.First().selling_personnel = Conversion.Parse(monthPairText[month][6].Text);
                        target.First().selling_depreciation = Conversion.Parse(monthPairText[month][7].Text);
                        target.First().selling_other = Conversion.Parse(monthPairText[month][8].Text);
                        target.First().operating_expenses = Conversion.Parse(monthPairText[month][9].Text);
                        target.First().update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName);
                        target.First().update_date = DateTime.Now;
                    }
                }
                context.SaveChanges();
            }

            Logger.Info(Message.INF003, new string[] { this.Text, "-" });
            Program.MessageBoxAfter("登録しました。");
        }
        /*************************************************************
         * 再計算ボタン押下時の処理
         *************************************************************/
        private void btnAllCalc_Click(object sender, EventArgs e)
        {
            string radioText = radioBudget.Checked ? "【予定】" : "【実績】";
            if (Program.MessageBoxBefore(radioText + "の全商品の再計算を行いますか?"
                                         + Environment.NewLine
                                         + "※商品の数におうじて時間がかかります。") != DialogResult.Yes)
            {
                return;
            }

            using (var context = new CostAccountingEntities())
            {
                int category = (int)Program.judgeCategory(radioBudget, radioActual);

                // 商品データの検索
                var target = from t in context.ProductSupplier
                             where t.year.Equals(Const.TARGET_YEAR)
                                && t.category.Equals((int)category)
                                && t.type.Equals((int)Const.PRODUCT_TYPE.Normal)
                             orderby t.product_code, t.supplier_code
                             select t;
                var dataList = target.ToList();
                HashSet<string> already = new HashSet<string>();

                // プログレスバーの初期値を設定
                progressBar.Minimum = 0;
                progressBar.Maximum = dataList.Count;
                progressBar.Value = 0;
                progressBar.Step = 1;
                for (int i = 0; i < dataList.Count; i++)
                {
                    productCode.Text = dataList[i].product_code;
                    suppllierCode.Text = dataList[i].supplier_code;

                    // データを設定の上、再計算
                    setProductData();
                    setSupplierData();
                    calcAll();

                    // 再計算結果をDBに反映する。
                    if (!already.Contains(productCode.Text))
                    {
                        // 商品は未計算のデータのみ反映対象とする
                        executeDelete(context, true);
                        executeAppend(context);
                        already.Add(productCode.Text);
                    }
                    executeChangeSupplier(context);

                    // プログレスバーの値を更新
                    labelStatus.Refresh();
                    labelStatus.Text = string.Format("・・・ ( {0} / {1} )"
                                                     , (i + 1).ToString("#,0")
                                                     , progressBar.Maximum.ToString("#,0"));
                    progressBar.PerformStep();
                }

                context.SaveChanges();
                Logger.Info(Message.INF007, new string[] { this.Text, Message.create(labelStatus) + radioText });
                Program.MessageBoxAfter("再計算しました。");

                // データクリア
                productCode.Text = string.Empty;
                suppllierCode.Text = string.Empty;
                itemCode.SelectedIndex = 0;
                packing.Text = string.Empty;
                volume.Text = string.Empty;
                trayNum.Text = string.Empty;
                unitPrice.Text = string.Empty;
                updateTime.Text = string.Empty;
                updatePC.Text = string.Empty;
                note.Text = string.Empty;
                preprocessTimeM.Text = string.Empty;
                preprocessTimeF.Text = string.Empty;
                nightTimeM_indirect.Text = string.Empty;
                nightTimeF.Text = string.Empty;
                dryTimeM.Text = string.Empty;
                dryTimeF.Text = string.Empty;
                selectionTimeM.Text = string.Empty;
                selectionTimeF.Text = string.Empty;
                dgvMaterialCost.Rows.Clear();
                dgvContractors.Rows.Clear();
                dgvMaterialsFare.Rows.Clear();
                dgvPacking.Rows.Clear();
                dgvMachine.Rows.Clear();
                initDgvMachineRow();
                dgvPackingFare.Rows.Clear();
                calcAll();
            }
        }
        /*************************************************************
         * 削除ボタン押下時の処理
         *************************************************************/
        private void btnDelete_Click(object sender, EventArgs e)
        {
            string radioText = radioBudget.Checked ? "【予定】" : "【実績】";

            if (Program.MessageBoxBefore(radioText + "情報を削除しますか?") != DialogResult.Yes)
            {
                return;
            }

            // 削除処理を行う
            using (var context = new CostAccountingEntities())
            {
                executeDelete(context, false);
                executeDeleteSupplier(context);
                context.SaveChanges();
            }

            setProductData();
            setSupplierData();
            setOperationKbn();

            Logger.Info(Message.INF005, new string[] { this.Text, Message.create(productCode, suppllierCode) + radioText });
            Program.MessageBoxAfter("削除しました。");
        }
        /*************************************************************
         * 修正ボタン押下時の処理
         *************************************************************/
        private void btnChange_Click(object sender, EventArgs e)
        {
            string radioText = radioBudget.Checked ? "【予定】" : "【実績】";

            if (Program.MessageBoxBefore(radioText + "情報を修正しますか?") != DialogResult.Yes)
            {
                return;
            }

            // 念のため各種計算を行う
            calcAll();

            // 入力チェックを行う
            if (!checkInputData())
            {
                return;
            }

            // 削除→登録を行うことで、修正とする
            using (var context = new CostAccountingEntities())
            {
                executeDelete(context, true);
                executeAppend(context);
                executeChangeSupplier(context);
                context.SaveChanges();
            }

            setSupplierData();
            setOperationKbn();

            // 念のため各種計算を行う
            calcAll();

            Logger.Info(Message.INF004, new string[] { this.Text, Message.create(productCode, suppllierCode) + radioText });
            Program.MessageBoxAfter("修正しました。");
        }
        /*************************************************************
         * 登録ボタン押下時の処理
         *************************************************************/
        private void btnAppend_Click(object sender, EventArgs e)
        {
            string radioText = radioBudget.Checked ? "【予定】" : "【実績】";

            string msg = radioText + "情報を登録しますか?";
            msg = radioBudget.Checked ? string.Concat(msg, Environment.NewLine, "※実績情報にもコピーします。") : msg;

            if (Program.MessageBoxBefore(msg) != DialogResult.Yes)
            {
                return;
            }

            // 念のため各種計算を行う
            calcAll();

            // 入力チェックを行う
            if (!checkInputData())
            {
                return;
            }

            // 登録処理を行う
            using (var context = new CostAccountingEntities())
            {
                executeDelete(context, true);
                executeAppend(context);
                executeAppendSupplier(context);

                // 予定の場合は実績も同データで登録する
                if (radioBudget.Checked)
                {
                    radioActual.CheckedChanged -= new EventHandler(radio_CheckedChanged);
                    radioBudget.CheckedChanged -= new EventHandler(radio_CheckedChanged);

                    radioActual.Checked = true;
                    executeDelete(context, true);
                    executeAppend(context);
                    executeDeleteSupplier(context);
                    executeAppendSupplier(context);
                    radioBudget.Checked = true;

                    radioActual.CheckedChanged += new EventHandler(radio_CheckedChanged);
                    radioBudget.CheckedChanged += new EventHandler(radio_CheckedChanged);
                }
                context.SaveChanges();
            }

            setSupplierData();
            setOperationKbn();

            // 念のため各種計算を行う
            calcAll();

            Logger.Info(Message.INF003, new string[] { this.Text, Message.create(productCode, suppllierCode) + radioText });
            Program.MessageBoxAfter("登録しました。");
        }
        /*************************************************************
         * 決定ボタン押下時の処理
         *************************************************************/
        private void btnEnter_Click(object sender, EventArgs e)
        {
            // 入力チェック
            srcYear.BackColor = Color.White;

            if (String.IsNullOrEmpty(srcYear.Text))
            {
                srcYear.BackColor = Color.Red;
                Program.MessageBoxError("コピー元年度を入力してください。");
                return;
            }

            if (!(Validation.IsNumeric(srcYear.Text) && srcYear.Text.Length == 4))
            {
                srcYear.BackColor = Color.Red;
                Program.MessageBoxError("コピー元年度は数値4桁で入力してください。");
                return;
            }

            if (srcYear.Text.Equals(Const.TARGET_YEAR.ToString()))
            {
                srcYear.BackColor = Color.Red;
                Program.MessageBoxError(Const.TARGET_YEAR + "以外の年度を入力してください。");
                return;
            }

            if (Program.MessageBoxBefore(
                   string.Concat(srcYear.Text + "年度の実績データを" + Const.TARGET_YEAR + "年度の予定と実績データにコピーしますか?"
                                 , Environment.NewLine
                                 , "※現在登録されている" + Const.TARGET_YEAR + "年度のデータは削除されます")) == DialogResult.Yes)
            {
                if (Program.MessageBoxBefore("本当に実行してよろしいですか?") == DialogResult.Yes)
                {

                    // 今年度のデータを削除の上、コピー元年度のデータを今年度にコピー
                    using (var context = new CostAccountingEntities())
                    {
                        string deleteLog = allDelete(context);
                        string appendLog = allAppend(context);
                        context.SaveChanges();

                        Logger.Info(Message.INF003, new string[] { this.Text, Message.create(srcYear) + "削除件数{" + deleteLog + " } 登録件数{" + appendLog + "}" });
                    }

                    Program.MessageBoxAfter("データコピーが完了しました。");
                }
            }
        }
Пример #15
0
        /*************************************************************
         * 登録ボタン押下時の処理
         *************************************************************/
        protected void btnAppend_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("登録しますか?") != DialogResult.Yes)
            {
                return;
            }

            // 入力チェックを行う
            if (!checkInputData())
            {
                return;
            }

            // 登録処理を行う
            using (var context = new CostAccountingEntities())
            {
                //----------------------------------------- 商品と取引先ごとの各月の入力内容を登録
                foreach (DataGridViewRow row in dataGridView.Rows)
                {

                    string productCode = (string)row.Cells["product_code"].Value;
                    string supplierCode = (string)row.Cells["supplier_code"].Value;
                    int type = (int)row.Cells["type"].Value;

                    var target = from t in context.ProductSupplier
                                 where t.year.Equals(Const.TARGET_YEAR)
                                    && t.product_code.Equals(productCode)
                                    && t.supplier_code.Equals(supplierCode)
                                    && t.category.Equals((int)category)
                                    && t.type.Equals(type)
                                 select t;

                    if (target.Count() > 0)
                    {
                        target.First().month_04 = Conversion.Parse((string)row.Cells[16].Value);
                        target.First().month_05 = Conversion.Parse((string)row.Cells[17].Value);
                        target.First().month_06 = Conversion.Parse((string)row.Cells[18].Value);
                        target.First().month_07 = Conversion.Parse((string)row.Cells[19].Value);
                        target.First().month_08 = Conversion.Parse((string)row.Cells[20].Value);
                        target.First().month_09 = Conversion.Parse((string)row.Cells[21].Value);
                        target.First().month_10 = Conversion.Parse((string)row.Cells[22].Value);
                        target.First().month_11 = Conversion.Parse((string)row.Cells[23].Value);
                        target.First().month_12 = Conversion.Parse((string)row.Cells[24].Value);
                        target.First().month_01 = Conversion.Parse((string)row.Cells[25].Value);
                        target.First().month_02 = Conversion.Parse((string)row.Cells[26].Value);
                        target.First().month_03 = Conversion.Parse((string)row.Cells[27].Value);
                        target.First().num01 = Conversion.Parse((string)row.Cells["num01"].Value);
                        target.First().num02 = Conversion.Parse((string)row.Cells["num02"].Value);
                        target.First().num03 = Conversion.Parse((string)row.Cells["num03"].Value);
                        target.First().num04 = Conversion.Parse((string)row.Cells["num04"].Value);
                        target.First().num05 = Conversion.Parse((string)row.Cells["num05"].Value);
                        target.First().num06 = Conversion.Parse((string)row.Cells["num06"].Value);
                        target.First().num07 = Conversion.Parse((string)row.Cells["num07"].Value);
                        target.First().num08 = Conversion.Parse((string)row.Cells["num08"].Value);
                        target.First().num09 = Conversion.Parse((string)row.Cells["num09"].Value);
                        target.First().num10 = Conversion.Parse((string)row.Cells["num10"].Value);
                        target.First().num11 = Conversion.Parse((string)row.Cells["num11"].Value);
                        target.First().num12 = Conversion.Parse((string)row.Cells["num12"].Value);

                        // 商品登録時の登録ユーザと更新日時を維持するため、ここでは更新対象外とする
                        // target.First().update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName);
                        // target.First().update_date = DateTime.Now;
                    }
                }

                //----------------------------------------- 実績登録の場合は、乖離幅測定データも登録
                if (Const.CATEGORY_TYPE.Actual.Equals(category))
                {
                    Dictionary<CheckBox, bool> prevState = new Dictionary<CheckBox, bool>();

                    foreach (CheckBox target in checkBoxMonthDic.Keys)
                        prevState.Add(target, target.Checked);

                    foreach (CheckBox target in checkBoxMonthDic.Keys)
                    {
                        target.Checked = true;
                        foreach (CheckBox other in checkBoxMonthDic.Keys)
                        {
                            if (!target.Equals(other))
                                other.Checked = false;
                        }

                        int month = checkBoxMonthDic[target];
                        var divergence = from t in context.Divergence
                                         where t.year.Equals(Const.TARGET_YEAR)
                                            && t.month.Equals(month)
                                            && t.del_flg.Equals(Const.FLG_OFF)
                                         select t;

                        if (divergence.Count() == 0)
                        {
                            // 登録処理
                            var entity = new Divergence()
                            {
                                year = Const.TARGET_YEAR,
                                month = month,
                                materialCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[29].Value),
                                laborCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[30].Value),
                                contractorsCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[31].Value),
                                materialsFare_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[32].Value),
                                packingCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[33].Value),
                                utilitiesCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[34].Value),
                                otherCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[35].Value),
                                packingFare_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[36].Value),
                                update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                                update_date = DateTime.Now,
                                del_flg = Const.FLG_OFF
                            };
                            context.Divergence.Add(entity);
                        }
                        else
                        {
                            // 更新処理
                            divergence.First().materialCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[29].Value);
                            divergence.First().laborCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[30].Value);
                            divergence.First().contractorsCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[31].Value);
                            divergence.First().materialsFare_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[32].Value);
                            divergence.First().packingCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[33].Value);
                            divergence.First().utilitiesCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[34].Value);
                            divergence.First().otherCost_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[35].Value);
                            divergence.First().packingFare_costing = Conversion.Parse((string)dataGridViewTotal.Rows[0].Cells[36].Value);
                            divergence.First().update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName);
                            divergence.First().update_date = DateTime.Now;
                        }
                    }

                    foreach (CheckBox target in checkBoxMonthDic.Keys)
                        target.Checked = prevState[target];
                }

                context.SaveChanges();
            }

            Program.MessageBoxAfter("登録しました。");
        }
        /*************************************************************
         * 修正ボタン押下時の処理
         *************************************************************/
        private void btnChange_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("更新しますか?") == DialogResult.Yes)
            {
                using (var context = new CostAccountingEntities())
                {
                    var target = from t in context.ProductCode
                                 where t.year.Equals(Const.TARGET_YEAR)
                                    && t.code.Equals(textRegCode.Text)
                                 select t;

                    if (target.Count() > 0)
                    {
                        target.First().code = textRegCode.Text;
                        target.First().name = textRegName.Text;
                        target.First().unit = textRegUnit.Text;
                        target.First().kbn = getProductKbn(groupKbn1);
                        target.First().note = textRegNote.Text;
                        target.First().update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName);
                        target.First().update_date = DateTime.Now;
                    }
                    context.SaveChanges();
                }

                Logger.Info(Message.INF004, new string[] { this.Text, Message.create(textRegCode, textRegName) });
                Program.MessageBoxAfter("更新し、再検索を行いました。");
                btnSearch_Click(sender, e);
            }
        }
        /*************************************************************
         * 登録ボタン押下時の処理
         *************************************************************/
        private void btnAppend_Click(object sender, EventArgs e)
        {
            if (Program.MessageBoxBefore("登録しますか?") != DialogResult.Yes)
                return;

            // データ登録処理(削除→登録をおこなう)
            using (var context = new CostAccountingEntities())
            {
                foreach (int month in monthPairText.Keys)
                {
                    var target = from t in context.Divergence
                                 where t.year.Equals(Const.TARGET_YEAR)
                                    && t.month.Equals(month)
                                    && t.del_flg.Equals(Const.FLG_OFF)
                                 select t;

                    if (target.Count() == decimal.Zero)
                    {
                        // 登録処理
                        var entity = new Divergence()
                        {
                            year = Const.TARGET_YEAR,
                            month = month,
                            materialCost = Conversion.Parse(monthPairText[month][0].Text),
                            laborCost = Conversion.Parse(monthPairText[month][1].Text),
                            contractorsCost = Conversion.Parse(monthPairText[month][2].Text),
                            materialsFare = Conversion.Parse(monthPairText[month][3].Text),
                            packingCost = Conversion.Parse(monthPairText[month][4].Text),
                            utilitiesCost = Conversion.Parse(monthPairText[month][5].Text),
                            otherCost = Conversion.Parse(monthPairText[month][6].Text),
                            packingFare = Conversion.Parse(monthPairText[month][7].Text),
                            update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName),
                            update_date = DateTime.Now,
                            del_flg = Const.FLG_OFF
                        };
                        context.Divergence.Add(entity);
                    }
                    else
                    {
                        // 修正処理
                        target.First().materialCost = Conversion.Parse(monthPairText[month][0].Text);
                        target.First().laborCost = Conversion.Parse(monthPairText[month][1].Text);
                        target.First().contractorsCost = Conversion.Parse(monthPairText[month][2].Text);
                        target.First().materialsFare = Conversion.Parse(monthPairText[month][3].Text);
                        target.First().packingCost = Conversion.Parse(monthPairText[month][4].Text);
                        target.First().utilitiesCost = Conversion.Parse(monthPairText[month][5].Text);
                        target.First().otherCost = Conversion.Parse(monthPairText[month][6].Text);
                        target.First().packingFare = Conversion.Parse(monthPairText[month][7].Text);
                        target.First().update_user = string.Concat(SystemInformation.ComputerName, "/", SystemInformation.UserName);
                        target.First().update_date = DateTime.Now;
                    }
                }
                context.SaveChanges();
            }

            Logger.Info(Message.INF003, new string[] { this.Text, "-" });
            Program.MessageBoxAfter("登録しました。");
        }