/*************************************************************
         * 登録ボタン押下時の処理
         *************************************************************/
        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 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("登録しました。");
        }