From dc07d4ddadb3acfbeda76f521638dcfff28d7a21 Mon Sep 17 00:00:00 2001
From: limj <limj@taizhitech.com>
Date: 星期五, 22 九月 2023 14:58:27 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/TIANMA_JITUAN into dev_lmj

---
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def                                       |    9 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetNextFriday.qbl                                                                   |   29 +
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF#670.def                                    |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_Panel950.def                                                            |   25 +
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_listContextMenu660.def                                                  |    4 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel796.def                                     |   26 +
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop264#19.def                               |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/_ROOT_Component_FrmAuthorizeAndCountersign_Order.def       |   28 +
 _Main/BL/Type_H_MaterialHedgingResult/DefaultValue_ID.qbl                                                                         |    6 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def                            |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel989.def                                     |   24 +
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def                                                     |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def                                    |   16 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def                                           |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def                                     |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop612#612.def                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick#975.def                                    |   28 +
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl                                                              |   71 +++
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def                                                          |   15 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def                                                     |   37 -
 _Main/BL/Type_H_MaterialHedgingResult/DefaultValue_CustomerCode.qbl                                                               |    6 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_OnCreated.def                                     |   43 ++
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_Panel224.def                                                            |   48 ++
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop597#324.def                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop846#618.def                              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def                                                     |    4 
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_SKU.qbl                                                                           |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def                                  |   15 
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_Unit.qbl                                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick#880.def                     |   43 ++
 _Main/BL/Type_H_MessagePassing/Attribute_ValueJsonString.qbl                                                                      |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def                                                 |   15 
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_List696.def                                                             |   41 ++
 _Main/BL/Type_H_MaterialHedgingResult/_ROOT_Type_H_MaterialHedgingResult.qbl                                                      |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def                                                       |    3 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_InitialData778_OnClick#971.def                       |   35 +
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_CustomerCode.qbl                                                                  |    8 
 _Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl                                                                 |   65 +++
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def                                        |    2 
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_ID.qbl                                                                            |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def                                       |    4 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def                                                     |   84 ++++
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def                                                 |    4 
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_CustomerName.qbl                                                                  |    8 
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_ReverseQty.qbl                                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop#217.def                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_Panel261_223_btn_Cancel_FAAC_OnClick.def          |   16 
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_AuthorizeQty.qbl                                                                  |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def |    1 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel261#223.def                                 |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop104#150.def                              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def                                                          |   17 
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_listActionBarPage112.def                                                |    4 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick#222.def                  |   43 ++
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Response_OnCreated.def                                                            |   16 
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def                                                     |   33 +
 _Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx#234.def                                            |    1 
 _Main/BL/Type_H_MaterialHedgingResult/DefaultValue_SKU.qbl                                                                        |    6 
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_MType.qbl                                                                         |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop744#568.def                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Response_Panel224_btn_Query_FRAS_OnClick.def                                      |   20 +
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_Serial.qbl                                                                        |    8 
 /dev/null                                                                                                                         |   42 --
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop360#136.def                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def                               |    2 
 _Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def                                                     |    1 
 _Main/BL/Relations/Relation_H_MaterialHedgingResult_MacroPlan_MacroPlan_H_MaterialHedgingResult.qbl                               |   23 +
 _Main/BL/Type_H_MaterialHedgingResult/Attribute_ForecastQty.qbl                                                                   |    8 
 _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_Panel261_223_btn_OK_FAAC_OnClick.def              |   37 +
 69 files changed, 1,030 insertions(+), 147 deletions(-)

diff --git a/_Main/BL/Relations/Relation_H_MaterialHedgingResult_MacroPlan_MacroPlan_H_MaterialHedgingResult.qbl b/_Main/BL/Relations/Relation_H_MaterialHedgingResult_MacroPlan_MacroPlan_H_MaterialHedgingResult.qbl
new file mode 100644
index 0000000..587e695
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_MaterialHedgingResult_MacroPlan_MacroPlan_H_MaterialHedgingResult.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_MaterialHedgingResult_MacroPlan_MacroPlan_H_MaterialHedgingResult
+{
+  #keys: '1[414724.0.133544606]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[414724.0.133544608][414724.0.133544607][414724.0.133544609]'
+    Cardinality: '0to1'
+    ObjectDefinition: H_MaterialHedgingResult
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide H_MaterialHedgingResult
+  {
+    #keys: '3[414724.0.133544611][414724.0.133544610][414724.0.133544612]'
+    Cardinality: '1toN'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetNextFriday.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetNextFriday.qbl
new file mode 100644
index 0000000..925d22a
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetNextFriday.qbl
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_GetNextFriday () as Date
+{
+  Description: '鑾峰彇涓嬩竴涓槦鏈�5鐨勬棩鏈�'
+  TextBody:
+  [*
+    /**********************鑾峰彇涓嬩竴涓懆5鐨勬棩鏈�*******************
+    *鍒涘缓浜猴細yunying
+    *鍒涘缓鏃ユ湡锛�2023-09-21
+    *鎻忚堪锛氬緱鍒颁笅涓�涓槦鏈�5鐨勬棩鏈燂紝濡傛灉褰撳ぉ鏃舵槦鏈熶簲锛屽垯杩斿洖褰撳ぉ鏃ユ湡锛屽垱寤鸿鍗曚娇鐢�
+    **********************************************************/
+    //瀹氫箟涓嬩竴涓槦鏈�
+    nTargetWeenNum := 5;
+    nTodayWeekNum := Date::ActualDate().DayOfWeek();
+    // 鍚戝悗鍋忕Щ澶╂暟
+    nAddDays := 0;
+    if( nTodayWeekNum <= nTargetWeenNum)
+    {
+      nAddDays := nTargetWeenNum-nTodayWeekNum;
+    }
+    else
+    {
+      nAddDays := 7 - nTodayWeekNum+nTargetWeenNum;
+    }
+    // 涓嬩竴涓槦鏈熺殑鏃ユ湡
+    return Date::ActualDate() + nAddDays;
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl
new file mode 100644
index 0000000..5bf028e
--- /dev/null
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl
@@ -0,0 +1,71 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SM_InitialForcastData (
+  MacroPlan Owner
+) as owning JSON
+{
+  Description: '鍒濆鍖栬鍗曢娴嬩俊鎭�'
+  TextBody:
+  [*
+    /**********************************鍒濆鍖栬鍗曢娴嬩俊鎭�***************************************
+    *娉細鏈‘瀹氫笂娓搁娴嬭鍗曟洿鏂伴�昏緫鍜屾暟鎹湁鏁堟�э紝杩欓噷杩涜浜屾澶勭悊锛屾柊鐢熸垚涓�涓垪琛紝閬垮厤涓婃父淇℃伅鍙樺姩涓ラ噸
+    *    褰卞搷鍔熻兘
+    *
+    *****************************************************************************************/
+    // 鍒濆鍖栫粨鏋�
+    bStatus := false;
+    strMsg :="";
+    
+    try{
+      // 棰勬祴鏁版嵁2姝ゅ鐞嗭紙绛涢��+瀹㈡埛鍚嶇О鎻愬彇锛�
+      if(Owner.H_Forecast(relget ).Size()>0)
+      {
+        traverse( Owner,H_Forecast,Obj,not isnull( Obj))
+        {
+          Owner.H_Forecast(reldelete, Obj);
+        }
+      }
+      AllData:= selectset( Owner, Product_MP.SalesDemand.astype( Forecast ),object,object.EndDate().DateTime().Date() >= Date::ActualDate().StartOfMonth() 
+                           and object.EndDate().DateTime().Date() <= Date::ActualDate().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth()
+                           and object.Quantity()>0 );
+      
+      CustomName:="";
+      DepartMent:="";
+      idx:=0;
+      traverse( AllData,Elements,Obj,not isnull(Obj))
+      {
+        idx:=Obj.SalesSegmentName().FindString( "-",0);
+        if(idx>0)
+        {
+          DepartMent:=Obj.SalesSegmentName().SubString( 0,idx);
+          CustomName := Obj.SalesSegmentName().SubString( idx+1, Obj.SalesSegmentName().Length() - (idx+1));
+        }
+        else
+        {
+          CustomName :=Obj.SalesSegmentName();
+          DepartMent := Obj.SalesSegmentName();
+        }
+        
+         Owner.H_Forecast(relnew,OrderCode := H_FunctionClass::SM_GenerateID( "OF"),
+                                SKU := Obj.ProductID(),
+                                CustomCode := CustomName,
+                               CustomName := CustomName,
+                               Util:=Obj.UnitOfMeasureName(),
+                               NeedTime:=Obj.EndDate(),
+                               ForecastQty:=[Number]Obj.Quantity().Round( 0),
+                               Department:=DepartMent);
+      }
+      bStatus := true;
+      strMsg :="璁㈠崟棰勬祴鍒濆鍖栨垚鍔�!";
+    }
+    onerror
+    {
+      strMsg :="璁㈠崟棰勬祴鍒濆鍖栧け璐ワ紝鍙兘褰卞搷鍐插噺璁$畻锛岃鑱旂郴绯荤粺绠$悊鍛橈紒";
+      Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "SM_InitialForcastData",
+                         DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
+                         GeneralInformation := e.GeneralInformation());                
+    }
+    return JSON::Object().Add( "Status",bStatus)
+                         .Add( "Msg",strMsg).Build();
+  *]
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
index 52dcd9d..d096a87 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
@@ -40,7 +40,7 @@
         // 鑾峰彇棰勬祴鏁伴噺锛堝鎴�+SKU+鏈堜唤 鐞嗚鏄病鏈夌墿鏂欓娴嬶級
         OrderForecast := select(Owner, H_OrderForecastRealQty , Obj, Obj.SKU() = SKU 
                                               and Obj.CustomID() = CustomerCode 
-                                              and Obj.Month().Format( "YM2") = Date::ActualDate().Format( "YM2"));
+                                              and Obj.Month().Format( "YM2") = Date::ActualDate().Format( "YM2"));                                   
         if ( not isnull(OrderForecast))
         {
             nForecastQtyOld := OrderForecast.ForecatsRealQty();
@@ -93,6 +93,28 @@
             Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := SKU,Unit := "閫氳繃SKU鑾峰彇",ReverseRealQty := nReverseQtyNew);
           } 
           
+          
+          MaterialResult := selectset( Owner,H_MaterialHedgingResult,Obj,Obj.SKU() = SKU);
+          if( MaterialResult.Size()=0)
+          {
+              Owner.H_MaterialHedgingResult(relnew,
+                                             ID := H_FunctionClass::SM_GenerateID( "MR"),
+                                             SKU:=SKU,
+                                             ForecastQty := nForecastQtyNew,
+                                             ReverseQty := nReverseQtyNew,
+                                             AuthorizeQty := 0,
+                                             CustomerCode := CustomerCode,
+                                             CustomerName := "",
+                                             Unit := "",
+                                             MType := "鐗╂枡/鍗婃垚鍝�");
+          }
+          else
+          {
+              traverse( MaterialResult,Elements,Obj,not isnull( Obj))
+              {
+                 Obj.ReverseQty(  nReverseQtyNew);
+              }
+          }
           // 閲婃斁閲囪喘
           Owner.H_MaterialPurchase(relnew,ID := H_FunctionClass::SM_GenerateID( "MP"),VCode:=VCode, DemandTime := DateTime::ActualTime(),
                                     H_HedgingRecord_ID := HRID,SKU := SKU,ProductSubclassType := "鐗╂枡绫诲瀷锛岀敤SKU鎶撶墿鏂欒〃寰楀埌",Qty := OperateQty,Unit := "閫氳繃SKU鎶�",
@@ -196,7 +218,46 @@
                                                                                             AuthorizeRealQty :=nAuthorizeQtyNew,
                                                                                             Unit := "SKU 鍒扮墿鏂欒〃鑾峰彇");
           } 
-          
+          //鏇存柊缁撴灉
+          MaterialResult := selectset( Owner,H_MaterialHedgingResult,Obj,Obj.SKU() = SKU);
+          if( MaterialResult.Size()=0)
+          {
+            // 娣诲姞涓�鏉″弽绛捐褰�
+            Owner.H_MaterialHedgingResult(relnew,
+                                   ID := H_FunctionClass::SM_GenerateID( "MR"),
+                                   SKU:=SKU,
+                                   ForecastQty := nForecastQtyNew,
+                                   ReverseQty := nReverseQtyNew,
+                                   AuthorizeQty := 0,
+                                   CustomerCode := CustomerCode,
+                                   CustomerName := "",
+                                   Unit := "",
+                                   MType := "鐗╂枡/鍗婃垚鍝�");
+            
+            // 娣诲姞涓�鏉℃巿鏉冭褰�
+            Owner.H_MaterialHedgingResult(relnew,
+                                           ID := H_FunctionClass::SM_GenerateID( "MR"),
+                                           SKU:=SKU,
+                                           ForecastQty := nForecastQtyNew,
+                                           ReverseQty := nReverseQtyNew,
+                                           AuthorizeQty := nAuthorizeQtyNew,
+                                           CustomerCode := CustomerCode,
+                                           Unit := "",MType := "鐗╂枡/鍗婃垚鍝�",
+                                           CustomerName := CustomerCode);
+          }
+          else
+          {
+              traverse( MaterialResult,Elements,Obj,not isnull( Obj))
+              {
+                Obj.ReverseQty(  nReverseQtyNew);
+                if( Obj.CustomerCode()= CustomerCode)
+                {
+                  Obj.AuthorizeQty(nAuthorizeQtyNew);
+                  Obj.ForecastQty(nForecastQtyNew);
+                }
+              }
+          }
+    
           // 閲婃斁閲囪喘
           nMid_R :=OperateQty - nReverseQtyOld;
           if( nMid_R > 0)
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_AuthorizeQty.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_AuthorizeQty.qbl
new file mode 100644
index 0000000..c4c9f13
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_AuthorizeQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AuthorizeQty
+{
+  #keys: '3[414724.0.133544641][414724.0.133544640][414724.0.133544642]'
+  Description: '鎺堟潈鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_CustomerCode.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_CustomerCode.qbl
new file mode 100644
index 0000000..24a04c3
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_CustomerCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerCode
+{
+  #keys: '3[414724.0.133544653][414724.0.133544652][414724.0.133544654]'
+  Description: '瀹㈡埛ID'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_CustomerName.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_CustomerName.qbl
new file mode 100644
index 0000000..13d3c7c
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_CustomerName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerName
+{
+  #keys: '3[414724.0.133544660][414724.0.133544659][414724.0.133544661]'
+  Description: '瀹㈡埛鍚嶇О'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_ForecastQty.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_ForecastQty.qbl
new file mode 100644
index 0000000..04a979a
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_ForecastQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ForecastQty
+{
+  #keys: '3[414724.0.133544656][414724.0.133544655][414724.0.133544657]'
+  Description: '褰撴湀棰勬祴鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_ID.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_ID.qbl
new file mode 100644
index 0000000..badfad5
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414724.0.133544626][414724.0.133544625][414724.0.133544627]'
+  Description: 'KEY'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_MType.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_MType.qbl
new file mode 100644
index 0000000..b18e72d
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_MType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MType
+{
+  #keys: '3[414724.0.134572562][414724.0.134572561][414724.0.134572563]'
+  Description: ' 鐗╂枡绫诲瀷'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_ReverseQty.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_ReverseQty.qbl
new file mode 100644
index 0000000..a6dfa92
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_ReverseQty.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReverseQty
+{
+  #keys: '3[414724.0.133544623][414724.0.133544622][414724.0.133544624]'
+  Description: '鍙嶇鍓╀綑鏁伴噺'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_SKU.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_SKU.qbl
new file mode 100644
index 0000000..4d2dc02
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_SKU.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKU
+{
+  #keys: '3[414724.0.133544644][414724.0.133544643][414724.0.133544645]'
+  Description: 'SKU缂栫爜'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_Serial.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_Serial.qbl
new file mode 100644
index 0000000..b0b49ec
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_Serial.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Serial
+{
+  #keys: '3[414724.0.133544647][414724.0.133544646][414724.0.133544648]'
+  Description: '搴忓彿锛屼笉涓�瀹氫娇鐢�'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/Attribute_Unit.qbl b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_Unit.qbl
new file mode 100644
index 0000000..1b86054
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+  #keys: '3[414724.0.133544673][414724.0.133544672][414724.0.133544674]'
+  Description: '鍗曚綅'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/DefaultValue_CustomerCode.qbl b/_Main/BL/Type_H_MaterialHedgingResult/DefaultValue_CustomerCode.qbl
new file mode 100644
index 0000000..cc729d8
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/DefaultValue_CustomerCode.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: CustomerCode
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/DefaultValue_ID.qbl b/_Main/BL/Type_H_MaterialHedgingResult/DefaultValue_ID.qbl
new file mode 100644
index 0000000..049abc0
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/DefaultValue_ID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: ID
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/DefaultValue_SKU.qbl b/_Main/BL/Type_H_MaterialHedgingResult/DefaultValue_SKU.qbl
new file mode 100644
index 0000000..2aceb60
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/DefaultValue_SKU.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+  TargetAttribute: SKU
+}
diff --git a/_Main/BL/Type_H_MaterialHedgingResult/_ROOT_Type_H_MaterialHedgingResult.qbl b/_Main/BL/Type_H_MaterialHedgingResult/_ROOT_Type_H_MaterialHedgingResult.qbl
new file mode 100644
index 0000000..518141a
--- /dev/null
+++ b/_Main/BL/Type_H_MaterialHedgingResult/_ROOT_Type_H_MaterialHedgingResult.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_MaterialHedgingResult
+{
+  #keys: '5[414724.0.133544603][414724.0.133544601][0.0.0][414724.0.133544602][414724.0.133544604]'
+  BaseType: Object
+  Description: '鐗╂枡鍙嶇鎺堟潈缁撴灉'
+  StructuredName: 'H_MaterialHedgingResults'
+}
diff --git a/_Main/BL/Type_H_MessagePassing/Attribute_ValueJsonString.qbl b/_Main/BL/Type_H_MessagePassing/Attribute_ValueJsonString.qbl
new file mode 100644
index 0000000..aba7042
--- /dev/null
+++ b/_Main/BL/Type_H_MessagePassing/Attribute_ValueJsonString.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ValueJsonString
+{
+  #keys: '3[414724.0.138457270][414724.0.138457269][414724.0.138457271]'
+  Description: 'Json鏍煎紡瀛楃涓叉牸寮忕殑Value'
+  ValueType: String
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def"
index 53c000e..c515238 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form234/_ROOT_Component_FrmOrderResultEx\043234.def"
@@ -40,6 +40,7 @@
   Properties:
   [
     Description: '璁㈠崟鍐插噺鍚庡垪琛ㄥ睍绀�'
+    Image: 'NAV_REDO_LIGHT_BLUE'
     Title: '璁㈠崟鍐插噺鍚庡垪琛ㄥ睍绀�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def
index 2b5e9aa..1e88a95 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormHedgingOfLog/_ROOT_Component_FormHedgingOfLog.def
@@ -22,7 +22,7 @@
   Properties:
   [
     Description: '鍐插噺缁撴灉-鏃ュ織'
-    Image: 'DOCUMENT_REFRESH'
-    Title: '鍙嶇鎺堟潈鍒楄〃鏄庣粏椤�'
+    Image: 'NAV_REDO_LIGHT_BLUE'
+    Title: '鏃ュ織椤甸潰'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def
index 9c8ca6c..88640ec 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMaterialPurchase/_ROOT_Component_FormMaterialPurchase.def
@@ -49,7 +49,7 @@
   Properties:
   [
     Description: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
-    Image: 'DOG'
+    Image: 'NAV_REDO_LIGHT_BLUE'
     Title: '鎺堟潈/鍙嶇鐗╂枡閲囪喘鏄庣粏閲婃斁'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def
index 28f9120..9a61137 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormReleaseRecord/_ROOT_Component_FormReleaseRecord.def
@@ -25,7 +25,7 @@
   Properties:
   [
     Description: '鍙嶇/鎺堟潈鐗╂枡鍙戝竷鐗堟湰鏄庣粏'
-    Image: 'BULL'
+    Image: 'NAV_REDO_LIGHT_BLUE'
     Title: '鍙嶇/鎺堟潈鐗╂枡鍙戝竷鐗堟湰鏄庣粏'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def
deleted file mode 100644
index f043a99..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelOptimizerGeneral718.def
+++ /dev/null
@@ -1,39 +0,0 @@
-Quintiq file version 2.0
-Component PanelOptimizerGeneral718
-{
-  #keys: '[414724.0.43041017]'
-  BaseType => //PanelOptimizerGeneral
-  Children:
-  [
-    Component CheckboxRunPeggingAfterOptRun
-    {
-      #keys: '[144528.1.1789128457]'
-      BaseType => //PanelOptimizerGeneral/CheckboxRunPeggingAfterOptRun
-      IsDerived: true
-      Properties:
-      [
-        Visible: false
-      ]
-    }
-    Component EditFieldMinSalesDemandQtyThreshold
-    {
-      #keys: '[144528.1.1789128515]'
-      BaseType => //PanelOptimizerGeneral/EditFieldMinSalesDemandQtyThreshold
-      IsDerived: true
-      Properties:
-      [
-        Visible: false
-      ]
-    }
-    Component EditFieldUsagePercentTripCleanup
-    {
-      #keys: '[144528.1.1789128517]'
-      BaseType => //PanelOptimizerGeneral/EditFieldUsagePercentTripCleanup
-      IsDerived: true
-      Properties:
-      [
-        Visible: false
-      ]
-    }
-  ]
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001\043655.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001\043655.def"
deleted file mode 100644
index 9d296a3..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop0001\043655.def"
+++ /dev/null
@@ -1,24 +0,0 @@
-Quintiq file version 2.0
-Component PanelTop0001
-{
-  #keys: '[414724.0.43233506]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    #child: PanelTop
-    #child: PanelTop612
-    #child: PanelTop264
-    #child: PanelTop597
-    #child: PanelTop846
-    #child: PanelTop104
-    #child: PanelTop360
-    #child: PanelTop744
-    #child: PanelTop820
-  ]
-  Properties:
-  [
-    Border: true
-    Style: 'content'
-    Taborder: 1
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def
deleted file mode 100644
index 8d132dd..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop820.def
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-Component PanelTop820
-{
-  #keys: '[414724.0.79122768]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component ds_NeedDate
-    {
-      #keys: '[414724.0.79122804]'
-      BaseType: 'WebDateSelector'
-      Properties:
-      [
-        Label: '闇�姹傛棩鏈�'
-        Taborder: 0
-      ]
-    }
-  ]
-  Properties:
-  [
-    Taborder: 0
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def
deleted file mode 100644
index e01820f..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_OnCreated.def
+++ /dev/null
@@ -1,46 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Response OnCreated () id:Response_FrmAuthorizeAndCountersign_OnCreated
-{
-  #keys: '[414724.0.80341563]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebComponent_OnCreated'
-  QuillAction
-  {
-    Body:
-    [*
-      /**********************鑾峰彇涓嬩竴涓懆5鐨勬棩鏈�*******************/
-      //瀹氫箟涓嬩竴涓槦鏈�
-      nTargetWeenNum := 5;
-      nTodayWeekNum := Date::ActualDate().DayOfWeek();
-      nAddDays := 0;
-      if( nTodayWeekNum <= nTargetWeenNum)
-      {
-        nAddDays := nTargetWeenNum-nTodayWeekNum;
-      }
-      else
-      {
-        nAddDays := 7 - nTodayWeekNum+nTargetWeenNum;
-      }
-      // 涓嬩竴涓槦鏈熺殑鏃ユ湡
-      dtNeedDate := Date::ActualDate() + nAddDays;
-      /******************************鑾峰彇涓嬩竴涓懆5鐨勬棩鏈� 缁撴潫***********************/
-      ds_NeedDate.Date(dtNeedDate);
-      
-      // 鑾峰彇閫夋嫨鍚庣殑SKU
-      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
-      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
-      {
-        StrValue := SelectItem.Value().Tokenize( ";");
-        lb_SKUCode_FAAC.Text(StrValue.Element( 0));
-        lb_SKUName_FAAC.Text("浜у搧");
-        lb_Operator_FAAC.Text("");
-        lb_Util_FAAC.Text(StrValue.Element( 1));
-        txt_CustomID_FAAC.Text(StrValue.Element( 2));
-        txt_CustomName_FAAC.Text(StrValue.Element( 3));
-        lb_Operator_FAAC.Text(ApplicationMacroPlanner.GetUserName());
-      }
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def
deleted file mode 100644
index 353774e..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_Cancel_FAAC_OnClick.def
+++ /dev/null
@@ -1,16 +0,0 @@
-Quintiq file version 2.0
-#parent: Panel261/btn_Cancel_FAAC
-Response OnClick () id:Response_Panel261_btn_Cancel_FAAC_OnClick
-{
-  #keys: '[414724.0.90212874]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  GroupServerCalls: true
-  QuillAction
-  {
-    Body:
-    [*
-      FrmAuthorizeAndCountersign.Close();
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def
deleted file mode 100644
index c34f055..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Response_Panel261_btn_OK_FAAC_OnClick.def
+++ /dev/null
@@ -1,44 +0,0 @@
-Quintiq file version 2.0
-#parent: Panel261/btn_OK_FAAC
-Response OnClick () id:Response_Panel261_btn_OK_FAAC_OnClick
-{
-  #keys: '[414724.0.56302031]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  Precondition:
-  [*
-    return not isnull( MacroPlan);
-  *]
-  QuillAction
-  {
-    Body:
-    [*
-      strQty := np_Qty_FAAC.Number().AsQUILL();
-      Qty := 0;
-      if( strQty.FindString( ".",0)>0)
-      {
-        Qty := [Number]strQty.SubString( 0,strQty.FindString( ".",0));
-      }
-      else
-      {
-        Qty := [Number]strQty;
-      }
-      OperateMsg :="";
-      OperateResult := H_FunctionClass::SM_OrderReverseOrAuthorize(  MacroPlan,lb_Util_FAAC.Text() ,"-",ds_NeedDate.Date() ,txt_CustomID_FAAC.Text(),lb_SKUCode_FAAC.Text(),Qty,
-                                                            lb_Operator_FAAC.Text(),txt_CustomName_FAAC.Text(),OperateMsg,ddsl_OperateType_FAAC.Text());
-      
-      if( OperateMsg.Length()>0)
-      {
-        if( OperateResult)
-        {
-          WebMessageBox::Success( OperateMsg);
-        }
-        else
-        {
-          WebMessageBox::Warning( OperateMsg);
-        }
-      }
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def
deleted file mode 100644
index 69e5e49..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/_ROOT_Component_FrmAuthorizeAndCountersign.def
+++ /dev/null
@@ -1,30 +0,0 @@
-Quintiq file version 2.0
-#root
-#parent: MacroPlannerWebApp
-OrphanComponent FrmAuthorizeAndCountersign
-{
-  #keys: '[414724.0.41821648]'
-  BaseType: 'WebForm'
-  Children:
-  [
-    Component lb_Title_FRMAAC
-    {
-      #keys: '[414724.0.41841127]'
-      BaseType: 'WebLabel'
-      Properties:
-      [
-        Description: '璁㈠崟鍙嶆綔鎺堟潈鏂板椤�'
-        Taborder: 0
-        Text: '璁㈠崟鍙嶇鎺堟潈鏂板椤�'
-      ]
-    }
-    #child: PanelTop0001
-    #child: Panel261
-  ]
-  Properties:
-  [
-    Description: '璁㈠崟鎺堟潈鍜屽弽绛�'
-    Image: 'DOCUMENTS_NEW'
-    Title: '璁㈠崟鍙嶇鎺堟潈鏂板椤�'
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
index c03f661..a76472b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
@@ -15,13 +15,16 @@
     [*
       // 鑾峰彇閫夋嫨鍚庣殑SKU
       SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmMaterial" and Obj.ItemKey()="ListSelect");
-      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      if(not isnull( SelectItem))
       {
-        StrValue := SelectItem.Value().Tokenize( ";");
-        lb_SUK_FAACM.Text(StrValue.Element( 0));
-        lb_MaterialCode_FAACM.Text(StrValue.Element( 1));
-        lb_Unit_FAACM.Text(StrValue.Element( 2));
-        lb_Operator_FAACM.Text(ApplicationMacroPlanner.GetUserName());
+        if(SelectItem.Value().Length()>0)
+        {
+          StrValue := SelectItem.Value().Tokenize( ";");
+          lb_SUK_FAACM.Text(StrValue.Element( 0));
+          lb_MaterialCode_FAACM.Text(StrValue.Element( 1));
+          lb_Unit_FAACM.Text(StrValue.Element( 2));
+          lb_Operator_FAACM.Text(ApplicationMacroPlanner.GetUserName());
+        }
       }
       // 鑾峰彇閫夋嫨鍚庣殑SKU
       SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def
index 748bae7..97ec858 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/_ROOT_Component_FrmAuthorizeAndCountersign_Material.def
@@ -24,6 +24,7 @@
   Properties:
   [
     Description: '鍘熸潗鏂欏崐鎴愬搧鍙嶇鎺堟潈鏂板椤�'
+    Image: 'NAV_REDO_LIGHT_BLUE'
     Title: '鍘熸潗鏂欏崐鎴愬搧鍙嶇鎺堟潈鏂板椤�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel261\043223.def"
similarity index 76%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel261\043223.def"
index a826c6e..265489a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_Panel261.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel261\043223.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component Panel261
+Component Panel261 id:Panel261_223
 {
-  #keys: '[414724.0.44249978]'
+  #keys: '[414724.0.117732107]'
   BaseType: 'WebPanel'
   Children:
   [
     Component btn_OK_FAAC
     {
-      #keys: '[414724.0.44279077]'
+      #keys: '[414724.0.117732108]'
       BaseType: 'WebButton'
       Properties:
       [
@@ -18,7 +18,7 @@
     }
     Component btn_Cancel_FAAC
     {
-      #keys: '[414724.0.44279090]'
+      #keys: '[414724.0.117732109]'
       BaseType: 'WebButton'
       Properties:
       [
@@ -34,6 +34,6 @@
     Border: true
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 2
+    Taborder: 10
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel796.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel796.def
new file mode 100644
index 0000000..c14c1c2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel796.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+Component Panel796
+{
+  #keys: '[414724.0.116871632]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label417
+    {
+      #keys: '[414724.0.115502113]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Description: '璁㈠崟鍙嶆綔鎺堟潈鏂板椤�'
+        Taborder: 0
+        Text: '璁㈠崟鍙嶆綔鎺堟潈鏂板椤�'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel989.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel989.def
new file mode 100644
index 0000000..843fb81
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_Panel989.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component Panel989
+{
+  #keys: '[414724.0.115531444]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_NeedDate id:ds_NeedDate_456
+    {
+      #keys: '[414724.0.117731536]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        Label: '闇�姹傛棩鏈�'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop\043217.def"
similarity index 74%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop\043217.def"
index 49964fc..430b7a1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop\043217.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelTop
+Component PanelTop id:PanelTop_217
 {
-  #keys: '[414724.0.43072496]'
+  #keys: '[414724.0.117731595]'
   BaseType: 'WebPanel'
   Children:
   [
     Component lb_SKUCode_FAAC
     {
-      #keys: '[414724.0.43602743]'
+      #keys: '[414724.0.117731596]'
       BaseType: 'WebLabel'
       Properties:
       [
@@ -22,6 +22,6 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 1
+    Taborder: 2
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop104\043150.def"
similarity index 69%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop104\043150.def"
index 2d52f9c..d4b262c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop104.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop104\043150.def"
@@ -1,20 +1,22 @@
 Quintiq file version 2.0
-Component PanelTop104
+Component PanelTop104 id:PanelTop104_150
 {
-  #keys: '[414724.0.43764561]'
+  #keys: '[414724.0.117731993]'
   BaseType: 'WebPanel'
   Children:
   [
     Component txt_CustomName_FAAC
     {
-      #keys: '[414724.0.43764592]'
+      #keys: '[414724.0.117731994]'
       BaseType: 'WebEditField'
       Properties:
       [
         Description: '瀹㈡埛鍚嶇О'
+        Enabled: false
         Label: '瀹㈡埛鍚嶇О'
         NumberOfColumns: 30
         PlaceHolder: '璇疯緭鍏�'
+        ReadOnly: true
         Taborder: 0
       ]
     }
@@ -23,6 +25,6 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 7
+    Taborder: 8
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop264\04319.def"
similarity index 74%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop264\04319.def"
index 9d587c8..5867a16 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop264.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop264\04319.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelTop264
+Component PanelTop264 id:PanelTop264_19
 {
-  #keys: '[414724.0.43764392]'
+  #keys: '[414724.0.117731831]'
   BaseType: 'WebPanel'
   Children:
   [
     Component lb_Util_FAAC
     {
-      #keys: '[414724.0.43764416]'
+      #keys: '[414724.0.117731832]'
       BaseType: 'WebLabel'
       Properties:
       [
@@ -23,6 +23,6 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 4
+    Taborder: 5
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop360\043136.def"
similarity index 74%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop360\043136.def"
index 6e7e7dc..c090ecc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop360.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop360\043136.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelTop360
+Component PanelTop360 id:PanelTop360_136
 {
-  #keys: '[414724.0.43764343]'
+  #keys: '[414724.0.117731775]'
   BaseType: 'WebPanel'
   Children:
   [
     Component np_Qty_FAAC
     {
-      #keys: '[414724.0.43764374]'
+      #keys: '[414724.0.117731776]'
       BaseType: 'WebNumberPicker'
       Properties:
       [
@@ -24,6 +24,6 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 3
+    Taborder: 4
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop597\043324.def"
similarity index 76%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop597\043324.def"
index 861f761..9a7965f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop597.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop597\043324.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelTop597
+Component PanelTop597 id:PanelTop597_324
 {
-  #keys: '[414724.0.43764439]'
+  #keys: '[414724.0.117731885]'
   BaseType: 'WebPanel'
   Children:
   [
     Component ddsl_OperateType_FAAC
     {
-      #keys: '[414724.0.44398642]'
+      #keys: '[414724.0.117731886]'
       BaseType: 'WebDropDownStringList'
       Properties:
       [
@@ -23,6 +23,6 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 5
+    Taborder: 6
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop612\043612.def"
similarity index 74%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop612\043612.def"
index 855b473..8b3d242 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop612.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop612\043612.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelTop612
+Component PanelTop612 id:PanelTop612_612
 {
-  #keys: '[414724.0.43764662]'
+  #keys: '[414724.0.117732047]'
   BaseType: 'WebPanel'
   Children:
   [
     Component lb_Operator_FAAC
     {
-      #keys: '[414724.0.43764687]'
+      #keys: '[414724.0.117732048]'
       BaseType: 'WebLabel'
       Properties:
       [
@@ -23,6 +23,6 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 8
+    Taborder: 9
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop744\043568.def"
similarity index 73%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop744\043568.def"
index 6408506..586a39f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop744.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop744\043568.def"
@@ -1,13 +1,13 @@
 Quintiq file version 2.0
-Component PanelTop744
+Component PanelTop744 id:PanelTop744_568
 {
-  #keys: '[414724.0.43764285]'
+  #keys: '[414724.0.117731719]'
   BaseType: 'WebPanel'
   Children:
   [
     Component lb_SKUName_FAAC
     {
-      #keys: '[414724.0.43764315]'
+      #keys: '[414724.0.117731720]'
       BaseType: 'WebLabel'
       Properties:
       [
@@ -22,6 +22,6 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 2
+    Taborder: 3
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop846\043618.def"
similarity index 68%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop846\043618.def"
index 07e3ec6..ae982c7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign/Component_PanelTop846.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Component_PanelTop846\043618.def"
@@ -1,19 +1,21 @@
 Quintiq file version 2.0
-Component PanelTop846
+Component PanelTop846 id:PanelTop846_618
 {
-  #keys: '[414724.0.43764508]'
+  #keys: '[414724.0.117731939]'
   BaseType: 'WebPanel'
   Children:
   [
     Component txt_CustomID_FAAC
     {
-      #keys: '[414724.0.43764542]'
+      #keys: '[414724.0.117731940]'
       BaseType: 'WebEditField'
       Properties:
       [
+        Enabled: false
         Label: '瀹㈡埛ID'
         NumberOfColumns: 30
         PlaceHolder: '璇疯緭鍏�'
+        ReadOnly: true
         Taborder: 0
       ]
     }
@@ -22,7 +24,7 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 6
+    Taborder: 7
     Visible: false
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_OnCreated.def
new file mode 100644
index 0000000..7c4d5f5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_OnCreated.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmAuthorizeAndCountersign_Order_OnCreated
+{
+  #keys: '[414724.0.117762728]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      // 闇�姹傛棩鏈燂紝榛樿涓嬩竴涓槦鏈熶簲
+      ds_NeedDate.Date(H_FunctionClass::SM_GetNextFriday());
+      
+      // 鑾峰彇閫夋嫨鍚庣殑SKU
+      SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+      if(not isnull( SelectItem))
+      {
+        if(SelectItem.ValueJsonString().Length()>0)
+        {
+          // 寰楀埌閫変腑鐨勯娴嬭鍗�
+          SelForecast := JSON::Parse( SelectItem.ValueJsonString());
+          lb_SKUCode_FAAC.Text(SelForecast.Get( "SKU").GetString());
+          lb_SKUName_FAAC.Text("浜у搧");
+          lb_Util_FAAC.Text(SelForecast.Get( "Util").GetString());
+          txt_CustomID_FAAC.Text(SelForecast.Get( "CustomCode").GetString());
+          txt_CustomName_FAAC.Text(SelForecast.Get( "CustomName").GetString());
+          lb_Operator_FAAC.Text(ApplicationMacroPlanner.GetUserName());
+          
+      //    StrValue := SelectItem.Value().Tokenize( ";");
+      //    lb_SKUCode_FAAC.Text(StrValue.Element( 0));
+      //    lb_SKUName_FAAC.Text("浜у搧");
+      //    lb_Operator_FAAC.Text("");
+      //    lb_Util_FAAC.Text(StrValue.Element( 1));
+      //    txt_CustomID_FAAC.Text(StrValue.Element( 2));
+      //    txt_CustomName_FAAC.Text(StrValue.Element( 3));
+      //    lb_Operator_FAAC.Text(ApplicationMacroPlanner.GetUserName());
+        }
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_Panel261_223_btn_Cancel_FAAC_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_Panel261_223_btn_Cancel_FAAC_OnClick.def
new file mode 100644
index 0000000..f6e1d12
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_Panel261_223_btn_Cancel_FAAC_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: Panel261_223/btn_Cancel_FAAC
+Response OnClick () id:Response_Panel261_223_btn_Cancel_FAAC_OnClick
+{
+  #keys: '[414724.0.117732105]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      FrmAuthorizeAndCountersign_Order.Close();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_Panel261_223_btn_OK_FAAC_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_Panel261_223_btn_OK_FAAC_OnClick.def
new file mode 100644
index 0000000..fbcc28f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/Response_Panel261_223_btn_OK_FAAC_OnClick.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: Panel261_223/btn_OK_FAAC
+Response OnClick () id:Response_Panel261_223_btn_OK_FAAC_OnClick
+{
+  #keys: '[414724.0.117732106]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      // 鏁伴噺
+      Qty := [Number]np_Qty_FAAC.Number().Round( 0);
+      OperateMsg :="";
+      OperateResult := H_FunctionClass::SM_OrderReverseOrAuthorize(  MacroPlan,lb_Util_FAAC.Text() ,"-",ds_NeedDate.Date() ,txt_CustomID_FAAC.Text(),lb_SKUCode_FAAC.Text(),Qty,
+                                                            lb_Operator_FAAC.Text(),txt_CustomName_FAAC.Text(),OperateMsg,ddsl_OperateType_FAAC.Text());
+      
+      if( OperateResult)
+      {
+        FrmAuthorizeAndCountersign_Order.Close();
+        if( OperateMsg.Length()>0)
+        {
+            WebMessageBox::Success( OperateMsg);
+        }
+      }
+      else
+      {
+        WebMessageBox::Warning( OperateMsg);
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/_ROOT_Component_FrmAuthorizeAndCountersign_Order.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/_ROOT_Component_FrmAuthorizeAndCountersign_Order.def
new file mode 100644
index 0000000..83cde43
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Order/_ROOT_Component_FrmAuthorizeAndCountersign_Order.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FrmAuthorizeAndCountersign_Order
+{
+  #keys: '[414724.0.115523082]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: Panel796
+    #child: Panel989
+    #child: PanelTop_217
+    #child: PanelTop744_568
+    #child: PanelTop360_136
+    #child: PanelTop264_19
+    #child: PanelTop597_324
+    #child: PanelTop846_618
+    #child: PanelTop104_150
+    #child: PanelTop612_612
+    #child: Panel261_223
+  ]
+  Properties:
+  [
+    Description: '鍘熸潗鏂欏崐鎴愬搧鍙嶇鎺堟潈鏂板椤�'
+    Image: 'NAV_REDO_LIGHT_BLUE'
+    Title: '璁㈠崟鍙嶇鎺堟潈鏂板椤�'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def
index 987148b..efb0178 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Component_Panel418.def
@@ -48,6 +48,23 @@
         Label: '鏂板鍙嶇/鎺堟潈'
         Taborder: 3
       ]
+      ResponseDefinitions:
+      [
+        ResponseDefinition OnClick id:Responsedef_Panel418_btn_Add_FM_OnClick
+        {
+          #keys: '[414724.0.145266825]'
+          IsInherited: false
+          ResponseType: 'OnClick'
+          Arguments:
+          [
+            ResponseDefinitionArgument selection
+            {
+              #keys: '[271.0.74853915]'
+              Binding: 'List832.Selection()'
+            }
+          ]
+        }
+      ]
     }
   ]
   Properties:
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
index 1704689..04a54ea 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
@@ -2,20 +2,25 @@
 #parent: #root
 Response OnCreated () id:Response_FrmMaterial_OnCreated
 {
-  #keys: '[414724.0.93205703]'
+  #keys: '[414724.0.118802220]'
   CanBindMultiple: false
   DefinitionID: 'Responsedef_WebComponent_OnCreated'
   QuillAction
   {
     Body:
     [*
+      txtSaveForecastData_FM.Text("");
       // 鑾峰彇閫夋嫨鍚庣殑SKU
       SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
-      if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
+      if(not isnull( SelectItem))
       {
-        StrValue := SelectItem.Value().Tokenize( ";");
-        lb_SUK_FM.Text(StrValue.Element( 0));
-        de_dh_FM_ProductMP.FixedFilter( "object.ParentID()="+lb_SUK_FM.Text());
+        if( SelectItem.ValueJsonString().Length()>0)
+        {
+          txtSaveForecastData_FM.Text(  SelectItem.ValueJsonString());
+          JSelect := JSON::Parse( SelectItem.ValueJsonString());
+          lb_SUK_FM.Text(JSelect.Get( "SKU").GetString());
+          de_dh_FM_ProductMP.FixedFilter( "object.ID() = " + JSelect.Get( "SKU").GetString().AsQUILL());
+        }
       }
     *]
     GroupServerCalls: false
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick\043975.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick\043975.def"
new file mode 100644
index 0000000..0912867
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick\043975.def"
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: Panel418/btn_Add_FM
+Response OnClick () id:Response_Panel418_btn_Add_FM_OnClick_975
+{
+  #keys: '[414724.0.145238844]'
+  CanBindMultiple: false
+  DefinitionID => /Panel418/Responsedef_Panel418_btn_Add_FM_OnClick
+  Precondition:
+  [*
+    return not isnull( MacroPlan);
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmMaterial" and Obj.ItemKey()="ListSelect");
+      if( isnull( SelectItem))
+      {
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmMaterial",ItemKey := "ListSelect",Value := "");
+      }
+      else
+      {
+        //SelectItem.ValueJsonString()
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def
index 6d50114..75a8322 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick.def
@@ -13,7 +13,7 @@
   {
     Body:
     [*
-      Application.OpenForm( "FrmAuthorizeAndCountersign_Material","popout");
+      Application.OpenForm( "FrmAuthorizeAndCountersign_Material","modal");
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def
index 899892b..a356ac2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/_ROOT_Component_FrmMaterial.def
@@ -35,10 +35,25 @@
         Taborder: 2
       ]
     }
+    Component txtSaveForecastData_FM
+    {
+      #keys: '[414724.0.143737386]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Description: '瀛樺偍鎵�閫夌墿鏂欎俊鎭�'
+        Enabled: false
+        ReadOnly: true
+        Taborder: 4
+        Visible: false
+      ]
+    }
   ]
   Properties:
   [
     Description: '鍘熸枡鍒楄〃椤�'
+    Image: 'NAV_REDO_LIGHT_BLUE'
+    MinimumRows: 50
     Title: '鍘熸枡鍒楄〃椤�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def
new file mode 100644
index 0000000..8801397
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def
@@ -0,0 +1,84 @@
+Quintiq file version 2.0
+Component Panel351
+{
+  #keys: '[414724.0.115504403]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btn_Add_Order_FOF449
+    {
+      #keys: '[414724.0.115504404]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '璁㈠崟鏂板鍙嶇/鎺堟潈'
+        Label: '璁㈠崟鏂板鍙嶇/鎺堟潈'
+        Taborder: 1
+      ]
+      ResponseDefinitions:
+      [
+        ResponseDefinition OnClick id:Responsedef_Panel351_btn_Add_Order_FOF449_OnClick
+        {
+          #keys: '[414724.0.141224456]'
+          IsInherited: false
+          ResponseType: 'OnClick'
+          Arguments:
+          [
+            ResponseDefinitionArgument selection
+            {
+              #keys: '[271.0.41037309]'
+              Binding: 'liH_Forecast.Selection()'
+            }
+          ]
+        }
+      ]
+    }
+    Component btn_Add_Material_FOF503
+    {
+      #keys: '[414724.0.115504405]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鍘熸枡鏂板鍙嶇/鎺堟潈'
+        Label: '鍘熸枡鏂板鍙嶇/鎺堟潈'
+        Taborder: 2
+      ]
+      ResponseDefinitions:
+      [
+        ResponseDefinition OnClick id:Responsedef_Panel351_btn_Add_Material_FOF503_OnClick
+        {
+          #keys: '[414724.0.145304022]'
+          IsInherited: false
+          ResponseType: 'OnClick'
+          Arguments:
+          [
+            ResponseDefinitionArgument selection
+            {
+              #keys: '[271.0.68431130]'
+              Binding: 'liH_Forecast.Selection()'
+            }
+          ]
+        }
+      ]
+    }
+    Component btn_InitialData778
+    {
+      #keys: '[414724.0.115504406]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Description: '鍔犺浇鏁版嵁锛堝亣鐨勶紝鍚庣画闇�瑕佸鎺ユ暟鎹級'
+        Label: '鍔犺浇棰勬祴璁㈠崟鏁版嵁'
+        Taborder: 0
+        Visible: false
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def
index a5ffa10..ff6b8ad 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def
@@ -48,5 +48,6 @@
     MinimumColumns: 80
     Orientation: 'horizontal'
     Taborder: 0
+    Visible: false
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def
index 9fb6eb2..7b147ac 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def
@@ -36,6 +36,7 @@
         Description: '鍔犺浇鏁版嵁锛堝亣鐨勶紝鍚庣画闇�瑕佸鎺ユ暟鎹級'
         Label: '鍔犺浇棰勬祴璁㈠崟鏁版嵁'
         Taborder: 0
+        Visible: false
       ]
     }
   ]
@@ -43,7 +44,6 @@
   [
     Alignment: 'trailing'
     FixedSize: true
-    MinimumColumns: 20
     Orientation: 'horizontal'
     Taborder: 1
   ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def
index 46d28e9..35b07f6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def
@@ -10,8 +10,10 @@
   ]
   Properties:
   [
+    Description: '宸茬粡闅愯棌锛屾殏鏈娇鐢�'
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 1
+    Taborder: 2
+    Visible: false
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
index bc95d75..e056848 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
@@ -28,7 +28,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderCode","title":"OrderCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastQty","title":"ForecastQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NeedTime","title":"NeedTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NeedTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Util","title":"Util","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Util"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomName","title":"CustomName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Department","title":"Department","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Department"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderCode","title":"璁㈠崟缂栧彿","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU缂栫爜","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastQty","title":"棰勬祴鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NeedTime","title":"闇�姹傛椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NeedTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Util","title":"鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Util"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomName","title":"瀹㈡埛鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Department","title":"閿�鍞儴闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Department"}}]'
         ContextMenu: 'listContextMenu367'
         Taborder: 2
       ]
@@ -36,6 +36,6 @@
   ]
   Properties:
   [
-    Taborder: 6
+    Taborder: 7
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def"
index 4104d43..0c21175 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def"
@@ -37,7 +37,7 @@
   ]
   Properties:
   [
-    Taborder: 4
+    Taborder: 5
     Visible: false
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def
index 9800a96..29988bb 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnClose.def
@@ -13,7 +13,8 @@
       SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
       if( not isnull( SelectItem))
       {
-        SelectItem.Value("");  
+        SelectItem.Value(""); 
+        SelectItem.ValueJsonString("");
       }
     *]
     GroupServerCalls: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
index 4991801..5cb899a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
@@ -11,41 +11,12 @@
     [*
       // 鍒濆鍖栨煡璇㈠弬鏁版湀浠�
       ds_Month_FOF.Date(Date::ActualDate());
-      // 棰勬祴鏁版嵁2姝ゅ鐞嗭紙绛涢��+瀹㈡埛鍚嶇О鎻愬彇锛�
-      if( MacroPlan.H_Forecast(relget ).Size()>0)
+      // 鍒濆鍖栭娴嬫暟鎹�
+      JResult := H_FunctionClass::SM_InitialForcastData( MacroPlan);
+      if(not JResult.Get( "Status").GetBoolean())
       {
-        MacroPlan.H_Forecast(relget ).Delete( 0,MacroPlan.H_Forecast(relget ).Size()-1);
+          WebMessageBox::Warning( JResult.Get( "Msg").GetString());
       }
-      //AllData:= selectset( MacroPlan, Product_MP.SalesDemand.astype( Forecast ),object,object.EndDate().DateTime().Date() >= Date::ActualDate().StartOfMonth() 
-      //                     and object.EndDate().DateTime().Date() <= Date::ActualDate().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth()
-      //                     and object.Quantity()>0 );
-      //
-      //CustomName:="";
-      //DepartMent:="";
-      //idx:=0;
-      //traverse( AllData,Elements,Obj,not isnull(Obj))
-      //{
-      //  idx:=Obj.SalesSegmentName().FindString( "_",0);
-      //  if(idx>0)
-      //  {
-      //    DepartMent:=Obj.SalesSegmentName().SubString( 0,idx+1);
-      //    CustomName := Obj.SalesSegmentName().SubString( idx+1, Obj.SalesSegmentName().Length() - (idx+1));
-      //  }
-      //  else
-      //  {
-      //    CustomName :=Obj.SalesSegmentName();
-      //  }
-      //  
-      //   ArrayData:=Obj.SalesSegmentName().SubString( 0,Obj.SalesSegmentName().FindString( "_",0)+1);
-      //   MacroPlan.H_Forecast(relnew,OrderCode := H_FunctionClass::SM_GenerateID( "OF"),
-      //                          SKU := Obj.ProductID(),
-      //                          CustomCode := CustomName,
-      //                         CustomName := CustomName,
-      //                         Util:=Obj.UnitOfMeasureName(),
-      //                         NeedTime:=Obj.EndDate(),
-      //                         ForecastQty:=[Number]Obj.Quantity().Round( 0),
-      //                         Department:=DepartMent);
-      //}
     *]
     GroupServerCalls: false
   }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick\043222.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick\043222.def"
new file mode 100644
index 0000000..7f7d6a1
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick\043222.def"
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#parent: Panel351/btn_Add_Material_FOF503
+Response OnClick (
+  H_Forecast selection
+) id:Response_Panel351_btn_Add_Material_FOF503_OnClick_222
+{
+  #keys: '[414724.0.145178766]'
+  CanBindMultiple: false
+  DefinitionID => /Panel351/Responsedef_Panel351_btn_Add_Material_FOF503_OnClick
+  QuillAction
+  {
+    Body:
+    [*
+      if( not isnull( selection))
+      {
+        SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+        if( isnull( SelectItem))
+        {
+           MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",
+                                       Value := selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName(),
+                                       ValueJsonString := JSON::Object().Add( "SKU",selection.SKU())
+                                                                         .Add( "Util",selection.Util())
+                                                                         .Add( "CustomCode",selection.CustomCode())
+                                                                         .Add( "CustomName",selection.CustomName()).Build().AsString());
+        }
+        else
+        {
+          SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
+          SelectItem.ValueJsonString(JSON::Object().Add( "SKU",selection.SKU())
+                                   .Add( "Util",selection.Util())
+                                   .Add( "CustomCode",selection.CustomCode())
+                                   .Add( "CustomName",selection.CustomName()).Build().AsString());
+        }
+        Application.OpenForm( "FrmMaterial","popout");
+      }
+      else
+      {
+        WebMessageBox::Information( "璇烽�夋嫨涓�椤归娴嬪悗鍐嶇偣鍑绘寜閽紒");  
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick\043880.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick\043880.def"
new file mode 100644
index 0000000..bf1f99c
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick\043880.def"
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#parent: Panel351/btn_Add_Order_FOF449
+Response OnClick (
+  H_Forecast selection
+) id:Response_Panel351_btn_Add_Order_FOF449_OnClick_880
+{
+  #keys: '[414724.0.141244111]'
+  CanBindMultiple: false
+  DefinitionID => /Panel351/Responsedef_Panel351_btn_Add_Order_FOF449_OnClick
+  QuillAction
+  {
+    Body:
+    [*
+      if( not isnull( selection))
+      {
+        SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
+        if( isnull( SelectItem))
+        {
+           MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",
+                                       Value := selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName(),
+                                       ValueJsonString := JSON::Object().Add( "SKU",selection.SKU())
+                                                                         .Add( "Util",selection.Util())
+                                                                         .Add( "CustomCode",selection.CustomCode())
+                                                                         .Add( "CustomName",selection.CustomName()).Build().AsString());
+        }
+        else
+        {
+          SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
+          SelectItem.ValueJsonString(JSON::Object().Add( "SKU",selection.SKU())
+                                   .Add( "Util",selection.Util())
+                                   .Add( "CustomCode",selection.CustomCode())
+                                   .Add( "CustomName",selection.CustomName()).Build().AsString());
+        }
+        Application.OpenForm( "FrmAuthorizeAndCountersign_Order","modal");  
+      }
+      else
+      {
+        WebMessageBox::Information( "璇烽�夋嫨涓�椤归娴嬪悗鍐嶇偣鍑绘寜閽紒");  
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_InitialData778_OnClick\043971.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_InitialData778_OnClick\043971.def"
new file mode 100644
index 0000000..7ec4937
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_InitialData778_OnClick\043971.def"
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+#parent: Panel351/btn_InitialData778
+Response OnClick () id:Response_Panel351_btn_InitialData778_OnClick_971
+{
+  #keys: '[414724.0.141222418]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      //// 娌℃湁鐢ㄧ殑鎸夐挳鍜屽嚱鏁帮紝鍙负浜嗘祴璇曠敓鎴愬亣鏁版嵁銆�
+      //StrCustoms:="XM_2023,灏忕背;HW_2023,鍗庝负;OV_2023,VIVO;OP_2023,OPPO;HX_2023,娴蜂俊;YJ_2023,涓�鍔�;HE_2023,娴峰皵;GL_2023,鏍煎姏;";
+      //ArrayCustom := StrCustoms.Tokenize( ";"); //8涓鎴�
+      //idx :=0;
+      //for( i:=0;i<20;i:=i+1)
+      //{
+      //  idx :=Number::Random( 0,7);
+      //  arrCustomInfo := ArrayCustom.Element( idx).Tokenize( ",");
+      //  MacroPlan.H_Forecast(relnew, CustomName := arrCustomInfo.Element( 1),CustomCode := arrCustomInfo.Element( 0),ForecastQty := Number::Random( 100,5000),
+      //                        Department := "閿�鍞�1閮�",NeedTime := Date::ActualDate(),OrderCode := H_FunctionClass::SM_GenerateID( "OF") ,SKU := "SKU-CP-2023-N"+(Number::Random( 1000,9999)).AsQUILL(),Util := "PCS");  
+      //  
+      //}
+      //// 鐢熸垚棰勬祴 瀹炴椂鏁版嵁锛屽弽绛炬暟鎹紝鎺堟潈鏁版嵁锛堝弽绛� 鎺堟潈榛樿涓�0锛屽鑷姩鍒涘缓锛岃繖閲屼笉鍐嶆坊鍔狅級
+      // traverse(MacroPlan,H_Forecast ,Obj,not isnull(Obj) )
+      //{
+      //  MacroPlan.H_OrderForecastRealQty(relnew,CustomID := Obj.CustomCode(),CustomName := Obj.CustomName(),ForecatsQty := Obj.ForecastQty(),
+      //                                    ForecatsRealQty := Obj.ForecastQty(),ID := H_FunctionClass::SM_GenerateID( "OF"),Month := Date::ActualDate(),
+      //                                    OrderCode := Obj.OrderCode(),SKU := Obj.SKU(),Unit := Obj.Util());
+      //                                    
+      //}
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def
index dae89b3..82c16f5 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def
@@ -16,7 +16,7 @@
       SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
       if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
       {
-        Application.OpenForm( "FrmAuthorizeAndCountersign","popout");
+        Application.OpenForm( "FrmAuthorizeAndCountersign_Order","popout");
       }
       else
       {
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
index 0fbfea6..4333154 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
@@ -14,9 +14,21 @@
       SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
       if( isnull( SelectItem))
       {
-         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
+         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",
+                                     Value := selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName(),
+                                     ValueJsonString := JSON::Object().Add( "SKU",selection.SKU())
+                                                                       .Add( "Util",selection.Util())
+                                                                       .Add( "CustomCode",selection.CustomCode())
+                                                                       .Add( "CustomName",selection.CustomName()).Build().AsString());
       }
-      SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
+      else
+      {
+        SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
+        SelectItem.ValueJsonString(JSON::Object().Add( "SKU",selection.SKU())
+                                 .Add( "Util",selection.Util())
+                                 .Add( "CustomCode",selection.CustomCode())
+                                 .Add( "CustomName",selection.CustomName()).Build().AsString());
+      }
       Application.OpenForm( "FrmMaterial","popout");
     *]
     GroupServerCalls: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def
deleted file mode 100644
index 7f12e18..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnSelectionChanged.def
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: liH_Forecast
-Response OnSelectionChanged (
-  H_Forecast selection
-) id:Response_liH_Forecast_OnSelectionChanged
-{
-  #keys: '[414724.0.111760968]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
-  QuillAction
-  {
-    Body:
-    [*
-      SelectItem :=  select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
-      if( isnull( SelectItem))
-      {
-         MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
-      }
-      SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
-    *]
-    GroupServerCalls: false
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
index 17a5ad7..d6e1cad 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
@@ -43,7 +43,7 @@
       ]
       Properties:
       [
-        Taborder: 3
+        Taborder: 4
       ]
     }
     #child: Panel961
@@ -93,7 +93,7 @@
       ]
       Properties:
       [
-        Taborder: 2
+        Taborder: 3
       ]
     }
     Component dh_FOF_H_Forecast
@@ -118,15 +118,16 @@
       ]
       Properties:
       [
-        Taborder: 5
+        Taborder: 6
       ]
     }
     #child: liH_Forecast
+    #child: Panel351
   ]
   Properties:
   [
     Description: '璁㈠崟棰勬祴椤甸潰'
-    Image: 'GOLDFISH'
+    Image: 'NAV_REDO_LIGHT_BLUE'
     Title: '棰勬祴鍒楄〃椤�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def
index 8dfdddb..800dab9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderResult/_ROOT_Component_FrmOrderResult.def
@@ -39,6 +39,7 @@
   Properties:
   [
     Description: '璁㈠崟鍐插噺杩囩▼鍙婅鍗曟爣绛惧睍绀�'
+    Image: 'NAV_REDO_LIGHT_BLUE'
     Title: '璁㈠崟鍐插噺杩囩▼鍙婅鍗曟爣绛惧睍绀�'
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_List696.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_List696.def
new file mode 100644
index 0000000..8ba9e27
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_List696.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component List696
+{
+  #keys: '[414724.0.118276730]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor838
+    {
+      #keys: '[414724.0.118276731]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[H_MaterialHedgingResult]'
+        Source: 'dh_FRAS'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage112
+    Component DataSetLevel187
+    {
+      #keys: '[414724.0.118276736]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu660
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MType","title":"MType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReverseQty","title":"ReverseQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReverseQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AuthorizeQty","title":"AuthorizeQty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AuthorizeQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit","title":"Unit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}}]'
+        ContextMenu: 'listContextMenu660'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_Panel224.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_Panel224.def
new file mode 100644
index 0000000..652ca4c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_Panel224.def
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+Component Panel224
+{
+  #keys: '[414724.0.132480968]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ds_Month_FRAS
+    {
+      #keys: '[414724.0.132481008]'
+      BaseType: 'WebDateSelector'
+      Properties:
+      [
+        Enabled: false
+        Taborder: 0
+        Visible: false
+      ]
+    }
+    Component txt_QueryContent_FRAS
+    {
+      #keys: '[414724.0.132481038]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        PlaceHolder: '妯$硦鎼滅储'
+        Taborder: 1
+      ]
+    }
+    Component btn_Query_FRAS
+    {
+      #keys: '[414724.0.132481089]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'VIEW'
+        Label: '鏌ヨ'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_Panel950.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_Panel950.def
new file mode 100644
index 0000000..462c772
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_Panel950.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component Panel950
+{
+  #keys: '[414724.0.133671405]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component Label782
+    {
+      #keys: '[414724.0.133671432]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Taborder: 0
+        Text: '鍙嶇鍜屾巿鏉冨垪琛ㄥ睍绀洪〉'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Border: true
+    FixedSize: true
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_listActionBarPage112.def
similarity index 60%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def
rename to _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_listActionBarPage112.def
index 20c42d7..87cb9f4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listActionBarPage748.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_listActionBarPage112.def
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
-Component listActionBarPage748
+Component listActionBarPage112
 {
-  #keys: '[414724.0.58710450]'
+  #keys: '[414724.0.118276733]'
   BaseType: 'listActionBarPage'
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_listContextMenu660.def
similarity index 61%
rename from _Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def
rename to _Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_listContextMenu660.def
index 5042401..2e47e11 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_listContextMenu623.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Component_listContextMenu660.def
@@ -1,7 +1,7 @@
 Quintiq file version 2.0
-Component listContextMenu623
+Component listContextMenu660
 {
-  #keys: '[414724.0.58710455]'
+  #keys: '[414724.0.118276738]'
   BaseType: 'listContextMenu'
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Response_OnCreated.def
new file mode 100644
index 0000000..d06421f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Response_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_FrmRAShow_OnCreated
+{
+  #keys: '[414724.0.134602766]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      ds_Month_FRAS.Date(Date::ActualDate());
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Response_Panel224_btn_Query_FRAS_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Response_Panel224_btn_Query_FRAS_OnClick.def
new file mode 100644
index 0000000..98c1c99
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/Response_Panel224_btn_Query_FRAS_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: Panel224/btn_Query_FRAS
+Response OnClick () id:Response_Panel224_btn_Query_FRAS_OnClick
+{
+  #keys: '[414724.0.135920812]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      de_dh_FRAS.FixedFilter( "object.ID().LikeUserLocale( " + txt_QueryContent_FRAS.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.SKU().LikeUserLocale( " + txt_QueryContent_FRAS.Text().AsQUILL() + " )"  
+                                                   + " or " + "object.CustomerCode().LikeUserLocale( " + txt_QueryContent_FRAS.Text().AsQUILL() + " )" 
+                                                   + " or " + "object.CustomerName().LikeUserLocale( " + txt_QueryContent_FRAS.Text().AsQUILL() + " )" 
+                                                   );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def
index 47bbf7d..5ccc42c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmRAShow/_ROOT_Component_FrmRAShow.def
@@ -5,8 +5,41 @@
 {
   #keys: '[414724.0.87341476]'
   BaseType: 'WebForm'
+  Children:
+  [
+    #child: List696
+    Component dh_FRAS
+    {
+      #keys: '[414724.0.118276696]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[H_MaterialHedgingResult]*'
+      Children:
+      [
+        Component de_dh_FRAS
+        {
+          #keys: '[414724.0.118276712]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'H_MaterialHedgingResult'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+    #child: Panel950
+    #child: Panel224
+  ]
   Properties:
   [
     Description: '鍘熸枡鍙嶇鍜屾巿鏉冨睍绀�'
+    Image: 'NAV_REDO_LIGHT_BLUE'
+    Title: '鍙嶇鍜屾巿鏉冨垪琛ㄥ睍绀洪〉'
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT\043710.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT\043710.def"
deleted file mode 100644
index a540a2e..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_ListData_FT\043710.def"
+++ /dev/null
@@ -1,41 +0,0 @@
-Quintiq file version 2.0
-Component ListData_FT
-{
-  #keys: '[414724.0.58710447]'
-  BaseType: 'WebList'
-  Children:
-  [
-    Component DataExtractor206
-    {
-      #keys: '[414724.0.58710448]'
-      BaseType: 'WebDataExtractor'
-      Properties:
-      [
-        DataType: 'structured[Product_MP]'
-        Source: 'DataHolder623'
-        Taborder: 0
-        Transformation: 'Elements'
-      ]
-    }
-    #child: listActionBarPage748
-    Component DataSetLevel675
-    {
-      #keys: '[414724.0.58710453]'
-      BaseType: 'WebDataSetLevel'
-      Children:
-      [
-        #child: listContextMenu623
-      ]
-      Properties:
-      [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CanBeExported","title":"CanBeExported","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"CanBeExported"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DisplayIndex","title":"DisplayIndex","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"DisplayIndex"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasMaturation","title":"HasMaturation","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"HasMaturation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasConversionFactor","title":"HasConversionFactor","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasConversionFactor"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ExpiredInPeriodShelfLifeSupplyQuantityInDefaultUOM","title":"ExpiredInPeriodShelfLifeSupplyQuantityInDefaultUOM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ExpiredInPeriodShelfLifeSupplyQuantityInDefaultUOM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasParent","title":"HasParent","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasParent"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasPlanning","title":"HasPlanning","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasPlanning"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasProductLevel","title":"HasProductLevel","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasProductLevel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasRecipe","title":"HasRecipe","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasRecipe"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasShelfLife","title":"HasShelfLife","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"HasShelfLife"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasShelfLifeOrMaturation","title":"HasShelfLifeOrMaturation","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasShelfLifeOrMaturation"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"HasValidProductLevel","title":"HasValidProductLevel","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"HasValidProductLevel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IconName","title":"IconName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IconName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgHasSalesDemand","title":"ImgHasSalesDemand","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgHasSalesDemand"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsActive","title":"ImgIsActive","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsActive"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IndentationSymbol","title":"IndentationSymbol","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IndentationSymbol"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsByProduct","title":"IsByProduct","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsByProduct"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsDerivedByProduct","title":"IsDerivedByProduct","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsDerivedByProduct"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsDerivedExcludeFromFulfillmentKPI","title":"IsDerivedExcludeFromFulfillmentKPI","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsDerivedExcludeFromFulfillmentKPI"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromFulfillmentKPI","title":"IsExcludedFromFulfillmentKPI","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromFulfillmentKPI"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsExcludedFromOptimization","title":"IsExcludedFromOptimization","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsExcludedFromOptimization"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsImbalance","title":"IsImbalance","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsImbalance"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsIncludedInBalancing","title":"IsIncludedInBalancing","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsIncludedInBalancing"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsLeaf","title":"IsLeaf","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsLeaf"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsManuallyConfigured","title":"IsManuallyConfigured","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsManuallyConfigured"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsPlannedAfterOptimization","title":"IsPlannedAfterOptimization","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsPlannedAfterOptimization"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsProductCategory","title":"IsProductCategory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsProductCategory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsSoftDeleted","title":"IsSoftDeleted","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsSoftDeleted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsSystem","title":"IsSystem","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsSystem"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsUsed","title":"IsUsed","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsUsed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsUsedInProcess","title":"IsUsedInProcess","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsUsedInProcess"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsValidData","title":"IsValidData","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"IsValidData"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIBalanceViolationMeta","title":"KPIBalanceViolationMeta","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPIBalanceViolationMeta"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIMaximumInventory","title":"KPIMaximumInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPIMaximumInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPIMinimumInventory","title":"KPIMinimumInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPIMinimumInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KPITargetInventory","title":"KPITargetInventory","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"KPITargetInventory"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Level","title":"Level","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Level"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaturationDays","title":"MaturationDays","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaturationDays"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MinSalesDemandQuantity","title":"MinSalesDemandQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"MinSalesDemandQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaxSalesDemandQuantity","title":"MaxSalesDemandQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"MaxSalesDemandQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfProductInStockingPoint","title":"NumberOfProductInStockingPoint","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NumberOfProductInStockingPoint"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfShelfLifeViolations","title":"NumberOfShelfLifeViolations","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NumberOfShelfLifeViolations"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ParentID","title":"ParentID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ParentID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SanityCheckDataMostSevere","title":"SanityCheckDataMostSevere","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SanityCheckDataMostSevere"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SanityCheckDataMostSevereCount","title":"SanityCheckDataMostSevereCount","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SanityCheckDataMostSevereCount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SanityCheckDataTotalViolationCount","title":"SanityCheckDataTotalViolationCount","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SanityCheckDataTotalViolationCount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShelfLife","title":"ShelfLife","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShelfLife"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalInventoryLevels","title":"TotalInventoryLevels","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalInventoryLevels"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalInventorySupply","title":"TotalInventorySupply","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalInventorySupply"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalSalesDemand","title":"TotalSalesDemand","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"TotalSalesDemand"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Type","title":"Type","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Type"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
-        ContextMenu: 'listContextMenu623'
-        Taborder: 2
-      ]
-    }
-  ]
-  Properties:
-  [
-    Taborder: 2
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def
deleted file mode 100644
index a7dc33b..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Component_Panel675.def
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-Component Panel675
-{
-  #keys: '[414724.0.58893964]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component ButtonClear
-    {
-      #keys: '[414724.0.58893989]'
-      BaseType: 'WebButton'
-      Properties:
-      [
-        Label: 'ClearDtaa'
-        Taborder: 0
-      ]
-    }
-  ]
-  Properties:
-  [
-    Taborder: 0
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def
deleted file mode 100644
index 8ea5738..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/Response_Panel675_ButtonClear_OnClick.def
+++ /dev/null
@@ -1,36 +0,0 @@
-Quintiq file version 2.0
-#parent: Panel675/ButtonClear
-Response OnClick () id:Response_Panel675_ButtonClear_OnClick
-{
-  #keys: '[414724.0.58894009]'
-  CanBindMultiple: false
-  DefinitionID: 'Responsedef_WebButton_OnClick'
-  GroupServerCalls: true
-  Precondition:
-  [*
-    return not isnull( MacroPlan);
-  *]
-  QuillAction
-  {
-    Body:
-    [*
-      try{
-        H_FunctionClass::UpdateAuthorizeRealQty( MacroPlan);
-        /*
-        ExecuteCount :=0;
-        while(not isnull(MacroPlan.H_ReverseRealQty(relget ).First())  and ExecuteCount<20)
-        {
-          MacroPlan.H_ErrorLogs(relnew,EClassName := "1",EDateTime := DateTime::ActualGMTTime(),EFunctionName := ExecuteCount.AsQUILL());
-          ExecuteCount:=ExecuteCount+1;
-          MacroPlan.H_ReverseRealQty(relget ).First().Delete();
-        }
-        */
-      }
-      onerror{
-        MacroPlan.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "UpdateMaterialItems",
-                             DeveloperInformation :=  e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
-                             GeneralInformation := e.GeneralInformation());
-      }
-    *]
-  }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def b/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def
deleted file mode 100644
index 77d883c..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmTEST/_ROOT_Component_FrmTEST.def
+++ /dev/null
@@ -1,42 +0,0 @@
-Quintiq file version 2.0
-#root
-#parent: MacroPlannerWebApp
-OrphanComponent FrmTEST
-{
-  #keys: '[414724.0.57640752]'
-  BaseType: 'WebForm'
-  Children:
-  [
-    #child: ListData_FT
-    Component DataHolder623
-    {
-      #keys: '[414724.0.57601078]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'structured[Product_MP]*'
-      Children:
-      [
-        Component DataExtractor391
-        {
-          #keys: '[414724.0.58771962]'
-          BaseType: 'WebDataExtractor'
-          Properties:
-          [
-            DataType: 'MacroPlan'
-            Source: 'MacroPlan'
-            Taborder: 0
-            Transformation: 'Product_MP'
-          ]
-        }
-      ]
-      Properties:
-      [
-        Taborder: 1
-      ]
-    }
-    #child: Panel675
-  ]
-  Properties:
-  [
-    Description: '娴嬭瘯绐椾綋锛屾煡鐪嬫暟鎹娇鐢�'
-  ]
-}

--
Gitblit v1.9.3