Index: branches/src/ProcessManagement/ProcessManagement/Common/CommonMotions.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Common/CommonMotions.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Common/CommonMotions.cs	(revision 366)
@@ -3631,7 +3631,7 @@
                 strSQL.AppendFormat(" OR DATE('{0}') = DATE(B.CompDate)))", DateTime.MinValue.ToShortDateString());
 
                 strSQL.AppendFormat(" AND A.PersonCode = {0}", nPersonCode);
-                strSQL.Append(" Order By B.ComplateDate desc");
+                strSQL.Append(" Order By B.CompDate desc");
             }
             catch (Exception ex)
             {
@@ -3754,8 +3754,64 @@
         }
         #endregion
 
+        #region ベースコントロールコレクションよりボタン取得
+        /// <summary>
+        /// ベースコントロールコレクションよりボタン取得
+        /// </summary>
+        public static Button GetButtton2Collection(Control.ControlCollection BasePnl, string ButtonName)
+        {
+            Button buttonRet = null;
+            try
+            {
+                foreach (Control CurCtrl in BasePnl)
+                {
+                    // 申請ボタン取得
+                    if (CurCtrl.Name.Equals(ButtonName))
+                    {
+                        buttonRet = (Button)CurCtrl;
+                        break;
+                    }
+                }
+                return buttonRet;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return buttonRet;
+            }
+        }
         #endregion
 
+        #region 申請パネルより承認数ラベル取得
+        /// <summary>
+        /// 申請パネルより承認数ラベル取得
+        /// </summary>
+        public static Label GetLabel2Collection(Control.ControlCollection BasePnl, string LabelName)
+        {
+            Label LabelRet = null;
+            try
+            {
+                foreach (Control CurCtrl in BasePnl)
+                {
+                    // 申請ボタン取得
+                    if (CurCtrl.Name.Equals(LabelName))
+                    {
+                        LabelRet = (Label)CurCtrl;
+                        break;
+                    }
+                }
+                return LabelRet;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return LabelRet;
+            }
+        }
+        #endregion
+
+        #endregion
+
         #region ---------- Excel向け操作メソッド
         #region オブジェクト開放
         /// <summary>
Index: branches/src/ProcessManagement/ProcessManagement/Common/CommonVersion.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Common/CommonVersion.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Common/CommonVersion.cs	(revision 366)
@@ -14,7 +14,7 @@
         /// <summary>
         /// 本体バージョン
         /// </summary>
-        public static int s_SystemVersion = 220;
+        public static int s_SystemVersion = 224;
 
         /// <summary>
         /// コピー・環境バージョン
Index: branches/src/ProcessManagement/ProcessManagement/Common/Process/ClsApprovalPermission.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Common/Process/ClsApprovalPermission.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Common/Process/ClsApprovalPermission.cs	(nonexistent)
@@ -1,916 +0,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Collections;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-using log4net;
-using log4net.Appender;
-using log4net.Repository.Hierarchy;
-
-using ProcessManagement.Common;
-using ProcessManagement.DB.IOAccess;
-using ProcessManagement.DataModel;
-using ProcessManagement.Forms.ControlsAction;
-using ProcessManagement.Forms.CustomControls;
-
-namespace ProcessManagement.Common
-{
-    /// <summary>
-    /// 承認許可確認クラス
-    /// </summary>
-    public static class ClsApprovalPermission
-    {
-        #region 使用定義
-        //log4netログを使用する
-        private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
-        #endregion
-
-        #region 定数
-
-        #region 申請レコード番号
-        /// <summary>
-        /// 申請レコード枝番
-        /// </summary>
-        private const int s_PrimartyRecord = 1;
-        #endregion
-        #endregion
-
-        #region 承認申請・承認をする(工事承認)
-        /// <summary>
-        /// 案件の承認申請・承認をする(工事承認)
-        /// </summary>
-        /// <returns>成功：true　失敗：false</returns>
-        public static bool CreatePetitionApproval(ProcessApproval Rec)
-        {
-            IOProcessApproval ApprDB = new IOProcessApproval();
-            try
-            {
-                string strSQL = ApprDB.CreatePrimarykeyString(Rec.ConstructionCode, Rec.ApprovalCode, Rec.OrderNo, Rec.SeqNo);
-                List<ProcessApproval> DataList = new List<ProcessApproval>();
-                // データがあるかをチェックする
-                if (!ApprDB.SelectAction(strSQL, ref DataList)) return false;
-
-                // データ追加時
-                if (DataList.Count == 0)
-                {
-                    if (!ApprDB.InsertAction(Rec)) return false;
-                    return true;
-                }
-
-                // データ更新時
-                if (!ApprDB.UpdateAction(strSQL, Rec)) return false;
-
-                return true;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-            }
-        }
-        #endregion
-
-        #region 承認申請・承認をする(担当者承認)
-        /// <summary>
-        /// 案件の承認申請・承認をする(担当者承認)
-        /// </summary>
-        /// <returns>成功：true　失敗：false</returns>
-        public static bool CreatePetitionApproval(PersonApproval Rec)
-        {
-            IOPersonApproval ApprDB = new IOPersonApproval();
-            try
-            {
-                string strSQL = ApprDB.CreatePrimarykeyString(Rec.PersonCode, Rec.ApprovalCode, Rec.OrderDate, Rec.OrderNo, Rec.SeqNo);
-                List<PersonApproval> DataList = new List<PersonApproval>();
-                // データがあるかをチェックする
-                if (!ApprDB.SelectAction(strSQL, ref DataList)) return false;
-
-                if (DataList.Count == 0)
-                {   // データ追加時
-                    if (!ApprDB.InsertAction(Rec)) return false;
-                }
-                else
-                {   // データ更新時
-                    if (!ApprDB.UpdateAction(strSQL, Rec)) return false;
-                }
-
-                return true;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-            }
-        }
-        #endregion
-
-        #region 申請レコード更新(工事承認)
-        /// <summary>
-        /// 申請レコードを更新する(工事承認)
-        /// </summary>
-        /// <param name="ConstructionCode"></param>
-        /// <param name="ApprovalCode"></param>
-        /// <param name="Status"></param>
-        /// <returns></returns>
-        public static bool SetPrimaryRecStatus(int ConstructionCode, int ApprovalCode, int OrderNO, int Status)
-        {
-            IOProcessApproval ApprDB = new IOProcessApproval();
-            try
-            {
-                if (!ApprDB.UpdateFeild(ConstructionCode,
-                                        (int)IOProcessApproval.ColumnName.ApprovalStatus,
-                                        Status,
-                                        true,
-                                        ApprovalCode,
-                                        OrderNO,
-                                        s_PrimartyRecord)) return false;
-
-                return true;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-            }
-        }
-        #endregion
-
-        #region 申請レコード更新(担当者承認)
-        /// <summary>
-        /// 申請レコードを更新する(担当者承認)
-        /// </summary>
-        /// <param name="PersonCode"></param>
-        /// <param name="ApprovalCode"></param>
-        /// <param name="Status"></param>
-        /// <returns></returns>
-        public static bool SetPrimaryRecStatus(int PersonCode, int ApprovalCode, DateTime OrderDate, int OrderNo, int Status)
-        {
-            IOPersonApproval ApprDB = new IOPersonApproval();
-            try
-            {
-                if (!ApprDB.UpdateFeild(PersonCode,
-                                        ApprovalCode,
-                                        OrderDate,
-                                        (int)IOPersonApproval.ColumnName.ApprovalStatus,
-                                        Status,
-                                        true,
-                                        OrderNo,
-                                        s_PrimartyRecord)) return false;
-
-                return true;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-            }
-        }
-        #endregion
-
-        #region 申請確認（工事承認）
-        /// <summary>
-        /// 案件に対して申請がされているかを確認する
-        /// </summary>
-        /// <param name="ConstructionCode"></param>
-        /// <param name="ApprovalCode"></param>
-        /// <returns></returns>
-        public static bool CheckProcessPetition(int ConstructionCode, int ApprovalCode, int OrderNo)
-        {
-            IOProcessApproval ApprDB = new IOProcessApproval();
-            try
-            {
-                bool bPetition = false;
-                // 申請データ取得
-                string strSQL = ApprDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, OrderNo, s_PrimartyRecord);
-                List<ProcessApproval> PetitionList = new List<ProcessApproval>();
-                if (!ApprDB.SelectAction(strSQL, ref PetitionList)) return bPetition;
-                // 申請データが無い場合
-                if (PetitionList.Count != 0) bPetition = true;
-
-                return bPetition;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-            }
-        }
-        #endregion
-
-        #region 申請確認（担当者承認）
-        /// <summary>
-        /// 担当者申請がされているかを確認する
-        /// </summary>
-        /// <param name="PersonCode"></param>
-        /// <param name="ApprovalCode"></param>
-        /// <returns></returns>
-        public static bool CheckPersonPetition(int PersonCode, int ApprovalCode, DateTime ApprovalDate, int OrderNo)
-        {
-            IOPersonApproval ApprDB = new IOPersonApproval();
-            try
-            {
-                bool bPetition = false;
-                // 申請データ取得
-                StringBuilder strSQL = new StringBuilder();
-                strSQL.Append(ApprDB.CreatePrimarykeyString(PersonCode, ApprovalCode, ApprovalDate, OrderNo));
-                List<PersonApproval> PetitionList = new List<PersonApproval>();
-                if (!ApprDB.SelectAction(strSQL.ToString(), ref PetitionList)) return bPetition;
-                // 申請データが無い場合
-                if (PetitionList.Count != 0) bPetition = true;
-
-                return bPetition;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-            }
-        }
-        public static bool CheckPersonPetition2(int PersonCode, int ApprovalCode, DateTime ApprovalDate, int OrderNo)
-        {
-            IOPersonApproval ApprDB = new IOPersonApproval();
-            try
-            {
-                bool bPetition = false;
-                // 申請データ取得
-                StringBuilder strSQL = new StringBuilder();
-                strSQL.AppendFormat(" Where PersonCode = {0}", PersonCode);
-                strSQL.AppendFormat(" And ApprovalCode = {0}", ApprovalCode);
-                strSQL.AppendFormat(" And DATE(EntryDate) = DATE(STR_TO_DATE('{0}','%Y/%m/%d'))", ApprovalDate.ToShortDateString());
-                strSQL.AppendFormat(" And OrderNo = {0}", OrderNo);
-                List<PersonApproval> PetitionList = new List<PersonApproval>();
-                if (!ApprDB.SelectAction(strSQL.ToString(), ref PetitionList)) return bPetition;
-                // 申請データが無い場合
-                if (PetitionList.Count != 0) bPetition = true;
-
-                return bPetition;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-            }
-        }
-        #endregion
-
-        #region 最終承認確認（工事承認）
-        /// <summary>
-        /// 案件に対して承認がされているかを確認する
-        /// </summary>
-        /// <param name="ConstructionCode"></param>
-        /// <param name="ApprovalCode"></param>
-        /// <returns></returns>
-        public static bool CheckProcessApproval(int ConstructionCode, int ApprovalCode, int Approvalcount)
-        {
-            IOMApproval mApprDB = new IOMApproval();
-            IOProcessApproval ApprDB = new IOProcessApproval();
-            try
-            {
-                // 承認データを取得する（申請データを除く）
-                string strData = ApprDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, Approvalcount, s_PrimartyRecord);
-                ProcessApproval DataRec = new ProcessApproval();
-                if (!ApprDB.SelectAction(strData, ref DataRec)) return false;
-
-                if (DataRec.ApprovalStatus != (int)CommonDefine.ApprovalStatus.Approval) return false;
-
-                return true;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-                mApprDB.close(); mApprDB = null;
-            }
-        }
-        #endregion
-
-        #region 最終承認確認（担当者承認）
-        /// <summary>
-        /// 担当者申請に対して承認がされているかを確認する
-        /// </summary>
-        /// <param name="PersonCode"></param>
-        /// <param name="ApprovalCode"></param>
-        /// <returns></returns>
-        public static bool CheckPersonApproval(int PersonCode, int ApprovalCode, DateTime OrderDate, int OrderNo)
-        {
-            IOPersonApproval ApprDB = new IOPersonApproval();
-            try
-            {
-                // 承認データを取得する（申請データを除く）
-                string strData = ApprDB.CreatePrimarykeyString(PersonCode, ApprovalCode, OrderDate, OrderNo, s_PrimartyRecord);
-                PersonApproval DataRec = new PersonApproval();
-                if (!ApprDB.SelectAction(strData, ref DataRec)) return false;
-
-                if (DataRec.ApprovalStatus != (int)CommonDefine.ApprovalStatus.Approval) return false;
-
-                return true;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-            }
-        }
-        #endregion
-
-        #region 承認確認（工事承認）
-        /// <summary>
-        /// 工事案件に対して最終承認がされているかを確認する
-        /// </summary>
-        /// <param name="ConstructionCode"></param>
-        /// <param name="ApprovalCode"></param>
-        /// <returns></returns>
-        public static bool CheckProcessApprovalData(int ConstructionCode, int ApprovalCode, int OrderNo)
-        {
-            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
-            IOMApproval mApprDB = new IOMApproval();
-            IOProcessApproval ApprDB = new IOProcessApproval();
-            try
-            {
-                bool bApproval = false;
-                // 申請部署の取得
-                string strSQL = cbiDB.CreatePrimarykeyString(ConstructionCode);
-                ConstructionBaseInfo cbiData = new ConstructionBaseInfo();
-                if (!cbiDB.SelectAction(strSQL, ref cbiData)) return false;
-                int DepartmentCode = GetFromConstrAndAppTheDep(ConstructionCode, ApprovalCode, OrderNo);
-
-                // 承認経路マスタを取得する
-                string strMaster = mApprDB.CreatePrimarykeyString(ApprovalCode, DepartmentCode);
-                List<ApprovalMaster> MasterList = new List<ApprovalMaster>();
-                if (!mApprDB.SelectAction(strMaster, ref MasterList))
-                {
-                    logger.ErrorFormat("承認確認処理：{0}：承認経路マスタ取得エラー", CommonMotions.GetMethodName());
-                    return false;
-                }
-                if (MasterList.Count == 0) return false;
-
-                // 承認データを取得する
-                string strData = ApprDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, OrderNo);
-                //strData += string.Format(" And SeqNo != {0} And ApprovalStatus = {1}", s_PrimartyRecord, (int)CommonDefine.ApprovalStatus.Approval);
-                strData += " Order By SeqNo ASC";
-                List<ProcessApproval> DataList = new List<ProcessApproval>();
-                if (!ApprDB.SelectAction(strData, ref DataList)) return false;
-                if (DataList.Count == 0) return false;
-
-                // 申請データを取得する
-                ProcessApproval RequestData = DataList.Find(x => x.SeqNo == s_PrimartyRecord);
-                if (RequestData == null) return false;
-
-                int NoCnt = MasterList.Count;
-                foreach (ProcessApproval DataRec in DataList)
-                {
-                    // 申請データは対象にしない
-                    if (DataRec.SeqNo == s_PrimartyRecord) continue;
-
-                    // 承認以外は対象にしない
-                    if (DataRec.ApprovalStatus != (int)CommonDefine.ApprovalStatus.Approval) continue;
-
-                    foreach (ApprovalMaster MasterRec in MasterList)
-                    {
-                        // 承認者コードが違えば次レコードへ
-                        if (DataRec.PersonCode != MasterRec.ApprovalPerson) continue;
-
-                        // 承認していればデータ件数からマイナス
-                        --NoCnt;
-
-                        // 最終承認権限が設定されていれば承認済み
-                        if (MasterRec.ApprovalAuthority == (int)ApprovalMaster.ApprovalAuthorityDef.LastApproval)
-                        {
-                            // 最終承認済みは処理しない
-                            if (RequestData.ApprovalStatus == (int)CommonDefine.ApprovalStatus.Approval) break;
-
-                            bApproval = true;
-                            break;
-                        }
-                    }
-                    // 最終決裁者が承認していれば処理終了
-                    if (bApproval) break;
-                }
-                // マスタに設定されている承認者全員が承認していれば承認
-                if (NoCnt == 0)
-                {
-                    // 最終承認済みは処理しない
-                    if (RequestData.ApprovalStatus != (int)CommonDefine.ApprovalStatus.Approval)
-                    {
-                        bApproval = true;
-                    }
-                }
-
-                return bApproval;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-                mApprDB.close(); mApprDB = null;
-                cbiDB.close(); cbiDB = null;
-            }
-        }
-        #endregion
-
-        #region 承認確認（担当者承認）
-        /// <summary>
-        /// 担当者申請に対して最終承認がされているかを確認する
-        /// </summary>
-        /// <param name="PersonCode"></param>
-        /// <param name="ApprovalCode"></param>
-        /// <returns></returns>
-        public static bool CheckPersonApprovalData(int PersonCode, int ApprovalCode, DateTime OrderDate, int OrderNo)
-        {
-            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
-            IOMApproval mApprDB = new IOMApproval();
-            IOPersonApproval ApprDB = new IOPersonApproval();
-            try
-            {
-                bool bApproval = false;
-
-                // 承認データを取得する（申請データを除く）
-                StringBuilder strSQL = new StringBuilder();
-                strSQL.Append("SELECT");
-                strSQL.Append(" A.DISPLAYORDER");
-                strSQL.Append(", A.APPROVALPERSON");
-                strSQL.Append(", A.APPROVALAUTHORITY");
-                strSQL.Append(", B.SEQNO");
-                strSQL.Append(", B.APPROVALSTATUS");
-                strSQL.Append(" FROM APPROVALMASTER A");
-                strSQL.Append(" LEFT JOIN PERSONAPPROVAL B");
-                strSQL.Append(" ON B.PERSONCODEAPPROVAL = A.APPROVALPERSON");
-                strSQL.Append(" AND B.APPROVALCODE = A.APPROVALCODE");
-                strSQL.AppendFormat(" AND DATE(B.ORDERDATE) = STR_TO_DATE('{0}','%Y/%m/%d')", OrderDate.ToShortDateString());
-                strSQL.AppendFormat(" AND B.ORDERNO = {0} AND B.SEQNO != {1}", OrderNo, s_PrimartyRecord);
-                strSQL.AppendFormat(" WHERE A.APPROVALCODE = {0}", ApprovalCode);
-                strSQL.Append(" AND A.DEPARTMENTCODE = ");
-                strSQL.Append(" (SELECT C.DEPARTMENTCODE");
-                strSQL.Append(" FROM PERSONINCHARGEMASTER C");
-                strSQL.AppendFormat(" WHERE C.PERSONCODE = {0})", PersonCode);
-                strSQL.Append(" ORDER BY A.DISPLAYORDER");
-
-                ArrayList DataList = new ArrayList();
-                if (!ApprDB.ExecuteReader(strSQL.ToString(), ref DataList)) return false;
-                if (DataList.Count == 0) return false;
-
-                int NoCnt = DataList.Count;
-                foreach (object[] DataRec in DataList)
-                {
-                    // 承認以外は対象にしない
-                    int StatData= CommonMotions.cnvInt(DataRec[4]);
-                    if (StatData != (int)CommonDefine.ApprovalStatus.Approval) continue;
-
-                    // 最終承認権限が設定されていれば承認済み
-                    int ApprovalAuthority = CommonMotions.cnvInt(DataRec[2]);
-                    if (ApprovalAuthority == 1)
-                    {
-                        bApproval = true;
-                        break;
-                    }
-
-                    // 承認していればデータ件数からマイナス
-                    --NoCnt;
-                }
-                // マスタに設定されている承認者全員が承認していれば承認
-                if (NoCnt == 0) bApproval = true;
-
-                return bApproval;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                ApprDB.close(); ApprDB = null;
-                mApprDB.close(); mApprDB = null;
-                cbiDB.close(); cbiDB = null;
-            }
-        }
-        #endregion
-
-        #region ログインユーザーの承認者確認
-        /// <summary>
-        /// ログインユーザーは承認者かどうかを確認する
-        /// </summary>
-        /// <param name="ConstructionCode"></param>
-        /// <param name="ApprovalCode"></param>
-        /// <returns></returns>
-        public static bool CheckUserForApprover(int ApprovalCode, int DepartmentCode)
-        {
-            IOMApproval mApprDB = new IOMApproval();
-            try
-            {
-                // システム管理者は全ての権限を持つ
-                if (CommonMotions.LoginUserData.SecurityManagement == CommonDefine.AdminSecurityManagement) return true;
-
-                bool bApproval = false;
-
-                // 承認経路マスタを取得する
-                string strMaster = mApprDB.CreatePrimarykeyString(ApprovalCode, DepartmentCode);
-                List<ApprovalMaster> MasterList = new List<ApprovalMaster>();
-                if (!mApprDB.SelectAction(strMaster, ref MasterList))
-                {
-                    logger.ErrorFormat("承認確認処理：{0}：承認経路マスタ取得エラー", CommonMotions.GetMethodName());
-                    return false;
-                }
-                if (MasterList.Count == 0) return false;
-
-                foreach (ApprovalMaster MasterRec in MasterList)
-                {
-                    // 承認者コードが違えば次レコードへ
-                    if (MasterRec.ApprovalPerson != CommonMotions.LoginUserData.PersonCode) continue;
-                    // 承認者の場合は処理終了
-                    bApproval = true;
-                    break;
-                }
-
-                return bApproval;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-            finally
-            {
-                mApprDB.close(); mApprDB = null;
-            }
-        }
-        #endregion
-
-        #region 工事コードより現在管理担当部署コードを取得
-        /// <summary>
-        /// 工事コードより現在管理担当部署コードを取得する
-        /// </summary>
-        /// <param name="PersonCode"></param>
-        /// <returns></returns>
-        public static int GetFromConstructionTheDepartment(int ConstructionCode)
-        {
-            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
-            IOMPersonInCharge picDB = new IOMPersonInCharge();
-            try
-            {
-                // 工事基本情報取得
-                ConstructionBaseInfo baseRec = new ConstructionBaseInfo();
-                string strSQL = string.Format(" Where ConstructionCode = {0}", ConstructionCode);
-                if (!cbiDB.SelectAction(strSQL, ref baseRec)) return 0;
-
-                // 担当者取得
-                int CurrentPersonCode = 0;
-                int iCode1 = CommonDefine.ProjectsStatus.First(x => x.Value.Equals("依頼受け中")).Key;
-                int iCode2 = CommonDefine.ProjectsStatus.First(x => x.Value.Equals("見積提出")).Key;
-                int iCode3 = CommonDefine.ProjectsStatus.First(x => x.Value.Equals("仮 受 注")).Key;
-                if (baseRec.ConstructionStatusFlg == iCode1 ||
-                    baseRec.ConstructionStatusFlg == iCode2 ||
-                    baseRec.ConstructionStatusFlg == iCode3)
-                {
-                    CurrentPersonCode = baseRec.SalesPersonCode;
-                }
-                else
-                {
-                    CurrentPersonCode = baseRec.ConstructionPersonCode;
-                }
-
-                // 工事部署取得
-                PersonInChargeMaster PersonRec = new PersonInChargeMaster();
-                string strPerson = picDB.CreatePrimarykeyString(CurrentPersonCode);
-                if (!picDB.SelectAction(strPerson, ref PersonRec)) return 0;
-
-                return PersonRec.DepartmentCode;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return 0;
-            }
-            finally
-            {
-                picDB.close(); picDB = null;
-                cbiDB.close(); cbiDB = null;
-            }
-
-        }
-        #endregion
-
-        #region 工事コードと承認機能コードより現在管理担当部署コードを取得
-        /// <summary>
-        /// 工事コードと承認機能コードより現在管理担当部署コードを取得する
-        /// </summary>
-        /// <returns></returns>
-        public static int GetFromConstrAndAppTheDep(int ConstructionCode, int ApprovalCode, int OrderNo)
-        {
-            IOMPersonInCharge picDB = new IOMPersonInCharge();
-            IOProcessApproval ApprovalDB = new IOProcessApproval();
-            try
-            {
-                // 管理担当者コードを取得する
-                string strSQL = ApprovalDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, OrderNo, s_PrimartyRecord);
-                ProcessApproval ApprovalRec = new ProcessApproval();
-                int CurrentPersonCode = 0;
-                if (ApprovalDB.SelectAction(strSQL, ref ApprovalRec))
-                {   // 申請データがある時はそのデータ
-                    CurrentPersonCode = ApprovalRec.PersonCode;
-                }
-                else
-                {
-                    // データが無い場合（申請時）はログインユーザー
-                    CurrentPersonCode = CommonMotions.LoginUserData.PersonCode;
-                }
-
-                // 担当者部署取得
-                PersonInChargeMaster PersonRec = new PersonInChargeMaster();
-                string strPerson = picDB.CreatePrimarykeyString(CurrentPersonCode);
-                if (!picDB.SelectAction(strPerson, ref PersonRec)) return 0;
-
-                return PersonRec.DepartmentCode;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return 0;
-            }
-            finally
-            {
-                ApprovalDB.close(); ApprovalDB = null;
-                picDB.close(); picDB = null;
-            }
-        }
-        #endregion
-
-        #region 担当者コードと承認機能コードより現在管理担当部署コードを取得
-        /// <summary>
-        /// 担当者コードと承認機能コードより現在管理担当部署コードを取得する
-        /// </summary>
-        /// <returns></returns>
-        public static int GetFromPersonAndApprovalTheDepartment(int PersonCode, int ApprovalCode, DateTime OrderDate, int OrderNo)
-        {
-            IOMPersonInCharge picDB = new IOMPersonInCharge();
-            IOPersonApproval ApprovalDB = new IOPersonApproval();
-            try
-            {
-                // 管理担当者コードを取得する
-                string strSQL = ApprovalDB.CreatePrimarykeyString(PersonCode, ApprovalCode, OrderDate, OrderNo, s_PrimartyRecord);
-                PersonApproval ApprovalRec = new PersonApproval();
-                int CurrentPersonCode = 0;
-                if (ApprovalDB.SelectAction(strSQL, ref ApprovalRec))
-                {   // 申請データがある時はそのデータ
-                    CurrentPersonCode = ApprovalRec.PersonCode;
-                }
-                else
-                {
-                    // データが無い場合（申請時）は申請ユーザー
-                    CurrentPersonCode = PersonCode;
-                }
-
-                // 担当者部署取得
-                PersonInChargeMaster PersonRec = new PersonInChargeMaster();
-                string strPerson = picDB.CreatePrimarykeyString(CurrentPersonCode);
-                if (!picDB.SelectAction(strPerson, ref PersonRec)) return 0;
-
-                return PersonRec.DepartmentCode;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return 0;
-            }
-            finally
-            {
-                ApprovalDB.close(); ApprovalDB = null;
-                picDB.close(); picDB = null;
-            }
-        }
-        #endregion
-
-        #region 工事コードと承認機能コードより現在管理担当者コードを取得
-        /// <summary>
-        /// 工事コードと承認機能コードより現在管理担当者コードを取得する
-        /// </summary>
-        /// <returns></returns>
-        public static int GetFromConstructionAndApprovalThePerson(int ConstructionCode, int ApprovalCode)
-        {
-            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
-            try
-            {
-                // 工事基本情報取得
-                ConstructionBaseInfo baseRec = new ConstructionBaseInfo();
-                string strSQL = string.Format(" Where ConstructionCode = {0}", ConstructionCode);
-                if (!cbiDB.SelectAction(strSQL, ref baseRec)) return 0;
-
-                // 承認機能コードにより取得する担当者コードを取得する
-                string AppString = ClsExcute.AppovalList[ApprovalCode];
-                int CurrentPersonCode = 0;
-                if (AppString.Equals("積算見積書承認"))
-                {
-                    CurrentPersonCode = baseRec.SalesPersonCode;
-                }
-                else if (AppString.Equals("積算予算書承認"))
-                {
-                    CurrentPersonCode = baseRec.SalesPersonCode;
-                }
-                else if (AppString.Equals("工事予算書承認"))
-                {
-                    CurrentPersonCode = baseRec.ConstructionPersonCode;
-                }
-                else if (AppString.Equals("注文書承認"))
-                {
-                    CurrentPersonCode = baseRec.ConstructionPersonCode;
-                }
-                else if (AppString.Equals("継続案件承認"))
-                {
-                    CurrentPersonCode = baseRec.ConstructionPersonCode;
-                }
-                else if (AppString.Equals("請求承認"))
-                {
-                    CurrentPersonCode = baseRec.ConstructionPersonCode;
-                }
-                else if (AppString.Equals("工事日報承認"))
-                {
-                    CurrentPersonCode = baseRec.ConstructionPersonCode;
-                }
-                else if (AppString.Equals("議事録承認"))
-                {
-                    CurrentPersonCode = baseRec.ConstructionPersonCode;
-                }
-                else if (AppString.Equals("質疑承認"))
-                {
-                    CurrentPersonCode = baseRec.ConstructionPersonCode;
-                }
-
-                return CurrentPersonCode;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return 0;
-            }
-            finally
-            {
-                cbiDB.close(); cbiDB = null;
-            }
-        }
-        #endregion
-
-        #region 承認数取得（工事承認）
-        /// <summary>
-        /// 該当工事より承認数取得する
-        /// </summary>
-        /// <returns></returns>
-        public static int GetProcessApprovalDataCount(int ConstructionCode, int ApprovalCode, int ApprovalCount)
-        {
-            IOProcessApproval paDB = new IOProcessApproval();
-            try
-            {
-                // 承認データ取得
-                string strSQL = paDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, ApprovalCount);
-                strSQL += string.Format(" And SeqNo != {0} And ApprovalStatus = {1}", s_PrimartyRecord, (int)CommonDefine.ApprovalStatus.Approval);
-                List<ProcessApproval> ApprovalList = new List<ProcessApproval>();
-                if (!paDB.SelectAction(strSQL, ref ApprovalList)) return 0;
-
-                return ApprovalList.Count;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return 0;
-            }
-            finally
-            {
-                paDB.close(); paDB = null;
-            }
-        }
-        #endregion
-
-        #region 承認数取得（担当者承認）
-        /// <summary>
-        /// 担当者申請より承認数取得する
-        /// </summary>
-        /// <returns></returns>
-        public static int GetPersonApprovalDataCount(int PersonCode, int ApprovalCode, DateTime ApprovalDate)
-        {
-            IOPersonApproval paDB = new IOPersonApproval();
-            try
-            {
-                // 承認データ取得
-                string strSQL = paDB.CreatePrimarykeyString(PersonCode, ApprovalCode, ApprovalDate);
-                strSQL += string.Format(" And SeqNo != {0} And ApprovalStatus = {1}", s_PrimartyRecord, (int)CommonDefine.ApprovalStatus.Approval);
-                List<PersonApproval> ApprovalList = new List<PersonApproval>();
-                if (!paDB.SelectAction(strSQL, ref ApprovalList)) return 0;
-
-                return ApprovalList.Count;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return 0;
-            }
-            finally
-            {
-                paDB.close(); paDB = null;
-            }
-        }
-        #endregion
-
-        #region 承認経路数を取得する
-        /// <summary>
-        /// 承認マスタより承認経路数を取得する
-        /// </summary>
-        /// <param name="ApprovalCode"></param>
-        /// <param name="DepartmentCode"></param>
-        /// <returns></returns>
-        public static int GetApprovalMasterCount(int ApprovalCode, int DepartmentCode)
-        {
-            IOMApproval mpaDB = new IOMApproval();
-            try
-            {
-                // 承認経路マスタ取得
-                string strMSQL = mpaDB.CreatePrimarykeyString(ApprovalCode, DepartmentCode);
-                List<ApprovalMaster> MasterList = new List<ApprovalMaster>();
-                if (!mpaDB.SelectAction(strMSQL, ref MasterList)) return 0;
-
-                // 初期値セット
-                return MasterList.Count;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return 0;
-            }
-            finally
-            {
-                mpaDB.close(); mpaDB = null;
-            }
-        }
-        #endregion
-
-        #region 承認画面の起動を確認する
-        /// <summary>
-        /// 承認画面が起動しているかを確認する
-        /// </summary>
-        /// <returns></returns>
-        public static bool ExceApprovalScreen(int ApprovalNo = (int)ClsExcute.SubFormExecuteNo.ApprovalScreen)
-        {
-            try
-            {
-                bool bRet = false;
-                // 承認画面からの画面遷移は1画面（対象画面）のみになったのですぐ前にあるはず
-                for (int i = ClsExcute.GetNowProcessPoint() - 1; 0 <= i; i--)
-                {
-                    if (ClsExcute.ProcControlPara[i].ProcNo == ApprovalNo)
-                    {
-                        bRet = true;
-                        break;
-                    }
-                }
-                    
-                return bRet;
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
-            }
-        }
-        #endregion
-    }
-}
Index: branches/src/ProcessManagement/ProcessManagement/Common/Process/ClsCommonApproval.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Common/Process/ClsCommonApproval.cs	(nonexistent)
+++ branches/src/ProcessManagement/ProcessManagement/Common/Process/ClsCommonApproval.cs	(revision 366)
@@ -0,0 +1,1410 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Collections;
+using System.Linq;
+using System.Threading.Tasks;
+
+using log4net;
+using log4net.Appender;
+using log4net.Repository.Hierarchy;
+
+using ProcessManagement.Common;
+using ProcessManagement.DB.IOAccess;
+using ProcessManagement.DataModel;
+using ProcessManagement.Forms.ControlsAction;
+using ProcessManagement.Forms.CustomControls;
+
+namespace ProcessManagement.Common
+{
+    /// <summary>
+    /// 申請・承認共通クラス
+    /// </summary>
+    public static class ClsCommonApproval
+    {
+        #region 使用定義
+        //log4netログを使用する
+        private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+        #endregion
+
+        #region 定数
+
+        #region 申請レコード番号
+        /// <summary>
+        /// 申請レコード枝番
+        /// </summary>
+        private const int s_PrimartyRecord = 1;
+        #endregion
+
+        #region 承認マスタ・データ一括取得読込順（工事承認）
+        /// <summary>
+        /// 承認マスタ・データ一括取得読込順（工事承認）
+        /// </summary>
+        private enum AppRoteNo
+        { 
+            /// <summary>
+            ///  0:マスタ承認番号
+            /// </summary>
+            ApprovalCode = 0,
+            /// <summary>
+            ///  1:マスタ部署コード
+            /// </summary>
+            DepartmentCode,
+            /// <summary>
+            ///  2:マスタSEQNO
+            /// </summary>
+            SeqNo,
+            /// <summary>
+            ///  3:マスタ承認順序
+            /// </summary>
+            DisplayOrder,
+            /// <summary>
+            ///  4:マスタ承認者コード
+            /// </summary>
+            ApprovalPerson,
+            /// <summary>
+            ///  5:マスタ最終承認者フラグ
+            /// </summary>
+            ApprovalAuthority,
+            /// <summary>
+            ///  6:データ工事コード
+            /// </summary>
+            ConstructionCode,
+            /// <summary>
+            ///  7:データ承認回数
+            /// </summary>
+            OrderNo,
+            /// <summary>
+            ///  8:データ承認者コード
+            /// </summary>
+            PersonCode,
+            /// <summary>
+            ///  9:データ承認者状態
+            /// </summary>
+            ApprovalStatus,
+        }
+        #endregion
+
+        #region 承認マスタ・データ一括取得処理SQL（工事承認）
+        /// <summary>
+        /// 承認マスタ・データ一括取得処理SQL（工事承認）
+        /// </summary>
+        private static string[] s_SQLAppRote = new string[] { "Select",
+                                                                    " A.ApprovalCode",
+                                                                    ", A.DepartmentCode",
+                                                                    ", A.SeqNo",
+                                                                    ", A.DisplayOrder",
+                                                                    ", A.ApprovalPerson",
+                                                                    ", A.ApprovalAuthority",
+                                                                    ", B.ConstructionCode",
+                                                                    ", B.OrderNo",
+                                                                    ", B.PersonCode",
+                                                                    ", B.ApprovalStatus",
+                                                                    " From",
+
+                                                                    " processapproval As P",
+
+                                                                    " Inner Join(Select",
+                                                                    "                 H.PersonCode",
+                                                                    "               , H.StartDate",
+                                                                    string.Format(" , Case When DATE (H.CompDate) = DATE('{0}')",DateTime.MinValue.ToShortDateString()),
+                                                                    string.Format("        Then DATE ('{0}')", DateTime.MaxValue.ToShortDateString()),
+                                                                    "                 Else DATE(H.CompDate) End As CompDate",
+                                                                    "               , H.DepartmentCode",
+                                                                    "               , H.DepartmentName",
+                                                                    "            From ChgChargeDep As H) As ChgMan",
+                                                                    "        On ChgMan.PersonCode = P.PersonCode",
+                                                                    "        And(DATE(ChgMan.StartDate) <= DATE(P.PetitionApprovalDate)",
+                                                                    "        And DATE(P.PetitionApprovalDate) <= DATE(ChgMan.CompDate))",
+
+                                                                    " Inner Join approvalmaster As A",
+                                                                    "        On A.ApprovalCode = P.ApprovalCode",
+                                                                    "        And A.DepartmentCode = ChgMan.DepartmentCode",
+
+                                                                    " Left  Join processapproval As B",
+                                                                    "        On B.ConstructionCode = P.ConstructionCode",
+                                                                    "        And B.ApprovalCode = P.ApprovalCode",
+                                                                    "        And B.OrderNo = P.OrderNo",
+                                                                    "        And B.PersonCode = A.ApprovalPerson",
+                                                                    "        And B.SeqNo > 1",
+
+                                                                    " Where P.ConstructionCode = {0}",                                      // 34
+                                                                    "   And P.ApprovalCode = {0}",                                          // 35
+                                                                    "   And P.OrderNo = {0}",                                               // 36
+                                                                    "   And P.SeqNo = {0}",                                                 // 37
+                                                                    " Order by A.DisplayOrder desc" };
+        #endregion
+
+        #endregion
+
+        #region 承認申請・承認をする(工事承認)
+        /// <summary>
+        /// 案件の承認申請・承認をする(工事承認)
+        /// </summary>
+        /// <returns>成功：true　失敗：false</returns>
+        public static bool CreatePetitionApproval(ProcessApproval Rec)
+        {
+            IOProcessApproval ApprDB = new IOProcessApproval();
+            try
+            {
+                string strSQL = ApprDB.CreatePrimarykeyString(Rec.ConstructionCode, Rec.ApprovalCode, Rec.OrderNo, Rec.SeqNo);
+                List<ProcessApproval> DataList = new List<ProcessApproval>();
+                // データがあるかをチェックする
+                if (!ApprDB.SelectAction(strSQL, ref DataList)) return false;
+
+                // データ追加時
+                if (DataList.Count == 0)
+                {
+                    if (!ApprDB.InsertAction(Rec)) return false;
+                    return true;
+                }
+
+                // データ更新時
+                if (!ApprDB.UpdateAction(strSQL, Rec)) return false;
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        #endregion
+
+        #region 承認申請・承認をする(担当者承認)
+        /// <summary>
+        /// 案件の承認申請・承認をする(担当者承認)
+        /// </summary>
+        /// <returns>成功：true　失敗：false</returns>
+        public static bool CreatePetitionApproval(PersonApproval Rec)
+        {
+            IOPersonApproval ApprDB = new IOPersonApproval();
+            try
+            {
+                string strSQL = ApprDB.CreatePrimarykeyString(Rec.PersonCode, Rec.ApprovalCode, Rec.OrderDate, Rec.OrderNo, Rec.SeqNo);
+                List<PersonApproval> DataList = new List<PersonApproval>();
+                // データがあるかをチェックする
+                if (!ApprDB.SelectAction(strSQL, ref DataList)) return false;
+
+                if (DataList.Count == 0)
+                {   // データ追加時
+                    if (!ApprDB.InsertAction(Rec)) return false;
+                }
+                else
+                {   // データ更新時
+                    if (!ApprDB.UpdateAction(strSQL, Rec)) return false;
+                }
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        #endregion
+
+        #region 申請レコード更新(工事承認)
+        /// <summary>
+        /// 申請レコードを更新する(工事承認)
+        /// </summary>
+        /// <param name="ConstructionCode"></param>
+        /// <param name="ApprovalCode"></param>
+        /// <param name="Status"></param>
+        /// <returns></returns>
+        public static bool SetPrimaryRecStatus(int ConstructionCode, int ApprovalCode, int OrderNO, int Status)
+        {
+            IOProcessApproval ApprDB = new IOProcessApproval();
+            try
+            {
+                if (!ApprDB.UpdateFeild(ConstructionCode,
+                                        (int)IOProcessApproval.ColumnName.ApprovalStatus,
+                                        Status,
+                                        true,
+                                        ApprovalCode,
+                                        OrderNO,
+                                        s_PrimartyRecord)) return false;
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        #endregion
+
+        #region 申請レコード更新(担当者承認)
+        /// <summary>
+        /// 申請レコードを更新する(担当者承認)
+        /// </summary>
+        /// <param name="PersonCode"></param>
+        /// <param name="ApprovalCode"></param>
+        /// <param name="Status"></param>
+        /// <returns></returns>
+        public static bool SetPrimaryRecStatus(int PersonCode, int ApprovalCode, DateTime OrderDate, int OrderNo, int Status)
+        {
+            IOPersonApproval ApprDB = new IOPersonApproval();
+            try
+            {
+                if (!ApprDB.UpdateFeild(PersonCode,
+                                        ApprovalCode,
+                                        OrderDate,
+                                        (int)IOPersonApproval.ColumnName.ApprovalStatus,
+                                        Status,
+                                        true,
+                                        OrderNo,
+                                        s_PrimartyRecord)) return false;
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        #endregion
+
+        #region 申請確認（工事承認）
+        /// <summary>
+        /// 案件に対して申請がされているかを確認する
+        /// </summary>
+        /// <param name="ConstructionCode"></param>
+        /// <param name="ApprovalCode"></param>
+        /// <returns></returns>
+        public static bool CheckProcessPetition(int ConstructionCode, int ApprovalCode, int OrderNo)
+        {
+            IOProcessApproval ApprDB = new IOProcessApproval();
+            try
+            {
+                bool bPetition = false;
+                // 申請データ取得
+                string strSQL = ApprDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, OrderNo, s_PrimartyRecord);
+                List<ProcessApproval> PetitionList = new List<ProcessApproval>();
+                if (!ApprDB.SelectAction(strSQL, ref PetitionList)) return bPetition;
+                // 申請データが無い場合
+                if (PetitionList.Count != 0) bPetition = true;
+
+                return bPetition;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        #endregion
+
+        #region 申請確認（担当者承認）
+        /// <summary>
+        /// 担当者申請がされているかを確認する
+        /// </summary>
+        /// <param name="PersonCode"></param>
+        /// <param name="ApprovalCode"></param>
+        /// <returns></returns>
+        public static bool CheckPersonPetition(int PersonCode, int ApprovalCode, DateTime ApprovalDate, int OrderNo)
+        {
+            IOPersonApproval ApprDB = new IOPersonApproval();
+            try
+            {
+                bool bPetition = false;
+                // 申請データ取得
+                StringBuilder strSQL = new StringBuilder();
+                strSQL.Append(ApprDB.CreatePrimarykeyString(PersonCode, ApprovalCode, ApprovalDate, OrderNo));
+                List<PersonApproval> PetitionList = new List<PersonApproval>();
+                if (!ApprDB.SelectAction(strSQL.ToString(), ref PetitionList)) return bPetition;
+                // 申請データが無い場合
+                if (PetitionList.Count != 0) bPetition = true;
+
+                return bPetition;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        public static bool CheckPersonPetition2(int PersonCode, int ApprovalCode, DateTime ApprovalDate, int OrderNo)
+        {
+            IOPersonApproval ApprDB = new IOPersonApproval();
+            try
+            {
+                bool bPetition = false;
+                // 申請データ取得
+                StringBuilder strSQL = new StringBuilder();
+                strSQL.AppendFormat(" Where PersonCode = {0}", PersonCode);
+                strSQL.AppendFormat(" And ApprovalCode = {0}", ApprovalCode);
+                strSQL.AppendFormat(" And DATE(EntryDate) = DATE(STR_TO_DATE('{0}','%Y/%m/%d'))", ApprovalDate.ToShortDateString());
+                strSQL.AppendFormat(" And OrderNo = {0}", OrderNo);
+                List<PersonApproval> PetitionList = new List<PersonApproval>();
+                if (!ApprDB.SelectAction(strSQL.ToString(), ref PetitionList)) return bPetition;
+                // 申請データが無い場合
+                if (PetitionList.Count != 0) bPetition = true;
+
+                return bPetition;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        #endregion
+
+        #region 最終承認確認（工事承認）
+        /// <summary>
+        /// 最終承認確認（工事承認）
+        /// </summary>
+        /// <param name="ConstructionCode"></param>
+        /// <param name="ApprovalCode"></param>
+        /// <returns></returns>
+        public static bool CheckProcessApproval(int ConstructionCode, int ApprovalCode, int Approvalcount)
+        {
+            IOMApproval mApprDB = new IOMApproval();
+            IOProcessApproval ApprDB = new IOProcessApproval();
+            try
+            {
+                // 承認データを取得する（申請データを除く）
+                string strData = ApprDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, Approvalcount, s_PrimartyRecord);
+                ProcessApproval DataRec = new ProcessApproval();
+                if (!ApprDB.SelectAction(strData, ref DataRec)) return false;
+
+                if (DataRec.ApprovalStatus != (int)CommonDefine.ApprovalStatus.Approval) return false;
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+                mApprDB.close(); mApprDB = null;
+            }
+        }
+        #endregion
+
+        #region 最終承認確認（担当者承認）
+        /// <summary>
+        /// 担当者申請に対して承認がされているかを確認する
+        /// </summary>
+        /// <param name="PersonCode"></param>
+        /// <param name="ApprovalCode"></param>
+        /// <returns></returns>
+        public static bool CheckPersonApproval(int PersonCode, int ApprovalCode, DateTime OrderDate, int OrderNo)
+        {
+            IOPersonApproval ApprDB = new IOPersonApproval();
+            try
+            {
+                // 承認データを取得する（申請データを除く）
+                string strData = ApprDB.CreatePrimarykeyString(PersonCode, ApprovalCode, OrderDate, OrderNo, s_PrimartyRecord);
+                PersonApproval DataRec = new PersonApproval();
+                if (!ApprDB.SelectAction(strData, ref DataRec)) return false;
+
+                if (DataRec.ApprovalStatus != (int)CommonDefine.ApprovalStatus.Approval) return false;
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        #endregion
+
+        #region 承認確認（工事承認）
+        /// <summary>
+        /// 工事案件に対して最終承認がされているかを確認する
+        /// </summary>
+        /// <param name="ConstructionCode"></param>
+        /// <param name="ApprovalCode"></param>
+        /// <returns></returns>
+        public static bool CheckProcessApprovalData(int ConstructionCode, int ApprovalCode, int OrderNo)
+        {
+            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
+            IOMApproval mApprDB = new IOMApproval();
+            IOProcessApproval ApprDB = new IOProcessApproval();
+            try
+            {
+                bool bApproval = false;
+                // 申請部署の取得
+                string strSQL = cbiDB.CreatePrimarykeyString(ConstructionCode);
+                ConstructionBaseInfo cbiData = new ConstructionBaseInfo();
+                if (!cbiDB.SelectAction(strSQL, ref cbiData)) return false;
+                int DepartmentCode = GetFromConstrAndAppTheDep(ConstructionCode, ApprovalCode, OrderNo);
+
+                // 承認経路マスタを取得する
+                string strMaster = mApprDB.CreatePrimarykeyString(ApprovalCode, DepartmentCode);
+                List<ApprovalMaster> MasterList = new List<ApprovalMaster>();
+                if (!mApprDB.SelectAction(strMaster, ref MasterList))
+                {
+                    logger.ErrorFormat("承認確認処理：{0}：承認経路マスタ取得エラー", CommonMotions.GetMethodName());
+                    return false;
+                }
+                if (MasterList.Count == 0) return false;
+
+                // 承認データを取得する
+                string strData = ApprDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, OrderNo);
+                //strData += string.Format(" And SeqNo != {0} And ApprovalStatus = {1}", s_PrimartyRecord, (int)CommonDefine.ApprovalStatus.Approval);
+                strData += " Order By SeqNo ASC";
+                List<ProcessApproval> DataList = new List<ProcessApproval>();
+                if (!ApprDB.SelectAction(strData, ref DataList)) return false;
+                if (DataList.Count == 0) return false;
+
+                // 申請データを取得する
+                ProcessApproval RequestData = DataList.Find(x => x.SeqNo == s_PrimartyRecord);
+                if (RequestData == null) return false;
+
+                int NoCnt = MasterList.Count;
+                foreach (ProcessApproval DataRec in DataList)
+                {
+                    // 申請データは対象にしない
+                    if (DataRec.SeqNo == s_PrimartyRecord) continue;
+
+                    // 承認以外は対象にしない
+                    if (DataRec.ApprovalStatus != (int)CommonDefine.ApprovalStatus.Approval) continue;
+
+                    foreach (ApprovalMaster MasterRec in MasterList)
+                    {
+                        // 承認者コードが違えば次レコードへ
+                        if (DataRec.PersonCode != MasterRec.ApprovalPerson) continue;
+
+                        // 承認していればデータ件数からマイナス
+                        --NoCnt;
+
+                        // 最終承認権限が設定されていれば承認済み
+                        if (MasterRec.ApprovalAuthority == (int)ApprovalMaster.ApprovalAuthorityDef.LastApproval)
+                        {
+                            // 最終承認済みは処理しない
+                            if (RequestData.ApprovalStatus == (int)CommonDefine.ApprovalStatus.Approval) break;
+
+                            bApproval = true;
+                            break;
+                        }
+                    }
+                    // 最終決裁者が承認していれば処理終了
+                    if (bApproval) break;
+                }
+                // マスタに設定されている承認者全員が承認していれば承認
+                if (NoCnt == 0)
+                {
+                    // 最終承認済みは処理しない
+                    if (RequestData.ApprovalStatus != (int)CommonDefine.ApprovalStatus.Approval)
+                    {
+                        bApproval = true;
+                    }
+                }
+
+                return bApproval;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+                mApprDB.close(); mApprDB = null;
+                cbiDB.close(); cbiDB = null;
+            }
+        }
+        #endregion
+
+        #region 承認確認（担当者承認）
+        /// <summary>
+        /// 担当者申請に対して最終承認がされているかを確認する
+        /// </summary>
+        /// <param name="PersonCode"></param>
+        /// <param name="ApprovalCode"></param>
+        /// <returns></returns>
+        public static bool CheckPersonApprovalData(int PersonCode, int ApprovalCode, DateTime OrderDate, int OrderNo)
+        {
+            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
+            IOMApproval mApprDB = new IOMApproval();
+            IOPersonApproval ApprDB = new IOPersonApproval();
+            try
+            {
+                bool bApproval = false;
+
+                // 承認データを取得する（申請データを除く）
+                StringBuilder strSQL = new StringBuilder();
+                strSQL.Append("SELECT");
+                strSQL.Append(" A.DISPLAYORDER");
+                strSQL.Append(", A.APPROVALPERSON");
+                strSQL.Append(", A.APPROVALAUTHORITY");
+                strSQL.Append(", B.SEQNO");
+                strSQL.Append(", B.APPROVALSTATUS");
+                strSQL.Append(" FROM APPROVALMASTER A");
+                strSQL.Append(" LEFT JOIN PERSONAPPROVAL B");
+                strSQL.Append(" ON B.PERSONCODEAPPROVAL = A.APPROVALPERSON");
+                strSQL.Append(" AND B.APPROVALCODE = A.APPROVALCODE");
+                strSQL.AppendFormat(" AND DATE(B.ORDERDATE) = STR_TO_DATE('{0}','%Y/%m/%d')", OrderDate.ToShortDateString());
+                strSQL.AppendFormat(" AND B.ORDERNO = {0} AND B.SEQNO != {1}", OrderNo, s_PrimartyRecord);
+                strSQL.AppendFormat(" WHERE A.APPROVALCODE = {0}", ApprovalCode);
+                strSQL.Append(" AND A.DEPARTMENTCODE = ");
+                strSQL.Append(" (SELECT C.DEPARTMENTCODE");
+                strSQL.Append(" FROM PERSONINCHARGEMASTER C");
+                strSQL.AppendFormat(" WHERE C.PERSONCODE = {0})", PersonCode);
+                strSQL.Append(" ORDER BY A.DISPLAYORDER");
+
+                ArrayList DataList = new ArrayList();
+                if (!ApprDB.ExecuteReader(strSQL.ToString(), ref DataList)) return false;
+                if (DataList.Count == 0) return false;
+
+                int NoCnt = DataList.Count;
+                foreach (object[] DataRec in DataList)
+                {
+                    // 承認以外は対象にしない
+                    int StatData = CommonMotions.cnvInt(DataRec[4]);
+                    if (StatData != (int)CommonDefine.ApprovalStatus.Approval) continue;
+
+                    // 最終承認権限が設定されていれば承認済み
+                    int ApprovalAuthority = CommonMotions.cnvInt(DataRec[2]);
+                    if (ApprovalAuthority == 1)
+                    {
+                        bApproval = true;
+                        break;
+                    }
+
+                    // 承認していればデータ件数からマイナス
+                    --NoCnt;
+                }
+                // マスタに設定されている承認者全員が承認していれば承認
+                if (NoCnt == 0) bApproval = true;
+
+                return bApproval;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+                mApprDB.close(); mApprDB = null;
+                cbiDB.close(); cbiDB = null;
+            }
+        }
+        #endregion
+
+        #region 承認順序確認（工事承認）
+        /// <summary>
+        /// 承認順序確認（工事承認）
+        /// </summary>
+        /// <returns></returns>
+        public static bool CheckProcessApprovalSequence(int ConstrCode, int ApprovalCode, int OrderNo)
+        {
+            IOProcessApproval ApprDB = new IOProcessApproval();
+            try
+            {
+                // 申請・承認中はデータを取得する
+                StringBuilder strSQL = new StringBuilder();
+                int nLoppCnt = s_SQLAppRote.Length - 1;
+                for(int i = 0; i < nLoppCnt; i++)
+                {
+                    switch (i)
+                    {
+                        case 34:
+                            strSQL.AppendFormat(s_SQLAppRote[i], ConstrCode);
+                            break;
+                        case 35:
+                            strSQL.AppendFormat(s_SQLAppRote[i], ApprovalCode);
+                            break;
+                        case 36:
+                            strSQL.AppendFormat(s_SQLAppRote[i], OrderNo);
+                            break;
+                        case 37:
+                            strSQL.AppendFormat(s_SQLAppRote[i], CommonDefine.s_Default_OrderNo);
+                            break;
+                    default:
+                            strSQL.Append(s_SQLAppRote[i]);
+                            break;
+                    }
+                }
+                strSQL.Append(" Order By A.DisplayOrder");
+                ArrayList arList = new ArrayList();
+                if (!ApprDB.ExecuteReader(strSQL.ToString(), ref arList)) return false;
+
+                // 申請データが無い場合は新規なのでそのままでOK
+                if (arList.Count < 1) return true;
+
+                bool bCheck = true;
+                foreach (object[] CurRec in arList)
+                {
+                    // ログイン者が承認者にあれば抜ける
+                    if (CommonMotions.cnvInt(CurRec[(int)AppRoteNo.ApprovalPerson]) == CommonMotions.LoginUserData.PersonCode)
+                    {
+                        // 最終承認者は順序を気にしない
+                        if (CommonMotions.cnvInt(CurRec[(int)AppRoteNo.ApprovalAuthority]) == (int)ApprovalMaster.ApprovalAuthorityDef.LastApproval)
+                        {
+                            bCheck = true;
+                        }
+                        break;
+                    }
+
+                    // 承認されていなければフラグOFF
+                    if (CommonMotions.cnvInt(CurRec[(int)AppRoteNo.ApprovalStatus]) != (int)CommonDefine.ApprovalStatus.Approval) bCheck = false;
+                }
+
+                return bCheck;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        #endregion
+
+        #region ログインユーザーの承認者確認
+        /// <summary>
+        /// ログインユーザーは承認者かどうかを確認する
+        /// </summary>
+        /// <param name="ConstructionCode"></param>
+        /// <param name="ApprovalCode"></param>
+        /// <returns></returns>
+        public static bool CheckUserForApprover(int ApprovalCode, int DepartmentCode)
+        {
+            IOMApproval mApprDB = new IOMApproval();
+            try
+            {
+                // システム管理者は全ての権限を持つ
+                if (CommonMotions.LoginUserData.SecurityManagement == CommonDefine.AdminSecurityManagement) return true;
+
+                bool bApproval = false;
+
+                // 承認経路マスタを取得する
+                string strMaster = mApprDB.CreatePrimarykeyString(ApprovalCode, DepartmentCode);
+                List<ApprovalMaster> MasterList = new List<ApprovalMaster>();
+                if (!mApprDB.SelectAction(strMaster, ref MasterList))
+                {
+                    logger.ErrorFormat("承認確認処理：{0}：承認経路マスタ取得エラー", CommonMotions.GetMethodName());
+                    return false;
+                }
+                if (MasterList.Count == 0) return false;
+
+                foreach (ApprovalMaster MasterRec in MasterList)
+                {
+                    // 承認者コードが違えば次レコードへ
+                    if (MasterRec.ApprovalPerson != CommonMotions.LoginUserData.PersonCode) continue;
+                    // 承認者の場合は処理終了
+                    bApproval = true;
+                    break;
+                }
+
+                return bApproval;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                mApprDB.close(); mApprDB = null;
+            }
+        }
+        #endregion
+
+        #region ログインユーザーの申請者確認
+        /// <summary>
+        /// ログインユーザーは申請者かどうかを確認する
+        /// </summary>
+        public static bool CheckUserForApplicant(int ConstructionCode, int ApprovalCode, int OrderNo)
+        {
+            IOProcessApproval ApprDB = new IOProcessApproval();
+            try
+            {
+                // 申請データを取得する
+                StringBuilder strData = new StringBuilder();
+                strData.Append(ApprDB.CreatePrimarykeyString(ConstructionCode
+                                                            , ApprovalCode
+                                                            , OrderNo
+                                                            , s_PrimartyRecord));
+                ProcessApproval DataRec = new ProcessApproval();
+                if (!ApprDB.SelectAction(strData.ToString(), ref DataRec)) return false;
+
+                // ログイン者を確認
+                if (CommonMotions.LoginUserData.PersonCode != DataRec.PersonCode) return false;
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+            }
+        }
+        #endregion
+
+        #region 工事コードより現在管理担当部署コードを取得
+        /// <summary>
+        /// 工事コードより現在管理担当部署コードを取得する
+        /// </summary>
+        /// <param name="PersonCode"></param>
+        /// <returns></returns>
+        public static int GetFromConstructionTheDepartment(int ConstructionCode)
+        {
+            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
+            IOMPersonInCharge picDB = new IOMPersonInCharge();
+            try
+            {
+                // 工事基本情報取得
+                ConstructionBaseInfo baseRec = new ConstructionBaseInfo();
+                string strSQL = string.Format(" Where ConstructionCode = {0}", ConstructionCode);
+                if (!cbiDB.SelectAction(strSQL, ref baseRec)) return 0;
+
+                // 担当者取得
+                int CurrentPersonCode = 0;
+                int iCode1 = CommonDefine.ProjectsStatus.First(x => x.Value.Equals("依頼受け中")).Key;
+                int iCode2 = CommonDefine.ProjectsStatus.First(x => x.Value.Equals("見積提出")).Key;
+                int iCode3 = CommonDefine.ProjectsStatus.First(x => x.Value.Equals("仮 受 注")).Key;
+                if (baseRec.ConstructionStatusFlg == iCode1 ||
+                    baseRec.ConstructionStatusFlg == iCode2 ||
+                    baseRec.ConstructionStatusFlg == iCode3)
+                {
+                    CurrentPersonCode = baseRec.SalesPersonCode;
+                }
+                else
+                {
+                    CurrentPersonCode = baseRec.ConstructionPersonCode;
+                }
+
+                // 工事部署取得
+                PersonInChargeMaster PersonRec = new PersonInChargeMaster();
+                string strPerson = picDB.CreatePrimarykeyString(CurrentPersonCode);
+                if (!picDB.SelectAction(strPerson, ref PersonRec)) return 0;
+
+                return PersonRec.DepartmentCode;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return 0;
+            }
+            finally
+            {
+                picDB.close(); picDB = null;
+                cbiDB.close(); cbiDB = null;
+            }
+
+        }
+        #endregion
+
+        #region 工事コードと承認機能コードより現在管理担当部署コードを取得
+        /// <summary>
+        /// 工事コードと承認機能コードより現在管理担当部署コードを取得する
+        /// </summary>
+        /// <returns></returns>
+        public static int GetFromConstrAndAppTheDep(int ConstructionCode, int ApprovalCode, int OrderNo)
+        {
+            IOProcessApproval ApprovalDB = new IOProcessApproval();
+            try
+            {
+                // 管理担当者コードを取得する
+                StringBuilder strSQL = new StringBuilder();
+                strSQL.Append(ApprovalDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, OrderNo, s_PrimartyRecord));
+                ProcessApproval ApprovalRec = new ProcessApproval();
+
+                int CurrentPersonCode = 0;
+                DateTime AppDate = DateTime.Now;
+                if (ApprovalDB.SelectAction(strSQL.ToString(), ref ApprovalRec))
+                {   // 申請データがある時はそのデータ
+                    CurrentPersonCode = ApprovalRec.PersonCode;
+                    AppDate = ApprovalRec.PetitionApprovalDate;
+                }
+                else
+                {
+                    // データが無い場合（申請時）はログインユーザー
+                    CurrentPersonCode = CommonMotions.LoginUserData.PersonCode;
+                }
+
+                // 担当者部署取得
+                StringBuilder strPerson = new StringBuilder();
+
+                strPerson.Append(" Select * From");
+                strPerson.Append(" (Select");
+                strPerson.Append(" PersonCode");
+                strPerson.Append(", StartDate");
+                strPerson.Append(", Case");
+                strPerson.AppendFormat(" When DATE(CompDate) = DATE('{0}')", DateTime.MinValue.ToShortDateString());
+                strPerson.AppendFormat(" Then DATE('{0}')", DateTime.MaxValue.ToShortDateString());
+                strPerson.Append(" Else DATE(CompDate)");
+                strPerson.Append(" End As CompDate");
+                strPerson.Append(", DepartmentCode");
+                strPerson.Append(", DepartmentName");
+                strPerson.Append(" From");
+                strPerson.Append(" ChgChargeDep) As ChgMan");
+                strPerson.Append(" Where");
+                strPerson.AppendFormat(" ChgMan.PersonCode = {0}", CurrentPersonCode);
+                strPerson.AppendFormat(" And(DATE(ChgMan.StartDate) <= DATE('{0}') And DATE('{0}') <= DATE(ChgMan.CompDate))", AppDate.ToShortDateString());
+
+                ArrayList PersonRec = new ArrayList();
+                if (!ApprovalDB.ExecuteReader(strPerson.ToString(), ref PersonRec)) return 0;
+                if(PersonRec.Count<1) return 0;
+
+                object[] objRec = (object[])PersonRec[0];
+                int nDepartmentCode = CommonMotions.cnvInt(objRec[3]);
+
+                return nDepartmentCode;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return 0;
+            }
+            finally
+            {
+                ApprovalDB.close(); ApprovalDB = null;
+            }
+        }
+        #endregion
+
+        #region 担当者コードと承認機能コードより現在管理担当部署コードを取得
+        /// <summary>
+        /// 担当者コードと承認機能コードより現在管理担当部署コードを取得する
+        /// </summary>
+        /// <returns></returns>
+        public static int GetFromPersonAndApprovalTheDepartment(int PersonCode, int ApprovalCode, DateTime OrderDate, int OrderNo)
+        {
+            IOMPersonInCharge picDB = new IOMPersonInCharge();
+            IOPersonApproval ApprovalDB = new IOPersonApproval();
+            try
+            {
+                // 管理担当者コードを取得する
+                string strSQL = ApprovalDB.CreatePrimarykeyString(PersonCode, ApprovalCode, OrderDate, OrderNo, s_PrimartyRecord);
+                PersonApproval ApprovalRec = new PersonApproval();
+                int CurrentPersonCode = 0;
+                if (ApprovalDB.SelectAction(strSQL, ref ApprovalRec))
+                {   // 申請データがある時はそのデータ
+                    CurrentPersonCode = ApprovalRec.PersonCode;
+                }
+                else
+                {
+                    // データが無い場合（申請時）は申請ユーザー
+                    CurrentPersonCode = PersonCode;
+                }
+
+                // 担当者部署取得
+                PersonInChargeMaster PersonRec = new PersonInChargeMaster();
+                string strPerson = picDB.CreatePrimarykeyString(CurrentPersonCode);
+                if (!picDB.SelectAction(strPerson, ref PersonRec)) return 0;
+
+                return PersonRec.DepartmentCode;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return 0;
+            }
+            finally
+            {
+                ApprovalDB.close(); ApprovalDB = null;
+                picDB.close(); picDB = null;
+            }
+        }
+        #endregion
+
+        #region 工事コードと承認機能コードより現在管理担当者コードを取得
+        /// <summary>
+        /// 工事コードと承認機能コードより現在管理担当者コードを取得する
+        /// </summary>
+        /// <returns></returns>
+        public static int GetFromConstructionAndApprovalThePerson(int ConstructionCode, int ApprovalCode)
+        {
+            IOConstructionBaseInfo cbiDB = new IOConstructionBaseInfo();
+            try
+            {
+                // 工事基本情報取得
+                ConstructionBaseInfo baseRec = new ConstructionBaseInfo();
+                string strSQL = string.Format(" Where ConstructionCode = {0}", ConstructionCode);
+                if (!cbiDB.SelectAction(strSQL, ref baseRec)) return 0;
+
+                // 承認機能コードにより取得する担当者コードを取得する
+                string AppString = ClsExcute.AppovalList[ApprovalCode];
+                int CurrentPersonCode = 0;
+                if (AppString.Equals("積算見積書承認"))
+                {
+                    CurrentPersonCode = baseRec.SalesPersonCode;
+                }
+                else if (AppString.Equals("積算予算書承認"))
+                {
+                    CurrentPersonCode = baseRec.SalesPersonCode;
+                }
+                else if (AppString.Equals("工事予算書承認"))
+                {
+                    CurrentPersonCode = baseRec.ConstructionPersonCode;
+                }
+                else if (AppString.Equals("注文書承認"))
+                {
+                    CurrentPersonCode = baseRec.ConstructionPersonCode;
+                }
+                else if (AppString.Equals("継続案件承認"))
+                {
+                    CurrentPersonCode = baseRec.ConstructionPersonCode;
+                }
+                else if (AppString.Equals("請求承認"))
+                {
+                    CurrentPersonCode = baseRec.ConstructionPersonCode;
+                }
+                else if (AppString.Equals("工事日報承認"))
+                {
+                    CurrentPersonCode = baseRec.ConstructionPersonCode;
+                }
+                else if (AppString.Equals("議事録承認"))
+                {
+                    CurrentPersonCode = baseRec.ConstructionPersonCode;
+                }
+                else if (AppString.Equals("質疑承認"))
+                {
+                    CurrentPersonCode = baseRec.ConstructionPersonCode;
+                }
+
+                return CurrentPersonCode;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return 0;
+            }
+            finally
+            {
+                cbiDB.close(); cbiDB = null;
+            }
+        }
+        #endregion
+
+        #region 承認数取得（工事承認）
+        /// <summary>
+        /// 該当工事より承認数取得する
+        /// </summary>
+        /// <returns></returns>
+        public static int GetProcessApprovalDataCount(int ConstructionCode, int ApprovalCode, int ApprovalCount)
+        {
+            IOProcessApproval paDB = new IOProcessApproval();
+            try
+            {
+                // 承認データ取得
+                string strSQL = paDB.CreatePrimarykeyString(ConstructionCode, ApprovalCode, ApprovalCount);
+                strSQL += string.Format(" And SeqNo != {0} And ApprovalStatus = {1}", s_PrimartyRecord, (int)CommonDefine.ApprovalStatus.Approval);
+                List<ProcessApproval> ApprovalList = new List<ProcessApproval>();
+                if (!paDB.SelectAction(strSQL, ref ApprovalList)) return 0;
+
+                return ApprovalList.Count;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return 0;
+            }
+            finally
+            {
+                paDB.close(); paDB = null;
+            }
+        }
+        #endregion
+
+        #region 承認数取得（担当者承認）
+        /// <summary>
+        /// 担当者申請より承認数取得する
+        /// </summary>
+        /// <returns></returns>
+        public static int GetPersonApprovalDataCount(int PersonCode, int ApprovalCode, DateTime ApprovalDate)
+        {
+            IOPersonApproval paDB = new IOPersonApproval();
+            try
+            {
+                // 承認データ取得
+                string strSQL = paDB.CreatePrimarykeyString(PersonCode, ApprovalCode, ApprovalDate);
+                strSQL += string.Format(" And SeqNo != {0} And ApprovalStatus = {1}", s_PrimartyRecord, (int)CommonDefine.ApprovalStatus.Approval);
+                List<PersonApproval> ApprovalList = new List<PersonApproval>();
+                if (!paDB.SelectAction(strSQL, ref ApprovalList)) return 0;
+
+                return ApprovalList.Count;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return 0;
+            }
+            finally
+            {
+                paDB.close(); paDB = null;
+            }
+        }
+        #endregion
+
+        #region 承認経路数を取得する
+        /// <summary>
+        /// 承認マスタより承認経路数を取得する
+        /// </summary>
+        /// <param name="ApprovalCode"></param>
+        /// <param name="DepartmentCode"></param>
+        /// <returns></returns>
+        public static int GetApprovalMasterCount(int ApprovalCode, int DepartmentCode)
+        {
+            IOMApproval mpaDB = new IOMApproval();
+            try
+            {
+                // 承認経路マスタ取得
+                string strMSQL = mpaDB.CreatePrimarykeyString(ApprovalCode, DepartmentCode);
+                List<ApprovalMaster> MasterList = new List<ApprovalMaster>();
+                if (!mpaDB.SelectAction(strMSQL, ref MasterList)) return 0;
+
+                // 初期値セット
+                return MasterList.Count;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return 0;
+            }
+            finally
+            {
+                mpaDB.close(); mpaDB = null;
+            }
+        }
+        #endregion
+
+        #region 承認画面の起動を確認する
+        /// <summary>
+        /// 承認画面が起動しているかを確認する
+        /// </summary>
+        /// <returns></returns>
+        public static bool ExceApprovalScreen()
+        {
+            try
+            {
+                int ApprovalNo = (int)ClsExcute.SubFormExecuteNo.ApprovalScreen;
+                // 現在画面階層取得
+                int nPoint = ClsExcute.GetNowProcessPoint();
+                // 先頭はエラー
+                if (nPoint < 1) return false;
+
+                bool bRet = false;
+                // 承認画面からの画面遷移は1画面（対象画面）のみになったのですぐ前にあるはず
+                int nPrevCnt = ClsExcute.GetNowProcessPoint() - 1;
+                if (ClsExcute.ProcControlPara[nPrevCnt].ProcNo == ApprovalNo) { bRet = true; }
+
+                return bRet;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+        }
+        #endregion
+
+        #region << ---------- プロセス画面承認パネル制御
+        #region 制御パネル位置
+        /// <summary>
+        /// 制御パネル位置
+        /// </summary>
+        public enum AppPnlDef
+        {
+            /// <summary>
+            /// 未申請・承認済
+            /// </summary>
+            Normal = 0,
+            /// <summary>
+            /// 承認パネル
+            /// </summary>
+            Approval,
+        }
+        #endregion
+
+        #region 入力画面申請ボタン制御処理（工事承認）
+        /// <summary>
+        /// 入力画面申請ボタン制御処理（工事承認）
+        /// </summary>
+        /// <param name="ApprovalNo">承認処理番号</param>
+        /// <param name="ConstrCode">工事番号</param>
+        /// <param name="OrderNo">受付番号</param>
+        /// <param name="AppPnls">パネルリスト</param>
+        public static void CtrlConstrAppPanel(int ApprovalNo, int ConstrCode, int OrderNo, List<Panel> AppPnls)
+        {
+            try
+            {
+                // 対象パネルを全て非表示にする
+                foreach (Panel CurPnl in AppPnls) { CurPnl.Visible = false; }
+
+                // 案件に対して申請がされて無い場合
+                if (!CheckProcessPetition(ConstrCode, ApprovalNo, OrderNo))
+                {
+                    // 申請パネルを表示する（未申請）
+                    PetitionPanelDisplay(AppPnls, true, true);
+                }
+                else
+                {
+                    // 最終承認確認（工事承認）
+                    if (CheckProcessApproval(ConstrCode, ApprovalNo, OrderNo))
+                    {
+                        // 申請パネルを表示する（承認済）
+                        PetitionPanelDisplay(AppPnls, false, false);
+                        // 承認件数のセット
+                        SetApprovalCount(ApprovalNo, ConstrCode, OrderNo, AppPnls);
+                    }
+                    else
+                    {
+                        // 申請中でログイン者が承認者の場合は承認ボタンを表示する
+                        if(CheckUserForApprover(ApprovalNo, CommonMotions.LoginUserData.DepartmentCode))
+                        {
+                            // 承認パネル表示
+                            AppPnls[(int)AppPnlDef.Approval].Visible = true;
+                        }
+                        // ログインユーザーは申請者かどうかを確認する
+                        else if(CheckUserForApplicant(ConstrCode, ApprovalNo, OrderNo))
+                        {
+                            // 申請パネルを表示する（承認中）
+                            PetitionPanelDisplay(AppPnls, false, true);
+                            // 承認件数のセット
+                            SetApprovalCount(ApprovalNo, ConstrCode, OrderNo, AppPnls);
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
+        #region 申請パネル状態表示
+        /// <summary>
+        /// 申請パネル状態表示
+        /// </summary>
+        private static void PetitionPanelDisplay(List<Panel> AppPnls, bool bPetition, bool bNone)
+        {
+            try
+            {
+                // 申請パネル表示
+                AppPnls[(int)AppPnlDef.Normal].Visible = true;
+                // 承認ボタンパネル非表示
+                AppPnls[(int)AppPnlDef.Approval].Visible = false;
+
+                // ボタン取得
+                Panel BasePnl = AppPnls[(int)AppPnlDef.Normal];
+                Button btnPetition = CommonMotions.GetButtton2Collection(BasePnl.Controls, "btnPetition");
+                Button btnApproval = CommonMotions.GetButtton2Collection(BasePnl.Controls, "btnApproval");
+                Label lblAppCnt = CommonMotions.GetLabel2Collection(BasePnl.Controls, "lblApprovalCount");
+                // 取得できない場合は処理しない
+                if (btnPetition == null || btnApproval == null || lblAppCnt == null) return;
+
+                if (bPetition)
+                {
+                    // 未申請ボタン
+                    PetitionButtonDisplay(btnPetition, btnApproval, lblAppCnt, bNone);
+                }
+                else
+                {
+                    // 承認済ボタン
+                    ApprovalButtonDisplay(btnPetition, btnApproval, lblAppCnt, bNone);
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
+        #region 申請パネル：申請ボタン表示
+        /// <summary>
+        /// 申請パネル：申請ボタン表示
+        /// </summary>
+        private static void PetitionButtonDisplay(Button btnPetition, Button btnApproval, Label lblAppCnt, bool bNone)
+        {
+            try
+            {
+                // 申請ボタン
+                btnPetition.Visible = true;
+                btnApproval.Visible = false;
+                lblAppCnt.Visible = false;
+
+                int nWidth = btnPetition.Width + btnApproval.Width + lblAppCnt.Width;
+                btnPetition.Size = new Size(nWidth, btnPetition.Size.Height);
+
+                btnPetition.BackColor = Color.White;
+                if (bNone)
+                {
+                    btnPetition.Text = CommonDefine.PetitionButtonString[0];
+                    btnPetition.ForeColor = Color.Red;
+                }
+                else
+                {
+                    btnPetition.Text = CommonDefine.PetitionButtonString[1];
+                    btnPetition.ForeColor = Color.Black;
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
+        #region 申請パネル：承認済ボタン表示
+        /// <summary>
+        /// 申請パネル：承認済ボタン表示
+        /// </summary>
+        private static void ApprovalButtonDisplay(Button btnPetition, Button btnApproval, Label lblAppCnt, bool bNone)
+        {
+            try
+            {
+                // 承認済ボタン
+                btnPetition.Visible = false;
+                btnApproval.Visible = true;
+                lblAppCnt.Visible = true;
+
+                btnApproval.Location = btnPetition.Location;
+
+                int nWidth = btnPetition.Width + btnApproval.Width;
+                btnApproval.Size = new Size(nWidth, btnApproval.Size.Height);
+
+                btnApproval.BackColor = Color.White;
+                btnApproval.ForeColor = Color.Black;
+                if (bNone)
+                {
+                    btnApproval.Text = CommonDefine.ApprovalButtonString[0];
+                }
+                else
+                {
+                    btnApproval.Text = CommonDefine.ApprovalButtonString[1];
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
+        #region 承認数表示
+        /// <summary>
+        /// 承認件数のセット
+        /// </summary>
+        private static void SetApprovalCount(int ApprovalNo, int ConstrCode, int OrderNo, List<Panel> AppPnls)
+        {
+            IOProcessApproval ApprDB = new IOProcessApproval();
+
+            // 承認データ取得
+            int AppCnt = 0;
+            // 承認経路マスタ取得
+            int MsCnt = 0;
+
+            Panel BasePnl = AppPnls[(int)AppPnlDef.Normal];
+            Label lblAppCnt = CommonMotions.GetLabel2Collection(BasePnl.Controls, "lblApprovalCount");
+            // 取得できない場合は処理しない
+            if (lblAppCnt == null) return;
+            try
+            {
+                StringBuilder strSQL = new StringBuilder();
+                int nLoppCnt = s_SQLAppRote.Length - 1;
+                for (int i = 0; i < nLoppCnt; i++)
+                {
+                    switch (i)
+                    {
+                        case 34:
+                            strSQL.AppendFormat(s_SQLAppRote[i], ConstrCode);
+                            break;
+                        case 35:
+                            strSQL.AppendFormat(s_SQLAppRote[i], ApprovalNo);
+                            break;
+                        case 36:
+                            strSQL.AppendFormat(s_SQLAppRote[i], OrderNo);
+                            break;
+                        case 37:
+                            strSQL.AppendFormat(s_SQLAppRote[i], CommonDefine.s_Default_OrderNo);
+                            break;
+                        default:
+                            strSQL.Append(s_SQLAppRote[i]);
+                            break;
+                    }
+                }
+
+                ArrayList arList = new ArrayList();
+                if (!ApprDB.ExecuteReader(strSQL.ToString(), ref arList)) return;
+                if (arList.Count < 1) return;
+
+                foreach (object[] CurRec in arList)
+                {
+                    // マスタ承認者数取得
+                    if (CommonMotions.cnvInt(CurRec[(int)AppRoteNo.ApprovalPerson]) > 0) MsCnt++;
+
+                    // データ承認者数取得
+                    if (CommonMotions.cnvInt(CurRec[(int)AppRoteNo.ApprovalStatus]) > 0) AppCnt++;
+                }
+
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+            finally
+            {
+                ApprDB.close(); ApprDB = null;
+
+                // 承認数セット
+                lblAppCnt.Text = string.Format("{0}/{1}", AppCnt, MsCnt);
+            }
+        }
+        #endregion
+        #endregion << ---------- プロセス画面承認パネル制御
+    }
+}
Index: branches/src/ProcessManagement/ProcessManagement/DB/IOAccess/IOChgConstrCharge.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/DB/IOAccess/IOChgConstrCharge.cs	(nonexistent)
+++ branches/src/ProcessManagement/ProcessManagement/DB/IOAccess/IOChgConstrCharge.cs	(revision 366)
@@ -0,0 +1,496 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Data;
+using System.Collections;
+
+using log4net;
+using MySql.Data.MySqlClient;           // Data Provider for MySql
+
+using ProcessManagement.DB.MySql;
+using ProcessManagement.DB.Core;
+using ProcessManagement.DataModel;
+using ProcessManagement.Common;
+
+namespace ProcessManagement.DB.IOAccess
+{
+    /// <summary>
+    /// 工事担当変更履歴データＤＢアクセス
+    /// </summary>
+    public class IOChgConstrCharge : MySqlProcess
+    {
+        #region 定義部
+        /// <summary>
+        /// log4netログを使用する
+        /// </summary>
+        private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+        #endregion
+
+        #region 定数
+        /// <summary>
+        /// 担当者毎経費データフィールド並び
+        /// </summary>
+        public enum TableColumn
+        {
+            ConstructionCode = 0,   // 工事コード
+            Division,               // 設定区分
+            SeqNo,                  // 連番
+            DepartmentCode,         // 部署コード
+            PersonCode,             // 担当者コード
+            StartDate,              // 担当開始年月日
+            CompDate,               // 担当終了年月日
+            SourceCode,             // 元工事コード
+            DeleteFlg,              // 削除フラグ
+
+            EntryDate,
+            UpdateDate,
+        }
+        #endregion
+
+        #region コンストラクタ
+        /// <summary>
+        /// コンストラクタ
+        /// </summary>
+        /// <param name="ConnectionString"></param>
+        public IOChgConstrCharge()
+            : base(DBCommon.Instance.DBConnectString)
+        {
+        }
+        #endregion
+
+        #region SQL作成
+        /// <summary>
+        /// SQL作成
+        /// </summary>
+        private string CreateSelectSQL()
+        {
+            // SQL作成
+            StringBuilder strcmd = new StringBuilder();
+            strcmd.Append("SELECT");
+
+            bool bColFirst = true;
+            string strWork = string.Empty;
+            foreach (var gender in Enum.GetValues(typeof(TableColumn)))
+            {
+                strWork = gender.ToString();
+                if (!bColFirst) strcmd.Append(",");
+                if (strWork.Equals("EntryDate") || strWork.Equals("UpdateDate"))
+                {
+                    strcmd.AppendFormat(" DATE_FORMAT({0}, '%Y/%m/%d %H:%i:%s')", strWork);
+                }
+                else
+                {
+                    strcmd.AppendFormat(" {0}", strWork);
+                }
+                bColFirst = false;
+            }
+
+            strcmd.Append(" FROM ChgConstrCharge");
+
+            return strcmd.ToString();
+        }
+        #endregion
+
+        #region 複数読込み処理
+        public bool SelectAction(string AddSQLString, ref List<ChgConstrCharge> data, bool bConnect = true)
+        {
+            // インターフェース
+            StringBuilder strcmd = new StringBuilder();
+            ArrayList arData = new ArrayList();
+
+            try
+            {
+                // SQL作成
+                strcmd.Append(CreateSelectSQL());
+                strcmd.Append(AddSQLString);
+
+                // SQL実行
+                if (!ExecuteReader(strcmd.ToString(), ref arData, bConnect)) return false;
+
+                // データセット
+                foreach (object[] objwrk in arData)
+                {
+                    ChgConstrCharge work = new ChgConstrCharge();
+                    Reader2Struct(objwrk, ref work);
+                    data.Add(work);
+                }
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}：{2}", CommonMotions.GetMethodName(2), ex.Message, strcmd.ToString());
+                return false;
+            }
+        }
+        #endregion
+
+        #region 1件読込み処理
+        public bool SelectAction(string AddSQLString, ref ChgConstrCharge data, bool bConnect = true)
+        {
+            // インターフェース
+            StringBuilder strcmd = new StringBuilder();
+            ArrayList arData = new ArrayList();
+
+            try
+            {
+                strcmd.Append(CreateSelectSQL());
+                strcmd.Append(AddSQLString);
+
+                // SQL実行
+                if (!ExecuteReader(strcmd.ToString(), ref arData, bConnect)) return false;
+                if (arData.Count == 0) return false;
+
+                // データセット
+                foreach (object[] objwrk in arData)
+                {
+                    Reader2Struct(objwrk, ref data);
+                    break;
+                }
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}：{2}", CommonMotions.GetMethodName(2), ex.Message, strcmd.ToString());
+                return false;
+            }
+        }
+        #endregion
+
+        #region 1件追加処理
+        /// <summary>
+        /// 担当者毎経費データ追加
+        /// </summary>
+        /// <param name="data">担当者毎経費データデータ</param>
+        /// <returns>true：成功 false：失敗</returns>
+        public bool InsertAction(ChgConstrCharge work, bool bConnect = true)
+        {
+            StringBuilder strcmd = new StringBuilder();
+            try
+            {
+                bool bColFirst = true;
+                strcmd.Append("INSERT INTO ChgConstrCharge");
+                strcmd.Append(" (");
+                foreach (var gender in Enum.GetValues(typeof(TableColumn)))
+                {
+                    if (!bColFirst) strcmd.Append(", ");
+                    strcmd.Append(gender.ToString());
+                    bColFirst = false;
+                }
+                strcmd.Append(") VALUES (");
+
+                strcmd.AppendFormat("  {0}", work.ConstructionCode);    // 工事コード
+                strcmd.AppendFormat(", {0}", work.Division);            // 設定区分
+                strcmd.AppendFormat(", {0}", work.SeqNo);               // 連番
+                strcmd.AppendFormat(", {0}", work.DepartmentCode);      // 部署コード
+                strcmd.AppendFormat(", {0}", work.PersonCode);          // 担当者コード
+                strcmd.AppendFormat(", STR_TO_DATE('{0}','%Y/%m/%d')", work.StartDate.ToShortDateString()); // 担当開始年月日
+                strcmd.AppendFormat(", STR_TO_DATE('{0}','%Y/%m/%d')", work.CompDate.ToShortDateString());  // 担当終了年月日
+                strcmd.AppendFormat(", {0}", work.SourceCode);          // 元工事コード
+                strcmd.AppendFormat(", {0}", work.DeleteFlg);           // 削除フラグ
+
+                strcmd.AppendFormat(", STR_TO_DATE('{0}','%Y/%m/%d %H:%i:%s')", work.EntryDate);
+                strcmd.AppendFormat(", STR_TO_DATE('{0}','%Y/%m/%d %H:%i:%s')", work.UpdateDate);
+                strcmd.Append(")");
+
+                if (!ExecuteNonQuery(strcmd.ToString(), bConnect)) return false;
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}：{2}", CommonMotions.GetMethodName(2), ex.Message, strcmd.ToString());
+                return false;
+            }
+        }
+        #endregion
+
+        #region 複数追加処理
+        public bool InsertAction(List<ChgConstrCharge> data, bool bConnect = true)
+        {
+            StringBuilder strcmd = new StringBuilder();
+            try
+            {
+                bool bColFirst = true;
+                strcmd.Append("INSERT INTO ChgConstrCharge");
+                strcmd.Append(" (");
+                foreach (var gender in Enum.GetValues(typeof(TableColumn)))
+                {
+                    if (!bColFirst) strcmd.Append(", ");
+                    strcmd.Append(gender.ToString());
+                    bColFirst = false;
+                }
+                strcmd.Append(") VALUES");
+
+                bool bDataFirst = true;
+                foreach (ChgConstrCharge work in data)
+                {
+                    if (bDataFirst) strcmd.Append(" (");
+                    else strcmd.Append(", (");
+
+                    strcmd.AppendFormat("  {0}", work.ConstructionCode);    // 工事コード
+                    strcmd.AppendFormat(", {0}", work.Division);            // 設定区分
+                    strcmd.AppendFormat(", {0}", work.SeqNo);               // 連番
+                    strcmd.AppendFormat(", {0}", work.DepartmentCode);      // 部署コード
+                    strcmd.AppendFormat(", {0}", work.PersonCode);          // 担当者コード
+                    strcmd.AppendFormat(", STR_TO_DATE('{0}','%Y/%m/%d')", work.StartDate.ToShortDateString()); // 担当開始年月日
+                    strcmd.AppendFormat(", STR_TO_DATE('{0}','%Y/%m/%d')", work.CompDate.ToShortDateString());  // 担当終了年月日
+                    strcmd.AppendFormat(", {0}", work.SourceCode);          // 元工事コード
+                    strcmd.AppendFormat(", {0}", work.DeleteFlg);           // 削除フラグ
+
+                    strcmd.AppendFormat(", STR_TO_DATE('{0}','%Y/%m/%d %H:%i:%s')", work.EntryDate);
+                    strcmd.AppendFormat(", STR_TO_DATE('{0}','%Y/%m/%d %H:%i:%s')", work.UpdateDate);
+                    strcmd.Append(")");
+
+                    bDataFirst = false;
+                }
+
+                if (!ExecuteNonQuery(strcmd.ToString(), bConnect)) return false;
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}：{2}", CommonMotions.GetMethodName(2), ex.Message, strcmd.ToString());
+                return false;
+            }
+        }
+        #endregion
+
+        #region 更新処理
+        /// <summary>
+        /// 担当者毎経費データ更新
+        /// </summary>
+        /// <param name="AddSQLString">更新条件SQL文字列</param>
+        /// <param name="data">担当者毎経費データデータ</param>
+        /// <returns>true：成功 false：失敗</returns>
+        public bool UpdateAction(string AddSQLString, ChgConstrCharge data, bool bConnect = true)
+        {
+            StringBuilder strcmd = new StringBuilder();
+            try
+            {
+
+                strcmd.Append("UPDATE ChgConstrCharge");
+
+                strcmd.Append(" SET");
+
+                strcmd.AppendFormat(" ConstructionCode = {0}", data.ConstructionCode);  // 工事コード
+                strcmd.AppendFormat(", Division = {0}", data.Division);                 // 設定区分
+                strcmd.AppendFormat(", SeqNo = {0}", data.SeqNo);                       // 連番
+                strcmd.AppendFormat(", DepartmentCode = {0}", data.DepartmentCode);     // 部署コード
+                strcmd.AppendFormat(", PersonCode = {0}", data.PersonCode);             // 担当者コード
+                strcmd.AppendFormat(", StartDate = STR_TO_DATE('{0}','%Y/%m/%d')",
+                                        data.StartDate.ToShortDateString());            // 担当開始年月日
+                strcmd.AppendFormat(", CompDate = STR_TO_DATE('{0}','%Y/%m/%d')",
+                                        data.CompDate.ToShortDateString());             // 担当終了年月日
+                strcmd.AppendFormat(", SourceCode = {0}", data.SourceCode);             // 元工事コード
+                strcmd.AppendFormat(", DeleteFlg = {0}", data.DeleteFlg);               // 削除フラグ
+
+                strcmd.Append(", UpdateDate = NOW()");
+                strcmd.Append(AddSQLString);
+
+                if (!ExecuteNonQuery(strcmd.ToString(), bConnect)) return false;
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}：{2}", CommonMotions.GetMethodName(2), ex.Message, strcmd.ToString());
+                return false;
+            }
+        }
+        #endregion
+
+        #region 削除処理
+        /// <summary>
+        /// 担当者毎経費データ削除
+        /// </summary>
+        /// <param name="AddSQLString">削除条件SQL文字列</param>
+        /// <param name="data">担当者毎経費データデータ</param>
+        /// <returns>true：成功 false：失敗</returns>
+        public bool DeleteAction(string AddSQLString, bool bConnect = true)
+        {
+            // インターフェース
+            StringBuilder strcmd = new StringBuilder();
+            try
+            {
+                strcmd.AppendFormat("{0}{1}", "DELETE FROM ChgConstrCharge", AddSQLString);
+
+                if (!ExecuteNonQuery(strcmd.ToString(), bConnect)) return false;
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}：{2}", CommonMotions.GetMethodName(2), ex.Message, strcmd.ToString());
+                return false;
+            }
+        }
+        #endregion
+
+        #region 1項目の更新を行う
+        /// <summary>
+        /// 1項目の更新を行う
+        /// </summary>
+        /// <returns></returns>
+        public bool UpdateFeild(int ConstructionCode, int Division, int SeqNo, int FeildNo, object value, bool bConnect = true)
+        {
+            StringBuilder strcmd = new StringBuilder();
+            try
+            {
+                strcmd.Append("UPDATE ChgConstrCharge");
+
+                strcmd.Append(" SET");
+                switch (FeildNo)
+                {
+                    case (int)TableColumn.ConstructionCode:         // 工事コード
+                        strcmd.AppendFormat(" ConstructionCode = {0}", ((int)value).ToString());
+                        break;
+                    case (int)TableColumn.Division:                 // 設定区分
+                        strcmd.AppendFormat(" Division = {0}", ((int)value).ToString());
+                        break;
+                    case (int)TableColumn.SeqNo:                    // 連番
+                        strcmd.AppendFormat(" SeqNo = {0}", ((int)value).ToString());
+                        break;
+                    case (int)TableColumn.DepartmentCode:           // 部署コード
+                        strcmd.AppendFormat(" DepartmentCode = {0}", ((int)value).ToString());
+                        break;
+                    case (int)TableColumn.PersonCode:               // 担当者コード
+                        strcmd.AppendFormat(" PersonCode = {0}", ((int)value).ToString());
+                        break;
+                    case (int)TableColumn.StartDate:                // 担当開始年月日
+                        strcmd.AppendFormat(" StartDate = STR_TO_DATE('{0}','%Y/%m/%d')", ((DateTime)value).ToShortDateString());
+                        break;
+                    case (int)TableColumn.CompDate:                 // 担当終了年月日
+                        strcmd.AppendFormat(" CompDate = STR_TO_DATE('{0}','%Y/%m/%d')", ((DateTime)value).ToShortDateString());
+                        break;
+                    case (int)TableColumn.SourceCode:               // 元工事コード
+                        strcmd.AppendFormat(" SourceCode = {0}", ((int)value).ToString());
+                        break;
+                    case (int)TableColumn.DeleteFlg:                // 削除フラグ
+                        strcmd.AppendFormat(" DeleteFlg = {0}", ((int)value).ToString());
+                        break;
+
+                }
+
+                strcmd.Append(", UpdateDate = NOW()");
+                strcmd.Append(CreatePrimarykeyString(ConstructionCode, Division, SeqNo));
+
+                if (!ExecuteNonQuery(strcmd.ToString(), bConnect)) return false;
+
+                return true;
+            }
+            catch (System.Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+        }
+        #endregion
+
+        #region データセット処理
+        /// <summary>
+        /// MySQLDataReaderより構造体へセットする
+        /// </summary>
+        /// <param name="reader">MySQLDataReader</param>
+        /// <param name="wrk">構造体</param>
+        public void Reader2Struct(object[] objwrk, ref ChgConstrCharge wrk)
+        {
+            try
+            {
+                // データ取得
+                wrk.ConstructionCode = int.Parse(objwrk[(int)TableColumn.ConstructionCode].ToString());     // 工事コード
+                wrk.Division = int.Parse(objwrk[(int)TableColumn.Division].ToString());                     // 設定区分
+                wrk.SeqNo = int.Parse(objwrk[(int)TableColumn.SeqNo].ToString());                           // 連番
+                wrk.DepartmentCode = int.Parse(objwrk[(int)TableColumn.DepartmentCode].ToString());         // 部署コード
+                wrk.PersonCode = int.Parse(objwrk[(int)TableColumn.PersonCode].ToString());                 // 担当者コード
+                wrk.StartDate = DateTime.Parse(objwrk[(int)TableColumn.StartDate].ToString());              // 担当開始年月日
+                wrk.CompDate = DateTime.Parse(objwrk[(int)TableColumn.CompDate].ToString());                // 担当終了年月日
+                wrk.SourceCode= int.Parse(objwrk[(int)TableColumn.SourceCode].ToString());                  // 元工事コード
+                wrk.DeleteFlg = int.Parse(objwrk[(int)TableColumn.DeleteFlg].ToString());                   // 削除フラグ
+
+                wrk.EntryDate = DateTime.Parse(objwrk[(int)TableColumn.EntryDate].ToString());
+                wrk.UpdateDate = DateTime.Parse(objwrk[(int)TableColumn.UpdateDate].ToString());
+            }
+            catch (MySqlException myex)
+            {
+                logger.ErrorFormat("ＭｙＳＱＬエラー：{0}：{1}", CommonMotions.GetMethodName(2), myex.Message);
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(2), ex.Message);
+            }
+        }
+        #endregion
+
+        #region 検索文字列作成処理
+        /// <summary>
+        /// 主キー検索の文字列を返す
+        /// </summary>
+        /// <param name="PersonCode"></param>
+        /// <param name="ActionDate"></param>
+        /// <param name="DataType"></param>
+        /// <param name="DataAddCount"></param>
+        /// <returns></returns>
+        public string CreatePrimarykeyString(int ConstructionCode, int Division = 0, int SeqNo = 0)
+        {
+            StringBuilder strWork = new StringBuilder();
+            try
+            {
+                strWork.AppendFormat(" WHERE ConstructionCode = {0}", ConstructionCode);
+                if (Division != 0)
+                    strWork.AppendFormat(" AND Division = {0}", Division);
+                if (SeqNo != 0)
+                    strWork.AppendFormat(" AND SeqNo = {0}", SeqNo);
+
+                return strWork.ToString();
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}：{2}", CommonMotions.GetMethodName(2), ex.Message, strWork.ToString());
+                return string.Empty;
+            }
+        }
+        #endregion
+
+        #region 追加番号の最大値を取得
+        /// <summary>
+        /// 追加番号の最大値を取得する
+        /// </summary>
+        /// <param name="AddSQLString"></param>
+        /// <param name="bConnect"></param>
+        /// <returns></returns>
+        public int SelectMaxAddDataCount(string AddSQLString, bool bConnect = true)
+        {
+            // インターフェース
+            StringBuilder strcmd = new StringBuilder();
+            ArrayList arData = new ArrayList();
+            int iRet = 0;
+            try
+            {
+                // SQL作成
+                strcmd.AppendFormat("SELECT IFNULL(MAX(SeqNo), 0) FROM ChgConstrCharge {0}", AddSQLString);
+
+                // SQL実行
+                if (!ExecuteReader(strcmd.ToString(), ref arData, bConnect)) return iRet;
+
+                // データセット
+                foreach (object[] objwrk in arData)
+                {
+                    if (objwrk[0].ToString().Equals("null"))
+                        iRet = 0;
+                    else
+                        iRet = int.Parse(objwrk[0].ToString());
+                }
+
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}：{2}", CommonMotions.GetMethodName(2), ex.Message, strcmd.ToString());
+            }
+            return iRet;
+        }
+        #endregion
+    }
+}
Index: branches/src/ProcessManagement/ProcessManagement/DB/IOAccess/IOConstructionBaseInfo.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/DB/IOAccess/IOConstructionBaseInfo.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/DB/IOAccess/IOConstructionBaseInfo.cs	(revision 366)
@@ -989,7 +989,9 @@
                 strcmd.Clear();
                 strcmd.Append("UPDATE ConstructionBaseInfo");
                 strcmd.Append(" SET");
-                strcmd.AppendFormat(" TyingFlg = {0}", (int)ConstructionBaseInfo.TyingFlgDef.Standard);
+                strcmd.AppendFormat("  ConstructionYear = {0}", CommonMotions.SystemMasterData.ConstrYear);
+                strcmd.AppendFormat(", ConstructionPeriod = {0}", CommonMotions.SystemMasterData.BusinessPeriod);
+                strcmd.AppendFormat(", TyingFlg = {0}", (int)ConstructionBaseInfo.TyingFlgDef.Standard);
                 strcmd.AppendFormat(", JoinFlg = {0}", (int)ConstructionBaseInfo.JoinFlgDef.Standard);
                 strcmd.AppendFormat(", ConstructionPeriodStart2 = STR_TO_DATE('{0}', '%Y/%m/%d %H:%i:%s')", DateTime.MinValue.ToString());
                 strcmd.AppendFormat(", ConstructionPeriodEnd2 = STR_TO_DATE('{0}', '%Y/%m/%d %H:%i:%s')", DateTime.MinValue.ToString());
Index: branches/src/ProcessManagement/ProcessManagement/DataModel/ChgConstrCharge.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/DataModel/ChgConstrCharge.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/DataModel/ChgConstrCharge.cs	(revision 366)
@@ -18,9 +18,21 @@
         public enum DivisionDef
         {
             /// <summary>
+            /// 担当者無
+            /// </summary>
+            None = 0,
+            /// <summary>
+            /// 営業担当者
+            /// </summary>
+            SalesMain,
+            /// <summary>
+            /// 営業副担当者
+            /// </summary>
+            SalesSub,
+            /// <summary>
             /// 1:指導員給料行
             /// </summary>
-            Instructor = 1,
+            Instructor,
             /// <summary>
             /// 2:副担当者給料行
             /// </summary>
@@ -40,6 +52,10 @@
         private int         m_PersonCode = 0;                   // 担当者コード
         private DateTime    m_StartDate = DateTime.MinValue;    // 担当開始年月日
         private DateTime    m_CompDate = DateTime.MinValue;     // 担当終了年月日
+
+        private int         m_SourceCode = 0;                   // 元工事コード
+        private int         m_DeleteFlg = 0;                    // 削除フラグ
+
         private DateTime    m_EntryDate = DateTime.Now;         // 登録日付
         private DateTime    m_UpdateDate = DateTime.Now;        // 更新日付
         #endregion
@@ -112,6 +128,24 @@
         }
 
         /// <summary>
+        /// 元工事コード
+        /// </summary>
+        public int SourceCode
+        {
+            get { return m_SourceCode; }
+            set { m_SourceCode = value; }
+        }
+
+        /// <summary>
+        /// 削除フラグ
+        /// </summary>
+        public int DeleteFlg
+        {
+            get { return m_DeleteFlg; }
+            set { m_DeleteFlg = value; }
+        }
+
+        /// <summary>
         /// 登録日付
         /// </summary>
         public DateTime EntryDate
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalList/FrmApprovalList.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalList/FrmApprovalList.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalList/FrmApprovalList.cs	(revision 366)
@@ -274,21 +274,26 @@
         /// <param name="e"></param>
         private void numUDConstPro_ValueChanged(object sender, EventArgs e)
         {
-            // �C�x���g�N���A
-            SubControlEvent();
+            try
+            {
+                // �C�x���g�N���A
+                SubControlEvent();
 
-            // �����R���{�{�b�N�X�ύX
-            SetcmbDepartment();
-            // �S���҃R���{�{�b�N�X�ύX
-            SetcmbPersons();
-            // �S���҃R���{�{�b�N�X�Z�b�g���������Z�b�g����
-            if (!SetPerosonToDepartment()) return;
+                // �����R���{�{�b�N�X�ύX
+                SetcmbDepartment();
+                // �S���҃R���{�{�b�N�X�ύX
+                SetcmbPersons();
+                // �S���҃R���{�{�b�N�X�Z�b�g���������Z�b�g����
+                if (!SetPerosonToDepartment()) return;
 
-            // �f�[�^�\��
-            DataDisplay();
-
-            // �C�x���g�Z�b�g
-            SetControlEvent();
+                // �f�[�^�\��
+                DataDisplay();
+            }
+            finally
+            {
+                // �C�x���g�Z�b�g
+                SetControlEvent();
+            }
         }
         #endregion
 
@@ -322,17 +327,22 @@
         /// <param name="e"></param>
         private void cmbConstructionPerson_SelectedIndexChanged(object sender, EventArgs e)
         {
-            // �C�x���g�N���A
-            SubControlEvent();
+            try
+            {
+                // �C�x���g�N���A
+                SubControlEvent();
 
-            // �S���҃R���{�{�b�N�X�Z�b�g���������Z�b�g����
-            if (!SetPerosonToDepartment()) return;
+                // �S���҃R���{�{�b�N�X�Z�b�g���������Z�b�g����
+                if (!SetPerosonToDepartment()) return;
 
-            // �f�[�^�\��
-            DataDisplay();
-
-            // �C�x���g�Z�b�g
-            SetControlEvent();
+                // �f�[�^�\��
+                DataDisplay();
+            }
+            finally
+            {
+                // �C�x���g�Z�b�g
+                SetControlEvent();
+            }
         }
         #endregion
 
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalList/FrmApprovalListAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalList/FrmApprovalListAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalList/FrmApprovalListAuxiliary.cs	(revision 366)
@@ -119,11 +119,11 @@
                 ClsExcute.ProcControlPara[NowPoint].IntExecParameter.Add(iOrderNo);
 
                 // �H�������擾
-                int DepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(iConstructionCode, iApprovalCode, iOrderNo);
+                int DepartmentCode = ClsCommonApproval.GetFromConstrAndAppTheDep(iConstructionCode, iApprovalCode, iOrderNo);
                 // �m�F��ʃt���O
                 bool bPara = true;
                 // ���O�C�����[�U�[���Y�����F�̏��F�҂����`�F�b�N����
-                if (ClsApprovalPermission.CheckUserForApprover(iApprovalCode, DepartmentCode)) bPara = false;
+                if (ClsCommonApproval.CheckUserForApprover(iApprovalCode, DepartmentCode)) bPara = false;
                 // ----- �m�F��ʎg�p�t���O�Z�b�g
                 ClsExcute.ProcControlPara[NowPoint].BoolExecParameter.Add(bPara);
             }
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalPerson/FrmApprovalPerson.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalPerson/FrmApprovalPerson.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalPerson/FrmApprovalPerson.cs	(revision 366)
@@ -236,8 +236,8 @@
         private void FrmApprovalPerson_Load(object sender, EventArgs e)
         {
             // ���F�o�H���ݒ肳��Ă��Ȃ��ꍇ�͋N�����Ȃ�
-            int CurrentDepartmentCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo);
-            if (ClsApprovalPermission.GetApprovalMasterCount(m_ApprovalCode, CurrentDepartmentCode) == 0)
+            int CurrentDepartmentCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo);
+            if (ClsCommonApproval.GetApprovalMasterCount(m_ApprovalCode, CurrentDepartmentCode) == 0)
             {
                 m_bEndFlg = true;
                 this.Close();
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalPerson/FrmApprovalPersonAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalPerson/FrmApprovalPersonAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalPerson/FrmApprovalPersonAuxiliary.cs	(revision 366)
@@ -70,7 +70,7 @@
         {
             // 承認起動画面からの起動はボタン表示しない
             //if (PrevProcessCheck()) btnTargetData.Visible = false;
-            if (ClsApprovalPermission.ExceApprovalScreen((int)ClsExcute.SubFormExecuteNo.ApprovalPerson))
+            if (ClsCommonApproval.ExceApprovalScreen())
                 btnTargetData.Visible = false;
         }
         #endregion
@@ -85,7 +85,7 @@
         {
             try
             {
-                if (!ClsApprovalPermission.CreatePetitionApproval(Rec))
+                if (!ClsCommonApproval.CreatePetitionApproval(Rec))
                 {
                     MessageBox.Show("承認申請に失敗しました。", "申請エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
                     return false;
@@ -128,7 +128,7 @@
                 CreateApprovalData(ref Rec, statusCode);
 
                 // 承認レコード更新
-                if (!ClsApprovalPermission.CreatePetitionApproval(Rec)) return false;
+                if (!ClsCommonApproval.CreatePetitionApproval(Rec)) return false;
 
                 // 申請レコード更新
                 // 承認時は条件を満たすかをチェックする
@@ -138,10 +138,10 @@
                     case (int)CommonDefine.ApprovalStatus.Approval:
                         // ----- 承認
                         // 案件に対して最終承認がされているかを確認する
-                        if (ClsApprovalPermission.CheckPersonApprovalData(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo))
+                        if (ClsCommonApproval.CheckPersonApprovalData(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo))
                         {
                             // 最終承認がされていれば申請レコードを承認へ変更する
-                            ClsApprovalPermission.SetPrimaryRecStatus(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo, (int)CommonDefine.ApprovalStatus.Approval);
+                            ClsCommonApproval.SetPrimaryRecStatus(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo, (int)CommonDefine.ApprovalStatus.Approval);
 
                             // 最終承認が成された後の処理
                             ApprovalNextProcess();
@@ -157,7 +157,7 @@
                         break;
                     default:
                         // ----- 承認以外
-                        ClsApprovalPermission.SetPrimaryRecStatus(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo, (int)CommonDefine.ApprovalStatus.NotApproval);
+                        ClsCommonApproval.SetPrimaryRecStatus(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo, (int)CommonDefine.ApprovalStatus.NotApproval);
                         break;
                 }
 
@@ -403,9 +403,9 @@
         private void SetConfirmationForm()
         {
             // 管理担当部署取得
-            int DepCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo);
+            int DepCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo);
             // ログイン者が承認者かどうか確認する
-            if (ClsApprovalPermission.CheckUserForApprover(m_ApprovalCode, DepCode)) return;
+            if (ClsCommonApproval.CheckUserForApprover(m_ApprovalCode, DepCode)) return;
 
             // 承認者以外は確認画面使用のみ
             panel3.Visible = false;
@@ -593,7 +593,7 @@
                     dgvEntryData.Columns[(int)DispGridColumn.DisplayString].Width = 140;
                 }
 
-                int DepCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo);
+                int DepCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(m_PersonCode, m_ApprovalCode, m_OrderDate, m_OrderNo);
                 // 承認データを取得する
                 StringBuilder strSQL = new StringBuilder();
                 strSQL.Append("SELECT");
@@ -615,7 +615,7 @@
                 strSQL.AppendFormat(" And D.ORDERNO = {0}", m_OrderNo);
                 strSQL.Append(" And D.SEQNO <> 1");
                 strSQL.Append(" AND D.PERSONCODEAPPROVAL = A.APPROVALPERSON");
-                strSQL.AppendFormat(" WHERE A.DEPARTMENTCODE = {0} AND A.APPROVALCODE = {1}",DepCode,m_ApprovalCode);
+                strSQL.AppendFormat(" WHERE A.DEPARTMENTCODE = {0} AND A.APPROVALCODE = {1}", DepCode, m_ApprovalCode);
                 strSQL.Append(" ORDER BY A.DISPLAYORDER");
 
                 ArrayList pAppRec = new ArrayList();
@@ -1028,8 +1028,24 @@
                 strSQL.Append(", ifnull(B.ApprovalAuthority, D.ApprovalAuthority)");
                 strSQL.Append(", ifnull(DATE_FORMAT(B.APPROVALDATE, '%Y/%m/%d'), DATE(NOW()))");
                 strSQL.Append(" From personapproval As C");
-                strSQL.Append(" LEFT JOIN personinchargemaster As F ON F.PersonCode = C.PersonCode");
+
+                strSQL.Append(" INNER JOIN personinchargemaster As F ON F.PersonCode = C.PersonCode");
+
+                strSQL.Append(" Inner Join(Select");
+                strSQL.Append("                 H.PersonCode");
+                strSQL.Append("               , H.StartDate");
+                strSQL.Append("               , Case When DATE (H.CompDate) = DATE('0001/01/01')");
+                strSQL.Append("                      Then DATE ('9999/12/31')");
+                strSQL.Append("                 Else DATE(H.CompDate) End As CompDate");
+                strSQL.Append("               , H.DepartmentCode");
+                strSQL.Append("               , H.DepartmentName");
+                strSQL.Append("            From ChgChargeDep As H) As ChgMan");
+                strSQL.Append("        On ChgMan.PersonCode = P.PersonCode");
+                strSQL.Append("        And(DATE(ChgMan.StartDate) <= DATE(C.PetitionApprovalDate)");
+                strSQL.Append("        And DATE(C.PetitionApprovalDate) <= DATE(ChgMan.CompDate))");
+
                 strSQL.Append(", paymentdatadetail As A");
+
                 strSQL.Append(" LEFT JOIN paymentapprovalinfo As B");
                 strSQL.Append(" ON B.COMPANYCODE = A.COMPANYCODE");
                 strSQL.Append(" And B.TARGETDATE = A.TARGETDATE");
@@ -1036,7 +1052,9 @@
                 strSQL.Append(" And B.SEQNO = A.SEQNO");
                 strSQL.Append(" And B.LINECOUNT = A.LINECOUNT");
                 strSQL.AppendFormat(" And B.APPROVALPERSON = {0}", CommonMotions.LoginUserData.PersonCode);
+
                 strSQL.Append(", approvalmaster As D");
+
                 strSQL.Append(" LEFT JOIN personinchargemaster As E ON E.PersonCode = D.ApprovalPerson");
 
                 strSQL.Append(" Where");
@@ -1049,7 +1067,7 @@
                 strSQL.Append(" And DATE(A.APPROVALDATE) = DATE(C.EntryDate)");
                 strSQL.Append(" And A.APPROVALENDFLG = 1");
                 strSQL.AppendFormat(" And D.ApprovalCode = {0}", m_ApprovalCode);
-                strSQL.Append(" And D.DepartmentCode = F.DepartmentCode");
+                strSQL.Append(" And D.DepartmentCode = C.DepartmentCode");
                 strSQL.AppendFormat(" And D.ApprovalPerson = {0}", CommonMotions.LoginUserData.PersonCode);
 
                 ArrayList DataList = new ArrayList();
@@ -1175,9 +1193,22 @@
 
                 strSQL.Append(" LEFT JOIN personinchargemaster As PersonM ON PersonM.PersonCode = PersonApp.PersonCode");
 
+                strSQL.Append(" Inner Join(Select");
+                strSQL.Append("                 H.PersonCode");
+                strSQL.Append("               , H.StartDate");
+                strSQL.Append("               , Case When DATE (H.CompDate) = DATE('0001/01/01')");
+                strSQL.Append("                      Then DATE ('9999/12/31')");
+                strSQL.Append("                 Else DATE(H.CompDate) End As CompDate");
+                strSQL.Append("               , H.DepartmentCode");
+                strSQL.Append("               , H.DepartmentName");
+                strSQL.Append("            From ChgChargeDep As H) As ChgMan");
+                strSQL.Append("        On ChgMan.PersonCode = P.PersonCode");
+                strSQL.Append("        And(DATE(ChgMan.StartDate) <= DATE(PersonApp.PetitionApprovalDate)");
+                strSQL.Append("        And DATE(PersonApp.PetitionApprovalDate) <= DATE(ChgMan.CompDate))");
+
                 strSQL.Append(" LEFT JOIN approvalmaster As AppM");
                 strSQL.Append(" ON AppM.ApprovalCode = PersonApp.ApprovalCode");
-                strSQL.Append(" And AppM.DepartmentCode = PersonM.DepartmentCode");
+                strSQL.Append(" And AppM.DepartmentCode = ChgMan.DepartmentCode");
 
                 strSQL.Append(" LEFT JOIN personinchargemaster As AppPersonM ON AppPersonM.PersonCode = AppM.ApprovalPerson");
 
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalScreen/FrmApprovalScreen.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalScreen/FrmApprovalScreen.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalScreen/FrmApprovalScreen.cs	(revision 366)
@@ -220,8 +220,8 @@
         private void FrmApprovalScreen_Load(object sender, EventArgs e)
         {
             // ���F�o�H���ݒ肳��Ă��Ȃ��ꍇ�͋N�����Ȃ�
-            int CurrentDepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionCode, m_ApprovalCode, m_OrderNo);
-            if (ClsApprovalPermission.GetApprovalMasterCount(m_ApprovalCode, CurrentDepartmentCode) == 0)
+            int CurrentDepartmentCode = ClsCommonApproval.GetFromConstrAndAppTheDep(m_ConstructionCode, m_ApprovalCode, m_OrderNo);
+            if (ClsCommonApproval.GetApprovalMasterCount(m_ApprovalCode, CurrentDepartmentCode) == 0)
             {
                 m_bEndFlg = true;
                 this.Close();
@@ -411,19 +411,26 @@
         /// <param name="e"></param>
         private void btnEnd_Click(object sender, EventArgs e)
         {
-            // �I�����\���`�F�b�N
-            if (txtHoppesDate.Enabled)
+            try
             {
+                // �I�����\���`�F�b�N
+                if (txtHoppesDate.Enabled)
+                {
 
-                DialogResult dtRet = MessageBox.Show("�\������Ă��܂��񂪁A�I�����܂����H"
-                                                        , "�I���m�F"
-                                                        , MessageBoxButtons.OKCancel
-                                                        , MessageBoxIcon.Question);
-                if (dtRet == DialogResult.Cancel) return;
+                    DialogResult dtRet = MessageBox.Show("�\������Ă��܂��񂪁A�I�����܂����H"
+                                                            , "�I���m�F"
+                                                            , MessageBoxButtons.OKCancel
+                                                            , MessageBoxIcon.Question);
+                    if (dtRet == DialogResult.Cancel) return;
+                }
+
+                m_bEndFlg = true;
+                this.Close();
             }
-
-            m_bEndFlg = true;
-            this.Close();
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
         }
         #endregion
 
@@ -440,7 +447,7 @@
                 // ���F�Ώۃf�[�^�̃`�F�b�N
                 if (!CheckAppData()) return;
 
-                    // ���F�ς݃`�F�b�N
+                // ���F�ς݃`�F�b�N
                 if (!CheckUserAppStat()) return;
 
                 // ���F�����`�F�b�N
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalScreen/FrmApprovalScreenAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalScreen/FrmApprovalScreenAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ApprovalScreen/FrmApprovalScreenAuxiliary.cs	(revision 366)
@@ -121,7 +121,19 @@
         {
             // 承認起動画面からの起動はボタン表示しない
             //if (PrevProcessCheck()) btnTargetData.Visible = false;
-            if (ClsApprovalPermission.ExceApprovalScreen()) btnTargetData.Visible = false;
+            //if (ClsCommonApproval.ExceApprovalScreen()) btnTargetData.Visible = false;
+
+            // 承認画面からの画面遷移は1画面（対象画面）のみになったのですぐ前にあるはず
+            int ApprovalNo = (int)ClsExcute.SubFormExecuteNo.ApprovalScreen;
+            int nPrevCnt = ClsExcute.GetNowProcessPoint() - 1;
+            for (int i = nPrevCnt; i > 0; i--)
+            {
+                if (ClsExcute.ProcControlPara[i].ProcNo == ApprovalNo)
+                {
+                    btnTargetData.Visible = false;
+                    break;
+                }
+            }
         }
         #endregion
 
@@ -241,7 +253,7 @@
         {
             try
             {
-                if (!ClsApprovalPermission.CreatePetitionApproval(Rec))
+                if (!ClsCommonApproval.CreatePetitionApproval(Rec))
                 {
                     MessageBox.Show("承認申請に失敗しました。", "申請エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
                     return false;
@@ -286,13 +298,13 @@
                 CreateApprovalData(ref Rec, statusCode);
 
                 // 承認レコード更新
-                if (!ClsApprovalPermission.CreatePetitionApproval(Rec)) return false;
+                if (!ClsCommonApproval.CreatePetitionApproval(Rec)) return false;
 
                 // 積算予算書承認時は積算見積書も承認する
-                int Code1 = ClsExcute.AppovalList.First(x => x.Value.Equals("積算見積書承認")).Key;
                 int Code2 = ClsExcute.AppovalList.First(x => x.Value.Equals("積算予算書承認")).Key;
                 if (Code2 == m_ApprovalCode)
                 {   // ----- 再起呼出
+                    int Code1 = ClsExcute.AppovalList.First(x => x.Value.Equals("積算見積書承認")).Key;
                     m_ApprovalCode = Code1;
                     ApprovalDataUpDate(statusCode, bInSideFlg);
                     m_ApprovalCode = Code2;
@@ -305,10 +317,10 @@
                     case (int)CommonDefine.ApprovalStatus.Approval:
                         // ----- 承認
                         // 案件に対して最終承認がされているかを確認する
-                        if (ClsApprovalPermission.CheckProcessApprovalData(m_ConstructionCode, m_ApprovalCode, m_OrderNo))
+                        if (ClsCommonApproval.CheckProcessApprovalData(m_ConstructionCode, m_ApprovalCode, m_OrderNo))
                         {
                             // 最終承認がされていれば申請レコードを承認へ変更する
-                            if (!ClsApprovalPermission.SetPrimaryRecStatus(m_ConstructionCode,
+                            if (!ClsCommonApproval.SetPrimaryRecStatus(m_ConstructionCode,
                                                                             m_ApprovalCode,
                                                                             m_OrderNo,
                                                                             statusCode)) return false;
@@ -319,7 +331,7 @@
                         break;
                     default:
                         // ----- 承認以外
-                        if (!ClsApprovalPermission.SetPrimaryRecStatus(m_ConstructionCode,
+                        if (!ClsCommonApproval.SetPrimaryRecStatus(m_ConstructionCode,
                                                                         m_ApprovalCode,
                                                                         m_OrderNo,
                                                                         statusCode)) return false;
@@ -598,9 +610,9 @@
         private void SetConfirmationForm()
         {
             // 管理担当部署取得
-            int DepCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionCode, m_ApprovalCode, m_OrderNo);
+            int DepCode = ClsCommonApproval.GetFromConstrAndAppTheDep(m_ConstructionCode, m_ApprovalCode, m_OrderNo);
             // ログイン者が承認者かどうか確認する
-            if (ClsApprovalPermission.CheckUserForApprover(m_ApprovalCode, DepCode)) return;
+            if (ClsCommonApproval.CheckUserForApprover(m_ApprovalCode, DepCode)) return;
 
             // 承認者以外は確認画面使用のみ
             panel3.Visible = false;
@@ -629,7 +641,7 @@
                 if (!cbiDB.SelectAction(strSQL.ToString(), ref m_ConstrBaseRec)) return false;
 
                 // 担当部署取得
-                int CurrentDepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionCode, m_ApprovalCode, m_OrderNo);
+                int CurrentDepartmentCode = ClsCommonApproval.GetFromConstrAndAppTheDep(m_ConstructionCode, m_ApprovalCode, m_OrderNo);
 
                 // 承認経路マスタ取得
                 strSQL.Clear();
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstractionList/FrmConstructionListAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstractionList/FrmConstructionListAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstractionList/FrmConstructionListAuxiliary.cs	(revision 366)
@@ -1081,13 +1081,20 @@
                 strSQL.Append(", A4.ApprovalStatus");
                 strSQL.Append(" FROM");
                 strSQL.Append(" CONSTRUCTIONLEDGERDETAIL AS A1");
+
+                strSQL.Append(" Left Join purchaseorderdetail As A21");
+                strSQL.Append("    On A21.ConstructionCode = A1.SourceCode");
+                strSQL.Append("    And A21.SourceDetailCnt = A1.DetailCount");
+
                 strSQL.Append(" Left Join purchaseorder As A2");
-                strSQL.Append("    On A2.ConstructionCode = A1.SourceCode");
-                strSQL.Append("    And A2.CompanyCode = A1.CompanyCode");
+                strSQL.Append("    On A2.ConstructionCode = A21.SourceCode");
+                strSQL.Append("    And A2.SeqNo = A21.SeqNo");
+
                 strSQL.Append(" Left Join processapprovaldetail AS A3");
                 strSQL.Append("    On A3.ConstructionCode = A2.ConstructionCode");
                 strSQL.AppendFormat("    And A3.ApprovalCode = {0}", (int)ClsExcute.ApprovalListNo.PurchaseOrderEntryApproval);
                 strSQL.Append("          And A3.LinkCode = A2.SeqNo");
+
                 strSQL.Append(" Left Join processapproval AS A4");
                 strSQL.Append("    On A4.ConstructionCode = A3.ConstructionCode");
                 strSQL.Append("    And A4.ApprovalCode = A3.ApprovalCode");
@@ -1096,6 +1103,7 @@
 
                 strSQL.Append(" Inner Join constructionbaseinfo AS Base");
                 strSQL.Append("    On Base.ConstructionCode = A1.ConstructionCode");
+
                 strSQL.Append(" Inner Join constructiontypemaster As ConstrType");
                 strSQL.Append("    On  ConstrType.TypeCode = Base.ConstructionType");
 
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionBaseInfo/FrmConstructionBaseInfoAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionBaseInfo/FrmConstructionBaseInfoAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionBaseInfo/FrmConstructionBaseInfoAuxiliary.cs	(revision 366)
@@ -3294,74 +3294,58 @@
                 if (m_DspCtrl[(int)DspCnt.OrdersDecisionPriceInTax].Text.Length != 0)
                     work.OrdersDecisionPriceInTax = (int)CommonMotions.cnvUndecidedStringToDouble(m_DspCtrl[(int)DspCnt.OrdersDecisionPriceInTax].Text);
 
-                // �������̍X�V����������ōs��
-                m_DetailNoList.Clear();
-
+                int CtrlDep = (int)DspCnt.SalesDepartment;
+                int CtrlMan = (int)DspCnt.SalesPersonCode;
+                int nDepCode = 0;
+                int nManCode = 0;
+                GetDepManCode(CtrlDep, CtrlMan, ref nDepCode, ref nManCode);
                 // �c�ƒS���ҕ����R�[�h
-                if (m_DspCtrl[(int)DspCnt.SalesDepartment].Text.Length != 0)
-                {
-                    work.SalesDepCode = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.SalesDepartment]).SelectedValue);
-                    if (workList.Count == 0 ||
-                        (workList.Count > 0 && workList[0].SalesDepCode != work.SalesDepCode))
-                        m_DetailNoList.Add((int)ConstructionBaseInfoDetail.DataNoDef.SalesDepartmentName);
-                }
+                if (nDepCode > 0) work.SalesDepCode = nDepCode;
                 // �c�ƒS���҃R�[�h
-                if (m_DspCtrl[(int)DspCnt.SalesPersonCode].Text.Length != 0)
-                    work.SalesPersonCode = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.SalesPersonCode]).SelectedValue);
+                if (nManCode > 0) work.SalesPersonCode = nManCode;
 
+                CtrlDep = (int)DspCnt.SalesSubDepartment;
+                CtrlMan = (int)DspCnt.SalesSubPersonCode;
+                nDepCode = 0;
+                nManCode = 0;
+                GetDepManCode(CtrlDep, CtrlMan, ref nDepCode, ref nManCode);
                 // �c�ƕ��S���ҕ����R�[�h
-                if (m_DspCtrl[(int)DspCnt.SalesSubDepartment].Text.Length != 0)
-                {
-                    work.SalesSubDepCode = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.SalesSubDepartment]).SelectedValue);
-                    if (workList.Count == 0 ||
-                        (workList.Count > 0 && workList[0].SalesSubDepCode != work.SalesSubDepCode))
-                        m_DetailNoList.Add((int)ConstructionBaseInfoDetail.DataNoDef.SalesSubDepartmentName);
-                }
+                if (nDepCode > 0) work.SalesSubDepCode = nDepCode;
                 // �c�ƕ��S���҃R�[�h
-                if (m_DspCtrl[(int)DspCnt.SalesSubPersonCode].Text.Length != 0)
-                    work.SalesSubPersonCode = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.SalesSubPersonCode]).SelectedValue);
+                if (nManCode > 0) work.SalesSubPersonCode = nManCode;
 
+                CtrlDep = (int)DspCnt.ConstructionDepartment;
+                CtrlMan = (int)DspCnt.ConstructionPersonCode;
+                nDepCode = 0;
+                nManCode = 0;
+                GetDepManCode(CtrlDep, CtrlMan, ref nDepCode, ref nManCode);
                 // �H���S���ҕ����R�[�h
-                if (m_DspCtrl[(int)DspCnt.ConstructionDepartment].Text.Length != 0
-                    && m_DspCtrl[(int)DspCnt.ConstructionDepartment].Text != CommonDefine.s_UndecidedString)
-                {
-                    work.ConstrDepCode = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.ConstructionDepartment]).SelectedValue);
-                    if (workList.Count == 0 ||
-                        (workList.Count > 0 && workList[0].ConstrDepCode != work.ConstrDepCode))
-                        m_DetailNoList.Add((int)ConstructionBaseInfoDetail.DataNoDef.ConstrDepartmentName);
-                }
+                if (nDepCode > 0) work.ConstrDepCode = nDepCode;
+
                 // �H���S���҃R�[�h
-                if (m_DspCtrl[(int)DspCnt.ConstructionPersonCode].Text.Length != 0
-                    && m_DspCtrl[(int)DspCnt.ConstructionPersonCode].Text != CommonDefine.s_UndecidedString)
-                    work.ConstructionPersonCode = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.ConstructionPersonCode]).SelectedValue);
+                if (nManCode > 0) work.ConstructionPersonCode = nManCode;
 
+                CtrlDep = (int)DspCnt.ConstrSubDepartment;
+                CtrlMan = (int)DspCnt.ConstrSubPersonCode;
+                nDepCode = 0;
+                nManCode = 0;
+                GetDepManCode(CtrlDep, CtrlMan, ref nDepCode, ref nManCode);
                 // �H�����S���ҕ����R�[�h
-                if (m_DspCtrl[(int)DspCnt.ConstrSubDepartment].Text.Length != 0
-                    && m_DspCtrl[(int)DspCnt.ConstrSubDepartment].Text != CommonDefine.s_UndecidedString)
-                {
-                    work.ConstrSubDepCode = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.ConstrSubDepartment]).SelectedValue);
-                    if (workList.Count == 0 ||
-                        (workList.Count > 0 && workList[0].ConstrSubDepCode != work.ConstrSubDepCode))
-                        m_DetailNoList.Add((int)ConstructionBaseInfoDetail.DataNoDef.ConstrSubDepartmentName);
-                }
+                if (nDepCode > 0) work.ConstrSubDepCode = nDepCode;
+
                 // �H�����S���҃R�[�h
-                if (m_DspCtrl[(int)DspCnt.ConstrSubPersonCode].Text.Length != 0
-                    && m_DspCtrl[(int)DspCnt.ConstrSubPersonCode].Text != CommonDefine.s_UndecidedString)
-                        work.ConstrSubPersonCode = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.ConstrSubPersonCode]).SelectedValue);
+                if (nManCode > 0) work.ConstrSubPersonCode = nManCode;
 
+                CtrlDep = (int)DspCnt.InstructorDepartment;
+                CtrlMan = (int)DspCnt.ConstructionInstructor;
+                nDepCode = 0;
+                nManCode = 0;
+                GetDepManCode(CtrlDep, CtrlMan, ref nDepCode, ref nManCode);
                 // �H���w���������R�[�h
-                if (m_DspCtrl[(int)DspCnt.InstructorDepartment].Text.Length != 0
-                    && m_DspCtrl[(int)DspCnt.InstructorDepartment].Text != CommonDefine.s_UndecidedString)
-                {
-                    work.ConstrInstrDepCode = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.InstructorDepartment]).SelectedValue);
-                    if (workList.Count == 0 ||
-                        (workList.Count > 0 && workList[0].ConstrInstrDepCode != work.ConstrInstrDepCode))
-                        m_DetailNoList.Add((int)ConstructionBaseInfoDetail.DataNoDef.InstrDepartmentName);
-                }
+                if (nDepCode > 0) work.ConstrInstrDepCode = nDepCode;
+
                 // �H���w�����R�[�h
-                if (m_DspCtrl[(int)DspCnt.ConstructionInstructor].Text.Length != 0
-                    && m_DspCtrl[(int)DspCnt.ConstructionInstructor].Text != CommonDefine.s_UndecidedString)
-                    work.ConstructionInstructor = CommonMotions.cnvInt(((ComboBox)m_DspCtrl[(int)DspCnt.ConstructionInstructor]).SelectedValue);
+                if (nManCode > 0) work.ConstructionInstructor = nManCode;
 
                 // �H���ڊǐ�R�[�h
                 if (m_DspCtrl[(int)DspCnt.TransferConstruction].Text.Length != 0)
@@ -3677,7 +3661,7 @@
                 // ��Ɏ擾����
                 List<ConstructionBaseInfoDetail> oldDetail = new List<ConstructionBaseInfoDetail>();
                 GetBaseInfoDetailData(cbidDB, nConstrCode, oldDetail);
-                
+
                 // �o�^�f�[�^
                 ConstructionBaseInfoDetail work = new ConstructionBaseInfoDetail();
                 // �H���R�[�h�Z�b�g
@@ -3687,6 +3671,7 @@
                 int iDifference = (int)DspCnt.OrderersName - (int)ConstructionBaseInfoDetail.DataNoDef.OrderersName;
                 int nStart = (int)ConstructionBaseInfoDetail.DataNoDef.OrderersName;
                 int nComplate = (int)ConstructionBaseInfoDetail.DataNoDef.RevCompleteComment;
+                StringBuilder strSQL = new StringBuilder();
                 for (int i = nStart; i <= nComplate; i++)
                 {
                     TextBox wrkTextBox = ((TextBox)m_DspCtrl[i + iDifference]);
@@ -3716,7 +3701,7 @@
                     }
 
                     // ���̃f�[�^�������ꍇ�͏������Ȃ�
-                    if(CurRec.Count() < 1) continue;
+                    if (CurRec.Count() < 1) continue;
 
                     // �f�[�^������ꍇ�F���e���Ⴆ�΍X�V�o�^
                     if (CurRec[0].DetailString == work.DetailString) continue;
@@ -3767,12 +3752,23 @@
                             DepRec.DetailString = comboBoxEX5.Text.Replace(CommonDefine.s_UndecidedString, "");
                             break;
                     }
-                    // �ݒ薳�͓o�^���Ȃ�
-                    if (DepRec.DetailString.Length < 1) continue;
-
                     // �f�[�^�̗L���𔻒�
                     ConstructionBaseInfoDetail CurRec = oldDetail.Find(x => x.DetailNo == DepRec.DetailNo);
 
+                    // �ݒ薳�͓o�^���Ȃ�
+                    if (DepRec.DetailString.Length < 1)
+                    {
+                        if (CurRec == null) continue;
+                        // ��������΍폜
+                        strSQL.Append(cbidDB.CreatePrimarykeyString(nConstrCode, i));
+                        if (!cbidDB.DeleteAction(strSQL.ToString(), false))
+                        {
+                            MessageBox.Show("�H����{��񖾍ׁF�������폜�Ɏ��s���܂����B", "�o�^�G���[", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                            return false;
+                        }
+                        continue;
+                    }
+
                     if (CurRec == null)
                     {
                         // �f�[�^���Ȃ��ꍇ�F�f�[�^�V�K�o�^
@@ -3784,9 +3780,6 @@
                         continue;
                     }
 
-                    // �f�[�^������ꍇ�F�ύX�ԍ�������΍X�V�o�^
-                    if (!m_DetailNoList.Exists(x => x == i)) continue;
-
                     if (!cbidDB.UpdateFeild(DepRec.ConstructionCode
                                             , (int)IOConstructionBaseInfoDetail.TableColumn.DETAILSTRING
                                             , DepRec.DetailString
@@ -3871,9 +3864,13 @@
             IOMessageBoardTerget mbtDB = new IOMessageBoardTerget();                    // �f���Ώێ҃e�[�u��
             IOMessageBrowsingHistory mbhDB = new IOMessageBrowsingHistory();            // �f�������f�[�^
 
+            IOChgConstrCharge ChgMenDB = new IOChgConstrCharge();                       // �H���S���ύX�����f�[�^
+            IOConstructionLink LinkDB = new IOConstructionLink();
+
             IORecordKey RecDB = new IORecordKey();                                      // ���R�[�h�ԍ��Ǘ�
 
             FrmConstructionLedger frm = new FrmConstructionLedger();                    // �H���ڍב䒠����
+
             try
             {
                 //�f�[�^�`�F�b�N
@@ -3919,7 +3916,8 @@
                             ApprovalDB, PersonDB,
                             BudgetDB, BudgetDDB,
                             LedgerDB, LedgerDDB, LedgerEDB,
-                            mbdDB, mbtDB, mbhDB, RecDB);
+                            mbdDB, mbtDB, mbhDB, RecDB,
+                            ChgMenDB, LinkDB);
 
                 // �f�[�^�o�^
                 if (!ConstructionBaseInfoDataEntry(cbiDB, cpdDB))
@@ -3930,7 +3928,8 @@
                                         ApprovalDB, PersonDB,
                                         BudgetDB, BudgetDDB,
                                         LedgerDB, LedgerDDB, LedgerEDB,
-                                        mbdDB, mbtDB, mbhDB, RecDB);
+                                        mbdDB, mbtDB, mbhDB, RecDB,
+                                        ChgMenDB, LinkDB);
 
                     return false;
                 }
@@ -3942,11 +3941,25 @@
                                         ApprovalDB, PersonDB,
                                         BudgetDB, BudgetDDB,
                                         LedgerDB, LedgerDDB, LedgerEDB,
-                                        mbdDB, mbtDB, mbhDB, RecDB);
+                                        mbdDB, mbtDB, mbhDB, RecDB,
+                                        ChgMenDB, LinkDB);
 
                     return false;
                 }
 
+                if (!ChgConstrChargeDataEntry(ChgMenDB, LinkDB))
+                {
+                    MessageBox.Show("�H����{���i�S���ҁj�f�[�^�o�^�G���[�ł��B", "�o�^�G���[", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                    RollBackCommitProc(true,
+                                        cbiDB, cbidDB, cpdDB, cbLinkDB,
+                                        ApprovalDB, PersonDB,
+                                        BudgetDB, BudgetDDB,
+                                        LedgerDB, LedgerDDB, LedgerEDB,
+                                        mbdDB, mbtDB, mbhDB, RecDB,
+                                        ChgMenDB, LinkDB);
+                    return false;
+                }
+
                 // �e�f�[�^���r�̂��߂Ɏ擾����
                 ArrayList ParentData = new ArrayList();
                 int ProcConstrCode = 0;
@@ -3958,7 +3971,8 @@
                                         ApprovalDB, PersonDB,
                                         BudgetDB, BudgetDDB,
                                         LedgerDB, LedgerDDB, LedgerEDB,
-                                        mbdDB, mbtDB, mbhDB, RecDB);
+                                        mbdDB, mbtDB, mbhDB, RecDB,
+                                        ChgMenDB, LinkDB);
 
                     return false;
                 }
@@ -3976,7 +3990,8 @@
                                         ApprovalDB, PersonDB,
                                         BudgetDB, BudgetDDB,
                                         LedgerDB, LedgerDDB, LedgerEDB,
-                                        mbdDB, mbtDB, mbhDB, RecDB);
+                                        mbdDB, mbtDB, mbhDB, RecDB,
+                                        ChgMenDB, LinkDB);
 
                     return false;
                 }
@@ -3992,7 +4007,8 @@
                                             ApprovalDB, PersonDB,
                                             BudgetDB, BudgetDDB,
                                             LedgerDB, LedgerDDB, LedgerEDB,
-                                            mbdDB, mbtDB, mbhDB, RecDB);
+                                            mbdDB, mbtDB, mbhDB, RecDB,
+                                            ChgMenDB, LinkDB);
 
                         return false;
                     }
@@ -4008,7 +4024,8 @@
                                         ApprovalDB, PersonDB,
                                         BudgetDB, BudgetDDB,
                                         LedgerDB, LedgerDDB, LedgerEDB,
-                                        mbdDB, mbtDB, mbhDB, RecDB);
+                                        mbdDB, mbtDB, mbhDB, RecDB,
+                                        ChgMenDB, LinkDB);
 
                     return false;
                 }
@@ -4022,7 +4039,8 @@
                                         ApprovalDB, PersonDB,
                                         BudgetDB, BudgetDDB,
                                         LedgerDB, LedgerDDB, LedgerEDB,
-                                        mbdDB, mbtDB, mbhDB, RecDB);
+                                        mbdDB, mbtDB, mbhDB, RecDB,
+                                        ChgMenDB, LinkDB);
 
                     return false;
                 }
@@ -4038,7 +4056,8 @@
                                             ApprovalDB, PersonDB,
                                             BudgetDB, BudgetDDB,
                                             LedgerDB, LedgerDDB, LedgerEDB,
-                                            mbdDB, mbtDB, mbhDB, RecDB);
+                                            mbdDB, mbtDB, mbhDB, RecDB,
+                                            ChgMenDB, LinkDB);
                         return false;
                     }
                 }
@@ -4054,7 +4073,8 @@
                                             ApprovalDB, PersonDB,
                                             BudgetDB, BudgetDDB,
                                             LedgerDB, LedgerDDB, LedgerEDB,
-                                            mbdDB, mbtDB, mbhDB, RecDB);
+                                            mbdDB, mbtDB, mbhDB, RecDB,
+                                            ChgMenDB, LinkDB);
                         return false;
                     }
                 }
@@ -4065,7 +4085,8 @@
                                     ApprovalDB, PersonDB,
                                     BudgetDB, BudgetDDB,
                                     LedgerDB, LedgerDDB, LedgerEDB,
-                                    mbdDB, mbtDB, mbhDB, RecDB);
+                                    mbdDB, mbtDB, mbhDB, RecDB,
+                                    ChgMenDB, LinkDB);
 
                 // �H���R�[�h�̃Z�b�g
                 frm.ConstructionCode = ProcConstrCode;
@@ -4111,6 +4132,8 @@
                 mbhDB.close(); mbhDB = null;
                 RecDB.close(); RecDB = null;
 
+                ChgMenDB.close(); ChgMenDB = null;
+                LinkDB.close(); LinkDB = null;
 
                 frm.Dispose(); frm = null;
             }
@@ -4117,6 +4140,324 @@
         }
         #endregion
 
+        #region �H���S���ύX�����f�[�^�o�^����
+        /// <summary>
+        /// �H���S���ύX�����f�[�^�o�^����
+        /// </summary>
+        /// <returns></returns>
+        private bool ChgConstrChargeDataEntry(IOChgConstrCharge ChgMenDB, IOConstructionLink LinkDB)
+        {
+            try
+            {
+                StringBuilder strSQL = new StringBuilder();
+
+                // ----- �H���䒠�̍H���ԍ����擾����
+                int nConstrCode = m_ConstructionCode;
+                // �����N���̐e���擾����
+                strSQL.Append(LinkDB.CreatePrimarykeyString(nConstrCode));
+                List<ConstructionLink> LinkList = new List<ConstructionLink>();
+                if (!LinkDB.SelectAction(strSQL.ToString(), ref LinkList, false)) return false;
+                if (LinkList.Count < 1)
+                {
+                    // �����N���̎q���e���擾����
+                    strSQL.Clear();
+                    strSQL.AppendFormat(" Where FluctuationCode = {0}", nConstrCode);
+                    LinkList.Clear();
+                    if (!LinkDB.SelectAction(strSQL.ToString(), ref LinkList, false)) return false;
+                    if (LinkList.Count > 0)
+                    {   // �q�̔ԍ��ł���ΐe�ԍ����Z�b�g����
+                        nConstrCode = LinkList[0].ConstructionCode;
+                    }
+                }
+
+                // �c�ƒS���ҍX�V
+                if (!ChgConstrChargeDataPart(ChgMenDB, nConstrCode, (int)ChgConstrCharge.DivisionDef.SalesMain)) return false;
+
+                // �c�ƕ��S���ҍX�V
+                if (!ChgConstrChargeDataPart(ChgMenDB, nConstrCode, (int)ChgConstrCharge.DivisionDef.SalesSub)) return false;
+
+                // �H���S���ҍX�V
+                if (!ChgConstrChargeDataPart(ChgMenDB, nConstrCode, (int)ChgConstrCharge.DivisionDef.Payroll)) return false;
+
+                // �H�����S���ҍX�V
+                if (!ChgConstrChargeDataPart(ChgMenDB, nConstrCode, (int)ChgConstrCharge.DivisionDef.Assistant)) return false;
+
+                // �w�����X�V
+                if (!ChgConstrChargeDataPart(ChgMenDB, nConstrCode, (int)ChgConstrCharge.DivisionDef.Instructor)) return false;
+
+                return true;
+            }
+            catch (System.Exception ex)
+            {
+                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+        }
+        #endregion
+
+        #region �H���S���ύX�����f�[�^���敪���Ƃɓo�^����
+        /// <summary>
+        /// �H���S���ύX�����f�[�^���敪���Ƃɓo�^����
+        /// </summary>
+        /// <returns></returns>
+        private bool ChgConstrChargeDataPart(IOChgConstrCharge ChgMenDB, int nConstrCode, int nDiviCode)
+        {
+            try
+            {
+                StringBuilder strSQL = new StringBuilder();
+
+                // �S���ҕύX�����f�[�^�擾
+                strSQL.Clear();
+                strSQL.Append(ChgMenDB.CreatePrimarykeyString(nConstrCode, nDiviCode));
+                strSQL.Append(" Order By SeqNo DESC");
+                List<ChgConstrCharge> DataList = new List<ChgConstrCharge>();
+                if (!ChgMenDB.SelectAction(strSQL.ToString(), ref DataList, false)) return false;
+
+                // �����E�S���҃R���{�{�b�N�X�̔ԍ����擾����
+                int CtrlDep = 0;
+                int CtrlMan = 0;
+                GetDepManComboCtrlNo(nDiviCode, ref CtrlDep, ref CtrlMan);
+
+                // �w�肳�ꂽ�����E�S���҃R�[�h���擾����
+                int nDepCode = 0;
+                int nManCode = 0;
+                GetDepManCode(CtrlDep, CtrlMan, ref nDepCode, ref nManCode);
+
+                ChgConstrCharge insRec = new ChgConstrCharge();
+
+                // �f�[�^���̂������ꍇ
+                if (DataList.Count < 1)
+                {
+                    // ----- �V�K�쐬
+                    // �����E�S���Җ��͓o�^���Ȃ�
+                    if (nDepCode == 0 && nManCode == 0) return true;
+
+                    SetChgConstrCharge(ref insRec, nConstrCode, nDiviCode, 1);
+                    if (!ChgMenDB.InsertAction(insRec, false)) return false;
+                    return true;
+                }
+
+                // ----- �S���҂�����Ă���ꍇ
+                if (DataList[0].PersonCode != nManCode)
+                {
+                    // ----- �V�K�쐬
+                    // �����E�S���Җ��͓o�^���Ȃ�
+                    if (nDepCode > 0 && nManCode > 0)
+                    {
+                        SetChgConstrCharge(ref insRec, nConstrCode, nDiviCode, (DataList[0].SeqNo + 1));
+                        insRec.StartDate = DateTime.Today.AddDays(1);
+                        if (!ChgMenDB.InsertAction(insRec, false)) return false;
+                    }
+                    // �O�S�����I��
+                    strSQL.Clear();
+                    strSQL.Append("UPDATE ChgConstrCharge");
+                    strSQL.AppendFormat(" SET CompDate = STR_TO_DATE('{0}','%Y/%m/%d')", DateTime.Today.ToShortDateString());
+                    strSQL.Append(", DeleteFlg = 1, UpdateDate = NOW()");
+                    strSQL.Append(ChgMenDB.CreatePrimarykeyString(nConstrCode, nDiviCode, DataList[0].SeqNo));
+                    if (!ChgMenDB.ExecuteNonQuery(strSQL.ToString(), false)) return false;
+
+                    return true;
+                }
+
+                // ----- �S���҂������ꍇ
+                // �Ō�̃f�[�^���폜����Ă���ꍇ�͐V�K�쐬
+                if (DataList[0].DeleteFlg == 1)
+                {
+                    // �����E�S���Җ��͓o�^���Ȃ�
+                    if (nDepCode == 0 && nManCode == 0) return true;
+
+                    SetChgConstrCharge(ref insRec, nConstrCode, nDiviCode, (DataList[0].SeqNo + 1));
+                    // �J�n�����Z�b�g
+                    insRec.StartDate = DateTime.Today;
+                    if (!ChgMenDB.InsertAction(insRec, false)) return false;
+                    return true;
+                }
+
+                // �H���擾
+                DateTime StartDate = DateTime.MinValue;
+                DateTime CompDate = DateTime.MinValue;
+                GetConstrStartAndEnd(ref StartDate, ref CompDate);
+
+                // ----- ���t�̍X�V�`�F�b�N
+                if (DataList[0].StartDate.Date != StartDate.Date)
+                {
+                    // �J�n���t���Ⴄ�ꍇ
+                    if (!ChgMenDB.UpdateFeild(nConstrCode, nDiviCode, DataList[0].SeqNo,
+                                                (int)IOChgConstrCharge.TableColumn.StartDate, StartDate, false)) return false;
+                }
+                if (DataList[0].CompDate.Date != CompDate.Date)
+                {
+                    // �I�����t���Ⴄ�ꍇ
+                    if (!ChgMenDB.UpdateFeild(nConstrCode, nDiviCode, DataList[0].SeqNo,
+                                                (int)IOChgConstrCharge.TableColumn.CompDate, CompDate, false)) return false;
+                }
+
+                return true;
+            }
+            catch (System.Exception ex)
+            {
+                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+        }
+        #endregion
+
+        #region �����E�S���҃R���{�{�b�N�X�̔ԍ����擾����
+        /// <summary>
+        /// �����E�S���҃R���{�{�b�N�X�̔ԍ����擾����
+        /// </summary>
+        private void GetDepManComboCtrlNo(int nDiviCode, ref int CtrlDep, ref int CtrlMan)
+        {
+            try
+            {
+                switch (nDiviCode)
+                {
+                    case (int)ChgConstrCharge.DivisionDef.SalesMain:
+                        // �c�ƒS����
+                        CtrlDep = (int)DspCnt.SalesDepartment;
+                        CtrlMan = (int)DspCnt.SalesPersonCode;
+                        break;
+
+                    case (int)ChgConstrCharge.DivisionDef.SalesSub:
+                        // �c�ƕ��S����
+                        CtrlDep = (int)DspCnt.SalesSubDepartment;
+                        CtrlMan = (int)DspCnt.SalesSubPersonCode;
+                        break;
+
+                    case (int)ChgConstrCharge.DivisionDef.Payroll:
+                        // �H���S���ҕ����R�[�h
+                        CtrlDep = (int)DspCnt.ConstructionDepartment;
+                        CtrlMan = (int)DspCnt.ConstructionPersonCode;
+                        break;
+
+                    case (int)ChgConstrCharge.DivisionDef.Assistant:
+                        // �H�����S���ҕ����R�[�h
+                        CtrlDep = (int)DspCnt.ConstrSubDepartment;
+                        CtrlMan = (int)DspCnt.ConstrSubPersonCode;
+                        break;
+
+                    case (int)ChgConstrCharge.DivisionDef.Instructor:
+                        // �H���w���������R�[�h
+                        CtrlDep = (int)DspCnt.InstructorDepartment;
+                        CtrlMan = (int)DspCnt.ConstructionInstructor;
+
+                        break;
+                }
+            }
+            catch (System.Exception ex)
+            {
+                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
+        #region �H���S���ύX�����f�[�^�Z�b�g
+        /// <summary>
+        /// �H���S���ύX�����f�[�^�Z�b�g
+        /// </summary>
+        /// <param name="SetRec"></param>
+        private void SetChgConstrCharge(ref ChgConstrCharge SetRec, int nConstrCode, int nDiviCode, int nSeqNo)
+        {
+            try
+            {
+                SetRec.ConstructionCode = nConstrCode;   // �H���R�[�h
+                SetRec.Division = nDiviCode;                    // �ݒ�敪
+                SetRec.SeqNo = nSeqNo;                          // �A��
+
+                // �����E�S���҃R���{�{�b�N�X�̔ԍ����擾����
+                int CtrlDep = 0;
+                int CtrlMan = 0;
+                GetDepManComboCtrlNo(nDiviCode, ref CtrlDep, ref CtrlMan);
+
+                // �w�肳�ꂽ�����E�S���҃R�[�h���擾����
+                int nDepCode = 0;
+                int nManCode = 0;
+                GetDepManCode(CtrlDep, CtrlMan, ref nDepCode, ref nManCode);
+
+                SetRec.DepartmentCode = nDepCode;         // �����R�[�h
+                SetRec.PersonCode = nManCode;             // �S���҃R�[�h
+
+                DateTime StartDate = DateTime.MinValue;
+                DateTime CompDate = DateTime.MinValue;
+                GetConstrStartAndEnd(ref StartDate, ref CompDate);
+
+                // �S���J�n�N����
+                SetRec.StartDate = StartDate;
+                // �S���I���N����
+                SetRec.CompDate = CompDate;
+
+                // ���H���ԍ�
+                SetRec.SourceCode = m_ConstructionCode;
+
+            }
+            catch (System.Exception ex)
+            {
+                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
+        #region �H���̊J�n�E�I�����擾���� 
+        /// <summary>
+        /// �H���̊J�n�E�I�����擾����
+        /// </summary>
+        private void GetConstrStartAndEnd(ref DateTime StartDate, ref DateTime CompDate)
+        {
+            try
+            {
+                // �S���J�n�N����
+                TextBox wrkTextBox = (TextBox)m_DspCtrl[(int)DspCnt.ConstructionPeriodStart];
+                DateTime wrkDate = CommonMotions.cnvUndecidedStringToDate(wrkTextBox.Text);
+                if (wrkDate != DateTime.MinValue) StartDate = wrkDate;
+
+                // �S���I���N����
+                wrkTextBox = (TextBox)m_DspCtrl[(int)DspCnt.ConstructionPeriodEnd];
+                wrkDate = CommonMotions.cnvUndecidedStringToDate(wrkTextBox.Text);
+                if (wrkDate != DateTime.MinValue) CompDate = wrkDate;
+
+                // �_��H���J�n�i�������j
+                wrkTextBox = (TextBox)m_DspCtrl[(int)DspCnt.ConstructionPeriodStart2];
+                wrkDate = CommonMotions.cnvUndecidedStringToDate(wrkTextBox.Text);
+                if (wrkDate != DateTime.MinValue) StartDate = wrkDate;
+
+                // �_��H�������i�������j
+                wrkTextBox = (TextBox)m_DspCtrl[(int)DspCnt.ConstructionPeriodEnd2];
+                wrkDate = CommonMotions.cnvUndecidedStringToDate(wrkTextBox.Text);
+                if (wrkDate != DateTime.MinValue) CompDate = wrkDate;
+
+            }
+            catch (System.Exception ex)
+            {
+                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
+        #region �w�肳�ꂽ�����E�S���҃R�[�h���擾����
+        /// <summary>
+        /// �w�肳�ꂽ�����E�S���҃R�[�h���擾����
+        /// </summary>
+        private void GetDepManCode(int nCtrlDepCode, int nCtrlManCode, ref int nDepCode, ref int nManCode)
+        {
+            try
+            {
+                // �H���S���ҕ����R�[�h
+                ComboBox wrkCmb1 = (ComboBox)m_DspCtrl[nCtrlDepCode];
+                if (wrkCmb1.Text.Length > 0 && wrkCmb1.Text != CommonDefine.s_UndecidedString)
+                    nDepCode = CommonMotions.cnvInt(wrkCmb1.SelectedValue);
+
+                // �H���S���҃R�[�h
+                ComboBox wrkCmb2 = (ComboBox)m_DspCtrl[nCtrlManCode];
+                if (wrkCmb2.Text.Length > 0 && wrkCmb2.Text != CommonDefine.s_UndecidedString)
+                    nManCode = CommonMotions.cnvInt(wrkCmb2.SelectedValue);
+            }
+            catch (System.Exception ex)
+            {
+                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
         #region �ꊇ�g�����U�N�V��������
         /// <summary>
         /// �ꊇ�g�����U�N�V��������
@@ -4135,7 +4476,9 @@
                                 IOMessageBoardData mbdDB,               // �f���f�[�^
                                 IOMessageBoardTerget mbtDB,             // �f���Ώێ҃e�[�u��
                                 IOMessageBrowsingHistory mbhDB,         // �f�������f�[�^
-                                IORecordKey RecDB                       // ���R�[�h�ԍ��Ǘ��f�[�^
+                                IORecordKey RecDB,                      // ���R�[�h�ԍ��Ǘ��f�[�^
+                                IOChgConstrCharge ChgMenDB,             // �H���S���ύX�����f�[�^
+                                IOConstructionLink LinkDB               // �H�������N���
                                 )
         {
             try
@@ -4159,7 +4502,12 @@
                 mbtDB.connect(); mbtDB.beginTran();
                 mbhDB.connect(); mbhDB.beginTran();
 
+                ChgMenDB.connect(); ChgMenDB.beginTran();
+
                 RecDB.connect(); RecDB.beginTran();
+
+                LinkDB.connect(); LinkDB.beginTran();
+
             }
             catch (System.Exception ex)
             {
@@ -4187,7 +4535,9 @@
                                         IOMessageBoardData mbdDB,               // �f���f�[�^
                                         IOMessageBoardTerget mbtDB,             // �f���Ώێ҃e�[�u��
                                         IOMessageBrowsingHistory mbhDB,         // �f�������f�[�^
-                                        IORecordKey RecDB                       // ���R�[�h�ԍ��Ǘ��f�[�^
+                                        IORecordKey RecDB,                      // ���R�[�h�ԍ��Ǘ��f�[�^
+                                        IOChgConstrCharge ChgMenDB,             // �H���S���ύX�����f�[�^
+                                        IOConstructionLink LinkDB               // �H�������N���
                                         )
         {
             try
@@ -4209,6 +4559,8 @@
                     mbtDB.rollback();
                     mbhDB.rollback();
                     RecDB.rollback();
+                    ChgMenDB.rollback();
+                    LinkDB.rollback();
                 }
 
                 // DB�o�^
@@ -4227,6 +4579,8 @@
                 mbtDB.commit();
                 mbhDB.commit();
                 RecDB.commit();
+                ChgMenDB.commit();
+                LinkDB.commit();
             }
             catch (System.Exception ex)
             {
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionBudget/FrmConstructionBudget.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionBudget/FrmConstructionBudget.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionBudget/FrmConstructionBudget.cs	(revision 366)
@@ -543,8 +543,15 @@
         private ContextMenuStrip m_ExecMenuStrip = new ContextMenuStrip();
         #endregion
 
+        #region ���F�p�l�����X�g
+        /// <summary>
+        /// ���F�p�l�����X�g
+        /// </summary>
+        private List<Panel> m_ApplPnlList = new List<Panel>();
         #endregion
 
+        #endregion
+
         #region �v���p�e�B
         /// <summary>
         /// �H���ԍ�
@@ -715,7 +722,14 @@
                 SetExecMenuStrip();
 
                 // �H���Č��̏��F��Ԃ��m�F����
-                m_ApprovalFlg = ApprovalCheck();
+                // ----- ���F�ς̏ꍇ���F�ς݃t���OON
+                if (ClsCommonApproval.CheckProcessApproval(m_ConstructionCode
+                                                                , (int)ClsExcute.ApprovalListNo.ConstructionBudgetApproval
+                                                                , CommonDefine.s_Default_OrderNo))
+                {
+                    m_ApprovalFlg = true;
+                    m_EditLock = true;
+                }
 
                 // �S���ғ����擾
                 if (!SetConstructorCode())
@@ -755,31 +769,15 @@
                 // �����\��
                 InitDataLoad();
 
-                // �\���E���F�\������
-                InitApprovalDisplay();
-
                 // *-----* �����ړ��{�^���ݒ� *-----*
                 CreateProcessContextMenu(m_SubForm);
                 // *-----* �����ړ��{�^���ݒ� *-----*
 
-                // ���F��ʂ́u���F�Ώۃf�[�^������v����̋N�����͏��F�{�^���̕\��������
-                bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
-                if (bApproval && !m_SubForm)
-                {
-                    // �H���Č��̊Ǘ��������擾����
-                    int DepartmentCode = ClsApprovalPermission.GetFromConstructionTheDepartment(m_ConstructionCode);
-                    // ���F�ΏۃR�[�h���擾����
-                    int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("�H���\�Z�����F")).Key;
-                    // �Č��ɑ΂��Đ\��������Ă��邩���m�F����
-                    bool Pettition = ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonDefine.s_Default_OrderNo);
-                    // ���O�C���҂����F�҂����m�F����
-                    bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
-                    // �\�����Ń��O�C���҂����F�҂̏ꍇ�͏��F�{�^����\������
-                    if (Pettition && Approvaler)
-                    {
-                        pnlApprovalButton.Visible = true;
-                    }
-                }
+                // �\���E���F�\������
+                ClsCommonApproval.CtrlConstrAppPanel((int)ClsExcute.ApprovalListNo.ConstructionBudgetApproval
+                                                        , m_ConstructionCode
+                                                        , 1
+                                                        , m_ApplPnlList);
 
                 // ���ς݂̃w�b�_�[�t�H���g��ς���
                 dgvAllDisplay.Columns[(int)GridColumn.Negotiation].HeaderCell.Style.Font =
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionBudget/FrmConstructionBudgetAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionBudget/FrmConstructionBudgetAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionBudget/FrmConstructionBudgetAuxiliary.cs	(revision 366)
@@ -260,6 +260,9 @@
 
             m_DspLabelLocalData = new string[CtrlCnt];
             Array.Clear(m_DspLabelLocalData, 0, m_DspLabelLocalData.Length);
+
+            m_ApplPnlList.Add(pnlApproval);
+            m_ApplPnlList.Add(pnlApprovalButton);
         }
         #endregion
 
@@ -439,7 +442,7 @@
                 // 受注金額
                 int OrdersPrice = (int)m_ConstructionBaseInfo.OrdersDecisionPrice;
                 // 承認済みは工事予算データから表示する
-                if (ClsApprovalPermission.CheckProcessApproval(m_ConstructionCode,
+                if (ClsCommonApproval.CheckProcessApproval(m_ConstructionCode,
                                                                 (int)ClsExcute.ApprovalListNo.ConstructionBudgetApproval,
                                                                 1))
                 {
@@ -1487,9 +1490,6 @@
                 pnlGroup1.Enabled = false;
                 pnlGroup2.Enabled = false;
 
-                pnlApproval.Visible = false;
-                pnlApprovalButton.Visible = false;
-
                 // 最後にボタンの処理を行う
                 btnApprovalList.Visible = false;
                 btnDataEntry.Visible = false;
@@ -4374,96 +4374,6 @@
         }
         #endregion
 
-        #region 初期時申請・承認表示処理
-        /// <summary>
-        /// 初期時申請・承認表示処理
-        /// </summary>
-        private void InitApprovalDisplay()
-        {
-            try
-            {
-                // 起動元のリストに承認画面があれば表示しない
-                if (ClsApprovalPermission.ExceApprovalScreen())
-                {
-                    pnlApproval.Visible = false;
-                }
-
-                // 承認ボタン・件数の非表示
-                btnApproval.Visible = false;
-                lblApprovalCount.Visible = false;
-
-                // ----- 初期時は申請ボタンのサイズを最大にする
-                btnPetition.Size = new Size(250, btnPetition.Size.Height);
-
-                // ----- 工事コード・承認機能番号取得
-                int iConstructionCode = m_ConstructionBaseInfo.ConstructionCode;
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("工事予算書承認")).Key;
-                if (!ClsApprovalPermission.CheckProcessPetition(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo)) return;
-
-                // ----- 申請済の場合
-                // 申請ボタンの表示
-                btnPetition.Text = CommonDefine.PetitionButtonString[1];
-                btnPetition.ForeColor = Color.Black;
-                btnPetition.Size = btnApproval.Size;
-                btnPetition.Enabled = false;
-
-                // 承認ボタンの表示
-                btnApproval.Visible = true;
-
-                // ----- 承認済の場合
-                if (ClsApprovalPermission.CheckProcessApproval(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo))
-                {
-                    btnApproval.Text = CommonDefine.ApprovalButtonString[1];
-                    btnApproval.ForeColor = Color.Black;
-                    // 承認済みの場合は入力できない
-                    BudgetInputReadOnly();
-                }
-
-                // 承認件数の表示
-                lblApprovalCount.Visible = true;
-                SetApprovalCount();
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
-        #region 承認数表示
-        /// <summary>
-        /// 承認件数のセット
-        /// </summary>
-        private void SetApprovalCount()
-        {
-            try
-            {
-                // 初期値セット
-                lblApprovalCount.Text = "";
-
-                // 工事コード・承認機能番号取得
-                int iConstructionCode = m_ConstructionBaseInfo.ConstructionCode;
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("工事予算書承認")).Key;
-                // 担当部署取得
-                int DepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionBaseInfo.ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
-
-                // 承認データ取得
-                int ApprovalCount = ClsApprovalPermission.GetProcessApprovalDataCount(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
-
-                // 承認経路マスタ取得
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
-
-                // 初期値セット
-                lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
-
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
         #region 協力会社選択ダイアログ表示
         /// <summary>
         /// 協力会社選択ダイアログ表示
@@ -4895,6 +4805,18 @@
                     }
                 }
 
+                // 承認順序のチェック
+                if (!ClsCommonApproval.CheckProcessApprovalSequence(m_ConstructionCode
+                                                                        , (int)ClsExcute.ApprovalListNo.ConstructionBudgetApproval
+                                                                        , 1))
+                {
+                    MessageBox.Show("１つ前の承認が確定していません。"
+                                    , "承認順番エラー"
+                                    , MessageBoxButtons.OK
+                                    , MessageBoxIcon.Error);
+                    return false;
+                }
+
                 return true;
             }
             catch (Exception ex)
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionLedger/FrmConstructionLedger.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionLedger/FrmConstructionLedger.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionLedger/FrmConstructionLedger.cs	(revision 366)
@@ -1583,6 +1583,19 @@
         }
         #endregion
 
+        #region �ŐV�̏�Ԃփ{�^������
+        /// <summary>
+        /// �ŐV�̏�Ԃփ{�^������
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void btnReLoadData_Click(object sender, EventArgs e)
+        {
+            // �f�[�^�\��
+            InitDataLoad();
+        }
+        #endregion
+
         // ----------- �f�[�^�R���o�[�g
         #region �f�[�^�R���o�[�g
         /// <summary>
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionLedger/FrmConstructionLedger.designer.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionLedger/FrmConstructionLedger.designer.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionLedger/FrmConstructionLedger.designer.cs	(revision 366)
@@ -81,6 +81,7 @@
             this.label12 = new System.Windows.Forms.Label();
             this.lblLabel04 = new System.Windows.Forms.Label();
             this.btnRestore = new System.Windows.Forms.Button();
+            this.btnReLoadData = new System.Windows.Forms.Button();
             this.label4 = new System.Windows.Forms.Label();
             this.label2 = new System.Windows.Forms.Label();
             this.btnLineDel = new System.Windows.Forms.Button();
@@ -87,18 +88,6 @@
             this.btnLineAdd = new System.Windows.Forms.Button();
             this.panel2 = new System.Windows.Forms.Panel();
             this.dgvAllDisplay = new ProcessManagement.Forms.CustomControls.DataGridViewEX();
-            this.lblCellTotal = new System.Windows.Forms.Label();
-            this.btnDispDown = new System.Windows.Forms.Button();
-            this.btnDispUp = new System.Windows.Forms.Button();
-            this.btnOtherProc = new System.Windows.Forms.Button();
-            this.button1 = new System.Windows.Forms.Button();
-            this.button2 = new System.Windows.Forms.Button();
-            this.btnSelect = new System.Windows.Forms.Button();
-            this.btnCreate = new System.Windows.Forms.Button();
-            this.grpExample1 = new ProcessManagement.Forms.CustomControls.GroupBoxEx();
-            this.lblReqSumType03 = new System.Windows.Forms.Label();
-            this.lblReqSumType01 = new System.Windows.Forms.Label();
-            this.lblReqSumType02 = new System.Windows.Forms.Label();
             this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.Column27 = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -128,6 +117,18 @@
             this.Column25 = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.Column26 = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.Column28 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.lblCellTotal = new System.Windows.Forms.Label();
+            this.btnDispDown = new System.Windows.Forms.Button();
+            this.btnDispUp = new System.Windows.Forms.Button();
+            this.btnOtherProc = new System.Windows.Forms.Button();
+            this.button1 = new System.Windows.Forms.Button();
+            this.button2 = new System.Windows.Forms.Button();
+            this.btnSelect = new System.Windows.Forms.Button();
+            this.btnCreate = new System.Windows.Forms.Button();
+            this.grpExample1 = new ProcessManagement.Forms.CustomControls.GroupBoxEx();
+            this.lblReqSumType03 = new System.Windows.Forms.Label();
+            this.lblReqSumType01 = new System.Windows.Forms.Label();
+            this.lblReqSumType02 = new System.Windows.Forms.Label();
             this.panel1.SuspendLayout();
             this.pnlGroup2.SuspendLayout();
             this.pnlGroup1.SuspendLayout();
@@ -715,6 +716,20 @@
             this.btnRestore.Visible = false;
             this.btnRestore.Click += new System.EventHandler(this.btnRestore_Click);
             // 
+            // btnReLoadData
+            // 
+            this.btnReLoadData.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnReLoadData.BackColor = System.Drawing.Color.SpringGreen;
+            this.btnReLoadData.Font = new System.Drawing.Font("ＭＳ 明朝", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
+            this.btnReLoadData.Location = new System.Drawing.Point(986, 5);
+            this.btnReLoadData.Name = "btnReLoadData";
+            this.btnReLoadData.Size = new System.Drawing.Size(120, 30);
+            this.btnReLoadData.TabIndex = 70;
+            this.btnReLoadData.TabStop = false;
+            this.btnReLoadData.Text = "最新の状態へ";
+            this.btnReLoadData.UseVisualStyleBackColor = false;
+            this.btnReLoadData.Click += new System.EventHandler(this.btnReLoadData_Click);
+            // 
             // label4
             // 
             this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@@ -845,166 +860,6 @@
             this.dgvAllDisplay.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dgvAllDisplay_KeyDown);
             this.dgvAllDisplay.MouseUp += new System.Windows.Forms.MouseEventHandler(this.dgvAllDisplay_MouseUp);
             // 
-            // lblCellTotal
-            // 
-            this.lblCellTotal.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-            this.lblCellTotal.AutoSize = true;
-            this.lblCellTotal.BackColor = System.Drawing.Color.WhiteSmoke;
-            this.lblCellTotal.Font = new System.Drawing.Font("ＭＳ Ｐ明朝", 9.75F, System.Drawing.FontStyle.Bold);
-            this.lblCellTotal.ForeColor = System.Drawing.Color.Black;
-            this.lblCellTotal.Location = new System.Drawing.Point(100, 430);
-            this.lblCellTotal.Name = "lblCellTotal";
-            this.lblCellTotal.Size = new System.Drawing.Size(0, 13);
-            this.lblCellTotal.TabIndex = 36;
-            // 
-            // btnDispDown
-            // 
-            this.btnDispDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnDispDown.Font = new System.Drawing.Font("ＭＳ 明朝", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
-            this.btnDispDown.Location = new System.Drawing.Point(1300, 418);
-            this.btnDispDown.Name = "btnDispDown";
-            this.btnDispDown.Size = new System.Drawing.Size(40, 40);
-            this.btnDispDown.TabIndex = 42;
-            this.btnDispDown.TabStop = false;
-            this.btnDispDown.Text = "▼";
-            this.btnDispDown.UseVisualStyleBackColor = true;
-            this.btnDispDown.Visible = false;
-            this.btnDispDown.Click += new System.EventHandler(this.btnDispDown_Click);
-            // 
-            // btnDispUp
-            // 
-            this.btnDispUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnDispUp.Font = new System.Drawing.Font("ＭＳ 明朝", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
-            this.btnDispUp.Location = new System.Drawing.Point(1300, 354);
-            this.btnDispUp.Name = "btnDispUp";
-            this.btnDispUp.Size = new System.Drawing.Size(40, 40);
-            this.btnDispUp.TabIndex = 41;
-            this.btnDispUp.TabStop = false;
-            this.btnDispUp.Text = "▲";
-            this.btnDispUp.UseVisualStyleBackColor = true;
-            this.btnDispUp.Visible = false;
-            this.btnDispUp.Click += new System.EventHandler(this.btnDispUp_Click);
-            // 
-            // btnOtherProc
-            // 
-            this.btnOtherProc.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-            this.btnOtherProc.BackColor = System.Drawing.Color.SpringGreen;
-            this.btnOtherProc.Location = new System.Drawing.Point(7, 656);
-            this.btnOtherProc.Name = "btnOtherProc";
-            this.btnOtherProc.Size = new System.Drawing.Size(160, 30);
-            this.btnOtherProc.TabIndex = 95;
-            this.btnOtherProc.TabStop = false;
-            this.btnOtherProc.Text = "他の画面へ";
-            this.btnOtherProc.UseVisualStyleBackColor = false;
-            this.btnOtherProc.Click += new System.EventHandler(this.btnOtherProc_Click);
-            // 
-            // button1
-            // 
-            this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-            this.button1.Location = new System.Drawing.Point(1300, 540);
-            this.button1.Name = "button1";
-            this.button1.Size = new System.Drawing.Size(37, 35);
-            this.button1.TabIndex = 100;
-            this.button1.Text = "○";
-            this.button1.UseVisualStyleBackColor = true;
-            this.button1.Visible = false;
-            this.button1.Click += new System.EventHandler(this.button1_Click);
-            // 
-            // button2
-            // 
-            this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-            this.button2.Location = new System.Drawing.Point(1300, 581);
-            this.button2.Name = "button2";
-            this.button2.Size = new System.Drawing.Size(37, 35);
-            this.button2.TabIndex = 101;
-            this.button2.Text = "１";
-            this.button2.UseVisualStyleBackColor = true;
-            this.button2.Visible = false;
-            this.button2.Click += new System.EventHandler(this.button2_Click);
-            // 
-            // btnSelect
-            // 
-            this.btnSelect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnSelect.BackColor = System.Drawing.Color.Green;
-            this.btnSelect.Font = new System.Drawing.Font("ＭＳ 明朝", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
-            this.btnSelect.ForeColor = System.Drawing.Color.White;
-            this.btnSelect.Location = new System.Drawing.Point(546, 657);
-            this.btnSelect.Name = "btnSelect";
-            this.btnSelect.Size = new System.Drawing.Size(120, 30);
-            this.btnSelect.TabIndex = 102;
-            this.btnSelect.Text = "選　択";
-            this.btnSelect.UseVisualStyleBackColor = false;
-            this.btnSelect.Visible = false;
-            this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
-            // 
-            // btnCreate
-            // 
-            this.btnCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnCreate.BackColor = System.Drawing.Color.White;
-            this.btnCreate.Font = new System.Drawing.Font("ＭＳ 明朝", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
-            this.btnCreate.ForeColor = System.Drawing.Color.Green;
-            this.btnCreate.Location = new System.Drawing.Point(420, 657);
-            this.btnCreate.Name = "btnCreate";
-            this.btnCreate.Size = new System.Drawing.Size(120, 30);
-            this.btnCreate.TabIndex = 103;
-            this.btnCreate.Text = "新　規";
-            this.btnCreate.UseVisualStyleBackColor = false;
-            this.btnCreate.Visible = false;
-            this.btnCreate.Click += new System.EventHandler(this.btnCreate_Click);
-            // 
-            // grpExample1
-            // 
-            this.grpExample1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-            this.grpExample1.BackColor = System.Drawing.Color.White;
-            this.grpExample1.BorderColor = System.Drawing.Color.Red;
-            this.grpExample1.Controls.Add(this.lblReqSumType03);
-            this.grpExample1.Controls.Add(this.lblReqSumType01);
-            this.grpExample1.Controls.Add(this.lblReqSumType02);
-            this.grpExample1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
-            this.grpExample1.Font = new System.Drawing.Font("ＭＳ 明朝", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
-            this.grpExample1.Location = new System.Drawing.Point(183, 657);
-            this.grpExample1.Name = "grpExample1";
-            this.grpExample1.Size = new System.Drawing.Size(324, 28);
-            this.grpExample1.TabIndex = 104;
-            this.grpExample1.TabStop = false;
-            this.grpExample1.Visible = false;
-            // 
-            // lblReqSumType03
-            // 
-            this.lblReqSumType03.BackColor = System.Drawing.Color.LightGray;
-            this.lblReqSumType03.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-            this.lblReqSumType03.ForeColor = System.Drawing.Color.White;
-            this.lblReqSumType03.Location = new System.Drawing.Point(218, 4);
-            this.lblReqSumType03.Name = "lblReqSumType03";
-            this.lblReqSumType03.Size = new System.Drawing.Size(100, 20);
-            this.lblReqSumType03.TabIndex = 1;
-            this.lblReqSumType03.Text = "対 象 外";
-            this.lblReqSumType03.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // lblReqSumType01
-            // 
-            this.lblReqSumType01.BackColor = System.Drawing.Color.Yellow;
-            this.lblReqSumType01.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-            this.lblReqSumType01.ForeColor = System.Drawing.Color.Black;
-            this.lblReqSumType01.Location = new System.Drawing.Point(6, 4);
-            this.lblReqSumType01.Name = "lblReqSumType01";
-            this.lblReqSumType01.Size = new System.Drawing.Size(100, 20);
-            this.lblReqSumType01.TabIndex = 0;
-            this.lblReqSumType01.Text = "選択可能";
-            this.lblReqSumType01.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // lblReqSumType02
-            // 
-            this.lblReqSumType02.BackColor = System.Drawing.Color.LightPink;
-            this.lblReqSumType02.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
-            this.lblReqSumType02.ForeColor = System.Drawing.Color.Black;
-            this.lblReqSumType02.Location = new System.Drawing.Point(112, 4);
-            this.lblReqSumType02.Name = "lblReqSumType02";
-            this.lblReqSumType02.Size = new System.Drawing.Size(100, 20);
-            this.lblReqSumType02.TabIndex = 0;
-            this.lblReqSumType02.Text = "選 択 済";
-            this.lblReqSumType02.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
             // Column1
             // 
             this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
@@ -1281,6 +1136,166 @@
             this.Column28.ReadOnly = true;
             this.Column28.Visible = false;
             // 
+            // lblCellTotal
+            // 
+            this.lblCellTotal.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+            this.lblCellTotal.AutoSize = true;
+            this.lblCellTotal.BackColor = System.Drawing.Color.WhiteSmoke;
+            this.lblCellTotal.Font = new System.Drawing.Font("ＭＳ Ｐ明朝", 9.75F, System.Drawing.FontStyle.Bold);
+            this.lblCellTotal.ForeColor = System.Drawing.Color.Black;
+            this.lblCellTotal.Location = new System.Drawing.Point(100, 430);
+            this.lblCellTotal.Name = "lblCellTotal";
+            this.lblCellTotal.Size = new System.Drawing.Size(0, 13);
+            this.lblCellTotal.TabIndex = 36;
+            // 
+            // btnDispDown
+            // 
+            this.btnDispDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnDispDown.Font = new System.Drawing.Font("ＭＳ 明朝", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
+            this.btnDispDown.Location = new System.Drawing.Point(1300, 418);
+            this.btnDispDown.Name = "btnDispDown";
+            this.btnDispDown.Size = new System.Drawing.Size(40, 40);
+            this.btnDispDown.TabIndex = 42;
+            this.btnDispDown.TabStop = false;
+            this.btnDispDown.Text = "▼";
+            this.btnDispDown.UseVisualStyleBackColor = true;
+            this.btnDispDown.Visible = false;
+            this.btnDispDown.Click += new System.EventHandler(this.btnDispDown_Click);
+            // 
+            // btnDispUp
+            // 
+            this.btnDispUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnDispUp.Font = new System.Drawing.Font("ＭＳ 明朝", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
+            this.btnDispUp.Location = new System.Drawing.Point(1300, 354);
+            this.btnDispUp.Name = "btnDispUp";
+            this.btnDispUp.Size = new System.Drawing.Size(40, 40);
+            this.btnDispUp.TabIndex = 41;
+            this.btnDispUp.TabStop = false;
+            this.btnDispUp.Text = "▲";
+            this.btnDispUp.UseVisualStyleBackColor = true;
+            this.btnDispUp.Visible = false;
+            this.btnDispUp.Click += new System.EventHandler(this.btnDispUp_Click);
+            // 
+            // btnOtherProc
+            // 
+            this.btnOtherProc.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+            this.btnOtherProc.BackColor = System.Drawing.Color.SpringGreen;
+            this.btnOtherProc.Location = new System.Drawing.Point(7, 656);
+            this.btnOtherProc.Name = "btnOtherProc";
+            this.btnOtherProc.Size = new System.Drawing.Size(160, 30);
+            this.btnOtherProc.TabIndex = 95;
+            this.btnOtherProc.TabStop = false;
+            this.btnOtherProc.Text = "他の画面へ";
+            this.btnOtherProc.UseVisualStyleBackColor = false;
+            this.btnOtherProc.Click += new System.EventHandler(this.btnOtherProc_Click);
+            // 
+            // button1
+            // 
+            this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.button1.Location = new System.Drawing.Point(1300, 540);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(37, 35);
+            this.button1.TabIndex = 100;
+            this.button1.Text = "○";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Visible = false;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // button2
+            // 
+            this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.button2.Location = new System.Drawing.Point(1300, 581);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(37, 35);
+            this.button2.TabIndex = 101;
+            this.button2.Text = "１";
+            this.button2.UseVisualStyleBackColor = true;
+            this.button2.Visible = false;
+            this.button2.Click += new System.EventHandler(this.button2_Click);
+            // 
+            // btnSelect
+            // 
+            this.btnSelect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnSelect.BackColor = System.Drawing.Color.Green;
+            this.btnSelect.Font = new System.Drawing.Font("ＭＳ 明朝", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
+            this.btnSelect.ForeColor = System.Drawing.Color.White;
+            this.btnSelect.Location = new System.Drawing.Point(546, 657);
+            this.btnSelect.Name = "btnSelect";
+            this.btnSelect.Size = new System.Drawing.Size(120, 30);
+            this.btnSelect.TabIndex = 102;
+            this.btnSelect.Text = "選　択";
+            this.btnSelect.UseVisualStyleBackColor = false;
+            this.btnSelect.Visible = false;
+            this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
+            // 
+            // btnCreate
+            // 
+            this.btnCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.btnCreate.BackColor = System.Drawing.Color.White;
+            this.btnCreate.Font = new System.Drawing.Font("ＭＳ 明朝", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
+            this.btnCreate.ForeColor = System.Drawing.Color.Green;
+            this.btnCreate.Location = new System.Drawing.Point(420, 657);
+            this.btnCreate.Name = "btnCreate";
+            this.btnCreate.Size = new System.Drawing.Size(120, 30);
+            this.btnCreate.TabIndex = 103;
+            this.btnCreate.Text = "新　規";
+            this.btnCreate.UseVisualStyleBackColor = false;
+            this.btnCreate.Visible = false;
+            this.btnCreate.Click += new System.EventHandler(this.btnCreate_Click);
+            // 
+            // grpExample1
+            // 
+            this.grpExample1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+            this.grpExample1.BackColor = System.Drawing.Color.White;
+            this.grpExample1.BorderColor = System.Drawing.Color.Red;
+            this.grpExample1.Controls.Add(this.lblReqSumType03);
+            this.grpExample1.Controls.Add(this.lblReqSumType01);
+            this.grpExample1.Controls.Add(this.lblReqSumType02);
+            this.grpExample1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
+            this.grpExample1.Font = new System.Drawing.Font("ＭＳ 明朝", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
+            this.grpExample1.Location = new System.Drawing.Point(183, 657);
+            this.grpExample1.Name = "grpExample1";
+            this.grpExample1.Size = new System.Drawing.Size(324, 28);
+            this.grpExample1.TabIndex = 104;
+            this.grpExample1.TabStop = false;
+            this.grpExample1.Visible = false;
+            // 
+            // lblReqSumType03
+            // 
+            this.lblReqSumType03.BackColor = System.Drawing.Color.LightGray;
+            this.lblReqSumType03.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.lblReqSumType03.ForeColor = System.Drawing.Color.White;
+            this.lblReqSumType03.Location = new System.Drawing.Point(218, 4);
+            this.lblReqSumType03.Name = "lblReqSumType03";
+            this.lblReqSumType03.Size = new System.Drawing.Size(100, 20);
+            this.lblReqSumType03.TabIndex = 1;
+            this.lblReqSumType03.Text = "対 象 外";
+            this.lblReqSumType03.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // lblReqSumType01
+            // 
+            this.lblReqSumType01.BackColor = System.Drawing.Color.Yellow;
+            this.lblReqSumType01.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.lblReqSumType01.ForeColor = System.Drawing.Color.Black;
+            this.lblReqSumType01.Location = new System.Drawing.Point(6, 4);
+            this.lblReqSumType01.Name = "lblReqSumType01";
+            this.lblReqSumType01.Size = new System.Drawing.Size(100, 20);
+            this.lblReqSumType01.TabIndex = 0;
+            this.lblReqSumType01.Text = "選択可能";
+            this.lblReqSumType01.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // lblReqSumType02
+            // 
+            this.lblReqSumType02.BackColor = System.Drawing.Color.LightPink;
+            this.lblReqSumType02.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.lblReqSumType02.ForeColor = System.Drawing.Color.Black;
+            this.lblReqSumType02.Location = new System.Drawing.Point(112, 4);
+            this.lblReqSumType02.Name = "lblReqSumType02";
+            this.lblReqSumType02.Size = new System.Drawing.Size(100, 20);
+            this.lblReqSumType02.TabIndex = 0;
+            this.lblReqSumType02.Text = "選 択 済";
+            this.lblReqSumType02.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
             // FrmConstructionLedger
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -1287,6 +1302,7 @@
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
             this.BackColor = System.Drawing.Color.Black;
             this.ClientSize = new System.Drawing.Size(1344, 692);
+            this.Controls.Add(this.btnReLoadData);
             this.Controls.Add(this.btnCreate);
             this.Controls.Add(this.btnSelect);
             this.Controls.Add(this.btnOtherProc);
@@ -1422,5 +1438,6 @@
         private System.Windows.Forms.DataGridViewTextBoxColumn Column25;
         private System.Windows.Forms.DataGridViewTextBoxColumn Column26;
         private System.Windows.Forms.DataGridViewTextBoxColumn Column28;
+        private System.Windows.Forms.Button btnReLoadData;
     }
 }
\ No newline at end of file
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionLedger/FrmConstructionLedgerAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionLedger/FrmConstructionLedgerAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/ConstructionLedger/FrmConstructionLedgerAuxiliary.cs	(revision 366)
@@ -213,7 +213,7 @@
                 // デフォルト以上に無ければ処理しない
                 if (dgv.ColumnCount <= ColumnsCnt) return;
 
-                for (int i = dgv.ColumnCount - 1; i > ColumnsCnt; i--)
+                for (int i = dgv.ColumnCount - 1; i >= ColumnsCnt; i--)
                 {
                     dgv.Columns.RemoveAt(i);
                 }
@@ -1746,13 +1746,11 @@
         /// <returns></returns>
         private bool DispDataFromConstructionBudget1()
         {
+            IOConstructionBudgetDetail DetailDB = new IOConstructionBudgetDetail();
             try
             {
                 DataGridViewEX dgv = dgvAllDisplay;
                 int GroupNo = (int)DataGroup.Expenses;
-                int icnt = 0;
-                // 受注金額取得
-                double OrdersPrice = CommonMotions.cnvInt(m_DspLabelCtrl[(int)DspLblCtrlName.OrdersPrice].Text);
 
                 // グループ名表示
                 CreateTitleRow(GroupNo, s_GroupTitle[GroupNo]);
@@ -1760,56 +1758,134 @@
                 // 行位置取得
                 m_CostsRowCount[(int)CostsRowLine.ExpensesRowLine] = dgv.RowCount - 1;
 
-                // 工事予算書より経費を取り込む
+                // 経費率を取得する
                 GetBudgetExpensesList();
 
-                // 先頭行取得
-                int nTopRow = dgv.RowCount;
+                // ----- 工事予算書より経費を取り込む
+                // 工事予算書明細データを読み込む
+                StringBuilder strSQL = new StringBuilder();
+                // 工事予算書明細データ（経費）取得SQL作成
+                CreateExpenessSQL(m_ConstructionCode, ref strSQL);
+                ArrayList ArList = new ArrayList();
+                if (!DetailDB.ExecuteReader(strSQL.ToString(), ref ArList)) return false;
+
+                // 工事予算書が無い場合は部署経費より作成する
+                if (ArList.Count < 1)
+                {
+                    // 部署別経費リストより取得データを作成する
+                    CreateExpensesList2ArrayData(ref ArList);
+                }
+
+                int icnt = 0;
+                foreach (object[] wrkExpense in ArList)
+                {
+                    // 経費行新規作成
+                    SetInitExpenses(wrkExpense, ref icnt);
+                }
+                // 一般管理費セット
+                GetEstimateNormalManege();
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+            finally
+            {
+                DetailDB.close(); DetailDB = null;
+            }
+        }
+        #endregion
+
+        #region 部署別経費リストより工事予算書の取得データを作成する
+        /// <summary>
+        /// 部署別経費リストより工事予算書の取得データを作成する
+        /// </summary>
+        private void CreateExpensesList2ArrayData(ref ArrayList ArList)
+        {
+            try
+            {
+                // 受注金額取得
+                double OrdersPrice = CommonMotions.cnvInt(m_DspLabelCtrl[(int)DspLblCtrlName.OrdersPrice].Text);
+
                 foreach (object[] wrkExpense in m_ExpensesList)
                 {
+                    // 経費名称取得
+                    string strVallue = CommonMotions.cnvString(wrkExpense[(int)CommonMotions.ExpensesArray.ExpensesName]);
                     // 経費率取得
-                    string strVallue = CommonMotions.cnvString(wrkExpense[(int)CommonMotions.ExpensesArray.ExpensesName]);
                     double dExpenses = CommonMotions.cnvDouble(wrkExpense[(int)CommonMotions.ExpensesArray.ExpensesRaito]);
-
-                    object[] RowData = new object[dgv.Columns.Count];
-
                     // 金額計算
                     int CalcValue = CommonMotions.cnvRound(OrdersPrice * (dExpenses / 100.0));
 
                     // データセット
-                    RowData[(int)GridColumn.No] = string.Format("{0}-{1}", GroupNo, ++icnt);
-                    RowData[(int)GridColumn.FixFlg] = "*";
-                    RowData[(int)GridColumn.GroupCount] = GroupNo;
-                    RowData[(int)GridColumn.ComponentCode] = CommonMotions.cnvInt(wrkExpense[(int)CommonMotions.ExpensesArray.NameCode]);
-                    RowData[(int)GridColumn.ItemName] = string.Format("{0}({1}%)", strVallue, dExpenses.ToString("0.00"));
-                    RowData[(int)GridColumn.CompanyType] = 0;
-                    RowData[(int)GridColumn.CompanyCode] = 0;
-                    RowData[(int)GridColumn.ExecPrice] = CalcValue.ToString("#,#");
-                    RowData[(int)GridColumn.Percent] = dExpenses.ToString("0.00");
-                    RowData[(int)GridColumn.IndependentFlg] = "1";
-                    RowData[(int)GridColumn.FluctuationFlg] = "0";
-                    RowData[(int)GridColumn.Payment] = CalcValue.ToString("#,#");
-                    RowData[(int)GridColumn.SourceCode] = m_ConstructionCode;
-                    
-                    // 合計欄位置取得
-                    int TotalPoint = dgv.ColumnCount + (int)ColPayTotal.Totals;
-                    RowData[TotalPoint] = CalcValue.ToString("#,#");
-                    // 実績欄位置取得
-                    int ResultPoint = dgv.ColumnCount + (int)ColPayTotal.Results;
-                    RowData[ResultPoint] = "0";
-
-                    // 行セット
-                    CreateDataRow(RowData);
+                    ArList.Add(new object[] { m_ConstructionCode,
+                                                OrdersPrice,
+                                                CommonMotions.cnvInt(wrkExpense[(int)CommonMotions.ExpensesArray.NameCode]),
+                                                dExpenses,
+                                                CalcValue,
+                                                CalcValue,
+                                                strVallue
+                                            });
                 }
-                // 一般管理費セット
-                GetEstimateNormalManege();
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
 
-                return true;
+        #region 経費行新規作成
+        /// <summary>
+        /// 経費行新規作成
+        /// </summary>
+        private void SetInitExpenses(object[] ObjCurRec, ref int nDataCnt)
+        {
+            try
+            {
+                // 経費コード取得
+                int nExpensesCode = CommonMotions.cnvInt(ObjCurRec[(int)ExpRecDef.ComponentCode]);
+                // 経費金額取得
+                int nValue = CommonMotions.cnvInt(ObjCurRec[(int)ExpRecDef.ExecutionAmount]);
+                // 経費率取得
+                double dExpenses = CommonMotions.cnvDouble(ObjCurRec[(int)ExpRecDef.AmountConfigRate]);
+                // 経費名称取得
+                string strVallue= CommonMotions.cnvString(ObjCurRec[(int)ExpRecDef.ExpensesName]);
+
+                DataGridViewEX dgv = dgvAllDisplay;
+                object[] RowSetData = new object[dgv.Columns.Count];
+
+                int GroupNo = (int)DataGroup.Expenses;
+                // データセット
+                RowSetData[(int)GridColumn.No] = string.Format("{0}-{1}", GroupNo, ++nDataCnt);
+                RowSetData[(int)GridColumn.FixFlg] = "*";
+                RowSetData[(int)GridColumn.GroupCount] = GroupNo;
+                RowSetData[(int)GridColumn.ComponentCode] = nExpensesCode;
+                RowSetData[(int)GridColumn.ItemName] = string.Format("{0}({1}%)", strVallue, dExpenses.ToString("0.00"));
+                RowSetData[(int)GridColumn.CompanyType] = 0;
+                RowSetData[(int)GridColumn.CompanyCode] = 0;
+                RowSetData[(int)GridColumn.ExecPrice] = nValue.ToString("#,#");
+                RowSetData[(int)GridColumn.Percent] = dExpenses.ToString("0.00");
+                RowSetData[(int)GridColumn.IndependentFlg] = "1";
+                RowSetData[(int)GridColumn.FluctuationFlg] = "0";
+                RowSetData[(int)GridColumn.Payment] = nValue.ToString("#,#");
+                RowSetData[(int)GridColumn.SourceCode] = m_ConstructionCode;
+
+                // 合計欄位置取得
+                int TotalPoint = dgv.ColumnCount + (int)ColPayTotal.Totals;
+                RowSetData[TotalPoint] = nValue.ToString("#,#");
+                // 実績欄位置取得
+                int ResultPoint = dgv.ColumnCount + (int)ColPayTotal.Results;
+                RowSetData[ResultPoint] = "0";
+
+                // 行セット
+                CreateDataRow(RowSetData);
             }
             catch (Exception ex)
             {
                 logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-                return false;
             }
         }
         #endregion
@@ -1929,9 +2005,9 @@
         }
         #endregion
 
-        #region 工事予算書より経費データを取り込む
+        #region 経費率データを取り込む
         /// <summary>
-        /// 工事予算書より経費データを取り込む
+        /// 経費率データを取り込む
         /// </summary>
         private void GetBudgetExpensesList()
         {
@@ -1939,15 +2015,16 @@
             try
             {
                 int DivCode = DivisionMaster.DivisionMasterCode.First(x => x.Value.Equals("工事経費名称登録")).Key;
-                string strSQL = "SELECT B.NAMESTRING, A.AMOUNTCONFIGRATE, A.COMPONENTCODE";
-                strSQL += " FROM CONSTRUCTIONBUDGETDETAIL A, DIVISIONMASTER B";
-                strSQL += DetailDB.CreatePrimarykeyString(m_ConstructionCode, (int)FrmConstructionBudget.DataGroup.Expenses, 0, "A");
-                strSQL += string.Format(" AND B.DIVISIONCODE = {0}", DivCode);
-                strSQL += " AND B.NAMECODE = A.COMPONENTCODE";
-                strSQL += " ORDER BY A.LINECOUNT";
+                StringBuilder strSQL = new StringBuilder();
+                strSQL.Append("SELECT B.NAMESTRING, A.AMOUNTCONFIGRATE, A.COMPONENTCODE");
+                strSQL.Append(" FROM CONSTRUCTIONBUDGETDETAIL A, DIVISIONMASTER B");
+                strSQL.Append(DetailDB.CreatePrimarykeyString(m_ConstructionCode, (int)FrmConstructionBudget.DataGroup.Expenses, 0, "A"));
+                strSQL.AppendFormat(" AND B.DIVISIONCODE = {0}", DivCode);
+                strSQL.Append(" AND B.NAMECODE = A.COMPONENTCODE");
+                strSQL.Append(" ORDER BY A.LINECOUNT");
 
                 ArrayList DetailList = new ArrayList();
-                if (!DetailDB.ExecuteReader(strSQL, ref DetailList)) return;
+                if (!DetailDB.ExecuteReader(strSQL.ToString(), ref DetailList)) return;
                 if (DetailList.Count == 0) return;
                 
                 m_ExpensesList.Clear();
@@ -1970,6 +2047,9 @@
         }
         #endregion
 
+        #region 工事予算書より経費を取り込む
+        #endregion
+
         #region 工事予算書より施工費を取り込む
         /// <summary>
         /// 工事予算書より施工費を取り込む
@@ -6135,6 +6215,78 @@
         }
         #endregion
 
+        #region 工事予算書明細データ（経費）取得SQL作成
+        /// <summary>
+        /// データ取得順番
+        /// </summary>
+        private enum ExpRecDef
+        {
+            /// <summary>
+            /// 0:工事番号
+            /// </summary>
+            ConstructionCode = 0,
+            /// <summary>
+            /// 1:受注金額
+            /// </summary>
+            OrdersDecisionPrice,
+            /// <summary>
+            /// 2:経費率コード
+            /// </summary>
+            ComponentCode,
+            /// <summary>
+            /// 3:経費率
+            /// </summary>
+            AmountConfigRate,
+            /// <summary>
+            /// 4:経費金額
+            /// </summary>
+            ExecutionAmount,
+            /// <summary>
+            /// 5:計算値経費金額
+            /// </summary>
+            CalcVal,
+            /// <summary>
+            /// 6:経費名称
+            /// </summary>
+            ExpensesName,
+        }
+        /// <summary>
+        /// 工事予算書明細データ（経費）取得SQL作成
+        /// </summary>
+        private void CreateExpenessSQL(int ConstrCode, ref StringBuilder strSQL)
+        {
+            try
+            {
+                // 工事予算書明細データ（経費）取得SQL
+                strSQL.Append("SELECT");
+                strSQL.Append(" A.ConstructionCode");
+                strSQL.Append(", B.OrdersDecisionPrice");
+                strSQL.Append(", A.ComponentCode");
+                strSQL.Append(", A.AmountConfigRate");
+                strSQL.Append(", A.ExecutionAmount");
+                strSQL.Append(", ROUND(B.OrdersDecisionPrice * (A.AmountConfigRate / 100.0), 0) As CalcVal");
+                strSQL.Append(", C.NameString");
+                strSQL.Append(" FROM CONSTRUCTIONBUDGETDETAIL A");
+
+                strSQL.Append(" Inner Join CONSTRUCTIONBUDGET As B");
+                strSQL.Append("        On B.ConstructionCode = A.ConstructionCode");
+
+                strSQL.Append(" Inner Join divisionmaster As C");
+                strSQL.AppendFormat("  On C.DivisionCode = {0}", (int)DivisionMaster.DivisionMasterCodeDef.ConstructionExpenses);
+                strSQL.Append("        And C.NameCode = A.ComponentCode");
+
+                strSQL.AppendFormat(" Where A.ConstructionCode = {0}", ConstrCode);
+                strSQL.AppendFormat(" AND A.GROUPCOUNT = {0}", (int)FrmConstructionBudget.DataGroup.Expenses);       // 経費
+                strSQL.Append(" ORDER BY A.GroupCount ASC, A.LineCount ASC");
+
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
         #region データ追加：経費再計算
         /// <summary>
         /// データ追加：経費再計算
@@ -6141,8 +6293,19 @@
         /// </summary>
         private bool SetAddData_Expeness()
         {
+            IOConstructionBudgetDetail DetailDB = new IOConstructionBudgetDetail();
             try
             {
+                // 工事予算書明細データを読み込む
+                StringBuilder strSQL = new StringBuilder();
+                // 工事予算書明細データ（経費）取得SQL作成
+                CreateExpenessSQL(m_AddingConstrCode, ref strSQL);
+                ArrayList ArList = new ArrayList();
+                if (!DetailDB.ExecuteReader(strSQL.ToString(), ref ArList)) return false;
+
+                // 追加は増減工事のみなので工事予算書が無い場合はエラー
+                if (ArList.Count < 1) return false;
+
                 DataGridViewEX dgv = dgvAllDisplay;
 
                 int GroupNo = (int)DataGroup.Expenses;
@@ -6149,9 +6312,6 @@
                 // 受注金額取得
                 double OrdersPrice = CommonMotions.cnvInt(m_DspLabelCtrl[(int)DspLblCtrlName.OrdersPrice].Text);
 
-                // 行位置取得
-                int StartLine = m_CostsRowCount[(int)CostsRowLine.ExpensesRowLine];
-
                 // ----- 経費支払月の計算
                 // 現在年月日取得
                 string NowMonth = string.Format("{0}/{1}/1", DateTime.Now.Year, DateTime.Now.Month);
@@ -6163,38 +6323,53 @@
                 DateTime EdDate = CommonMotions.cnvDate(NowMonth);
                 int Betwen = (int)GridColumn.Payment + MonthDiff(StDate, EdDate);
 
-                double dExpenses = 0;
-                double NowValue = 0;
-                double CalcValue = 0;
                 // 合計欄位置取得
                 int TotalPoint = dgv.ColumnCount + (int)ColPayTotal.Totals;
-                for (int i = StartLine; i < dgv.RowCount; i++)
+
+                // 行位置取得
+                int StartLine = m_CostsRowCount[(int)CostsRowLine.ExpensesRowLine];
+                bool bSetData = false;
+                int icnt = 0;
+                foreach (object[] ObjCur in ArList)
                 {
-                    DataGridViewRow GridRow = dgv.Rows[i];
+                    bSetData = false;
+                    // 経費コード取得
+                    int nExpensesCode = CommonMotions.cnvInt(ObjCur[(int)ExpRecDef.ComponentCode]);
+                    // 経費金額取得
+                    int nValue = CommonMotions.cnvInt(ObjCur[(int)ExpRecDef.ExecutionAmount]);
+                    for (int i = StartLine; i < dgv.RowCount; i++)
+                    {
+                        DataGridViewRow GridRow = dgv.Rows[i];
 
-                    // 経費グループ以外は処理しない
-                    if (CommonMotions.cnvInt(GridRow.Cells[(int)GridColumn.GroupCount].Value) != GroupNo) break;
+                        // 経費グループ以外は処理しない
+                        if (CommonMotions.cnvInt(GridRow.Cells[(int)GridColumn.GroupCount].Value) != GroupNo) continue;
+                        // 同じ経費のものを処理する
+                        if (CommonMotions.cnvInt(GridRow.Cells[(int)GridColumn.ComponentCode].Value) != nExpensesCode) continue;
 
-                    // 経費率取得
-                    dExpenses = CommonMotions.cnvDouble(GridRow.Cells[(int)GridColumn.Percent].Value);
+                        // 金額現在値取得
+                        int NowValue = CommonMotions.cnvInt(GridRow.Cells[Betwen].Value);
+                        // 増減経費金額加算
+                        NowValue += nValue;
+                        // 経費金額セット
+                        GridRow.Cells[Betwen].Value = NowValue.ToString("#,#");
 
-                    // 実行金額現在値取得
-                    NowValue = CommonMotions.cnvInt(GridRow.Cells[(int)GridColumn.ExecPrice].Value);
-                    // 金額計算
-                    CalcValue = CommonMotions.cnvRound(OrdersPrice * (dExpenses / 100.0));
+                        // 経費合計セット
+                        int CalcValue = 0;
+                        for (int ix = (int)GridColumn.Payment; ix < TotalPoint; ix++)
+                        {
+                            CalcValue += CommonMotions.cnvInt(GridRow.Cells[ix].Value);
+                        }
+                        GridRow.Cells[TotalPoint].Value = CalcValue.ToString("#,#");
 
-                    // 支払金額セット
-                    if (Betwen == (int)GridColumn.Payment)
-                    {   // 工期が１カ月しかない場合
-                        GridRow.Cells[Betwen].Value = ((int)CalcValue).ToString("#,#");
+                        bSetData = true;
+                        ++icnt;
+                        break;
                     }
-                    else
-                    {   // 工期が数カ月ある場合
-                        GridRow.Cells[Betwen].Value = ((int)(CalcValue - NowValue)).ToString("#,#");
+                    if (!bSetData)
+                    {
+                        // 対象行が無かったときは経費行新規作成
+                        SetInitExpenses(ObjCur, ref icnt);
                     }
-
-                    // 経費セット
-                    GridRow.Cells[TotalPoint].Value = ((int)CalcValue).ToString("#,#");
                 }
                 return true;
             }
@@ -6203,6 +6378,10 @@
                 logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
                 return false;
             }
+            finally
+            {
+                DetailDB.close(); DetailDB = null;
+            }
         }
         #endregion
 
@@ -6248,13 +6427,14 @@
             try
             {
                 // 工事予算書明細データを読み込む
-                string strSQL = DetailDB.CreatePrimarykeyString(m_AddingConstrCode);
-                strSQL += string.Format(" AND (GROUPCOUNT = {0}", (int)FrmConstructionBudget.DataGroup.CommonTempCosts);       // 共通仮設
-                strSQL += string.Format(" OR GROUPCOUNT = {0}", (int)FrmConstructionBudget.DataGroup.OutSourceCosts);          // 外注費
-                strSQL += string.Format(" OR GROUPCOUNT = {0})", (int)FrmConstructionBudget.DataGroup.MyConstruction);         // 自社施工
-                strSQL += " ORDER BY GroupCount ASC, LineCount ASC";
+                StringBuilder strSQL = new StringBuilder();
+                strSQL.Append(DetailDB.CreatePrimarykeyString(m_AddingConstrCode));
+                strSQL.AppendFormat(" AND (GROUPCOUNT = {0}", (int)FrmConstructionBudget.DataGroup.CommonTempCosts);       // 共通仮設
+                strSQL.AppendFormat(" OR GROUPCOUNT = {0}", (int)FrmConstructionBudget.DataGroup.OutSourceCosts);          // 外注費
+                strSQL.AppendFormat(" OR GROUPCOUNT = {0})", (int)FrmConstructionBudget.DataGroup.MyConstruction);         // 自社施工
+                strSQL.Append(" ORDER BY GroupCount ASC, LineCount ASC");
                 List<ConstructionBudgetDetail> DetailList = new List<ConstructionBudgetDetail>();
-                if (!DetailDB.SelectAction(strSQL, ref DetailList)) return false;
+                if (!DetailDB.SelectAction(strSQL.ToString(), ref DetailList)) return false;
                 if (DetailList.Count == 0) return false;
 
                 DataGridViewEX dgv = dgvAllDisplay;
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/CopyTargetList/FrmNewOrContinueCopy.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/CopyTargetList/FrmNewOrContinueCopy.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/CopyTargetList/FrmNewOrContinueCopy.cs	(revision 366)
@@ -607,9 +607,9 @@
                 // ----- 見積データのみコピー・工事情報のみコピー
                 int PeriodValue = 0;
                 if (CommonMotions.SystemMasterData.ConstructionNoBase == (int)SystemMaster.ConstrNoBaseDef.BusinessPeriod)
-                    PeriodValue = m_BaseRec.ConstructionPeriod;
+                    PeriodValue = CommonMotions.SystemMasterData.BusinessPeriod;
                 else
-                    PeriodValue = m_BaseRec.ConstructionYear;
+                    PeriodValue = CommonMotions.SystemMasterData.ConstrYear;
 
                 // 新規工事番号の表示
                 int ConstructionCode = cbDB.CreateNewCounstructionCode(PeriodValue);
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/CostomerRegist/FrmCostomerRegist.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/CostomerRegist/FrmCostomerRegist.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/CostomerRegist/FrmCostomerRegist.cs	(revision 366)
@@ -333,17 +333,17 @@
             }
 
             // 承認画面の「承認対象データを見る」からの起動時は承認ボタンの表示がある
-            bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
+            bool bApproval = ClsCommonApproval.ExceApprovalScreen();
             if (bApproval)
             {
                 // 承認対象コードを取得する
                 int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
                 // 工事案件の管理部署を取得する
-                int DepartmentCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(m_PersonCode, ApprovalCode, m_CreateDate, m_SeqNo);
+                int DepartmentCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(m_PersonCode, ApprovalCode, m_CreateDate, m_SeqNo);
                 // 案件に対して申請がされているかを確認する
-                bool Pettition = ClsApprovalPermission.CheckPersonPetition(m_PersonCode, ApprovalCode, m_CreateDate, m_SeqNo);
+                bool Pettition = ClsCommonApproval.CheckPersonPetition(m_PersonCode, ApprovalCode, m_CreateDate, m_SeqNo);
                 // ログイン者が承認者かを確認する
-                bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
+                bool Approvaler = ClsCommonApproval.CheckUserForApprover(ApprovalCode, DepartmentCode);
                 // 申請中でログイン者が承認者の場合は承認ボタンを表示する
                 if (Pettition && Approvaler)
                 {
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/CostomerRegist/FrmCostomerRegistAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/CostomerRegist/FrmCostomerRegistAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/CostomerRegist/FrmCostomerRegistAuxiliary.cs	(revision 366)
@@ -208,7 +208,7 @@
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
 
                 // 起動元のリストに承認画面があれば表示しない
-                if (ClsApprovalPermission.ExceApprovalScreen())
+                if (ClsCommonApproval.ExceApprovalScreen())
                 {
                     pnlApproval.Visible = false;
                 }
@@ -223,7 +223,7 @@
                 DateTime OrderDate = CommonMotions.cnvDate(m_dispControl[(int)DispCtrl.OrderDate].Text);
                 int OrderNo = CommonMotions.cnvInt(m_dispControl[(int)DispCtrl.OrderNo].Text);
                 // ----- 担当者コード・承認機能番号取得（申請レコードがない場合は未申請）
-                if (!ClsApprovalPermission.CheckPersonPetition(m_PersonCode,
+                if (!ClsCommonApproval.CheckPersonPetition(m_PersonCode,
                                                                 iApprovalCode,
                                                                 OrderDate,
                                                                 OrderNo)) return;
@@ -239,7 +239,7 @@
                 btnApproval.Visible = true;
 
                 // ----- 承認済の場合
-                if (ClsApprovalPermission.CheckPersonApproval(m_PersonCode, iApprovalCode, OrderDate, OrderNo))
+                if (ClsCommonApproval.CheckPersonApproval(m_PersonCode, iApprovalCode, OrderDate, OrderNo))
                 {
                     btnApproval.Text = CommonDefine.ApprovalButtonString[1];
                     btnApproval.ForeColor = Color.Black;
@@ -278,13 +278,13 @@
                 // 担当者コード・承認機能番号取得
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
                 // 担当部署取得
-                int DepartmentCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(m_PersonCode, iApprovalCode, OrderDate, 1);
+                int DepartmentCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(m_PersonCode, iApprovalCode, OrderDate, 1);
 
                 // 承認データ取得
-                int ApprovalCount = ClsApprovalPermission.GetPersonApprovalDataCount(m_PersonCode, iApprovalCode, OrderDate);
+                int ApprovalCount = ClsCommonApproval.GetPersonApprovalDataCount(m_PersonCode, iApprovalCode, OrderDate);
 
                 // 承認経路マスタ取得
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
+                int MasterCount = ClsCommonApproval.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
 
                 // 初期値セット
                 lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRConstruction/FrmDRConstruction.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRConstruction/FrmDRConstruction.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRConstruction/FrmDRConstruction.cs	(revision 366)
@@ -591,17 +591,17 @@
                 // *-----* �����ړ��{�^���ݒ� *-----*
 
                 // ���F��ʂ́u���F�Ώۃf�[�^������v����̋N�����͏��F�{�^���̕\��������
-                bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
+                bool bApproval = ClsCommonApproval.ExceApprovalScreen();
                 if (bApproval && !m_SubForm)
                 {
                     // �H���Č��̊Ǘ��������擾����
-                    int DepartmentCode = ClsApprovalPermission.GetFromConstructionTheDepartment(m_ConstructionCode);
+                    int DepartmentCode = ClsCommonApproval.GetFromConstructionTheDepartment(m_ConstructionCode);
                     // ���F�ΏۃR�[�h���擾����
                     int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("�H�����񏳔F")).Key;
                     // �Č��ɑ΂��Đ\��������Ă��邩���m�F����
-                    bool Pettition = ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonDefine.s_Default_OrderNo);
+                    bool Pettition = ClsCommonApproval.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonDefine.s_Default_OrderNo);
                     // ���O�C���҂����F�҂����m�F����
-                    bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
+                    bool Approvaler = ClsCommonApproval.CheckUserForApprover(ApprovalCode, DepartmentCode);
                 }
 
                 // �Q�ƃ��[�h
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRConstruction/FrmDRConstructionAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRConstruction/FrmDRConstructionAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRConstruction/FrmDRConstructionAuxiliary.cs	(revision 366)
@@ -3031,7 +3031,7 @@
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("工事日報承認")).Key;
 
                 // 起動元のリストに承認画面があれば表示しない
-                if (ClsApprovalPermission.ExceApprovalScreen())
+                if (ClsCommonApproval.ExceApprovalScreen())
                 {
                     pnlApproval.Visible = false;
                 }
@@ -3044,7 +3044,7 @@
                 btnPetition.Size = new Size(250, btnPetition.Size.Height);
 
                 // ----- 工事コード・承認機能番号取得（申請レコードがなお場合は未申請）
-                if (!ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo)) return;
+                if (!ClsCommonApproval.CheckProcessPetition(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo)) return;
 
                 // ----- 申請済の場合
                 // 申請ボタンの表示
@@ -3057,7 +3057,7 @@
                 btnApproval.Visible = true;
 
                 // ----- 承認済の場合
-                if (ClsApprovalPermission.CheckProcessApproval(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo))
+                if (ClsCommonApproval.CheckProcessApproval(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo))
                 {
                     btnApproval.Text = CommonDefine.ApprovalButtonString[1];
                     btnApproval.ForeColor = Color.Black;
@@ -3092,13 +3092,13 @@
                 int iConstructionCode = m_ConstructionBaseInfo.ConstructionCode;
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("工事日報承認")).Key;
                 // 担当部署取得
-                int DepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionBaseInfo.ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
+                int DepartmentCode = ClsCommonApproval.GetFromConstrAndAppTheDep(m_ConstructionBaseInfo.ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
 
                 // 承認データ取得
-                int ApprovalCount = ClsApprovalPermission.GetProcessApprovalDataCount(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
+                int ApprovalCount = ClsCommonApproval.GetProcessApprovalDataCount(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
 
                 // 承認経路マスタ取得
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
+                int MasterCount = ClsCommonApproval.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
 
                 // 初期値セット
                 lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRWork/FrmDRWork.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRWork/FrmDRWork.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRWork/FrmDRWork.cs	(revision 366)
@@ -325,17 +325,17 @@
                 }
 
                 // 承認画面の「承認対象データを見る」からの起動時は承認ボタンの表示がある
-                bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
+                bool bApproval = ClsCommonApproval.ExceApprovalScreen();
                 if (bApproval)
                 {
                     // 承認対象コードを取得する
                     int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
                     // 工事案件の管理部署を取得する
-                    int DepartmentCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(m_PersonCode, ApprovalCode, m_OrderDate, m_OrderNo);
+                    int DepartmentCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(m_PersonCode, ApprovalCode, m_OrderDate, m_OrderNo);
                     // 案件に対して申請がされているかを確認する
-                    bool Pettition = ClsApprovalPermission.CheckPersonPetition(m_PersonCode, ApprovalCode, m_OrderDate, m_OrderNo);
+                    bool Pettition = ClsCommonApproval.CheckPersonPetition(m_PersonCode, ApprovalCode, m_OrderDate, m_OrderNo);
                     // ログイン者が承認者かを確認する
-                    bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
+                    bool Approvaler = ClsCommonApproval.CheckUserForApprover(ApprovalCode, DepartmentCode);
                     // 申請中でログイン者が承認者の場合は承認ボタンを表示する
                     if (Pettition && Approvaler)
                     {
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRWork/FrmDRWorkAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRWork/FrmDRWorkAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/DRWork/FrmDRWorkAuxiliary.cs	(revision 366)
@@ -2061,13 +2061,13 @@
                 // 担当者コード・承認機能番号取得
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
                 // 担当部署取得
-                int DepartmentCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(m_PersonCode, iApprovalCode, m_OrderDate, m_OrderNo);
+                int DepartmentCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(m_PersonCode, iApprovalCode, m_OrderDate, m_OrderNo);
 
                 // 承認データ取得
-                int ApprovalCount = ClsApprovalPermission.GetPersonApprovalDataCount(m_PersonCode, iApprovalCode, m_OrderDate);
+                int ApprovalCount = ClsCommonApproval.GetPersonApprovalDataCount(m_PersonCode, iApprovalCode, m_OrderDate);
 
                 // 承認経路マスタ取得
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
+                int MasterCount = ClsCommonApproval.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
 
                 // 初期値セット
                 lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
@@ -2092,7 +2092,7 @@
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
 
                 // 起動元のリストに承認画面があれば表示しない
-                if (ClsApprovalPermission.ExceApprovalScreen())
+                if (ClsCommonApproval.ExceApprovalScreen())
                 {
                     pnlApproval.Visible = false;
                 }
@@ -2105,7 +2105,7 @@
                 btnPetition.Size = new Size(250, btnPetition.Size.Height);
 
                 // ----- 担当者コード・承認機能番号取得（申請レコードがない場合は未申請）
-                if (!ClsApprovalPermission.CheckPersonPetition(m_PersonCode,
+                if (!ClsCommonApproval.CheckPersonPetition(m_PersonCode,
                                                                 iApprovalCode,
                                                                 m_OrderDate,
                                                                 m_OrderNo)) return;
@@ -2121,7 +2121,7 @@
                 btnApproval.Visible = true;
 
                 // ----- 承認済の場合
-                if (ClsApprovalPermission.CheckPersonApproval(m_PersonCode, iApprovalCode, m_OrderDate, m_OrderNo))
+                if (ClsCommonApproval.CheckPersonApproval(m_PersonCode, iApprovalCode, m_OrderDate, m_OrderNo))
                 {
                     btnApproval.Text = CommonDefine.ApprovalButtonString[1];
                     btnApproval.ForeColor = Color.Black;
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateBudget/FrmEstimateBudget.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateBudget/FrmEstimateBudget.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateBudget/FrmEstimateBudget.cs	(revision 366)
@@ -396,6 +396,13 @@
         /// </summary>
         private bool m_EditLock = false;
 
+        #region ���F�p�l�����X�g
+        /// <summary>
+        /// ���F�p�l�����X�g
+        /// </summary>
+        private List<Panel> m_ApplPnlList = new List<Panel>();
+        #endregion
+
         // *-----* ���ʏ����ݒ� *-----*
         /// <summary>
         /// �T�u�t�H�[���t���O
@@ -667,14 +674,18 @@
                 InitDataLoad();
 
                 // �\���E���F�\������
-                InitApprovalDisplay();
+                // ----- ���F�ς̏ꍇ���F�ς݃t���OON
+                if (ClsCommonApproval.CheckProcessApproval(m_ConstructionCode
+                                                                , (int)ClsExcute.ApprovalListNo.EstimateBudgetApproval
+                                                                , CommonDefine.s_Default_OrderNo))
+                {
+                    m_EditLock = true;
+                }
 
                 // �Q�Ǝ��͕ύX�ł��Ȃ�
                 if (m_EditLock)
                 {
                     BudgetInputReadOnly();
-                    btnApproval.Enabled = false;
-                    btnPetition.Enabled = false;
                 }
 
                 // *-----* �����ړ��{�^���ݒ� *-----*
@@ -681,24 +692,11 @@
                 CreateProcessContextMenu(m_SubForm);
                 // *-----* �����ړ��{�^���ݒ� *-----*
 
-                // ���F��ʂ́u���F�Ώۃf�[�^������v����̋N�����͏��F�{�^���̕\��������
-                bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
-                if (bApproval && !m_SubForm)
-                {
-                    // �H���Č��̊Ǘ��������擾����
-                    int DepartmentCode = ClsApprovalPermission.GetFromConstructionTheDepartment(m_ConstructionCode);
-                    // ���F�ΏۃR�[�h���擾����
-                    int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("�ώZ�\�Z�����F")).Key;
-                    // �Č��ɑ΂��Đ\��������Ă��邩���m�F����
-                    bool Pettition = ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonDefine.s_Default_OrderNo);
-                    // ���O�C���҂����F�҂����m�F����
-                    bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
-                    // �\�����Ń��O�C���҂����F�҂̏ꍇ�͏��F�{�^����\������
-                    if (Pettition && Approvaler)
-                    {
-                        pnlApprovalButton.Visible = true;
-                    }
-                }
+                // �\���E���F�\������
+                ClsCommonApproval.CtrlConstrAppPanel((int)ClsExcute.ApprovalListNo.EstimateBudgetApproval
+                                                        , m_ConstructionCode
+                                                        , 1
+                                                        , m_ApplPnlList);
 
                 // �ύX�t���OOFF
                 m_bChengeAns = false;
@@ -1285,6 +1283,9 @@
         {
             try
             {
+                // �\�������Ϗ��`�F�b�N
+                if (!EstimateLinkCheck()) return;
+
                 // �f�[�^�ύX�L���̓f�[�^�o�^
                 if (m_bChengeAns)
                 {
@@ -1385,6 +1386,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                // �\�������Ϗ��`�F�b�N
+                if (!EstimateLinkCheck()) return;
+
                 if (MessageBox.Show("�Č���ۗ��Ƃ��܂��A��낵���ł����H�B", "�ۗ��m�F"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
@@ -1437,6 +1441,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                // �\�������Ϗ��`�F�b�N
+                if (!EstimateLinkCheck()) return;
+
                 if (MessageBox.Show("�Č���s���F���܂��A��낵���ł����H�B", "�s���F�m�F"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateBudget/FrmEstimateBudgetAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateBudget/FrmEstimateBudgetAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateBudget/FrmEstimateBudgetAuxiliary.cs	(revision 366)
@@ -111,6 +111,9 @@
             m_dispLabelControl[(int)DispControl.ConstructionTime] = textBox1;
             m_dispLabelControl[(int)DispControl.IntegratedPerson] = lblLabel05;
             m_dispLabelControl[(int)DispControl.OrdersName] = lblLabel06;
+
+            m_ApplPnlList.Add(pnlApproval);
+            m_ApplPnlList.Add(pnlApprovalButton);
         }
         #endregion
 
@@ -206,96 +209,6 @@
         }
         #endregion
 
-        #region 承認数表示
-        /// <summary>
-        /// 承認件数のセット
-        /// </summary>
-        private void SetApprovalCount()
-        {
-            try
-            {
-                // 初期値セット
-                lblApprovalCount.Text = "";
-
-                // 工事コード・承認機能番号取得
-                int iConstructionCode = m_ConstructionBaseInfo.ConstructionCode;
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("積算予算書承認")).Key;
-                // 担当部署取得
-                int DepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionBaseInfo.ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
-
-                // 承認データ取得
-                int ApprovalCount = ClsApprovalPermission.GetProcessApprovalDataCount(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
-
-                // 承認経路マスタ取得
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
-
-                // 初期値セット
-                lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
-
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
-        #region 初期時申請・承認表示処理
-        /// <summary>
-        /// 初期時申請・承認表示処理
-        /// </summary>
-        private void InitApprovalDisplay()
-        {
-            try
-            {
-                // 起動元のリストに承認画面があれば表示しない
-                if (ClsApprovalPermission.ExceApprovalScreen())
-                {
-                    pnlApproval.Visible = false;
-                }
-
-                // 承認ボタン・件数の非表示
-                btnApproval.Visible = false;
-                lblApprovalCount.Visible = false;
-
-                // ----- 初期時は申請ボタンのサイズを最大にする
-                btnPetition.Size = new Size(250, btnPetition.Size.Height);
-
-                // ----- 工事コード・承認機能番号取得
-                int iConstructionCode = m_ConstructionBaseInfo.ConstructionCode;
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("積算予算書承認")).Key;
-                if (!ClsApprovalPermission.CheckProcessPetition(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo)) return;
-
-                // ----- 申請済の場合
-                // 申請ボタンの表示
-                btnPetition.Text = CommonDefine.PetitionButtonString[1];
-                btnPetition.ForeColor = Color.Black;
-                btnPetition.Size = btnApproval.Size;
-                btnPetition.Enabled = false;
-
-                // 承認ボタンの表示
-                btnApproval.Visible = true;
-
-                // ----- 承認済の場合
-                if (ClsApprovalPermission.CheckProcessApproval(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo))
-                {
-                    btnApproval.Text = CommonDefine.ApprovalButtonString[1];
-                    btnApproval.ForeColor = Color.Black;
-                    // 承認済みの場合は入力できない
-                    BudgetInputReadOnly();
-                }
-
-                // 承認件数の表示
-                lblApprovalCount.Visible = true;
-                SetApprovalCount();
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
         #region 書込み禁止処理
         /// <summary>
         /// 予算入力を変更禁止にする
@@ -3278,7 +3191,7 @@
             {
                 // 承認済の場合は終了
                 int iCode1 = ClsExcute.AppovalList.First(x => x.Value.Equals("積算予算書承認")).Key;
-                if (ClsApprovalPermission.CheckProcessApprovalData(m_ConstructionCode, iCode1, CommonDefine.s_Default_OrderNo)) return true;
+                if (ClsCommonApproval.CheckProcessApprovalData(m_ConstructionCode, iCode1, CommonDefine.s_Default_OrderNo)) return true;
 
                 foreach (int[] wrkData in m_ChangeOutSourceList)
                 {
@@ -3357,6 +3270,18 @@
                     return false;
                 }
 
+                // 承認順序のチェック
+                if (!ClsCommonApproval.CheckProcessApprovalSequence(m_ConstructionCode
+                                                                        , (int)ClsExcute.ApprovalListNo.EstimateBudgetApproval
+                                                                        , 1))
+                {
+                    MessageBox.Show("１つ前の承認が確定していません。"
+                                    , "承認順番エラー"
+                                    , MessageBoxButtons.OK
+                                    , MessageBoxIcon.Error);
+                    return false;
+                }
+
                 return true;
             }
             catch (System.Exception ex)
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateInput/FrmEstimateInput.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateInput/FrmEstimateInput.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateInput/FrmEstimateInput.cs	(revision 366)
@@ -366,6 +366,13 @@
         /// </summary>
         private ContextMenuStrip m_ExecMenuStrip = new ContextMenuStrip();
         #endregion
+
+        #region ���F�p�l�����X�g
+        /// <summary>
+        /// ���F�p�l�����X�g
+        /// </summary>
+        private List<Panel> m_ApplPnlList = new List<Panel>();
+        #endregion
         
         #endregion
 
@@ -539,13 +546,13 @@
             try
             {
                 // �H���Č��̊Ǘ��������擾����
-                int DepartmentCode = ClsApprovalPermission.GetFromConstructionTheDepartment(m_ConstructionCode);
+                int DepartmentCode = ClsCommonApproval.GetFromConstructionTheDepartment(m_ConstructionCode);
                 // ���F�ΏۃR�[�h���擾����
                 int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
                 // �Č��ɑ΂��Đ\��������Ă��邩���m�F����
-                bool Pettition = ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonDefine.s_Default_OrderNo);
+                bool Pettition = ClsCommonApproval.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonDefine.s_Default_OrderNo);
                 // ���O�C���҂����F�҂����m�F����
-                bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
+                bool Approvaler = ClsCommonApproval.CheckUserForApprover(ApprovalCode, DepartmentCode);
                 // �\�����Ȃ�ΐU���`�F�b�N���s��
                 if (Pettition && Approvaler)
                 {
@@ -1150,6 +1157,9 @@
                 // �����t�`�F�b�N
                 if (!CheckConstructor()) return;
 
+                // �\���E���F���̏����`�F�b�N
+                if (!CheckApprovalSequence()) return;
+
                 // �N���ԍ�
                 int NowPoint = ClsExcute.NextProcess((int)ClsExcute.SubFormExecuteNo.ApprovalScreen);
 
@@ -1199,6 +1209,9 @@
                     if (!DataEntryProcess()) return;
                 }
 
+                // �\���E���F���̏����`�F�b�N
+                if (!CheckApprovalSequence()) return;
+
                 // �N���ԍ�
                 int NowPoint = ClsExcute.NextProcess((int)ClsExcute.SubFormExecuteNo.ApprovalScreen);
                 
@@ -1248,37 +1261,29 @@
             if (!InitDataLoad()) return;
 
             // �\���E���F�\������
-            InitApprovalDisplay();
+            // ----- ���F�ς̏ꍇ���F�ς݃t���OON
+            if(ClsCommonApproval.CheckProcessApproval(m_ConstructionCode
+                                                            , (int)ClsExcute.ApprovalListNo.EstimateApproval
+                                                            , CommonDefine.s_Default_OrderNo))
+            {
+                m_ApprovalFlag = true;
+                m_EditLock = true;
+            }
 
             if (m_EditLock)
             {
                 // �Q�Ƃ̏ꍇ�͓��͂ł��Ȃ�
                 EstimaiteInputReadOnly();
-                btnApproval.Enabled = false;
-                btnPetition.Enabled = false;
             }
             // *-----* �����ړ��{�^���ݒ� *-----*
             CreateProcessContextMenu(m_SubForm);
             // *-----* �����ړ��{�^���ݒ� *-----*
 
-            // ���F��ʂ́u���F�Ώۃf�[�^������v����̋N�����͏��F�{�^���̕\��������
-            bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
-            if (bApproval && !m_SubForm)
-            {
-                // �H���Č��̊Ǘ��������擾����
-                int DepartmentCode = ClsApprovalPermission.GetFromConstructionTheDepartment(m_ConstructionCode);
-                // ���F�ΏۃR�[�h���擾����
-                int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
-                // �Č��ɑ΂��Đ\��������Ă��邩���m�F����
-                bool Pettition = ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonDefine.s_Default_OrderNo);
-                // ���O�C���҂����F�҂����m�F����
-                bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
-                // �\�����Ń��O�C���҂����F�҂̏ꍇ�͏��F�{�^����\������
-                if (Pettition && Approvaler)
-                {
-                    pnlApprovalButton.Visible = true;
-                }
-            }
+            // �\���E���F�\������
+            ClsCommonApproval.CtrlConstrAppPanel((int)ClsExcute.ApprovalListNo.EstimateApproval
+                                                    , m_ConstructionCode
+                                                    , 1
+                                                    , m_ApplPnlList);
 
             // 2��ʃ��[�h�̐e��ʂ͏��F�֘A�����ׂĕ\�����Ȃ�
             if (m_DualModeFlg)
@@ -2030,6 +2035,9 @@
                 // �����t�`�F�b�N
                 if (!CheckConstructor()) return;
 
+                // �\���E���F���̏����`�F�b�N
+                if (!CheckApprovalSequence()) return;
+
                 if (MessageBox.Show("�Č������F���܂��A��낵���ł����H�B", "���F�m�F"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
@@ -2082,6 +2090,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                // �\���E���F���̏����`�F�b�N
+                if (!CheckApprovalSequence()) return;
+
                 if (MessageBox.Show("�Č���ۗ��Ƃ��܂��A��낵���ł����H�B", "�ۗ��m�F"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
@@ -2134,6 +2145,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                // �\���E���F���̏����`�F�b�N
+                if (!CheckApprovalSequence()) return;
+
                 if (MessageBox.Show("�Č���s���F���܂��A��낵���ł����H�B", "�s���F�m�F"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateInput/FrmEstimateInputAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateInput/FrmEstimateInputAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimateInput/FrmEstimateInputAuxiliary.cs	(revision 366)
@@ -1729,100 +1729,6 @@
         #region 発注先別金額の計算
         #endregion
 
-        #region 承認数表示
-        /// <summary>
-        /// 承認件数のセット
-        /// </summary>
-        private void SetApprovalCount()
-        {
-            try
-            {
-                // 初期値セット
-                lblApprovalCount.Text = "";
-
-                // 工事コード・承認機能番号取得
-                int iConstructionCode = m_ConstructionBaseInfo.ConstructionCode;
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
-                // 担当部署取得
-                int DepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionBaseInfo.ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
-
-                // 承認データ取得
-                int ApprovalCount = ClsApprovalPermission.GetProcessApprovalDataCount(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
-
-                // 承認経路マスタ取得
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
-
-                // 初期値セット
-                lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
-
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
-        #region 初期時申請・承認表示処理
-        /// <summary>
-        /// 初期時申請・承認表示処理
-        /// </summary>
-        private void InitApprovalDisplay()
-        {
-            try
-            {
-                // 承認コード取得
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
-
-                // 起動元のリストに承認画面があれば表示しない
-                if (ClsApprovalPermission.ExceApprovalScreen())
-                {
-                    pnlApproval.Visible = false;
-                }
-
-                // 承認ボタン・件数の非表示
-                btnApproval.Visible = false;
-                lblApprovalCount.Visible = false;
-
-                // ----- 初期時は申請ボタンのサイズを最大にする
-                btnPetition.Size = new Size(250, btnPetition.Size.Height);
-
-                // ----- 工事コード・承認機能番号取得（申請レコードがなお場合は未申請）
-                if (!ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo)) return;
-
-                // ----- 申請済の場合
-                // 申請ボタンの表示
-                btnPetition.Text = CommonDefine.PetitionButtonString[1];
-                btnPetition.ForeColor = Color.Black;
-                btnPetition.Size = btnApproval.Size;
-                btnPetition.Enabled = false;
-
-                // 承認ボタンの表示
-                btnApproval.Visible = true;
-
-                // ----- 承認済の場合
-                if (ClsApprovalPermission.CheckProcessApproval(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo))
-                {
-                    btnApproval.Text = CommonDefine.ApprovalButtonString[1];
-                    btnApproval.ForeColor = Color.Black;
-                    // 承認済みの場合は入力できない
-                    EstimaiteInputReadOnly(false);
-                    // 承認済みフラグON
-                    m_ApprovalFlag = true;
-                }
-
-                // 承認件数の表示
-                lblApprovalCount.Visible = true;
-                SetApprovalCount();
-
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
         #region 書込み禁止処理
         /// <summary>
         /// 予算入力を変更禁止にする
@@ -2434,6 +2340,38 @@
         }
         #endregion
 
+        #region 申請・承認時の順序チェック
+        /// <summary>
+        /// 申請・承認時の順序チェック
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckApprovalSequence()
+        {
+            try
+            {
+
+                // 承認順序のチェック
+                if (!ClsCommonApproval.CheckProcessApprovalSequence(m_ConstructionCode
+                                                                        , (int)ClsExcute.ApprovalListNo.EstimateApproval
+                                                                        , 1))
+                {
+                    MessageBox.Show("１つ前の承認が確定していません。"
+                                    , "承認順番エラー"
+                                    , MessageBoxButtons.OK
+                                    , MessageBoxIcon.Error);
+                    return false;
+                }
+
+                return true;
+            }
+            catch (System.Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+        }
+        #endregion
+
         #region 構成を取得する
         /// <summary>
         /// 構成を取得する
@@ -4250,6 +4188,9 @@
             m_dispLabelControl[(int)DispLabel.ItemCount] = lblDispCnt02;
             m_dispLabelControl[(int)DispLabel.WorkCount] = lblDispCnt03;
             m_dispLabelControl[(int)DispLabel.GridTotal] = lblCellTotal;
+
+            m_ApplPnlList.Add(pnlApproval);
+            m_ApplPnlList.Add(pnlApprovalButton);
         }
         #endregion
 
@@ -5828,9 +5769,10 @@
                 {
                     if (!this.Visible) this.Show();
                     MessageBox.Show("協力業社が割付られていない項目があります確認してください", "データ確認", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+                    return false;
                 }
 
-                return bRet;
+                return true;
             }
             catch (Exception ex)
             {
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimatePrint/FrmEstimatePrint.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimatePrint/FrmEstimatePrint.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/EstimatePrint/FrmEstimatePrint.cs	(revision 366)
@@ -305,11 +305,11 @@
             // 初期表示
             InitDataLoad();
 
-            if (m_EditLock)
-            {
-                // 参照の場合は入力できない
-                ReadOnly();
-            }
+            //if (m_EditLock)
+            //{
+            //    // 参照の場合は入力できない
+            //    ReadOnly();
+            //}
         }
         #endregion
 
@@ -1080,7 +1080,7 @@
             {
                 // ----- 工事コード・承認機能番号取得
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("積算見積書承認")).Key;
-                return ClsApprovalPermission.CheckProcessApproval(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
+                return ClsCommonApproval.CheckProcessApproval(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
             }
             catch (Exception ex)
             {
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Proceedings/FrmProceedings.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Proceedings/FrmProceedings.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Proceedings/FrmProceedings.cs	(revision 366)
@@ -525,17 +525,17 @@
                 // *-----* �����ړ��{�^���ݒ� *-----*
 
                 // ���F��ʂ́u���F�Ώۃf�[�^������v����̋N�����͏��F�{�^���̕\��������
-                bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
+                bool bApproval = ClsCommonApproval.ExceApprovalScreen();
                 if (bApproval && !m_SubForm)
                 {
                     // �H���Č��̊Ǘ��������擾����
-                    int DepartmentCode = ClsApprovalPermission.GetFromConstructionTheDepartment(m_ConstructionCode);
+                    int DepartmentCode = ClsCommonApproval.GetFromConstructionTheDepartment(m_ConstructionCode);
                     // ���F�ΏۃR�[�h���擾����
                     int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("�c���^���F")).Key;
                     // �Č��ɑ΂��Đ\��������Ă��邩���m�F����
-                    bool Pettition = ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonDefine.s_Default_OrderNo);
+                    bool Pettition = ClsCommonApproval.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonDefine.s_Default_OrderNo);
                     // ���O�C���҂����F�҂����m�F����
-                    bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
+                    bool Approvaler = ClsCommonApproval.CheckUserForApprover(ApprovalCode, DepartmentCode);
                 }
 
                 // �Q�ƃ��[�h
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Proceedings/FrmProceedingsAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Proceedings/FrmProceedingsAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Proceedings/FrmProceedingsAuxiliary.cs	(revision 366)
@@ -1171,7 +1171,7 @@
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("議事録承認")).Key;
 
                 // 起動元のリストに承認画面があれば表示しない
-                if (ClsApprovalPermission.ExceApprovalScreen())
+                if (ClsCommonApproval.ExceApprovalScreen())
                 {
                     pnlApproval.Visible = false;
                 }
@@ -1184,7 +1184,7 @@
                 btnPetition.Size = new Size(250, btnPetition.Size.Height);
 
                 // ----- 工事コード・承認機能番号取得（申請レコードがなお場合は未申請）
-                if (!ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo)) return;
+                if (!ClsCommonApproval.CheckProcessPetition(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo)) return;
 
                 // ----- 申請済の場合
                 // 申請ボタンの表示
@@ -1197,7 +1197,7 @@
                 btnApproval.Visible = true;
 
                 // ----- 承認済の場合
-                if (ClsApprovalPermission.CheckProcessApproval(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo))
+                if (ClsCommonApproval.CheckProcessApproval(m_ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo))
                 {
                     btnApproval.Text = CommonDefine.ApprovalButtonString[1];
                     btnApproval.ForeColor = Color.Black;
@@ -1232,13 +1232,13 @@
                 int iConstructionCode = m_ConstructionBaseInfo.ConstructionCode;
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("議事録承認")).Key;
                 // 担当部署取得
-                int DepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionBaseInfo.ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
+                int DepartmentCode = ClsCommonApproval.GetFromConstrAndAppTheDep(m_ConstructionBaseInfo.ConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
 
                 // 承認データ取得
-                int ApprovalCount = ClsApprovalPermission.GetProcessApprovalDataCount(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
+                int ApprovalCount = ClsCommonApproval.GetProcessApprovalDataCount(iConstructionCode, iApprovalCode, CommonDefine.s_Default_OrderNo);
 
                 // 承認経路マスタ取得
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
+                int MasterCount = ClsCommonApproval.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
 
                 // 初期値セット
                 lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/PurchaseOrderEntry/FrmPurchaseOrderEntry.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/PurchaseOrderEntry/FrmPurchaseOrderEntry.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/PurchaseOrderEntry/FrmPurchaseOrderEntry.cs	(revision 366)
@@ -511,8 +511,16 @@
         /// 新規データ作成フラグ
         /// </summary>
         bool m_bCreateNewData = false;
+
+        #region 承認パネルリスト
+        /// <summary>
+        /// 承認パネルリスト
+        /// </summary>
+        private List<Panel> m_ApplPnlList = new List<Panel>();
         #endregion
 
+        #endregion
+
         #region プロパティ
         /// <summary>
         /// 工事番号
@@ -828,6 +836,9 @@
                 PurchaseOrder DataRec = new PurchaseOrder();
                 if (!OrderDB.SelectAction(strSQL.ToString(), ref DataRec)) m_bChengeAns = true;
 
+                // 承認順チェック
+                if (!CheckApprovalOrder()) return;
+
                 // データ変更有時はデータ登録
                 if (m_bChengeAns)
                 {
@@ -896,6 +907,9 @@
                     if (!DataEntryProcess()) return;
                 }
 
+                // 承認順チェック
+                if (!CheckApprovalOrder()) return;
+
                 // 起動番号
                 int NowPoint = ClsExcute.NextProcess((int)ClsExcute.SubFormExecuteNo.ApprovalScreen);
 
@@ -1537,6 +1551,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                /// 承認順チェック
+                if (!CheckApprovalOrder()) return;
+
                 if (MessageBox.Show("案件を承認します、よろしいですか？。", "承認確認"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
@@ -1586,6 +1603,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                /// 承認順チェック
+                if (!CheckApprovalOrder()) return;
+
                 if (MessageBox.Show("案件を保留とします、よろしいですか？。", "保留確認"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
@@ -1635,6 +1655,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                /// 承認順チェック
+                if (!CheckApprovalOrder()) return;
+
                 if (MessageBox.Show("案件を不承認します、よろしいですか？。", "不承認確認"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/PurchaseOrderEntry/FrmPurchaseOrderEntryAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/PurchaseOrderEntry/FrmPurchaseOrderEntryAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/PurchaseOrderEntry/FrmPurchaseOrderEntryAuxiliary.cs	(revision 366)
@@ -63,14 +63,17 @@
 
             m_DspLabelCtrl[(int)DspLblCtrlName.StartingDate] = label8;
             m_DspLabelCtrl[(int)DspLblCtrlName.CompleteDate] = label11;
-        
+
             // ここで固定文字の表示
             lblFixComment.Text = string.Format("※金額変更時の{0}は{1}％で自動計算されます。"
-                                                                ,s_StatutoryWelfareName
+                                                                , s_StatutoryWelfareName
                                                                 , CommonMotions.SystemMasterData.StatutoryWelfareRate.ToString("0.0"));
+
+            m_ApplPnlList.Add(pnlApproval);
+            m_ApplPnlList.Add(pnlApprovalButton);
         }
         #endregion
-        
+
         #region 行選択色へ変更
         /// <summary>
         /// 行を選択色にする
@@ -191,7 +194,7 @@
                 strSQL.Append(" ORDER BY ORDERNO");
                 List<ProcessApprovalDetail> DetailList = new List<ProcessApprovalDetail>();
                 if (!AppDetailDB.SelectAction(strSQL.ToString(), ref DetailList)) return;
-            
+
                 m_DetailList.Clear();
                 foreach (ProcessApprovalDetail CurRec in DetailList)
                 {
@@ -293,14 +296,18 @@
                 if (m_TabPageList.Count < 2) btnPageDelete.Visible = false;
 
                 // 申請・承認表示処理
-                InitApprovalDisplay();
+                if (ClsCommonApproval.CheckProcessApproval(m_ConstructionCode
+                                                , (int)ClsExcute.ApprovalListNo.PurchaseOrderEntryApproval
+                                                , m_OrderNo))
+                {
+                    m_bApprovalLock = true;
+                    m_EditLock = true;
+                }
 
                 // 参照時は変更できない
                 if (m_EditLock)
                 {
                     DisplayReadOnly();
-                    btnApproval.Enabled = false;
-                    btnPetition.Enabled = false;
                 }
 
                 // *-----* 処理移動ボタン設定 *-----*
@@ -307,24 +314,11 @@
                 CreateProcessContextMenu(m_SubForm);
                 // *-----* 処理移動ボタン設定 *-----*
 
-                // 承認画面の「承認対象データを見る」からの起動時は承認ボタンの表示がある
-                bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
-                if (bApproval && !m_SubForm)
-                {
-                    // 工事案件の管理部署を取得する
-                    int DepartmentCode = ClsApprovalPermission.GetFromConstructionTheDepartment(m_ConstructionCode);
-                    // 承認対象コードを取得する
-                    int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("注文書承認")).Key;
-                    // 案件に対して申請がされているかを確認する
-                    bool Pettition = ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, ApprovalCode, m_OrderNo);
-                    // ログイン者が承認者かを確認する
-                    bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
-                    // 申請中でログイン者が承認者の場合は承認ボタンを表示する
-                    if (Pettition && Approvaler)
-                    {
-                        pnlApprovalButton.Visible = true;
-                    }
-                }
+                // 申請・承認表示処理
+                ClsCommonApproval.CtrlConstrAppPanel((int)ClsExcute.ApprovalListNo.PurchaseOrderEntryApproval
+                                                        , m_ConstructionCode
+                                                        , m_OrderNo
+                                                        , m_ApplPnlList);
             }
             catch (System.Exception ex)
             {
@@ -503,7 +497,7 @@
                     if (!bFirstCompany) strSQL.Append(" OR");
 
                     strSQL.AppendFormat(" COMPANYCODE = {0}", CompanyCode);
-                    
+
                     bFirstCompany = false;
                 }
                 strSQL.Append(")");
@@ -841,7 +835,7 @@
                     strSQL.Append("   On B.SourceCode = A.ConstructionCode");
                     strSQL.Append("   And B.ConstructionCode = A.SourceCode");
                     strSQL.Append("   And B.DetailCount = A.SourceDetailCnt");
-                    
+
                     strSQL.Append(DetailDB.CreatePrimarykeyString(OrderRec.ConstructionCode, OrderRec.SeqNo, -1, 0, "A."));
                     //strSQL.AppendFormat(" And A.GroupCount in ({0}, {1})", (int)PurchaseOrderDetail.GroupCountDef.Detail
                     //                                                    , (int)PurchaseOrderDetail.GroupCountDef.StatutoryWelfare);
@@ -1044,7 +1038,7 @@
                     // 法定福利費は行ロック
                     if (DetailRec.DataTypeFlag == (int)PurchaseOrderDetail.DataTypeFlagDef.StatutoryWelfare)
                         GetRow.ReadOnly = true;
-                        
+
                     iRow++;
                 }
                 // グリッド合計表示
@@ -1207,7 +1201,7 @@
                 inputpage.Group3TextBox[(int)Group3TextBox.CashRatio].Text = "100.0";                                       // 現金割合（％）
                 inputpage.Group3TextBox[(int)Group3TextBox.BillRatio].Text = "0.0";                                         // 手形割合（％）
                 inputpage.Group3TextBox[(int)Group3TextBox.BillPeriod].Text = "0";                                          // 手形期間
-            
+
             }
             catch (System.Exception ex)
             {
@@ -1386,7 +1380,7 @@
                     for (int i = 0; i < CurPage.Group1DataGridView.RowCount; i++)
                     {
                         DataGridViewRow GetRow = CurPage.Group1DataGridView.Rows[i];
-                        
+
                         // 文字が設定されていない場合は無効行
                         if (CommonMotions.cnvString(GetRow.Cells[(int)DispDetailGridColumn.FirstName].Value).Length == 0 &&
                             CommonMotions.cnvString(GetRow.Cells[(int)DispDetailGridColumn.SecondName].Value).Length == 0) continue;
@@ -1470,11 +1464,11 @@
                     }
                     else
                     {   // 正規版データ
-                        List<KeyValuePair<int,double>> CheckField = new List<KeyValuePair<int,double>>();
+                        List<KeyValuePair<int, double>> CheckField = new List<KeyValuePair<int, double>>();
                         if (CurPage.Group3CheckBox[(int)Group3CheckBox.Previous].Checked)
                         {
                             if (CommonMotions.cnvInt(CurPage.Group3TextBox[(int)Group3TextBox.PrePaymentsDays].Text) > 999) bPageAns = false;                   // 前金払日数
-                            
+
                             double field1 = CommonMotions.cnvDouble(CurPage.Group3TextBox[(int)Group3TextBox.PrePaymentsPrice].Text);
                             if (field1 > 9999999999.99) bPageAns = false;     // 前金払金額
                             CheckField.Add(new KeyValuePair<int, double>((int)Group3TextBox.PrePaymentsPrice, field1));
@@ -1484,7 +1478,7 @@
                             if (CommonMotions.cnvInt(CurPage.Group3TextBox[(int)Group3TextBox.PartialPaymentMounth].Text) > 12) bPageAns = false;               // 部分払締切月
                             if (CommonMotions.cnvInt(CurPage.Group3TextBox[(int)Group3TextBox.PartialPaymentDay1].Text) > 31) bPageAns = false;                 // 部分払締切日
                             if (CommonMotions.cnvInt(CurPage.Group3TextBox[(int)Group3TextBox.PartialPaymentDay2].Text) > 31) bPageAns = false;                 // 部分払支払日
-                            
+
                             double field2 = CommonMotions.cnvDouble(CurPage.Group3TextBox[(int)Group3TextBox.PartialPaymentPrice].Text);
                             if (field2 > 9999999999.99) bPageAns = false;	// 部分払金額
                             CheckField.Add(new KeyValuePair<int, double>((int)Group3TextBox.PartialPaymentPrice, field2));
@@ -1543,7 +1537,7 @@
                     if (!bPageAns) errPage = CurPage;
                     bRet &= bPageAns;
                 }
-                
+
                 if (!bRet)
                 {
                     MessageBox.Show("入力エラーがあります、確認してください。", "データ確認", MessageBoxButtons.OK, MessageBoxIcon.Warning);
@@ -1629,9 +1623,10 @@
                 {   // 正規版データ
                     DataRec.OrderSheetType = (int)CommonDefine.OrderSheetType.RegularType;                              // 簡易・本式フラグ
 
-                    if (DataTab.Group3CheckBox[(int)Group3CheckBox.Previous].Checked) {
+                    if (DataTab.Group3CheckBox[(int)Group3CheckBox.Previous].Checked)
+                    {
                         DataRec.PrePayments = 1;                                                                        // 前金払
-                        DataRec.PrePaymentsDays	= CommonMotions.cnvInt(DataTab.Group3TextBox[(int)Group3TextBox.PrePaymentsDays].Text);         // 前金払日数
+                        DataRec.PrePaymentsDays = CommonMotions.cnvInt(DataTab.Group3TextBox[(int)Group3TextBox.PrePaymentsDays].Text);         // 前金払日数
                         DataRec.PrePaymentsPrice = CommonMotions.cnvDouble(DataTab.Group3TextBox[(int)Group3TextBox.PrePaymentsPrice].Text);    // 前金払金額
                     }
                     if (DataTab.Group3CheckBox[(int)Group3CheckBox.Partial].Checked)
@@ -1695,7 +1690,7 @@
         /// </summary>
         /// <returns></returns>
         private bool EntryPurchaseOrderDetail(IOPurchaseOrderDetail DetailDB
-                                                ,IOConstructionLedgerDetail LDetailDB
+                                                , IOConstructionLedgerDetail LDetailDB
                                                 , PurchaseOrderInputPage DataTab
                                                 , int SeqNo)
         {
@@ -1813,7 +1808,7 @@
                 int ConstrCode = CommonMotions.cnvInt(GetRow.Cells[(int)DispDetailGridColumn.SourceCode].Value);
                 int GrpCnt = (int)FrmConstructionLedger.DataGroup.ConstructionCosts;
                 int LedgerLineCnt = CommonMotions.cnvInt(GetRow.Cells[(int)DispDetailGridColumn.LedgerDetailNo].Value);
-                
+
                 strSQL.Append(LDetailDB.CreatePrimarykeyString(ConstrCode, GrpCnt));
                 nDetailCnt = LDetailDB.SelectMaxDetailCount(strSQL.ToString(), false) + 1;
 
@@ -1828,7 +1823,7 @@
                 strSQL.Append(", ''");                                      // 項目名称
                 strSQL.Append(", ''");                                      // 工事内容
                 strSQL.Append(", A.CompanyType");                           // 協力会社コードタイプ
-                strSQL.AppendFormat(", {0}",DataTab.OrderCompanyCode);      // 協力会社コード
+                strSQL.AppendFormat(", {0}", DataTab.OrderCompanyCode);      // 協力会社コード
                 strSQL.AppendFormat(", '{0}'", DataTab.PageValueItem[(int)PageValue.SubConstractorName].Text);  // 協力会社名称
                 strSQL.Append(", 0");                                       // 予算（見積）金額
                 strSQL.Append(", 0");                                       // 実行金額
@@ -1973,7 +1968,7 @@
         /// 削除ボタン押下後の削除処理
         /// </summary>
         /// <returns></returns>
-        private bool DataRemoveProcess(bool bDellall,int StartCnt, int EndCnt)
+        private bool DataRemoveProcess(bool bDellall, int StartCnt, int EndCnt)
         {
             IOPurchaseOrder OrderDB = new IOPurchaseOrder();
             IOPurchaseOrderDetail PDetailDB = new IOPurchaseOrderDetail();
@@ -2052,7 +2047,7 @@
 
                 // フラグクリア
                 m_bChengeAns = false;
-                
+
                 return true;
             }
             catch (System.Exception ex)
@@ -2165,10 +2160,10 @@
                 {
                     bool bSave = m_bChengeAns;
                     m_bChengeAns = false;
-                    
+
                     // ページ削除
                     PageRemoveProcess(false);
-                    
+
                     m_bChengeAns = bSave;
                 }
                 return true;
@@ -2247,66 +2242,6 @@
         }
         #endregion
 
-        #region 初期時申請・承認表示処理
-        /// <summary>
-        /// 初期時申請・承認表示処理
-        /// </summary>
-        private void InitApprovalDisplay()
-        {
-            try
-            {
-                // 承認コード取得
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("注文書承認")).Key;
-
-                // 起動元のリストに承認画面があれば表示しない
-                if (ClsApprovalPermission.ExceApprovalScreen())
-                {
-                    pnlApproval.Visible = false;
-                }
-
-                // 承認ボタン・件数の非表示
-                btnApproval.Visible = false;
-                lblApprovalCount.Visible = false;
-
-                // ----- 初期時は申請ボタンのサイズを最大にする
-                btnPetition.Size = new Size(250, btnPetition.Size.Height);
-
-                // ----- 工事コード・承認機能番号取得（申請レコードがなお場合は未申請）
-                if (!ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, iApprovalCode, m_OrderNo)) return;
-
-                // ----- 申請済の場合
-                // 申請ボタンの表示
-                btnPetition.Text = CommonDefine.PetitionButtonString[1];
-                btnPetition.ForeColor = Color.Black;
-                btnPetition.Size = btnApproval.Size;
-                btnPetition.Enabled = false;
-
-                // 承認ボタンの表示
-                btnApproval.Visible = true;
-
-                // ----- 承認済の場合
-                if (ClsApprovalPermission.CheckProcessApproval(m_ConstructionCode, iApprovalCode, m_OrderNo))
-                {
-                    btnApproval.Text = CommonDefine.ApprovalButtonString[1];
-                    btnApproval.ForeColor = Color.Black;
-                    // 承認済みの場合は入力できない
-                    DisplayReadOnly();
-
-                    m_bApprovalLock = true;
-                }
-
-                // 承認件数の表示
-                lblApprovalCount.Visible = true;
-                SetApprovalCount();
-
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
         #region 書込み禁止処理
         /// <summary>
         /// 入力を変更禁止にする
@@ -2359,39 +2294,6 @@
         }
         #endregion
 
-        #region 承認数表示
-        /// <summary>
-        /// 承認件数のセット
-        /// </summary>
-        private void SetApprovalCount()
-        {
-            try
-            {
-                // 初期値セット
-                lblApprovalCount.Text = "";
-
-                // 工事コード・承認機能番号取得
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals("注文書承認")).Key;
-                // 担当部署取得
-                int DepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionCode, iApprovalCode, m_OrderNo);
-
-                // 承認データ取得
-                int ApprovalCount = ClsApprovalPermission.GetProcessApprovalDataCount(m_ConstructionCode, iApprovalCode, m_OrderNo);
-
-                // 承認経路マスタ取得
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
-
-                // 初期値セット
-                lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
-
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
         #region 明細グリッド行計算処理
         /// <summary>
         /// 明細グリッド行計算処理
@@ -2492,7 +2394,7 @@
                 PurchaseOrderInputPage CurPage = m_TabPageList[TabCnt];
 
                 // 合計欄の表示
-                PriceValue+=dStatutoryWelfareVal;
+                PriceValue += dStatutoryWelfareVal;
                 CurPage.Group1Label.Text = PriceValue.ToString("#,0");
                 // 発注金額更新(発注金額は変更しない 2017/03/17)
                 //CurPage.PageValueItem[(int)PageValue.OrderPrice].Text = PriceValueValue.ToString("#,0");
@@ -2595,7 +2497,7 @@
                     // 初期セット
                     m_frmInputImage.ImageDataNo = (int)ProcessManagement.Forms.DataEntry.FrmImage.RegularImageNo.Type0;
                 }
-                
+
                 // クロースドハンドラをこちらで定義する
                 m_frmInputImage.FormClosed += new FormClosedEventHandler(FrmInputImage_FormClosed);
                 m_frmInputImage.Show();
@@ -2856,7 +2758,7 @@
                     else
                         iRet = (int)ProcessManagement.Forms.DataEntry.FrmImage.RegularImageNo.Type6;
                 }
-                
+
                 return iRet;
             }
             catch (System.Exception ex)
@@ -2893,7 +2795,7 @@
                     else
                         iRet = (int)ProcessManagement.Forms.DataEntry.FrmImage.RegularImageNo.Type0;
                 }
-                
+
                 return iRet;
             }
             catch (System.Exception ex)
@@ -2937,7 +2839,7 @@
                     else
                         iRet = (int)ProcessManagement.Forms.DataEntry.FrmImage.RegularImageNo.Type4;
                 }
-                
+
                 return iRet;
             }
             catch (System.Exception ex)
@@ -2984,7 +2886,7 @@
             }
         }
         #endregion
-                
+
         #region 見積受取日をチェックする
         /// <summary>
         /// 見積受取日をチェックする
@@ -3203,6 +3105,37 @@
         }
         #endregion
 
+        #region 承認順チェック
+        /// <summary>
+        /// 承認順チェック
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckApprovalOrder()
+        {
+            try
+            {
+                // 承認順序のチェック
+                if (!ClsCommonApproval.CheckProcessApprovalSequence(m_ConstructionCode
+                                                                        , (int)ClsExcute.ApprovalListNo.PurchaseOrderEntryApproval
+                                                                        , 1))
+                {
+                    MessageBox.Show("１つ前の承認が確定していません。"
+                                    , "承認順番エラー"
+                                    , MessageBoxButtons.OK
+                                    , MessageBoxIcon.Error);
+                    return false;
+                }
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+        }
+        #endregion
+
         // > ----------- デバック処理
         #region 福利厚生費セット処理
         /// <summary>
@@ -3260,7 +3193,7 @@
                     if (!ADB.ExecuteNonQuery(strSQL.ToString(), false))
                     {
                         ADB.rollback();
-                        MessageBox.Show("更新エラー","エラー",MessageBoxButtons.OK);
+                        MessageBox.Show("更新エラー", "エラー", MessageBoxButtons.OK);
                         return;
                     }
                 }
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestEntry/FrmEntryReqSelOrderer.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestEntry/FrmEntryReqSelOrderer.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestEntry/FrmEntryReqSelOrderer.cs	(revision 366)
@@ -387,7 +387,7 @@
                         foreach (RequestHead ReqHead in lstReqHead)
                         {
                             // 最終承認済
-                            if (ClsApprovalPermission.CheckProcessApprovalData(ReqHead.ReqConstructionCode, (int)ClsExcute.ApprovalListNo.OrderBillingApproval, ReqHead.OrderNo) == true)
+                            if (ClsCommonApproval.CheckProcessApprovalData(ReqHead.ReqConstructionCode, (int)ClsExcute.ApprovalListNo.OrderBillingApproval, ReqHead.OrderNo) == true)
                             {
                                 // 請求月をリストに追加（以降はチェックする必要なし）
                                 lstReqestMonth.Add(nRequestMonth);
@@ -446,7 +446,7 @@
                 foreach (RequestHead ReqHead in lstWork)
                 {
                     // 最終承認されていない場合は対象外
-                    if (ClsApprovalPermission.CheckProcessApprovalData(ReqHead.ReqConstructionCode, (int)ClsExcute.ApprovalListNo.OrderBillingApproval, ReqHead.OrderNo) == false)
+                    if (ClsCommonApproval.CheckProcessApprovalData(ReqHead.ReqConstructionCode, (int)ClsExcute.ApprovalListNo.OrderBillingApproval, ReqHead.OrderNo) == false)
                     {
                         continue;
                     }
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestEntry/FrmEntryReqSelRequest.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestEntry/FrmEntryReqSelRequest.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestEntry/FrmEntryReqSelRequest.cs	(revision 366)
@@ -545,7 +545,7 @@
                 foreach (RequestHead ReqHead in lstWork)
                 {
                     // 最終承認済
-                    if (ClsApprovalPermission.CheckProcessApprovalData(ReqHead.ReqConstructionCode, (int)ClsExcute.ApprovalListNo.OrderBillingApproval, ReqHead.OrderNo) == false)
+                    if (ClsCommonApproval.CheckProcessApprovalData(ReqHead.ReqConstructionCode, (int)ClsExcute.ApprovalListNo.OrderBillingApproval, ReqHead.OrderNo) == false)
                     {
                         continue;
                     }
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestEntry/FrmRequestPrintSelAux.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestEntry/FrmRequestPrintSelAux.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestEntry/FrmRequestPrintSelAux.cs	(revision 366)
@@ -265,7 +265,7 @@
                 foreach (RequestHead ReqHead in lstWork)
                 {
                     // 最終承認済
-                    if (ClsApprovalPermission.CheckProcessApprovalData(ReqHead.ReqConstructionCode, (int)ClsExcute.ApprovalListNo.OrderBillingApproval, ReqHead.OrderNo) == false)
+                    if (ClsCommonApproval.CheckProcessApprovalData(ReqHead.ReqConstructionCode, (int)ClsExcute.ApprovalListNo.OrderBillingApproval, ReqHead.OrderNo) == false)
                     {
                         continue;
                     }
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestInput/FrmRequestInputAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestInput/FrmRequestInputAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestInput/FrmRequestInputAuxiliary.cs	(revision 366)
@@ -4161,7 +4161,7 @@
                 PrcApp.ApprovalStatus = nStatus;
 
                 // 承認データの登録
-                ClsApprovalPermission.CreatePetitionApproval(PrcApp);
+                ClsCommonApproval.CreatePetitionApproval(PrcApp);
 
                 return true;
             }
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestSummaryList/FrmRequestSummaryListAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestSummaryList/FrmRequestSummaryListAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/Request/RequestSummaryList/FrmRequestSummaryListAuxiliary.cs	(revision 366)
@@ -3197,7 +3197,7 @@
                 InitApprovalDisplay();
 
                 // ���F��ʂ́u���F�Ώۃf�[�^������v����̋N�����͏��F�{�^���̕\��������
-                bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
+                bool bApproval = ClsCommonApproval.ExceApprovalScreen();
                 if (!bApproval) return;
 
                 // ���F�ΏۃR�[�h���擾����
@@ -3208,10 +3208,10 @@
                 bool Pettition = false;
                 if (!m_FirstFlg)
                 {
-                    Pettition = ClsApprovalPermission.CheckPersonPetition(m_PaymentPersonCode, ApprovalCode, m_OrderDate, m_ParaTargetSeqNo);
+                    Pettition = ClsCommonApproval.CheckPersonPetition(m_PaymentPersonCode, ApprovalCode, m_OrderDate, m_ParaTargetSeqNo);
                 }
                 // ���O�C���҂����F�҂����m�F����
-                bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
+                bool Approvaler = ClsCommonApproval.CheckUserForApprover(ApprovalCode, DepartmentCode);
                 // �\�����Ń��O�C���҂����F�҂̏ꍇ�͏��F�{�^����\������
                 if (Pettition && Approvaler)
                 {
@@ -3241,7 +3241,7 @@
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName[m_Labourkind])).Key;
 
                 // �N�����̃��X�g�ɏ��F��ʂ�����Ε\�����Ȃ�
-                if (ClsApprovalPermission.ExceApprovalScreen())
+                if (ClsCommonApproval.ExceApprovalScreen())
                 {
                     pnlApproval.Visible = false;
                 }
@@ -3255,7 +3255,7 @@
 
                 int OrderNo = (int)CommonDefine.s_Default_OrderNo;
                 // ----- �S���҃R�[�h�E���F�@�\�ԍ��擾�i�\�����R�[�h���Ȃ��ꍇ�͖��\���j
-                if (!ClsApprovalPermission.CheckPersonPetition(CommonMotions.LoginUserData.PersonCode,
+                if (!ClsCommonApproval.CheckPersonPetition(CommonMotions.LoginUserData.PersonCode,
                                                                 iApprovalCode,
                                                                 OrderDate,
                                                                 OrderNo)) return;
@@ -3271,7 +3271,7 @@
                 btnApproval.Visible = true;
 
                 // ----- ���F�ς̏ꍇ
-                if (ClsApprovalPermission.CheckPersonApproval(CommonMotions.LoginUserData.PersonCode, iApprovalCode, OrderDate, OrderNo))
+                if (ClsCommonApproval.CheckPersonApproval(CommonMotions.LoginUserData.PersonCode, iApprovalCode, OrderDate, OrderNo))
                 {
                     btnApproval.Text = CommonDefine.ApprovalButtonString[1];
                     btnApproval.ForeColor = Color.Black;
@@ -3313,13 +3313,13 @@
                 // �S���҃R�[�h�E���F�@�\�ԍ��擾
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName[m_Labourkind])).Key;
                 // �S�������擾
-                int DepartmentCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(CommonMotions.LoginUserData.PersonCode, iApprovalCode, OrderDate, 1);
+                int DepartmentCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(CommonMotions.LoginUserData.PersonCode, iApprovalCode, OrderDate, 1);
 
                 // ���F�f�[�^�擾
-                int ApprovalCount = ClsApprovalPermission.GetPersonApprovalDataCount(CommonMotions.LoginUserData.PersonCode, iApprovalCode, OrderDate);
+                int ApprovalCount = ClsCommonApproval.GetPersonApprovalDataCount(CommonMotions.LoginUserData.PersonCode, iApprovalCode, OrderDate);
 
                 // ���F�o�H�}�X�^�擾
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
+                int MasterCount = ClsCommonApproval.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
 
                 // �����l�Z�b�g
                 lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SafetyPatrol/FrmSafetyPatrol.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SafetyPatrol/FrmSafetyPatrol.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SafetyPatrol/FrmSafetyPatrol.cs	(revision 366)
@@ -154,8 +154,16 @@
         /// </summary>
         private bool m_CloseingProcessOn = true;
         #endregion
+
+        #region ���F�p�l�����X�g
+        /// <summary>
+        /// ���F�p�l�����X�g
+        /// </summary>
+        private List<Panel> m_ApplPnlList = new List<Panel>();
         #endregion
 
+        #endregion
+
         #region �v���p�e�B
         #region �S���҃R�[�h
         /// <summary>
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SafetyPatrol/SafetyPatrolAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SafetyPatrol/SafetyPatrolAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SafetyPatrol/SafetyPatrolAuxiliary.cs	(revision 366)
@@ -688,92 +688,23 @@
         {
             try
             {
-                pnlApprovalButton.Visible = false;
-
                 // �\���E���F�\������
-                InitApprovalDisplay();
-
-                // ���F��ʂ́u���F�Ώۃf�[�^������v����̋N�����͏��F�{�^���̕\��������
-                bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
-                if (bApproval && !m_SubForm)
+                // ----- ���F�ς̏ꍇ���F�ς݃t���OON
+                if (ClsCommonApproval.CheckProcessApproval(m_ConstructionCode
+                                                                , (int)ClsExcute.ApprovalListNo.SafetyPatrol
+                                                                , CommonDefine.s_Default_OrderNo))
                 {
-                    // �H���Č��̊Ǘ��������擾����
-                    int DepartmentCode = ClsApprovalPermission.GetFromConstructionTheDepartment(m_ConstructionCode);
-                    // ���F�ΏۃR�[�h���擾����
-                    int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyApproval)).Key;
-                    // �Č��ɑ΂��Đ\��������Ă��邩���m�F����
-                    bool Pettition = ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, ApprovalCode, CommonMotions.cnvInt(lblOrderNo.Text));
-                    // ���O�C���҂����F�҂����m�F����
-                    bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
-                    // �\�����Ń��O�C���҂����F�҂̏ꍇ�͏��F�{�^����\������
-                    if (Pettition && Approvaler)
-                    {
-                        pnlApprovalButton.Visible = true;
-                    }
-                    // �S�ẴR���g���[�����b�N
-                    SeeModeLock();
+                    m_EditLock = true;
                 }
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
 
-        #region �������\���E���F�\������
-        /// <summary>
-        /// �������\���E���F�\������
-        /// </summary>
-        private void InitApprovalDisplay()
-        {
-            try
-            {
-                // ���F�R�[�h�擾
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyApproval)).Key;
+                m_ApplPnlList.Add(pnlApproval);
+                m_ApplPnlList.Add(pnlApprovalButton);
 
-                // �N�����̃��X�g�ɏ��F��ʂ�����Ε\�����Ȃ�
-                if (ClsApprovalPermission.ExceApprovalScreen())
-                {
-                    pnlApproval.Visible = false;
-                }
-
-                // ���F�{�^���E�����̔�\��
-                btnApproval.Visible = false;
-                lblApprovalCount.Visible = false;
-
-                // ----- �������͐\���{�^���̃T�C�Y���ő�ɂ���
-                btnPetition.Text = CommonDefine.PetitionButtonString[0];
-                btnPetition.ForeColor = Color.Red;
-                btnPetition.Size = new Size(250, btnPetition.Size.Height);
-                btnPetition.Enabled = true;
-
-                // ----- �H���R�[�h�E���F�@�\�ԍ��擾�i�\�����R�[�h���Ȃ��ꍇ�͖��\���j
-                if (!ClsApprovalPermission.CheckProcessPetition(m_ConstructionCode, iApprovalCode, CommonMotions.cnvInt(lblOrderNo.Text))) return;
-
-                // ----- �\���ς̏ꍇ
-                // �\���{�^���̕\��
-                btnPetition.Text = CommonDefine.PetitionButtonString[1];
-                btnPetition.ForeColor = Color.Black;
-                btnPetition.Size = btnApproval.Size;
-                btnPetition.Enabled = false;
-
-                // ���F�{�^���̕\��
-                btnApproval.Visible = true;
-
-                // ----- ���F�ς̏ꍇ
-                if (ClsApprovalPermission.CheckProcessApproval(m_ConstructionCode, iApprovalCode, CommonMotions.cnvInt(lblOrderNo.Text)))
-                {
-                    btnApproval.Text = CommonDefine.ApprovalButtonString[1];
-                    btnApproval.ForeColor = Color.Black;
-                    // ���F�ς݂̏ꍇ�͓��͂ł��Ȃ�
-                    SeeModeLock();
-                }
-
-                // ���F�����̕\��
-                lblApprovalCount.Visible = true;
-                SetApprovalCount();
-
+                // �\���E���F�\������
+                ClsCommonApproval.CtrlConstrAppPanel((int)ClsExcute.ApprovalListNo.SafetyPatrol
+                                                        , m_ConstructionCode
+                                                        , 1
+                                                        , m_ApplPnlList);
             }
             catch (Exception ex)
             {
@@ -782,39 +713,6 @@
         }
         #endregion
 
-        #region ���F���\��
-        /// <summary>
-        /// ���F�����̃Z�b�g
-        /// </summary>
-        private void SetApprovalCount()
-        {
-            try
-            {
-                // �����l�Z�b�g
-                lblApprovalCount.Text = "";
-
-                // �H���R�[�h�E���F�@�\�ԍ��擾
-                int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyApproval)).Key;
-                // �S�������擾
-                int DepartmentCode = ClsApprovalPermission.GetFromConstrAndAppTheDep(m_ConstructionCode, iApprovalCode, CommonMotions.cnvInt(lblOrderNo.Text));
-
-                // ���F�f�[�^�擾
-                int ApprovalCount = ClsApprovalPermission.GetProcessApprovalDataCount(m_ConstructionCode, iApprovalCode, CommonMotions.cnvInt(lblOrderNo.Text));
-
-                // ���F�o�H�}�X�^�擾
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
-
-                // �����l�Z�b�g
-                lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
-
-            }
-            catch (Exception ex)
-            {
-                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
-            }
-        }
-        #endregion
-
         #region �Q�ƃ��[�h
         /// <summary>
         /// �Q�ƃ��[�h�ɂ��Ċe�R���g���[���փ��b�N��������
@@ -936,6 +834,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                // ���F�����`�F�b�N
+                if (!CheckApprovalOrder()) return;
+
                 if (MessageBox.Show("�Č������F���܂��A��낵���ł����H�B", "���F�m�F"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
@@ -976,6 +877,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                // ���F�����`�F�b�N
+                if (!CheckApprovalOrder()) return;
+
                 if (MessageBox.Show("�Č���ۗ��Ƃ��܂��A��낵���ł����H�B", "�ۗ��m�F"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
@@ -1016,6 +920,9 @@
             FrmApprovalScreen frm = new FrmApprovalScreen();
             try
             {
+                // ���F�����`�F�b�N
+                if (!CheckApprovalOrder()) return;
+
                 if (MessageBox.Show("�Č���s���F���܂��A��낵���ł����H�B", "�s���F�m�F"
                                 , MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) return;
 
@@ -1046,5 +953,36 @@
             }
         }
         #endregion
+
+        #region ���F�����`�F�b�N
+        /// <summary>
+        /// ���F�����`�F�b�N
+        /// </summary>
+        /// <returns></returns>
+        private bool CheckApprovalOrder()
+        {
+            try
+            {
+                // ���F�����̃`�F�b�N
+                if (!ClsCommonApproval.CheckProcessApprovalSequence(m_ConstructionCode
+                                                                        , (int)ClsExcute.ApprovalListNo.SafetyPatrol
+                                                                        , 1))
+                {
+                    MessageBox.Show("�P�O�̏��F���m�肵�Ă��܂���B"
+                                    , "���F���ԃG���["
+                                    , MessageBoxButtons.OK
+                                    , MessageBoxIcon.Error);
+                    return false;
+                }
+
+                return true;
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("�V�X�e���G���[�F{0}�F{1}", CommonMotions.GetMethodName(), ex.Message);
+                return false;
+            }
+        }
+        #endregion
     }
 }
\ No newline at end of file
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SubConstrRegist/FrmSubConstrRegist.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SubConstrRegist/FrmSubConstrRegist.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SubConstrRegist/FrmSubConstrRegist.cs	(revision 366)
@@ -348,17 +348,17 @@
             }
 
             // 承認画面の「承認対象データを見る」からの起動時は承認ボタンの表示がある
-            bool bApproval = ClsApprovalPermission.ExceApprovalScreen();
+            bool bApproval = ClsCommonApproval.ExceApprovalScreen();
             if (bApproval)
             {
                 // 承認対象コードを取得する
                 int ApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
                 // 工事案件の管理部署を取得する
-                int DepartmentCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(m_PersonCode, ApprovalCode, m_CreateDate, m_SeqNo);
+                int DepartmentCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(m_PersonCode, ApprovalCode, m_CreateDate, m_SeqNo);
                 // 案件に対して申請がされているかを確認する
-                bool Pettition = ClsApprovalPermission.CheckPersonPetition(m_PersonCode, ApprovalCode, m_CreateDate, m_SeqNo);
+                bool Pettition = ClsCommonApproval.CheckPersonPetition(m_PersonCode, ApprovalCode, m_CreateDate, m_SeqNo);
                 // ログイン者が承認者かを確認する
-                bool Approvaler = ClsApprovalPermission.CheckUserForApprover(ApprovalCode, DepartmentCode);
+                bool Approvaler = ClsCommonApproval.CheckUserForApprover(ApprovalCode, DepartmentCode);
                 // 申請中でログイン者が承認者の場合は承認ボタンを表示する
                 if (Pettition && Approvaler)
                 {
Index: branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SubConstrRegist/FrmSubConstrRegistAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SubConstrRegist/FrmSubConstrRegistAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/DataEntry/SubConstrRegist/FrmSubConstrRegistAuxiliary.cs	(revision 366)
@@ -263,7 +263,7 @@
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
 
                 // 起動元のリストに承認画面があれば表示しない
-                if (ClsApprovalPermission.ExceApprovalScreen())
+                if (ClsCommonApproval.ExceApprovalScreen())
                 {
                     pnlApproval.Visible = false;
                 }
@@ -278,7 +278,7 @@
                 DateTime OrderDate = CommonMotions.cnvDate(m_dispControl[(int)DispCtrl.OrderDate].Text);
                 int OrderNo = CommonMotions.cnvInt(m_dispControl[(int)DispCtrl.OrderNo].Text);
                 // ----- 担当者コード・承認機能番号取得（申請レコードがない場合は未申請）
-                if (!ClsApprovalPermission.CheckPersonPetition(m_PersonCode,
+                if (!ClsCommonApproval.CheckPersonPetition(m_PersonCode,
                                                                 iApprovalCode,
                                                                 OrderDate,
                                                                 OrderNo)) return;
@@ -294,7 +294,7 @@
                 btnApproval.Visible = true;
 
                 // ----- 承認済の場合
-                if (ClsApprovalPermission.CheckPersonApproval(m_PersonCode, iApprovalCode, OrderDate, OrderNo))
+                if (ClsCommonApproval.CheckPersonApproval(m_PersonCode, iApprovalCode, OrderDate, OrderNo))
                 {
                     btnApproval.Text = CommonDefine.ApprovalButtonString[1];
                     btnApproval.ForeColor = Color.Black;
@@ -333,13 +333,13 @@
                 // 担当者コード・承認機能番号取得
                 int iApprovalCode = ClsExcute.AppovalList.First(x => x.Value.Equals(s_MyProcessName)).Key;
                 // 担当部署取得
-                int DepartmentCode = ClsApprovalPermission.GetFromPersonAndApprovalTheDepartment(m_PersonCode, iApprovalCode, OrderDate, 1);
+                int DepartmentCode = ClsCommonApproval.GetFromPersonAndApprovalTheDepartment(m_PersonCode, iApprovalCode, OrderDate, 1);
 
                 // 承認データ取得
-                int ApprovalCount = ClsApprovalPermission.GetPersonApprovalDataCount(m_PersonCode, iApprovalCode, OrderDate);
+                int ApprovalCount = ClsCommonApproval.GetPersonApprovalDataCount(m_PersonCode, iApprovalCode, OrderDate);
 
                 // 承認経路マスタ取得
-                int MasterCount = ClsApprovalPermission.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
+                int MasterCount = ClsCommonApproval.GetApprovalMasterCount(iApprovalCode, DepartmentCode);
 
                 // 初期値セット
                 lblApprovalCount.Text = string.Format("{0}/{1}", ApprovalCount, MasterCount);
Index: branches/src/ProcessManagement/ProcessManagement/Forms/ZMenu/FrmMenuAuxiliary.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Forms/ZMenu/FrmMenuAuxiliary.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Forms/ZMenu/FrmMenuAuxiliary.cs	(revision 366)
@@ -2028,8 +2028,8 @@
 
                 // 工事承認をチェックする
                 StringBuilder strSQL = new StringBuilder();
-                strSQL.Append("SELECT count(*)");
-                strSQL.Append(" FROM PROCESSAPPROVAL A");
+                strSQL.Append("SELECT count(*) FROM");
+                strSQL.Append("  PROCESSAPPROVAL A");
                 strSQL.Append(", PERSONINCHARGEMASTER B");
                 strSQL.Append(", APPROVALMASTER C");
                 strSQL.Append(", CONSTRUCTIONBASEINFO As D");
@@ -2036,8 +2036,8 @@
 
                 strSQL.AppendFormat(" WHERE (A.SEQNO = 1 AND A.APPROVALSTATUS <> {0})", (int)CommonDefine.ApprovalStatus.Approval);
                 strSQL.Append(" AND NOT EXISTS (SELECT * FROM PROCESSAPPROVAL D");
-                strSQL.Append(" WHERE D.CONSTRUCTIONCODE = A.CONSTRUCTIONCODE AND D.APPROVALCODE = A.APPROVALCODE AND D.ORDERNO = A.ORDERNO AND D.SEQNO <> 1");
-                strSQL.AppendFormat(" AND D.PERSONCODE = {0} AND D.APPROVALSTATUS = {1})", CommonMotions.LoginUserData.PersonCode, (int)CommonDefine.ApprovalStatus.Approval);
+                strSQL.Append("                         WHERE D.CONSTRUCTIONCODE = A.CONSTRUCTIONCODE AND D.APPROVALCODE = A.APPROVALCODE AND D.ORDERNO = A.ORDERNO AND D.SEQNO <> 1");
+                strSQL.AppendFormat("                   AND D.PERSONCODE = {0} AND D.APPROVALSTATUS = {1})", CommonMotions.LoginUserData.PersonCode, (int)CommonDefine.ApprovalStatus.Approval);
                 strSQL.Append(" AND B.PERSONCODE = A.PERSONCODE");
                 strSQL.Append(" AND (C.APPROVALCODE = A.APPROVALCODE AND C.DEPARTMENTCODE = B.DEPARTMENTCODE)");
                 strSQL.AppendFormat(" AND C.APPROVALPERSON = {0}", CommonMotions.LoginUserData.PersonCode);
@@ -2259,9 +2259,9 @@
         }
         #endregion
 
-        #region 工事検索サブSQL作成
+        #region 工事検索サブSQL作成1
         /// <summary>
-        /// 工事検索サブSQL作成
+        /// 工事検索サブSQL作成1
         /// </summary>
         /// <param name="strSQL"></param>
         private void DispSearchDataSQL(ref StringBuilder strSQL)
@@ -2268,23 +2268,21 @@
         {
             try
             {
-                // 見積日付検索
-                if (m_EstimateMonth.Length > 0)
-                {
-                    strSQL.AppendFormat(" And (DATE_FORMAT(A.EstimatesSubmittedDate, '%Y%m') = {0})", m_EstimateMonth.Replace("/", ""));
-                }
-
                 // 発注者名検索
                 if (m_Orderer.Length > 0)
                 {
-                    strSQL.AppendFormat(" And (EX.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.OrderersName);
-                    strSQL.AppendFormat(" And EX.DetailString Like '%{0}%')", m_Orderer);
+                    strSQL.AppendFormat(" Inner JOIN CONSTRUCTIONBASEINFODETAIL EX");
+                    strSQL.AppendFormat("        ON EX.ConstructionCode = A.ConstructionCode");
+                    strSQL.AppendFormat("        And (EX.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.OrderersName);
+                    strSQL.AppendFormat("        And EX.DetailString Like '%{0}%')", m_Orderer);
                 }
                 // 工事名称検索
                 if (m_ConstructionName.Length > 0)
                 {
-                    strSQL.AppendFormat(" And (EX.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstructionName);
-                    strSQL.AppendFormat(" And EX.DetailString Like '%{0}%')", m_ConstructionName);
+                    strSQL.AppendFormat(" Inner JOIN CONSTRUCTIONBASEINFODETAIL EX2");
+                    strSQL.AppendFormat("        ON EX2.ConstructionCode = A.ConstructionCode");
+                    strSQL.AppendFormat("        And (EX2.DetailNo = {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstructionName);
+                    strSQL.AppendFormat("        And EX2.DetailString Like '%{0}%')", m_ConstructionName);
                 }
             }
             catch (Exception ex)
@@ -2294,6 +2292,28 @@
         }
         #endregion
 
+        #region 工事検索サブSQL作成2
+        /// <summary>
+        /// 工事検索サブSQL作成2
+        /// </summary>
+        /// <param name="strSQL"></param>
+        private void DispSearchDataSQLWhere(ref StringBuilder strSQL)
+        {
+            try
+            {
+                // 見積日付検索
+                if (m_EstimateMonth.Length > 0)
+                {
+                    strSQL.AppendFormat(" And (DATE_FORMAT(A.EstimatesSubmittedDate, '%Y%m') = {0})", m_EstimateMonth.Replace("/", ""));
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.ErrorFormat("システムエラー：{0}：{1}", CommonMotions.GetMethodName(), ex.Message);
+            }
+        }
+        #endregion
+
         // *---------------- メニュータブ表示関連処理
         #region 掲示板処理関連
         #region 掲示板メッセージ確認・作成
@@ -3734,11 +3754,8 @@
                 strSQL.Append(" A.EstimatesSubmitDeadline, C.PERSONNAME, D.PERSONNAME, A.STARTDATE, A.ENDDATE, G.APPROVALCODE, IFNULL(G.APPROVALSTATUS, -1), A.*, Btbl.*");
                 strSQL.Append(" FROM CONSTRUCTIONBASEINFO A");
 
-                if (m_bConstrSearchFlg)
-                {
-                    strSQL.Append(" LEFT JOIN  CONSTRUCTIONBASEINFODETAIL EX");
-                    strSQL.Append(" ON EX.ConstructionCode = A.ConstructionCode");
-                }
+                // 工事検索時は検索画面の値をセットする
+                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
 
                 strSQL.Append(" LEFT JOIN PERSONINCHARGEMASTER D ON D.PERSONCODE = A.CONSTRUCTIONPERSONCODE");
                 strSQL.Append(" LEFT JOIN (SELECT SG.CONSTRUCTIONCODE, SG.SEQNO, SG.APPROVALSTATUS, MAX(SG.APPROVALCODE) APPROVALCODE");
@@ -3754,7 +3771,7 @@
                 strSQL.Append(" AND C.PERSONCODE = A.SALESPERSONCODE");
 
                 // 工事検索時は検索画面の値をセットする
-                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
+                if (m_bConstrSearchFlg) DispSearchDataSQLWhere(ref strSQL);
 
                 strSQL.Append(" Order By A.ConstructionPeriod Desc, A.ConstructionCode Desc, A.ConstructionStatusFlg Asc, B.DETAILNO ASC");
 
@@ -3942,11 +3959,8 @@
                 strSQL.Append(" A.EstimatesSubmitDeadline, C.PERSONNAME, D.PERSONNAME, A.STARTDATE, A.ENDDATE, G.APPROVALCODE, IFNULL(G.APPROVALSTATUS, -1), A.*, Btbl.*");
                 strSQL.Append(" FROM CONSTRUCTIONBASEINFO A");
 
-                if (m_bConstrSearchFlg)
-                {
-                    strSQL.Append(" LEFT JOIN  CONSTRUCTIONBASEINFODETAIL EX");
-                    strSQL.Append(" ON EX.ConstructionCode = A.ConstructionCode");
-                }
+                // 工事検索時は検索画面の値をセットする
+                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
 
                 strSQL.Append(" LEFT JOIN  PERSONINCHARGEMASTER D  ON D.PERSONCODE = A.CONSTRUCTIONPERSONCODE");
                 strSQL.Append(" LEFT JOIN (SELECT SG.CONSTRUCTIONCODE, SG.SEQNO, SG.APPROVALSTATUS, MAX(SG.APPROVALCODE) APPROVALCODE");
@@ -3962,7 +3976,7 @@
                 strSQL.Append(" AND C.PERSONCODE = A.SALESPERSONCODE");
 
                 // 工事検索時は検索画面の値をセットする
-                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
+                if (m_bConstrSearchFlg) DispSearchDataSQLWhere(ref strSQL);
 
                 strSQL.Append(" Order By A.ConstructionPeriod Desc, A.ConstructionCode Desc, A.ConstructionStatusFlg Asc, B.DETAILNO ASC");
                 ArrayList arData = new ArrayList();
@@ -4149,11 +4163,8 @@
                 strSQL.Append(" A.EstimatesSubmitDeadline, C.PERSONNAME, D.PERSONNAME, A.STARTDATE, A.ENDDATE, G.APPROVALCODE, IFNULL(G.APPROVALSTATUS, -1), A.*, Btbl.*");
                 strSQL.Append(" FROM CONSTRUCTIONBASEINFO A");
 
-                if (m_bConstrSearchFlg)
-                {
-                    strSQL.Append(" LEFT JOIN  CONSTRUCTIONBASEINFODETAIL EX");
-                    strSQL.Append(" ON EX.ConstructionCode = A.ConstructionCode");
-                }
+                // 工事検索時は検索画面の値をセットする
+                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
 
                 strSQL.Append(" LEFT JOIN  PERSONINCHARGEMASTER D  ON D.PERSONCODE = A.CONSTRUCTIONPERSONCODE");
                 strSQL.Append(" LEFT JOIN (SELECT SG.CONSTRUCTIONCODE, SG.SEQNO, SG.APPROVALSTATUS, MAX(SG.APPROVALCODE) APPROVALCODE");
@@ -4169,7 +4180,7 @@
                 strSQL.Append(" AND C.PERSONCODE = A.SALESPERSONCODE");
 
                 // 工事検索時は検索画面の値をセットする
-                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
+                if (m_bConstrSearchFlg) DispSearchDataSQLWhere(ref strSQL);
 
                 strSQL.Append(" Order By A.ConstructionPeriod Desc, A.ConstructionCode Desc, A.ConstructionStatusFlg Asc, B.DETAILNO ASC");
                 ArrayList arData = new ArrayList();
@@ -4382,11 +4393,8 @@
                 strSQL.Append(" G.APPROVALCODE, IFNULL(G.APPROVALSTATUS, -1), A.*, Btbl.*");
                 strSQL.Append(" FROM CONSTRUCTIONBASEINFO AS A");
 
-                if (m_bConstrSearchFlg)
-                {
-                    strSQL.Append(" LEFT JOIN  CONSTRUCTIONBASEINFODETAIL AS EX");
-                    strSQL.Append(" ON EX.ConstructionCode = A.ConstructionCode");
-                }
+                // 工事検索時は検索画面の値をセットする
+                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
 
                 strSQL.Append(" LEFT JOIN PERSONINCHARGEMASTER AS D ON D.PERSONCODE = A.CONSTRUCTIONPERSONCODE");
                 strSQL.Append(" LEFT JOIN PERSONINCHARGEMASTER AS E ON E.PERSONCODE = A.CONSTRSUBPERSONCODE");
@@ -4407,7 +4415,7 @@
                 strSQL.Append(" AND C.PERSONCODE = A.SALESPERSONCODE");
 
                 // 工事検索時は検索画面の値をセットする
-                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
+                if (m_bConstrSearchFlg) DispSearchDataSQLWhere(ref strSQL);
 
                 strSQL.Append(" Order By A.ConstructionPeriod Desc, A.ConstructionStatusFlg Asc, A.ORDERDATE DESC, A.ConstructionCode Asc, B.DETAILNO ASC");
                 ArrayList arData = new ArrayList();
@@ -4933,80 +4941,96 @@
                 // ----- SQL作成
                 // 増減工事の増減分を取得する
                 StringBuilder strSQL1 = new StringBuilder();
-                strSQL1.Append("(SELECT A.ConstructionCode, A.ConstructionPeriod, B.DETAILNO, B.DETAILSTRING, A.ConstructionStatusFlg,");
+                strSQL1.Append("SELECT A.ConstructionCode, A.ConstructionPeriod, B.DETAILNO, B.DETAILSTRING, A.ConstructionStatusFlg,");
                 strSQL1.Append(" A.EstimatesSubmitDeadline, C.PERSONNAME, D.PERSONNAME, E.PERSONNAME, F.PERSONNAME, D.DepartmentCode,");
                 strSQL1.Append(" G.APPROVALCODE, IFNULL(G.APPROVALSTATUS, -1), TRUNCATE(A.ConstructionCode / 100, 0), MOD(A.ConstructionCode ,100), A.*, Btbl.*");
+
                 strSQL1.Append(" FROM CONSTRUCTIONBASEINFO A");
 
                 StringBuilder strSQL = new StringBuilder();
                 strSQL.Append(strSQL1.ToString());
 
-                if (m_bConstrSearchFlg)
-                {
-                    strSQL.Append(" LEFT JOIN  CONSTRUCTIONBASEINFODETAIL EX");
-                    strSQL.Append(" ON EX.ConstructionCode = A.ConstructionCode");
-                }
+                // 工事検索時は検索画面の値をセットする
+                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
 
                 strSQL.Append(" LEFT JOIN PERSONINCHARGEMASTER D ON D.PERSONCODE = A.CONSTRUCTIONPERSONCODE");
+
                 strSQL.Append(" LEFT JOIN PERSONINCHARGEMASTER E ON E.PERSONCODE = A.CONSTRSUBPERSONCODE");
+
                 strSQL.Append(" LEFT JOIN PERSONINCHARGEMASTER F ON F.PERSONCODE = A.CONSTRUCTIONINSTRUCTOR");
-                strSQL.Append(" Left Join PeriodAvoidance As Btbl");
+
+                strSQL.Append(" LEFT JOIN PeriodAvoidance As Btbl");
                 strSQL.Append("    On Btbl.ConstructionCode = A.ConstructionCode");
                 strSQL.Append("    And Btbl.ConstructionStatusFlg = A.ConstructionStatusFlg");
+
                 strSQL.Append(" LEFT JOIN (SELECT SG.CONSTRUCTIONCODE, SG.SEQNO, SG.APPROVALSTATUS, MAX(SG.APPROVALCODE) APPROVALCODE");
-                strSQL.Append(" FROM PROCESSAPPROVAL SG GROUP BY SG.CONSTRUCTIONCODE, SG.SEQNO, SG.APPROVALSTATUS) G");
-                strSQL.Append(" ON A.ConstructionCode = G.CONSTRUCTIONCODE AND G.SEQNO = 1");
-                strSQL.Append(", CONSTRUCTIONBASEINFODETAIL B, PERSONINCHARGEMASTER C");
+                strSQL.Append("          FROM PROCESSAPPROVAL SG GROUP BY SG.CONSTRUCTIONCODE, SG.SEQNO, SG.APPROVALSTATUS) G");
+                strSQL.Append("    ON A.ConstructionCode = G.CONSTRUCTIONCODE AND G.SEQNO = 1");
 
+                strSQL.Append(" INNER JOIN CONSTRUCTIONBASEINFODETAIL B");
+                strSQL.Append("    ON B.CONSTRUCTIONCODE = A.CONSTRUCTIONCODE");
+                strSQL.AppendFormat(" AND B.DETAILNO <= {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstructionPlace3);
+
+                strSQL.Append(" INNER JOIN PERSONINCHARGEMASTER C");
+                strSQL.Append("    ON C.PERSONCODE = A.SALESPERSONCODE");
+
                 strSQL.AppendFormat(" WHERE A.TYINGFLG = {0}", (int)ConstructionBaseInfo.TyingFlgDef.Tying);
-                strSQL.AppendFormat(" AND (DATE(A.BILLINGDATE) = STR_TO_DATE('{0}', '%Y/%m/%d')", DateTime.MinValue.ToShortDateString());
-                strSQL.Append(" OR DATE(A.BILLINGDATE) > DATE_ADD(NOW(), INTERVAL -1 MONTH))");
-                strSQL.AppendFormat(" AND A.ConstructionStatusFlg <> {0} AND A.ConstructionStatusFlg < {1}", NotOrder, BillComp);
+                strSQL.AppendFormat(" AND (DATE(A.BILLINGDATE) = DATE('{0}')", DateTime.MinValue.ToShortDateString());
+                strSQL.AppendFormat("   OR DATE(A.BILLINGDATE) > DATE('{0}'))", DateTime.Today.AddMonths(-1).ToShortDateString());
+                strSQL.AppendFormat(" AND A.ConstructionStatusFlg <> {0}", NotOrder);
+                strSQL.AppendFormat(" AND A.ConstructionStatusFlg <= {0}", BillComp);
 
-                strSQL.Append(" AND B.CONSTRUCTIONCODE = A.CONSTRUCTIONCODE");
-                strSQL.AppendFormat(" AND B.DETAILNO <= {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstructionPlace3);
-                strSQL.Append(" AND C.PERSONCODE = A.SALESPERSONCODE");
-
                 // 工事検索時は検索画面の値をセットする
-                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
+                if (m_bConstrSearchFlg) DispSearchDataSQLWhere(ref strSQL);
 
-                strSQL.Append(")");
+                //strSQL.Append(")");
 
                 // 増減工事の親を取得する
                 strSQL.AppendFormat(" UNION {0}", strSQL1.ToString());
 
-                if (m_bConstrSearchFlg)
-                {
-                    strSQL.Append(" LEFT JOIN  CONSTRUCTIONBASEINFODETAIL EX");
-                    strSQL.Append(" ON EX.ConstructionCode = A.ConstructionCode");
-                }
+                // 工事検索時は検索画面の値をセットする
+                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
 
                 strSQL.Append(" LEFT JOIN PERSONINCHARGEMASTER D ON D.PERSONCODE = A.CONSTRUCTIONPERSONCODE");
+
                 strSQL.Append(" LEFT JOIN PERSONINCHARGEMASTER E ON E.PERSONCODE = A.CONSTRSUBPERSONCODE");
+
                 strSQL.Append(" LEFT JOIN PERSONINCHARGEMASTER F ON F.PERSONCODE = A.CONSTRUCTIONINSTRUCTOR");
+
                 strSQL.Append(" LEFT JOIN (SELECT SG.CONSTRUCTIONCODE, SG.SEQNO, SG.APPROVALSTATUS, MAX(SG.APPROVALCODE) APPROVALCODE");
-                strSQL.Append(" FROM PROCESSAPPROVAL SG GROUP BY SG.CONSTRUCTIONCODE, SG.SEQNO, SG.APPROVALSTATUS) G");
-                strSQL.Append(" ON A.ConstructionCode = G.CONSTRUCTIONCODE AND G.SEQNO = 1");
+                strSQL.Append("            FROM PROCESSAPPROVAL SG GROUP BY SG.CONSTRUCTIONCODE, SG.SEQNO, SG.APPROVALSTATUS) G");
+                strSQL.Append("       ON A.ConstructionCode = G.CONSTRUCTIONCODE AND G.SEQNO = 1");
+
                 strSQL.Append(" Left Join PeriodAvoidance As Btbl");
                 strSQL.Append("    On Btbl.ConstructionCode = A.ConstructionCode");
                 strSQL.Append("    And Btbl.ConstructionStatusFlg = A.ConstructionStatusFlg");
-                strSQL.Append(", CONSTRUCTIONBASEINFODETAIL B, PERSONINCHARGEMASTER C, CONSTRUCTIONLINK H, CONSTRUCTIONBASEINFO I");
 
+                strSQL.Append(" INNER JOIN CONSTRUCTIONBASEINFODETAIL B");
+                strSQL.Append("       ON B.CONSTRUCTIONCODE = A.CONSTRUCTIONCODE");
+                strSQL.AppendFormat(" AND B.DETAILNO <= {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstructionPlace3);
+
+                strSQL.Append(" INNER JOIN PERSONINCHARGEMASTER C ON C.PERSONCODE = A.SALESPERSONCODE");
+
                 strSQL.AppendFormat(" WHERE A.TYINGFLG = {0}", (int)ConstructionBaseInfo.TyingFlgDef.Parent);
 
-                strSQL.Append(" AND B.CONSTRUCTIONCODE = A.CONSTRUCTIONCODE");
-                strSQL.AppendFormat(" AND B.DETAILNO <= {0}", (int)ConstructionBaseInfoDetail.DataNoDef.ConstructionPlace3);
-                strSQL.Append(" AND C.PERSONCODE = A.SALESPERSONCODE");
                 strSQL.AppendFormat(" AND A.ConstructionStatusFlg <> {0}", NotOrder);
-                strSQL.Append(" AND H.CONSTRUCTIONCODE = A.CONSTRUCTIONCODE");
-                strSQL.Append(" AND I.CONSTRUCTIONCODE = H.FLUCTUATIONCODE");
-                strSQL.AppendFormat(" AND (DATE(I.BILLINGDATE) = STR_TO_DATE('{0}', '%Y/%m/%d')", DateTime.MinValue.ToShortDateString());
-                strSQL.Append(" OR DATE(I.BILLINGDATE) > DATE_ADD(NOW(), INTERVAL -1 MONTH)) ");
+                strSQL.AppendFormat(" AND (DATE(A.BILLINGDATE) = DATE('{0}')", DateTime.MinValue.ToShortDateString());
+                strSQL.AppendFormat("   OR DATE(A.BILLINGDATE) > DATE('{0}'))", DateTime.Today.AddMonths(-1).ToShortDateString());
 
+                strSQL.Append(" AND A.ConstructionCode");
+                strSQL.Append("     in (SELECT ConstructionCode From constructionlink As Link");
+                strSQL.Append("                Where Link.FluctuationCode");
+                strSQL.Append("                in (SELECT AX.ConstructionCode From constructionbaseinfo As AX");
+                strSQL.AppendFormat("              Where AX.TyingFlg = {0}", (int)ConstructionBaseInfo.TyingFlgDef.Tying);
+                strSQL.AppendFormat("              AND AX.ConstructionStatusFlg <> {0}", NotOrder);
+                strSQL.AppendFormat("              AND AX.ConstructionStatusFlg <= {0}", BillComp);
+                strSQL.AppendFormat("              AND (DATE(AX.BILLINGDATE) = DATE('{0}')", DateTime.MinValue.ToShortDateString());
+                strSQL.AppendFormat("                OR DATE(AX.BILLINGDATE) > DATE('{0}'))))", DateTime.Today.AddMonths(-1).ToShortDateString());
+
                 // 工事検索時は検索画面の値をセットする
-                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
+                if (m_bConstrSearchFlg) DispSearchDataSQLWhere(ref strSQL);
 
-                strSQL.Append(")");
+                //strSQL.Append(")");
 
                 strSQL.Append(" ORDER BY 2 Desc, 14 Desc, 15 Asc, 17 Asc, 3 ASC");
                 ArrayList arData = new ArrayList();
@@ -5262,11 +5286,8 @@
                 strSQL.Append(", C.PERSONNAME, A.* ");
                 strSQL.Append(" FROM CONSTRUCTIONBASEINFO A");
 
-                if (m_bConstrSearchFlg)
-                {
-                    strSQL.Append(" LEFT JOIN  CONSTRUCTIONBASEINFODETAIL EX");
-                    strSQL.Append(" ON EX.ConstructionCode = A.ConstructionCode");
-                }
+                // 工事検索時は検索画面の値をセットする
+                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
 
                 strSQL.Append(", CONSTRUCTIONBASEINFODETAIL B");
                 strSQL.Append(", PERSONINCHARGEMASTER C");
@@ -5277,7 +5298,7 @@
                 strSQL.Append(" AND C.PERSONCODE = A.SALESPERSONCODE");
 
                 // 工事検索時は検索画面の値をセットする
-                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
+                if (m_bConstrSearchFlg) DispSearchDataSQLWhere(ref strSQL);
 
                 strSQL.Append(" Order By A.NonOrderDate Desc, A.ConstructionCode Desc, B.DETAILNO ASC");
                 ArrayList arData = new ArrayList();
@@ -5479,11 +5500,8 @@
                 strSQL.Append(" LEFT JOIN  PERSONINCHARGEMASTER D");
                 strSQL.Append(" ON D.PERSONCODE = A.CONSTRUCTIONPERSONCODE");
 
-                if (m_bConstrSearchFlg)
-                {
-                    strSQL.Append(" LEFT JOIN  CONSTRUCTIONBASEINFODETAIL EX");
-                    strSQL.Append(" ON EX.ConstructionCode = A.ConstructionCode");
-                }
+                // 工事検索時は検索画面の値をセットする
+                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
 
                 strSQL.Append(" Left Join PeriodAvoidance As Btbl");
                 strSQL.Append("    On Btbl.ConstructionCode = A.ConstructionCode");
@@ -5496,7 +5514,7 @@
                 strSQL.Append(" AND C.PERSONCODE = A.SALESPERSONCODE");
 
                 // 工事検索時は検索画面の値をセットする
-                if (m_bConstrSearchFlg) DispSearchDataSQL(ref strSQL);
+                if (m_bConstrSearchFlg) DispSearchDataSQLWhere(ref strSQL);
 
                 strSQL.Append(" Order By");
                 strSQL.Append(" Case DATE_FORMAT(A.RevCompleteDate, '%Y/%m/%d')");
Index: branches/src/ProcessManagement/ProcessManagement/ProcessManagement.csproj
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/ProcessManagement.csproj	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/ProcessManagement.csproj	(revision 366)
@@ -136,7 +136,7 @@
     </Compile>
     <Compile Include="Common\Process\ClsChangeLedgerData.cs" />
     <Compile Include="Common\Process\ClsMessageBoradAccess.cs" />
-    <Compile Include="Common\Process\ClsApprovalPermission.cs" />
+    <Compile Include="Common\Process\ClsCommonApproval.cs" />
     <Compile Include="Common\Process\ClsOtherProc.cs" />
     <Compile Include="Common\Process\ClsPeriodAvoidance.cs" />
     <Compile Include="Common\Process\ClsProcessExist.cs" />
@@ -231,6 +231,7 @@
     <Compile Include="DB\IOAccess\IOBankBusinessDayMaster.cs" />
     <Compile Include="DB\IOAccess\IOConstrLedgerExpenses.cs" />
     <Compile Include="DB\IOAccess\IOCostDataOfDepartment.cs" />
+    <Compile Include="DB\IOAccess\IOChgConstrCharge.cs" />
     <Compile Include="DB\IOAccess\IODepartmentCostData.cs" />
     <Compile Include="DB\IOAccess\IODirectAccess.cs" />
     <Compile Include="DB\IOAccess\IOBillingData.cs" />
Index: branches/src/ProcessManagement/ProcessManagement/Properties/AssemblyInfo.cs
===================================================================
--- branches/src/ProcessManagement/ProcessManagement/Properties/AssemblyInfo.cs	(revision 365)
+++ branches/src/ProcessManagement/ProcessManagement/Properties/AssemblyInfo.cs	(revision 366)
@@ -32,7 +32,7 @@
 // すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を 
 // 既定値にすることができます:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.1.220")]
-[assembly: AssemblyFileVersion("1.0.1.220")]
+[assembly: AssemblyVersion("1.0.1.224")]
+[assembly: AssemblyFileVersion("1.0.1.224")]
 // Log4netを使用する
 [assembly: log4net.Config.XmlConfigurator(ConfigFile = @"log4net.config", Watch = true)]
\ No newline at end of file
