Index: branches/src/DataCheckExcute/DataCheckExcute/Common/Process/ClsChangeLedgerData.cs
===================================================================
--- branches/src/DataCheckExcute/DataCheckExcute/Common/Process/ClsChangeLedgerData.cs	(revision 291)
+++ branches/src/DataCheckExcute/DataCheckExcute/Common/Process/ClsChangeLedgerData.cs	(revision 292)
@@ -161,23 +161,6 @@
         }
         #endregion
 
-        #region 工事詳細台帳より支払金額グリッドの先頭カラム数を取得する
-        /// <summary>
-        /// 工事詳細台帳より支払金額グリッドの先頭カラム数を取得する
-        /// </summary>
-        private static void GetLedgerColumnCount()
-        {
-            try
-            {
-                m_LedgerColumnCount = Enum.GetNames(typeof(FrmConstructionLedger.GridColumn)).Length - 1;
-            }
-            catch (System.Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
         #region 工事詳細台帳データに対象行の支払い給与を計算する
         /// <summary>
         /// 工事詳細台帳データに対象行の支払い給与を計算する
@@ -398,6 +381,7 @@
                                                         ConstructionLedger LedgerRec,
                                                         ConstructionLedgerDetail CurRec)
         {
+            IOProcessApproval AppDB = new IOProcessApproval();
             try
             {
                 int OneDaySalary = 0;
@@ -422,11 +406,30 @@
                         break;
                 }
 
+                // 工事予算が承認された月の位置に書く
+                StringBuilder strSQL = new StringBuilder();
+                strSQL.Append(AppDB.CreatePrimarykeyString(CurRec.SourceCode,
+                                                            3,                                      // 工事予算承認番号(ClExecuteが無いため)
+                                                            (int)CommonDefine.s_Default_OrderNo,
+                                                            1));                                    // 先頭レコード
+                ProcessApproval AppRec = new ProcessApproval();
+                if (!AppDB.SelectAction(strSQL.ToString(), ref AppRec)) return false;
+
                 // 実行データのキー部年月日は開始月の1日
-                DateTime ParaDate = new DateTime(LedgerRec.ConstructionStart.Year, LedgerRec.ConstructionStart.Month, 1);
+                DateTime ParaDate = new DateTime(LedgerRec.ConstructionStart.Year
+                                                , LedgerRec.ConstructionStart.Month, 1);
                 // 台帳カラム位置
                 int Columncnt = Enum.GetNames(typeof(FrmConstructionLedger.GridColumn)).Length - 1;
 
+                // 増減データは承認データを日付として使用する
+                if ((CurRec.SourceCode % 10) > 1)
+                {
+                    // 承認日付より持ってくる
+                    Columncnt = CalcTargetMonthToColumn(LedgerRec.ConstructionStart, AppRec.PetitionApprovalDate);
+                    ParaDate = new DateTime(AppRec.PetitionApprovalDate.Year
+                                            , AppRec.PetitionApprovalDate.Month, 1);
+                }
+
                 // 支払いデータ書込み
                 if (!AddOrSetSalary(LedgerExDB
                                 , CurRec.ConstructionCode, CurRec.GroupCount, CurRec.LineCount, Columncnt, OneDaySalary, ParaDate))
@@ -441,6 +444,10 @@
                 logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
                 return false;
             }
+            finally
+            {
+                AppDB.close(); AppDB = null;
+            }
         }
         #endregion
 
@@ -492,29 +499,33 @@
                 // キー作成
                 StringBuilder strSQL = new StringBuilder();
                 strSQL.Append(LedgerExDB.CreatePrimarykeyString(ConstrCode, GroupCount, LineCount, ColumnCount));
-                strSQL.AppendFormat(" AND DATE(TargetMonth) = STR_TO_DATE('{0}','%Y/%m/%d')", ColumnDate.ToShortDateString());
+                strSQL.AppendFormat(" AND DATE(TargetMonth) = '{0}'", ColumnDate.ToShortDateString());
 
                 // データ読込み
-                ConstructionLedgerExcute LedgerExDBRec = new ConstructionLedgerExcute();
-                if (!LedgerExDB.SelectAction(strSQL.ToString(), ref LedgerExDBRec, false))
+                List<ConstructionLedgerExcute> LedgerExList = new List<ConstructionLedgerExcute>();
+                if (LedgerExDB.SelectAction(strSQL.ToString(), ref LedgerExList, false) && LedgerExList.Count > 0)
                 {
-                    LedgerExDBRec.ConstructionCode = ConstrCode;	// 工事コード
-                    LedgerExDBRec.GroupCount = GroupCount;          // グループ番号
-                    LedgerExDBRec.LineCount = LineCount;            // 行番号
-                    LedgerExDBRec.ColumnCount = ColumnCount;        // 列番号
-                    LedgerExDBRec.PaymentAmount = DaySalary;        // 支払金額
-                    LedgerExDBRec.TargetMonth = ColumnDate;         // 対象年月
-                    
-                    // データ作成
-                    if (!LedgerExDB.InsertAction(LedgerExDBRec, false)) return false;
-                    
+                    // データ更新
+                    if (!LedgerExDB.UpdateFeild(ConstrCode, GroupCount, LineCount, ColumnCount
+                                                , (int)IOConstructionLedgerExcute.TableColumn.PaymentAmount
+                                                , (double)DaySalary
+                                                , false))
+                                                return false;
+
                     return true;
                 }
 
-                // データ更新
-                if (!LedgerExDB.UpdateFeild(ConstrCode, GroupCount, LineCount, ColumnCount
-                                            , (int)IOConstructionLedgerExcute.TableColumn.PaymentAmount, (double)DaySalary, false)) return false;
+                ConstructionLedgerExcute LedgerExDBRec = new ConstructionLedgerExcute();
+                LedgerExDBRec.ConstructionCode = ConstrCode;	// 工事コード
+                LedgerExDBRec.GroupCount = GroupCount;          // グループ番号
+                LedgerExDBRec.LineCount = LineCount;            // 行番号
+                LedgerExDBRec.ColumnCount = ColumnCount;        // 列番号
+                LedgerExDBRec.PaymentAmount = DaySalary;        // 支払金額
+                LedgerExDBRec.TargetMonth = ColumnDate;         // 対象年月
 
+                // データ作成
+                if (!LedgerExDB.InsertAction(LedgerExDBRec, false)) return false;
+
                 return true;
             }
             catch (Exception ex)
@@ -533,7 +544,7 @@
         /// <returns></returns>
         public static int CalcTargetMonthToColumn(DateTime StartDate, DateTime TargetMonth)
         {
-            int Columncnt = Enum.GetNames(typeof(FrmConstructionLedger.GridColumn)).Length - 1;
+            int Columncnt = Enum.GetNames(typeof(FrmConstructionLedger.GridColumn)).Length;
             try
             {
                 // 処理対象年月日を対象月月初日に変換する
