From 96eeb9236a5ae72ead45e5aa8e9c57e5000f185b Mon Sep 17 00:00:00 2001
From: hongjli <3117313295@qq.com>
Date: 星期一, 02 十月 2023 16:50:38 +0800
Subject: [PATCH] 接口优化

---
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceGlobal_BrokerExecuteLog#981.def                          |    4 
 _Main/BL/Type_Global_MappingCustomerGrade/StaticMethod_SynchronizeInterfaceData.qbl                                                      |   18 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP.qbl                                             |   13 
 _Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl                                                                         |   16 
 _Main/BL/Type_Global_MappingOperationBOM/StaticMethod_SynchronizeInterfaceData.qbl                                                       |   18 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl                                                       |   13 
 _Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl                                                                            |   17 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Operation.qbl                                                   |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationCost.qbl                                                      |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ProductInLane.qbl                                                      |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def         |    3 
 _Main/BL/Type_Global_MappingUnitOfMeasure_MP/StaticMethod_SynchronizeInterfaceData.qbl                                                   |   18 
 _Main/BL/Type_GlobalDTOTable/Method_SettingFailureDetails.qbl                                                                            |   23 
 _Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl                                                      |   40 
 _Main/BL/Type_Global_MappingSalesSegment_MP/StaticMethod_SynchronizeInterfaceData.qbl                                                    |   18 
 _Main/BL/Type_Global_MappingInventorySupply/StaticMethod_SynchronizeInterfaceData.qbl                                                    |   18 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_InventorySupply.qbl                                                    |   13 
 _Main/BL/Type_Global_MappingOperation/StaticMethod_SynchronizeInterfaceData.qbl                                                          |   18 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder.qbl                                                 |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP.qbl                                            |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl                                                     |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption3.def                                              |   65 ++
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor.qbl                                            |   13 
 _Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl                                                                 |   16 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ConversionFactor.qbl                                                   |   13 
 _Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl                                                    |  109 +++
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuSelectionAll_OnClick.def                          |   17 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP.qbl                                                    |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuDelete_OnClick.def                                |   18 
 _Main/BL/Type_Global_BrokerExecuteLog/StaticMethod_CreateInOperation.qbl                                                                 |   16 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_AIPISPIP.qbl                                                           |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP.qbl                                                   |   13 
 _Main/BL/Type_Global_MappingStockingPointCost/StaticMethod_SynchronizeInterfaceData.qbl                                                  |   18 
 _Main/BL/Type_Global_MappingUnitCost/StaticMethod_SynchronizeInterfaceData.qbl                                                           |   18 
 _Main/BL/Type_Global_ShowCell/StaticMethod_CreateShowData_CustomOrder.qbl                                                                |   58 ++
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption1.def                                              |   65 ++
 _Main/BL/Type_Global_ShowColumn/StaticMethod_CreateColumn.qbl                                                                            |   15 
 _Main/BL/Type_Global_BrokerExecuteLog/StaticMethod_CanRun.qbl                                                                            |   16 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl                                                |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_SalesSegment_MP.qbl                                                    |   13 
 _Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp                                                                          |    2 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply.qbl                                             |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl                                                    |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationCost.qbl                                               |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def                                            |    7 
 _Main/BL/Type_Global_MappingConversionFactor/StaticMethod_SynchronizeInterfaceData.qbl                                                   |   18 
 _Main/BL/Type_Global_ShowCell/StaticMethod_ShowData.qbl                                                                                  |  112 ---
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_ExecuteUser.qbl                                                                          |    8 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl                                                            |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost.qbl                                           |   13 
 _Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl                                                                |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption4.def                                              |   65 ++
 _Main/BL/Type_Global_MappingProductInLane/StaticMethod_SynchronizeInterfaceData.qbl                                                      |   18 
 _Main/BL/Type_GlobalDTOTable/Method_SettingSuccessfulDetails.qbl                                                                         |   20 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl                                                           |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def                                                  |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest.def                                                 |    2 
 _Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl                                                                     |   16 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Operation.qbl                                                          |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def                                       |   23 
 _Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl                                                                       |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2#456.def                                          |   65 ++
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomOrder.qbl                                                        |   13 
 _Main/BL/Type_Global_BrokerExecuteLog/Attribute_ExecutionStatus.qbl                                                                      |    8 
 _Main/Sys/ImgAttr/Global_BrokerExecuteLog.dme                                                                                            |   25 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl                                                      |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl                                               |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Product_MP.qbl                                                         |   13 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_StockingPointCost.qbl                                                  |   13 
 _Main/BL/Type_Global_ShowCell/StaticMethod_SetColumnsAndRows.qbl                                                                         |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def |   25 
 _Main/BL/Type_Global_MappingDOI_DSI/StaticMethod_SynchronizeInterfaceData.qbl                                                            |   18 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Product_MP.qbl                                                  |   13 
 _Main/BL/Type_Global_MappingCustomOrder/StaticMethod_SynchronizeInterfaceData.qbl                                                        |   18 
 /dev/null                                                                                                                                |   62 --
 _Main/BL/Type_Global_MappingProduct_MP/StaticMethod_SynchronizeInterfaceData.qbl                                                         |   18 
 _Main/BL/Type_Global_MappingForecast/StaticMethod_SynchronizeInterfaceData.qbl                                                           |   18 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/StaticMethod_SynchronizeInterfaceData.qbl                               |   18 
 78 files changed, 1,016 insertions(+), 606 deletions(-)

diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP.qbl
index ac058bb..df86b5a 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_AIPISPIP.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_AIPISPIP",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "瀹為檯搴撳瓨鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_AIPISPIP", "瀹為檯搴撳瓨鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor.qbl
index fb840ce..34022c8 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_ConversionFactor.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_ConversionFactor",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "鍗曚綅杞崲鍥犲瓙鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_ConversionFactor", "鍗曚綅杞崲鍥犲瓙鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder.qbl
index 66d92a1..b488e5a 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomOrder.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_CustomOrder",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "璁㈠崟鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_CustomOrder", "璁㈠崟鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl
index 26b2034..95cbb13 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_CustomerGrade",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "瀹㈡埛绛夌骇鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_CustomerGrade", "瀹㈡埛绛夌骇鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl
index 8ebfbf3..5989bef 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_DOI_DSI",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "DOI_DSI鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_DOI_DSI", "DOI_DSI鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl
index 2384943..21f56b3 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_Forecast",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "棰勬祴鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_Forecast", "棰勬祴鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply.qbl
index fd32c60..e3cdc5c 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_InventorySupply.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_InventorySupply",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "搴撳瓨渚涘簲鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_InventorySupply", "搴撳瓨渚涘簲鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Operation.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Operation.qbl
index 3d491fe..3d19d66 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Operation.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Operation.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_Operation",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "鎿嶄綔鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_Operation", "鎿嶄綔鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl
index 49e26b7..4c18d21 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_OperationBOM",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "鎿嶄綔BOM鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_OperationBOM", "鎿嶄綔BOM鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationCost.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationCost.qbl
index 2364cd5..8dd61ac 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationCost.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationCost.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_OperationCost",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "鎿嶄綔鎴愭湰鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_OperationCost", "鎿嶄綔鎴愭湰鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Product_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Product_MP.qbl
index 2637fd7..a6c260b 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Product_MP.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Product_MP.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_Product_MP",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "浜у搧鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_Product_MP", "浜у搧鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP.qbl
index 56d48d9..f861032 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_SalesSegment_MP.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_SalesSegment_MP",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "閿�鍞儴闂�",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_SalesSegment_MP", "閿�鍞儴闂�" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost.qbl
index 0f166b2..e77ffa9 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_StockingPointCost.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_StockingPointCost",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "搴撳瓨鐐规垚鏈暟鎹�",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_StockingPointCost", "搴撳瓨鐐规垚鏈暟鎹�" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP.qbl
index 4974578..6fc9e3b 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_UnitOfMeasure_MP.qbl
@@ -5,16 +5,5 @@
   String errorMessage
 )
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_UnitOfMeasure_MP",
-                                  ElementTotal  := 0,
-                                  ErrorMessage  := errorMessage,
-                                  IsSuccess     := false,
-                                  Name          := "鍗曚綅鏁版嵁",
-                                  ErrorNo       := errorNo,
-                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
-                                 );
-  *]
+  TextBody: 'this.SettingFailureDetails( errorNo, errorMessage, "GlobalOTDTable_UnitOfMeasure_MP", "鍗曚綅鏁版嵁" );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_AIPISPIP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_AIPISPIP.qbl
index a0a1af4..e180696 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_AIPISPIP.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_AIPISPIP.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_AIPISPIP
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_AIPISPIP",
-                                  ElementTotal    := this.Global_MappingActualProductInStockingPointInPeriod( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "瀹為檯搴撳瓨鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_AIPISPIP", "瀹為檯搴撳瓨鏁版嵁", this.Global_MappingActualProductInStockingPointInPeriod( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ConversionFactor.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ConversionFactor.qbl
index b0ad4d2..f9857c3 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ConversionFactor.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ConversionFactor.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_ConversionFactor
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_ConversionFactor",
-                                  ElementTotal    := this.Global_MappingConversionFactor( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "鍗曚綅杞崲鍥犲瓙鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_ConversionFactor", "鍗曚綅杞崲鍥犲瓙鏁版嵁", this.Global_MappingConversionFactor( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomOrder.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomOrder.qbl
index 677960c..d27917a 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomOrder.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomOrder.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_CustomOrder
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_CustomOrder",
-                                  ElementTotal    := this.Global_MappingCustomOrder( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "璁㈠崟鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_CustomOrder", "璁㈠崟鏁版嵁", this.Global_MappingCustomOrder( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl
index e09fc63..c47d9ef 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_CustomerGrade
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_CustomerGrade",
-                                  ElementTotal    := this.Global_MappingCustomerGrade( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "瀹㈡埛绛夌骇鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_CustomerGrade", "瀹㈡埛绛夌骇鏁版嵁", this.Global_MappingCustomerGrade( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl
index 9082ba1..f8826f9 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_DOI_DSI
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_DOI_DSI",
-                                  ElementTotal    := this.Global_MappingDOI_DSI( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "DOI_DSI鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_DOI_DSI", "DOI_DSI鏁版嵁", this.Global_MappingDOI_DSI( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl
index c9f8835..ec74612 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_Forecast
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_Forecast",
-                                  ElementTotal    := this.Global_MappingForecast( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "棰勬祴鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_Forecast", "棰勬祴鏁版嵁", this.Global_MappingForecast( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_InventorySupply.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_InventorySupply.qbl
index 2ae1628..7745472 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_InventorySupply.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_InventorySupply.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_InventorySupply
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_InventorySupply",
-                                  ElementTotal    := this.Global_MappingInventorySupply( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "搴撳瓨渚涘簲鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_InventorySupply", "搴撳瓨渚涘簲鏁版嵁", this.Global_MappingInventorySupply( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Operation.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Operation.qbl
index 718b9d0..d537c11 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Operation.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Operation.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_Operation
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_Operation",
-                                  ElementTotal    := this.Global_MappingOperation( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "鎿嶄綔鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_Operation", "鎿嶄綔鏁版嵁", this.Global_MappingOperation( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl
index 12bda61..6902690 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_OperationBOM
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_OperationBOM",
-                                  ElementTotal    := this.Global_MappingOperationBOM( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "鎿嶄綔BOM鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_OperationBOM", "鎿嶄綔BOM鏁版嵁", this.Global_MappingOperationBOM( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationCost.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationCost.qbl
index 313be5a..58d1ce1 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationCost.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationCost.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_OperationCost
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_OperationCost",
-                                  ElementTotal    := this.Global_MappingOperationCost( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "鎿嶄綔鎴愭湰鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_OperationCost", "鎿嶄綔鎴愭湰鏁版嵁", this.Global_MappingOperationCost( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ProductInLane.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ProductInLane.qbl
index d4da6d7..7b117d2 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ProductInLane.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_ProductInLane.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_ProductInLane
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_ProductInLane",
-                                  ElementTotal    := this.Global_MappingProductInLane( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "浜у搧鍦ㄨ溅閬撴暟鎹�",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_ProductInLane", "浜у搧鍦ㄨ溅閬撴暟鎹�", this.Global_MappingProductInLane( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Product_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Product_MP.qbl
index bac0207..6b8ac8a 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Product_MP.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Product_MP.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_Product_MP
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_Product_MP",
-                                  ElementTotal    := this.Global_MappingProduct_MP( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "浜у搧鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_Product_MP", "浜у搧鏁版嵁", this.Global_MappingProduct_MP( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_SalesSegment_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_SalesSegment_MP.qbl
index 4cf7193..422a176 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_SalesSegment_MP.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_SalesSegment_MP.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_SalesSegment_MP
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_SalesSegment_MP",
-                                  ElementTotal    := this.Global_MappingSalesSegment_MP( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "閿�鍞儴闂�",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_SalesSegment_MP", "閿�鍞儴闂�", this.Global_MappingSalesSegment_MP( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_StockingPointCost.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_StockingPointCost.qbl
index 1e75ed5..9b93f9c 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_StockingPointCost.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_StockingPointCost.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_StockingPointCost
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_StockingPointCost",
-                                  ElementTotal    := this.Global_MappingStockingPointCost( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "搴撳瓨鐐规垚鏈暟鎹�",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_StockingPointCost", "搴撳瓨鐐规垚鏈暟鎹�", this.Global_MappingStockingPointCost( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP.qbl
index d8eb2dd..1192289 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP.qbl
@@ -2,16 +2,5 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_UnitOfMeasure_MP
 {
-  TextBody:
-  [*
-    this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName      := "GlobalOTDTable_UnitOfMeasure_MP",
-                                  ElementTotal    := this.Global_MappingUnitOfMeasure_MP( relsize ),
-                                  ErrorMessage    := "",
-                                  IsSuccess       := true,
-                                  Name            := "鍗曚綅鏁版嵁",
-                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                  ErrorNo         := 0
-                                 );
-  *]
+  TextBody: 'this.SettingSuccessfulDetails( "GlobalOTDTable_UnitOfMeasure_MP", "鍗曚綅鏁版嵁", this.Global_MappingUnitOfMeasure_MP( relsize ) );'
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_SettingFailureDetails.qbl b/_Main/BL/Type_GlobalDTOTable/Method_SettingFailureDetails.qbl
new file mode 100644
index 0000000..3d9aad0
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_SettingFailureDetails.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Method SettingFailureDetails (
+  Number errorNo,
+  String errorMessage,
+  String brokerName,
+  String name
+)
+{
+  TextBody:
+  [*
+    gbel := select( this, Global_BrokerExecuteLog, tempGBEL, tempGBEL.ExecutionStatus() = "InOperation" and
+                                                             tempGBEL.BrokerName()      = brokerName );
+    
+    gbel.ExecutionStatus( "Complete" );
+    gbel.ElementTotal( 0 );
+    gbel.ErrorMessage( errorMessage );
+    gbel.IsSuccess( false );
+    gbel.Name( name );
+    gbel.ErrorNo( errorNo );
+    gbel.ErrorDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_SettingSuccessfulDetails.qbl b/_Main/BL/Type_GlobalDTOTable/Method_SettingSuccessfulDetails.qbl
new file mode 100644
index 0000000..f3f619d
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_SettingSuccessfulDetails.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method SettingSuccessfulDetails (
+  String brokerName,
+  String name,
+  Number elementTotal
+)
+{
+  TextBody:
+  [*
+    gbel := select( this, Global_BrokerExecuteLog, tempGBEL, tempGBEL.ExecutionStatus() = "InOperation" and
+                                                             tempGBEL.BrokerName()      = brokerName );
+    
+    gbel.ExecutionStatus( "Complete" );
+    gbel.ElementTotal( elementTotal );
+    gbel.IsSuccess( true );
+    gbel.Name( name );
+    gbel.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl
index 79a5e28..31936e3 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl
@@ -1,20 +1,119 @@
 Quintiq file version 2.0
 #parent: #root
 Method SynchronizationAllMappingBrokerAndAPIByOption (
+  String executionUser,
   Boolean isCustomOrder,
-  Boolean isForeacst
+  Boolean isForeacst,
+  Boolean isUnitOfMeasure_MP,
+  Boolean isSalesSegment_MP,
+  Boolean isProduct_MP,
+  Boolean isConversionFactor,
+  Boolean isOperation,
+  Boolean isOperationBOM,
+  Boolean isProductInLane,
+  Boolean isAIPISPIP,
+  Boolean isInventorySupply,
+  Boolean isStockingPointCost,
+  Boolean isOperationCost,
+  Boolean isDOI_DSI,
+  Boolean isCustomerGrade,
+  Boolean isStockingPoint_MP,
+  Boolean isCurrency_MP,
+  Boolean isCurrencyRate_MP,
+  Boolean isLane,
+  Boolean isLaneLeg
 )
 {
   TextBody:
   [*
     if ( isCustomOrder ) {
-      this.Global_MappingCustomOrder( relflush );
-      this.GlobalOTDTable_CustomOrder().AsyncExecute();
+      Global_MappingCustomOrder::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_CustomOrder" );
     }
     
     if ( isForeacst ) {
-      this.Global_MappingForecast( relflush );
-      this.GlobalOTDTable_Forecast().AsyncExecute();
+      Global_MappingForecast::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_Forecast" );
+    }
+    
+    if ( isUnitOfMeasure_MP ) {
+      Global_MappingUnitOfMeasure_MP::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_UnitOfMeasure_MP" );
+    }
+    
+    if ( isSalesSegment_MP ) {
+      Global_MappingSalesSegment_MP::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_SalesSegment_MP" );
+    }
+    
+    if ( isProduct_MP ) {
+      Global_MappingProduct_MP::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_Product_MP" );
+    }
+    
+    if ( isConversionFactor ) {
+      Global_MappingConversionFactor::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_ConversionFactor" );
+    }
+    
+    if ( isOperation ) {
+      Global_MappingOperation::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_Operation" );
+    }
+    
+    if ( isOperationBOM ) {
+      Global_MappingOperationBOM::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_OperationBOM" );
+    }
+    
+    if ( isProductInLane ) {
+      Global_MappingProductInLane::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_ProductInLane" );
+    }
+    
+    if ( isAIPISPIP ) {
+      Global_MappingActualProductInStockingPointInPeriod::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_AIPISPIP" );
+    }
+    
+    if ( isInventorySupply ) {
+      Global_MappingInventorySupply::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_InventorySupply" );
+    }
+    
+    if ( isStockingPointCost ) {
+      Global_MappingStockingPointCost::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_StockingPointCost" );
+    }
+    
+    if ( isOperationCost ) {
+      Global_MappingOperationCost::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_OperationCost" );
+    }
+    
+    if ( isDOI_DSI ) {
+      Global_MappingDOI_DSI::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_DOI_DSI" );
+    }
+    
+    if ( isCustomerGrade ) {
+      Global_MappingCustomerGrade::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_CustomerGrade" );
+    }
+    
+    if ( isStockingPoint_MP ) {
+      this.Global_MappingStockingPoint_MP( relflush );
+      Global_BrokerExecuteLog::CreateInOperation( this, "StockingPoint_MP", executionUser );
+      this -> OnException( this -> Global_MappingStockingPoint_MP::CreateByAPI() -> Exception(), this );
+    }
+    
+    if ( isCurrency_MP ) {
+      this.Global_MappingCurrency_MP( relflush );
+      Global_BrokerExecuteLog::CreateInOperation( this, "Currency_MP", executionUser );
+      this -> OnException( this -> Global_MappingCurrency_MP::CreateByAPI() -> Exception(), this );
+    }
+    
+    if ( isCurrencyRate_MP ) {
+      this.Global_MappingCurrencyRate_MP( relflush );
+      Global_BrokerExecuteLog::CreateInOperation( this, "CurrencyRate_MP", executionUser );
+      this -> OnException( this -> Global_MappingCurrencyRate_MP::CreateByAPI() -> Exception(), this );
+    }
+    
+    if ( isLane ) {
+      this.Global_MappingLane( relflush );
+      Global_BrokerExecuteLog::CreateInOperation( this, "Lane", executionUser );
+      this -> OnException( this -> Global_MappingLane::CreateByAPI() -> Exception(), this );
+    }
+    
+    if ( isLaneLeg ) {
+      this.Global_MappingLaneLeg( relflush );
+      Global_BrokerExecuteLog::CreateInOperation( this, "LaneLeg", executionUser );
+      this -> OnException( this -> Global_MappingLaneLeg::CreateByAPI() -> Exception(), this );
     }
   *]
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl
index b41460d..380fac6 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl
@@ -2,7 +2,6 @@
 #parent: #root
 Method SynchronizeDataToMacroPlan (
   MacroPlan macroPlan,
-  Strings businessTypes,
   Boolean isCustomOrder,
   Boolean isForecast
 )
@@ -10,7 +9,7 @@
   TextBody:
   [*
     if ( isCustomOrder ) {
-      macroPlan.MappingCustomerOrderData( businessTypes, this );
+    //  macroPlan.MappingCustomerOrderData( businessTypes, this );
     }
   *]
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
index 9239cfb..486c9a6 100644
--- a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
@@ -28,25 +28,25 @@
     globalOTDTable.Global_MappingDOI_DSI( relflush );
     globalOTDTable.Global_MappingCustomerGrade( relflush );
     
-    globalOTDTable.GlobalOTDTable_UnitOfMeasure_MP().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_SalesSegment_MP().AsyncExecute();
-    globalOTDTable -> OnException( globalOTDTable -> Global_MappingStockingPoint_MP::CreateByAPI() -> Exception(), globalOTDTable );
-    globalOTDTable -> OnException( globalOTDTable -> Global_MappingCurrency_MP::CreateByAPI() -> Exception(), globalOTDTable );
-    globalOTDTable -> OnException( globalOTDTable -> Global_MappingCurrencyRate_MP::CreateByAPI() -> Exception(), globalOTDTable );
-    globalOTDTable.GlobalOTDTable_Product_MP().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_ConversionFactor().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_Operation().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_OperationBOM().AsyncExecute();
-    globalOTDTable -> OnException( globalOTDTable -> Global_MappingLane::CreateByAPI() -> Exception(), globalOTDTable );
-    globalOTDTable -> OnException( globalOTDTable -> Global_MappingLaneLeg::CreateByAPI() -> Exception(), globalOTDTable );
-    globalOTDTable.GlobalOTDTable_ProductInLane().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_AIPISPIP().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_InventorySupply().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_StockingPointCost().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_OperationCost().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_Forecast().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_CustomOrder().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_DOI_DSI().AsyncExecute();
-    globalOTDTable.GlobalOTDTable_CustomerGrade().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_UnitOfMeasure_MP().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_SalesSegment_MP().AsyncExecute();
+    //globalOTDTable -> OnException( globalOTDTable -> Global_MappingStockingPoint_MP::CreateByAPI() -> Exception(), globalOTDTable );
+    //globalOTDTable -> OnException( globalOTDTable -> Global_MappingCurrency_MP::CreateByAPI() -> Exception(), globalOTDTable );
+    //globalOTDTable -> OnException( globalOTDTable -> Global_MappingCurrencyRate_MP::CreateByAPI() -> Exception(), globalOTDTable );
+    //globalOTDTable.GlobalOTDTable_Product_MP().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_ConversionFactor().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_Operation().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_OperationBOM().AsyncExecute();
+    //globalOTDTable -> OnException( globalOTDTable -> Global_MappingLane::CreateByAPI() -> Exception(), globalOTDTable );
+    //globalOTDTable -> OnException( globalOTDTable -> Global_MappingLaneLeg::CreateByAPI() -> Exception(), globalOTDTable );
+    //globalOTDTable.GlobalOTDTable_ProductInLane().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_AIPISPIP().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_InventorySupply().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_StockingPointCost().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_OperationCost().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_Forecast().AsyncExecute();      
+    //globalOTDTable.GlobalOTDTable_CustomOrder().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_DOI_DSI().AsyncExecute();
+    //globalOTDTable.GlobalOTDTable_CustomerGrade().AsyncExecute();
   *]
 }
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ExecuteUser.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ExecuteUser.qbl
new file mode 100644
index 0000000..4549caf
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ExecuteUser.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ExecuteUser
+{
+  #keys: '3[414702.0.498264673][414702.0.498264672][414702.0.498264674]'
+  Description: '鎵ц鐢ㄦ埛'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ExecutionStatus.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ExecutionStatus.qbl
new file mode 100644
index 0000000..0374f88
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/Attribute_ExecutionStatus.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ExecutionStatus
+{
+  #keys: '3[414702.0.498264686][414702.0.498264685][414702.0.498264687]'
+  Description: '鎵ц鐘舵��'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/StaticMethod_CanRun.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/StaticMethod_CanRun.qbl
new file mode 100644
index 0000000..428134f
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/StaticMethod_CanRun.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CanRun (
+  GlobalOTDTable globalOTDTable,
+  String brokerName
+) as Boolean
+{
+  TextBody:
+  [*
+    isCanRun := exists( globalOTDTable, Global_BrokerExecuteLog, tempGBEL, tempGBEL.BrokerName() = brokerName and
+                                                                 tempGBEL.ExecutionStatus() = "InOperation"
+                       );
+    
+    return isCanRun;
+  *]
+}
diff --git a/_Main/BL/Type_Global_BrokerExecuteLog/StaticMethod_CreateInOperation.qbl b/_Main/BL/Type_Global_BrokerExecuteLog/StaticMethod_CreateInOperation.qbl
new file mode 100644
index 0000000..5f46a5f
--- /dev/null
+++ b/_Main/BL/Type_Global_BrokerExecuteLog/StaticMethod_CreateInOperation.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateInOperation (
+  GlobalOTDTable globalOTDTable,
+  String brokerName,
+  String executionUser
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_BrokerExecuteLog( relnew, 
+                                            BrokerName := brokerName, 
+                                            ExecuteUser := executionUser, 
+                                            ExecutionStatus := "InOperation" );
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..e45d793
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingActualProductInStockingPointInPeriod( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_AIPISPIP().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingConversionFactor/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingConversionFactor/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..58bc3d5
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingConversionFactor/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingConversionFactor( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_ConversionFactor().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
index 13d9157..e3b0e63 100644
--- a/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
@@ -38,14 +38,12 @@
                                                    );
     }
     
-    globalOTDTable.Global_BrokerExecuteLog( relnew,
-                                            BrokerName      := "",
-                                            ElementTotal    := globalOTDTable.Global_MappingCurrencyRate_MP( relsize ),
-                                            ErrorMessage    := "",
-                                            IsSuccess       := true,
-                                            Name            := "鎺ュ彛鏁版嵁锛堣揣甯佹眹鐜囷級",
-                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                            ErrorNo         := 0
-                                           );
+    gbel := select( globalOTDTable, Global_BrokerExecuteLog, tempGBEL, tempGBEL.ExecutionStatus() = "InOperation" and
+                                                                       tempGBEL.BrokerName()      = "CurrencyRate_MP" );
+    gbel.ExecutionStatus( "Complete" );
+    gbel.ElementTotal( globalOTDTable.Global_MappingCurrencyRate_MP( relsize ) );
+    gbel.IsSuccess( true );
+    gbel.Name( "鎺ュ彛鏁版嵁锛堣揣甯佹眹鐜囷級" );
+    gbel.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
index e938f73..2480088 100644
--- a/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
@@ -35,14 +35,12 @@
                                                );
     }
     
-    globalOTDTable.Global_BrokerExecuteLog( relnew,
-                                            BrokerName      := "",
-                                            ElementTotal    := globalOTDTable.Global_MappingCurrency_MP( relsize ),
-                                            ErrorMessage    := "",
-                                            IsSuccess       := true,
-                                            Name            := "鎺ュ彛鏁版嵁锛堣揣甯侊級",
-                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                            ErrorNo         := 0
-                                           );
+    gbel := select( globalOTDTable, Global_BrokerExecuteLog, tempGBEL, tempGBEL.ExecutionStatus() = "InOperation" and
+                                                                       tempGBEL.BrokerName()      = "Currency_MP" );
+    gbel.ExecutionStatus( "Complete" );
+    gbel.ElementTotal( globalOTDTable.Global_MappingCurrency_MP( relsize ) );
+    gbel.IsSuccess( true );
+    gbel.Name( "鎺ュ彛鏁版嵁锛堣揣甯侊級" );
+    gbel.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingCustomOrder/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..9f855d0
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingCustomOrder( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_CustomOrder().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingCustomerGrade/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingCustomerGrade/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..073d3d2
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomerGrade/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingCustomerGrade( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_CustomerGrade().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingDOI_DSI/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingDOI_DSI/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..619df91
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingDOI_DSI/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingDOI_DSI( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_DOI_DSI().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingForecast/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingForecast/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..a9bf8b3
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingForecast/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingForecast( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_Forecast().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingInventorySupply/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..c63682f
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingInventorySupply/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingInventorySupply( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_InventorySupply().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
index 6d04074..e46efd6 100644
--- a/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
@@ -36,14 +36,13 @@
                                         );
     }
     
-    globalOTDTable.Global_BrokerExecuteLog( relnew,
-                                            BrokerName      := "",
-                                            ElementTotal    := globalOTDTable.Global_MappingLane( relsize ),
-                                            ErrorMessage    := "",
-                                            IsSuccess       := true,
-                                            Name            := "鎺ュ彛鏁版嵁锛堣溅閬擄級",
-                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                            ErrorNo         := 0
-                                           );
+    
+    gbel := select( globalOTDTable, Global_BrokerExecuteLog, tempGBEL, tempGBEL.ExecutionStatus() = "InOperation" and
+                                                                       tempGBEL.BrokerName()      = "Lane" );
+    gbel.ExecutionStatus( "Complete" );
+    gbel.ElementTotal( globalOTDTable.Global_MappingLane( relsize ) );
+    gbel.IsSuccess( true );
+    gbel.Name( "鎺ュ彛鏁版嵁锛堣溅閬擄級" );
+    gbel.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
index 20f668b..7899f6e 100644
--- a/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
@@ -37,14 +37,12 @@
                                            );
     }
     
-    globalOTDTable.Global_BrokerExecuteLog( relnew,
-                                            BrokerName      := "",
-                                            ElementTotal    := globalOTDTable.Global_MappingLaneLeg( relsize ),
-                                            ErrorMessage    := "",
-                                            IsSuccess       := true,
-                                            Name            := "鎺ュ彛鏁版嵁锛堣溅閬撴敮鏋讹級",
-                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                            ErrorNo         := 0
-                                           );
+    gbel := select( globalOTDTable, Global_BrokerExecuteLog, tempGBEL, tempGBEL.ExecutionStatus() = "InOperation" and
+                                                                       tempGBEL.BrokerName()      = "LaneLeg" );
+    gbel.ExecutionStatus( "Complete" );
+    gbel.ElementTotal( globalOTDTable.Global_MappingLaneLeg( relsize ) );
+    gbel.IsSuccess( true );
+    gbel.Name( "鎺ュ彛鏁版嵁锛堣溅閬撴敮鏋讹級" );
+    gbel.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingOperation/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingOperation/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..2d35ace
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingOperation( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_Operation().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingOperationBOM/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..69c60d3
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingOperationBOM( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_OperationBOM().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingProductInLane/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingProductInLane/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..f2333f5
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProductInLane/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingProductInLane( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_ProductInLane().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..9728f0f
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingProduct_MP( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_Product_MP().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingSalesSegment_MP/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingSalesSegment_MP/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..76d2c88
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingSalesSegment_MP/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingSalesSegment_MP( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_SalesSegment_MP().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..82a30f7
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingStockingPointCost( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_StockingPointCost().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
index b800ef2..4901d0a 100644
--- a/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
@@ -35,14 +35,12 @@
                                                     );
     }
     
-    globalOTDTable.Global_BrokerExecuteLog( relnew,
-                                            BrokerName      := "",
-                                            ElementTotal    := globalOTDTable.Global_MappingStockingPoint_MP( relsize ),
-                                            ErrorMessage    := "",
-                                            IsSuccess       := true,
-                                            Name            := "鎺ュ彛鏁版嵁锛堝簱瀛樼偣锛�",
-                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
-                                            ErrorNo         := 0
-                                           );
+    gbel := select( globalOTDTable, Global_BrokerExecuteLog, tempGBEL, tempGBEL.ExecutionStatus() = "InOperation" and
+                                                                       tempGBEL.BrokerName()      = "StockingPoint_MP" );
+    gbel.ExecutionStatus( "Complete" );
+    gbel.ElementTotal( globalOTDTable.Global_MappingStockingPoint_MP( relsize ) );
+    gbel.IsSuccess( true );
+    gbel.Name( "鎺ュ彛鏁版嵁锛堝簱瀛樼偣锛�" );
+    gbel.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingUnitCost/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingUnitCost/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..8eab43a
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitCost/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingOperationCost( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_OperationCost().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/StaticMethod_SynchronizeInterfaceData.qbl b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/StaticMethod_SynchronizeInterfaceData.qbl
new file mode 100644
index 0000000..a88ea5a
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingUnitOfMeasure_MP/StaticMethod_SynchronizeInterfaceData.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SynchronizeInterfaceData (
+  GlobalOTDTable globalOTDTable,
+  String executionUser,
+  String brokerName
+)
+{
+  TextBody:
+  [*
+    globalOTDTable.Global_MappingUnitOfMeasure_MP( relflush );
+    isCanRun := Global_BrokerExecuteLog::CanRun( globalOTDTable, brokerName );
+    if ( not isCanRun ) {  
+      Global_BrokerExecuteLog::CreateInOperation( globalOTDTable, brokerName, executionUser );
+      globalOTDTable.GlobalOTDTable_UnitOfMeasure_MP().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_ShowCell/StaticMethod_CreateShowData_CustomOrder.qbl b/_Main/BL/Type_Global_ShowCell/StaticMethod_CreateShowData_CustomOrder.qbl
new file mode 100644
index 0000000..6fc41e2
--- /dev/null
+++ b/_Main/BL/Type_Global_ShowCell/StaticMethod_CreateShowData_CustomOrder.qbl
@@ -0,0 +1,58 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateShowData_CustomOrder (
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    businessTypeColumn       := Global_ShowColumn::CreateColumn( globalOTDTable, 0, "浜嬩笟閮�" );
+    currencyIDColumn         := Global_ShowColumn::CreateColumn( globalOTDTable, 1, "璐у竵" );
+    customerColumn           := Global_ShowColumn::CreateColumn( globalOTDTable, 2, "瀹㈡埛鍚嶇О" );
+    customerIDColumn         := Global_ShowColumn::CreateColumn( globalOTDTable, 3, "瀹㈡埛ID" );
+    idColumn                 := Global_ShowColumn::CreateColumn( globalOTDTable, 4, "鍞竴鏍囪瘑" );
+    orderDateColumn          := Global_ShowColumn::CreateColumn( globalOTDTable, 5, "璁㈠崟鏃ユ湡" );
+    orderIDColumn            := Global_ShowColumn::CreateColumn( globalOTDTable, 6, "璁㈠崟鍙�" );
+    orderLineIDColumn        := Global_ShowColumn::CreateColumn( globalOTDTable, 7, "璁㈠崟琛屽彿" );
+    priceColumn              := Global_ShowColumn::CreateColumn( globalOTDTable, 8, "鍗曚环" );
+    priorityNameColumn       := Global_ShowColumn::CreateColumn( globalOTDTable, 9, "浼樺厛绾у悕绉�" );
+    productIDColumn          := Global_ShowColumn::CreateColumn( globalOTDTable, 10, "浜у搧缂栫爜" );
+    stockingPointIDColumn    := Global_ShowColumn::CreateColumn( globalOTDTable, 11, "搴撳瓨鐐圭紪鐮�" );
+    salesegmentNameColumn    := Global_ShowColumn::CreateColumn( globalOTDTable, 12, "閿�鍞儴闂ㄥ悕绉�" );
+    quantityColumn           := Global_ShowColumn::CreateColumn( globalOTDTable, 13, "鏁伴噺" );
+    unitofmeasureNameColumn  := Global_ShowColumn::CreateColumn( globalOTDTable, 14, "鍗曚綅" );
+    orderTypeColumn          := Global_ShowColumn::CreateColumn( globalOTDTable, 15, "璁㈠崟绫诲瀷" );
+    isAvailableColumn        := Global_ShowColumn::CreateColumn( globalOTDTable, 16, "鏄惁鍙敤" );
+    productGradeColumn       := Global_ShowColumn::CreateColumn( globalOTDTable, 17, "浜у搧绛夌骇" );
+    segmentPriorityColumn    := Global_ShowColumn::CreateColumn( globalOTDTable, 18, "缁嗗垎甯傚満浼樺厛绾�" );
+    sheetProfitabilityColumn := Global_ShowColumn::CreateColumn( globalOTDTable, 19, "澶у紶鐩堝埄" );
+    orderTimeColumn          := Global_ShowColumn::CreateColumn( globalOTDTable, 20, "璁㈠崟涓嬪崟鏃堕棿" );
+    i := 1;
+    traverse ( globalOTDTable, Global_MappingCustomOrder, gmco ) {
+      gloabal_ShowRow := globalOTDTable.Global_ShowRow( relnew, RowNr := i );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.BusinessType(), businessTypeColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.CurrencyID(), currencyIDColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.Customer(), customerColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.CustomerID(), customerIDColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.ID(), idColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, guard( gmco.OrderDate().Format( "Y-M2-D2" ), "鏃堕棿鏍煎紡閿欒" ), orderDateColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.OrderID(), orderIDColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.OrderLineID(), orderLineIDColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, [String]gmco.Price(), priceColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.PriorityName(), priorityNameColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.ProductID(), productIDColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.StockingPointID(), stockingPointIDColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.SalesSegmentName(), salesegmentNameColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, [String]gmco.Quantity(), quantityColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.UnitOfMeasureName(), unitofmeasureNameColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.OrderType(), orderTypeColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, [String]gmco.IsAvailable(), isAvailableColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.ProductGrade(), productGradeColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.SegmentPriority(), segmentPriorityColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, gmco.SheetProfitability(), sheetProfitabilityColumn, gloabal_ShowRow );
+      Global_ShowCell::SetColumnsAndRows( globalOTDTable, guard( gmco.OrderTime().Format( "Y-M2-D2" ), "鏃堕棿鏍煎紡閿欒" ), orderTimeColumn, gloabal_ShowRow );
+           
+      i++;                                                             
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_ShowCell/StaticMethod_SetColumnsAndRows.qbl b/_Main/BL/Type_Global_ShowCell/StaticMethod_SetColumnsAndRows.qbl
new file mode 100644
index 0000000..1e31a53
--- /dev/null
+++ b/_Main/BL/Type_Global_ShowCell/StaticMethod_SetColumnsAndRows.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod SetColumnsAndRows (
+  GlobalOTDTable globalOTDTable,
+  String value,
+  Global_ShowColumn global_ShowColumn,
+  Global_ShowRow global_ShowRow
+)
+{
+  TextBody:
+  [*
+    global_ShowCell := globalOTDTable.Global_ShowCell( relnew, Value := value );
+    global_ShowCell.Global_ShowColumn( relset, global_ShowColumn );
+    global_ShowCell.Global_ShowRow( relset, global_ShowRow );
+  *]
+}
diff --git a/_Main/BL/Type_Global_ShowCell/StaticMethod_ShowData.qbl b/_Main/BL/Type_Global_ShowCell/StaticMethod_ShowData.qbl
index 1e5c9aa..7eebedc 100644
--- a/_Main/BL/Type_Global_ShowCell/StaticMethod_ShowData.qbl
+++ b/_Main/BL/Type_Global_ShowCell/StaticMethod_ShowData.qbl
@@ -8,117 +8,7 @@
   TextBody:
   [*
     if ( global_BrokerExecuteLog.BrokerName() = "GlobalOTDTable_CustomOrder" ) {
-      businessTypeColumn       := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 0, ColumnName := "浜嬩笟閮�" );
-      currencyIDColumn         := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 1, ColumnName := "璐у竵" );
-      customerColumn           := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 2, ColumnName := "瀹㈡埛鍚嶇О" );
-      customerIDColumn         := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 3, ColumnName := "瀹㈡埛ID" );
-      idColumn                 := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 4, ColumnName := "鍞竴鏍囪瘑" );
-      orderDateColumn          := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 5, ColumnName := "璁㈠崟鏃ユ湡" );
-      orderIDColumn            := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 6, ColumnName := "璁㈠崟鍙�" );
-      orderLineIDColumn        := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 7, ColumnName := "璁㈠崟琛屽彿" );
-      priceColumn              := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 8, ColumnName := "鍗曚环" );
-      priorityNameColumn       := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 9, ColumnName := "浼樺厛绾у悕绉�" );
-      productIDColumn          := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 10, ColumnName := "浜у搧缂栫爜" );
-      stockingPointIDColumn    := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 11, ColumnName := "搴撳瓨鐐圭紪鐮�" );
-      salesegmentNameColumn    :=globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 12, ColumnName := "閿�鍞儴闂ㄥ悕绉�" );
-      quantityColumn           := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 13, ColumnName := "鏁伴噺" );
-      unitofmeasureNameColumn  := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 14, ColumnName := "鍗曚綅" );
-      orderTypeColumn          := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 15, ColumnName := "璁㈠崟绫诲瀷" );
-      isAvailableColumn        := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 16, ColumnName := "鏄惁鍙敤" );
-      productGradeColumn       := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 17, ColumnName := "浜у搧绛夌骇" );
-      segmentPriorityColumn    := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 18, ColumnName := "缁嗗垎甯傚満浼樺厛绾�" );
-      sheetProfitabilityColumn := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 19, ColumnName := "澶у紶鐩堝埄" );
-      orderTimeColumn          := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := 20, ColumnName := "璁㈠崟涓嬪崟鏃堕棿" );
-      i := 1;
-      traverse ( globalOTDTable, Global_MappingCustomOrder, gmco ) {
-        gloabal_ShowRow := globalOTDTable.Global_ShowRow( relnew, RowNr := i );
-        
-        businessTypeCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.BusinessType() );
-        businessTypeCell.Global_ShowColumn( relset, businessTypeColumn );
-        businessTypeCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        currencyIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.CurrencyID() );
-        currencyIDCell.Global_ShowColumn( relset, currencyIDColumn );
-        currencyIDCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        customerCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.Customer() );
-        customerCell.Global_ShowColumn( relset, customerColumn );
-        customerCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        customerIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.CustomerID() );
-        customerIDCell.Global_ShowColumn( relset, customerIDColumn );
-        customerIDCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        idCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.ID() );
-        idCell.Global_ShowColumn( relset, idColumn );
-        idCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        orderDateCell := globalOTDTable.Global_ShowCell( relnew, Value := guard( gmco.OrderDate().Format( "Y-M2-D2" ), "鏃堕棿鏍煎紡閿欒" ) );
-        orderDateCell.Global_ShowColumn( relset, orderDateColumn );
-        orderDateCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        orderIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.OrderID() );
-        orderIDCell.Global_ShowColumn( relset, orderIDColumn );
-        orderIDCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        orderLineIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.OrderLineID() );
-        orderLineIDCell.Global_ShowColumn( relset, orderLineIDColumn );
-        orderLineIDCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        priceCell := globalOTDTable.Global_ShowCell( relnew, Value := [String]gmco.Price() );
-        priceCell.Global_ShowColumn( relset, priceColumn );
-        priceCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        priorityNameCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.PriorityName() );
-        priorityNameCell.Global_ShowColumn( relset, priorityNameColumn );
-        priorityNameCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        productIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.ProductID() );
-        productIDCell.Global_ShowColumn( relset, productIDColumn );
-        productIDCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        stockingPointIDCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.StockingPointID() );
-        stockingPointIDCell.Global_ShowColumn( relset, stockingPointIDColumn );
-        stockingPointIDCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        salesegmentNameCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.SalesSegmentName() );
-        salesegmentNameCell.Global_ShowColumn( relset, salesegmentNameColumn );
-        salesegmentNameCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        quantityCell := globalOTDTable.Global_ShowCell( relnew, Value := [String]gmco.Quantity() );
-        quantityCell.Global_ShowColumn( relset, quantityColumn );
-        quantityCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        unitofmeasureNameCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.UnitOfMeasureName() );
-        unitofmeasureNameCell.Global_ShowColumn( relset, unitofmeasureNameColumn );
-        unitofmeasureNameCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        orderTypeCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.OrderType() );
-        orderTypeCell.Global_ShowColumn( relset, orderTypeColumn );
-        orderTypeCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        isAvailableCell := globalOTDTable.Global_ShowCell( relnew, Value := [String]gmco.IsAvailable() );
-        isAvailableCell.Global_ShowColumn( relset, isAvailableColumn );
-        isAvailableCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        productGradeCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.ProductGrade() );
-        productGradeCell.Global_ShowColumn( relset, productGradeColumn );
-        productGradeCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        segmentPriorityCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.SegmentPriority() );
-        segmentPriorityCell.Global_ShowColumn( relset, segmentPriorityColumn );
-        segmentPriorityCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        sheetProfitabilityCell := globalOTDTable.Global_ShowCell( relnew, Value := gmco.SheetProfitability() );
-        sheetProfitabilityCell.Global_ShowColumn( relset, sheetProfitabilityColumn );
-        sheetProfitabilityCell.Global_ShowRow( relset, gloabal_ShowRow );
-        
-        orderTimeCell := globalOTDTable.Global_ShowCell( relnew, Value := guard( gmco.OrderTime().Format( "Y-M2-D2" ), "鏃堕棿鏍煎紡閿欒" ) );
-        orderTimeCell.Global_ShowColumn( relset, orderTimeColumn );
-        orderTimeCell.Global_ShowRow( relset, gloabal_ShowRow );
-           
-        i++;                                                             
-      }
+      Global_ShowCell::CreateShowData_CustomOrder( globalOTDTable );
     }
   *]
 }
diff --git a/_Main/BL/Type_Global_ShowColumn/StaticMethod_CreateColumn.qbl b/_Main/BL/Type_Global_ShowColumn/StaticMethod_CreateColumn.qbl
new file mode 100644
index 0000000..2fac7cb
--- /dev/null
+++ b/_Main/BL/Type_Global_ShowColumn/StaticMethod_CreateColumn.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateColumn (
+  GlobalOTDTable globalOTDTable,
+  Number columnIndex,
+  String columnName
+) as Global_ShowColumn
+{
+  TextBody:
+  [*
+    global_ShowColumn := globalOTDTable.Global_ShowColumn( relnew, ColumnIndex := columnIndex, ColumnName := columnName );
+    
+    return global_ShowColumn;
+  *]
+}
diff --git a/_Main/Sys/ImgAttr/Global_BrokerExecuteLog.dme b/_Main/Sys/ImgAttr/Global_BrokerExecuteLog.dme
new file mode 100644
index 0000000..b3263a6
--- /dev/null
+++ b/_Main/Sys/ImgAttr/Global_BrokerExecuteLog.dme
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+TypeDataInterface Global_BrokerExecuteLog
+{
+  TypeKey: '[414702.0.265587041]'
+  ImageDataMember ImageExecutionStatus
+  {
+    #keys: '1[414702.0.496052017]'
+    ImageSpecifications:
+    [
+      ImageDataMemberImageSpecification
+      {
+        Image: 'MEDIA_PLAY_GREEN'
+        Quill: 'object.ExecutionStatus() = "InOperation"'
+        Value: 'InOperation'
+      }
+      ImageDataMemberImageSpecification
+      {
+        Image: 'CHECK'
+        Quill: 'object.ExecutionStatus() = "Complete"'
+        Value: 'ImageExecutionStatus2'
+      }
+    ]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def
index 882b6d4..57d4c51 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def
@@ -28,7 +28,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BrokerName","title":"BrokerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BrokerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ElementTotal","title":"ElementTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ElementTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorDateTime","title":"ErrorDateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorDateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorMessage","title":"ErrorMessage","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorMessage"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorNo","title":"ErrorNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsSuccess","title":"IsSuccess","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsSuccess"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SuccessDateTime","title":"SuccessDateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SuccessDateTime"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImageExecutionStatus","title":"杩愯鐘舵��","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImageExecutionStatus"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ExecuteUser","title":"鎵ц鐢ㄦ埛","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ExecuteUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsSuccess","title":"鏄惁鎴愬姛","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsSuccess"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BrokerName","title":"Broker鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BrokerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ElementTotal","title":"鏁版嵁澶у皬","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ElementTotal"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorDateTime","title":"閿欒鏃堕棿","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorDateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorMessage","title":"閿欒娑堟伅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorMessage"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ErrorNo","title":"閿欒鍙�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ErrorNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"鏃ュ織鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SuccessDateTime","title":"鎴愬姛鏃堕棿","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SuccessDateTime"}}]'
         ContextMenu: 'listContextMenuInterfaceTest'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest981.def "b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceGlobal_BrokerExecuteLog\043981.def"
similarity index 70%
rename from _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest981.def
rename to "_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceGlobal_BrokerExecuteLog\043981.def"
index b8b4a3f..5c28e5e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest981.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceGlobal_BrokerExecuteLog\043981.def"
@@ -1,5 +1,5 @@
 Quintiq file version 2.0
-Component PanelInterfaceTest981
+Component PanelInterfaceGlobal_BrokerExecuteLog
 {
   #keys: '[414702.0.459917264]'
   BaseType: 'WebPanel'
@@ -9,6 +9,6 @@
   ]
   Properties:
   [
-    Taborder: 2
+    Taborder: 5
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption1.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption1.def
new file mode 100644
index 0000000..da696e8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption1.def
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+Component PanelInterfaceOption1
+{
+  #keys: '[414702.0.459752107]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component CheckboxCustomOrder
+    {
+      #keys: '[414702.0.459786494]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'CustomOrder'
+        Taborder: 0
+      ]
+    }
+    Component CheckboxForecast
+    {
+      #keys: '[414702.0.459501981]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'Forecast'
+        Taborder: 1
+      ]
+    }
+    Component CheckboxUnitOfMeasure_MP
+    {
+      #keys: '[414702.0.500042972]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'UnitOfMeasure_MP'
+        Taborder: 2
+      ]
+    }
+    Component CheckboxSalesSegment_MP
+    {
+      #keys: '[414702.0.498882706]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'SalesSegment_MP'
+        Taborder: 3
+      ]
+    }
+    Component CheckboxProduct_MP
+    {
+      #keys: '[414702.0.500281942]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'Product_MP'
+        Taborder: 4
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2\043456.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2\043456.def"
new file mode 100644
index 0000000..a089baa
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption2\043456.def"
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+Component PanelInterfaceOption2
+{
+  #keys: '[414702.0.500233382]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component CheckboxConversionFactor
+    {
+      #keys: '[414702.0.501770364]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'ConversionFactor'
+        Taborder: 0
+      ]
+    }
+    Component CheckboxOperation
+    {
+      #keys: '[414702.0.501791718]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'Operation'
+        Taborder: 1
+      ]
+    }
+    Component CheckboxOperationBOM
+    {
+      #keys: '[414702.0.501742364]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'OperationBOM'
+        Taborder: 2
+      ]
+    }
+    Component CheckboxProductInLane
+    {
+      #keys: '[414702.0.501792106]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'ProductInLane'
+        Taborder: 3
+      ]
+    }
+    Component CheckboxAIPISPIP
+    {
+      #keys: '[414702.0.503110868]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'AIPISPIP'
+        Taborder: 4
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption3.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption3.def
new file mode 100644
index 0000000..f48dbeb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption3.def
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+Component PanelInterfaceOption3
+{
+  #keys: '[414702.0.501742781]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component CheckboxInventorySupply
+    {
+      #keys: '[414702.0.503576372]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'InventorySupply'
+        Taborder: 0
+      ]
+    }
+    Component CheckboxStockingPointCost
+    {
+      #keys: '[414702.0.503748797]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'StockingPointCost'
+        Taborder: 1
+      ]
+    }
+    Component CheckboxOperationCost
+    {
+      #keys: '[414702.0.503158219]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'OperationCost'
+        Taborder: 2
+      ]
+    }
+    Component CheckboxDOI_DSI
+    {
+      #keys: '[414702.0.503158880]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'DOI_DSI'
+        Taborder: 3
+      ]
+    }
+    Component CheckboxCustomerGrade
+    {
+      #keys: '[414702.0.503159013]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'CustomerGrade'
+        Taborder: 4
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption4.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption4.def
new file mode 100644
index 0000000..f708ac7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOption4.def
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+Component PanelInterfaceOption4
+{
+  #keys: '[414702.0.504229568]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component CheckboxStockingPoint_MP
+    {
+      #keys: '[414702.0.501794917]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'StockingPoint_MP'
+        Taborder: 0
+      ]
+    }
+    Component CheckboxCurrency_MP
+    {
+      #keys: '[414702.0.504229987]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'Currency_MP'
+        Taborder: 1
+      ]
+    }
+    Component CheckboxCurrencyRate_MP
+    {
+      #keys: '[414702.0.503787453]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'CurrencyRate_MP'
+        Taborder: 2
+      ]
+    }
+    Component CheckboxLane
+    {
+      #keys: '[414702.0.503787560]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'Lane'
+        Taborder: 3
+      ]
+    }
+    Component CheckboxLaneLeg
+    {
+      #keys: '[414702.0.503787710]'
+      BaseType: 'WebCheckbox'
+      Properties:
+      [
+        Label: 'LaneLeg'
+        Taborder: 4
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 3
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOptions.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOptions.def
deleted file mode 100644
index 4fe176c..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOptions.def
+++ /dev/null
@@ -1,62 +0,0 @@
-Quintiq file version 2.0
-Component PanelInterfaceOptions
-{
-  #keys: '[414702.0.459752107]'
-  BaseType: 'WebPanel'
-  Children:
-  [
-    Component CheckboxCustomOrder
-    {
-      #keys: '[414702.0.459786494]'
-      BaseType: 'WebCheckbox'
-      Properties:
-      [
-        Label: 'CustomOrder'
-        Taborder: 0
-      ]
-    }
-    Component CheckboxForecast
-    {
-      #keys: '[414702.0.459501981]'
-      BaseType: 'WebCheckbox'
-      Properties:
-      [
-        Label: 'Forecast'
-        Taborder: 1
-      ]
-    }
-    Component DropDownListBusinessType
-    {
-      #keys: '[414702.0.465923773]'
-      BaseType: 'WebDropDownList'
-      Databinding: 'BusinessType'
-      Children:
-      [
-        Component DataExtractorInterfaceOptions
-        {
-          #keys: '[414702.0.465923775]'
-          BaseType: 'WebDataExtractor'
-          Properties:
-          [
-            DataType: 'GlobalOTDTable'
-            Source: 'GlobalOTDTable'
-            Taborder: 0
-            Transformation: 'BusinessType'
-          ]
-        }
-      ]
-      Properties:
-      [
-        DisplayField: 'BusinessTypeName'
-        Label: '浜嬩笟閮�'
-        Taborder: 2
-      ]
-    }
-  ]
-  Properties:
-  [
-    FixedSize: true
-    Orientation: 'horizontal'
-    Taborder: 0
-  ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest.def
index 90f59dd..b8719b3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest.def
@@ -32,6 +32,6 @@
   [
     FixedSize: true
     Orientation: 'horizontal'
-    Taborder: 1
+    Taborder: 4
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def
index 8cbab4b..c678ea7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def
@@ -16,6 +16,29 @@
         Title: '鏄剧ず鏁版嵁'
       ]
     }
+    Component MenuDelete
+    {
+      #keys: '[414702.0.495675965]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'DELETE'
+        Taborder: 4
+        Title: '鍒犻櫎'
+      ]
+    }
+    Component MenuSelectionAll
+    {
+      #keys: '[414702.0.494390825]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'SELECTION'
+        Shortcut: 'Ctrl+A'
+        Taborder: 5
+        Title: '鍏ㄩ��'
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuDelete_OnClick.def
new file mode 100644
index 0000000..3f1219b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuDelete_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListInterfaceTest
+Response OnClick (
+  Global_BrokerExecuteLog selection
+) id:Response_ListInterfaceTest_MenuDelete_OnClick
+{
+  #keys: '[414702.0.494333825]'
+  DefinitionID => /ListInterfaceTest/Responsedef_ListInterfaceTest_WebMenu_OnClick
+  Initiator: 'MenuDelete'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.Delete();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuSelectionAll_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuSelectionAll_OnClick.def
new file mode 100644
index 0000000..da04728
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ListInterfaceTest_MenuSelectionAll_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListInterfaceTest
+Response OnClick () id:Response_ListInterfaceTest_MenuSelectionAll_OnClick
+{
+  #keys: '[414702.0.494351350]'
+  CanBindMultiple: false
+  DefinitionID => /ListInterfaceTest/Responsedef_ListInterfaceTest_WebMenu_OnClick
+  Initiator: 'MenuSelectionAll'
+  QuillAction
+  {
+    Body:
+    [*
+      this.SelectAll();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def
index 7ec600a..6dfbdbe 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def
@@ -13,10 +13,29 @@
   {
     Body:
     [*
-      GlobalOTDTable.SynchronizationAllMappingBrokerAndAPIByOption( CheckboxCustomOrder.Checked(),
-                                                                    CheckboxForecast.Checked() );
+      GlobalOTDTable.SynchronizationAllMappingBrokerAndAPIByOption( ApplicationMacroPlanner.GetUserName(),
+                                                                    CheckboxCustomOrder.Checked(),
+                                                                    CheckboxForecast.Checked(),
+                                                                    CheckboxUnitOfMeasure_MP.Checked(),
+                                                                    CheckboxSalesSegment_MP.Checked(),
+                                                                    CheckboxProduct_MP.Checked(),
+                                                                    CheckboxConversionFactor.Checked(),
+                                                                    CheckboxOperation.Checked(),
+                                                                    CheckboxOperationBOM.Checked(),
+                                                                    CheckboxProductInLane.Checked(),
+                                                                    CheckboxAIPISPIP.Checked(),
+                                                                    CheckboxInventorySupply.Checked(),
+                                                                    CheckboxStockingPointCost.Checked(),
+                                                                    CheckboxOperationCost.Checked(),
+                                                                    CheckboxDOI_DSI.Checked(),
+                                                                    CheckboxCustomerGrade.Checked(),
+                                                                    CheckboxStockingPoint_MP.Checked(),
+                                                                    CheckboxCurrency_MP.Checked(),
+                                                                    CheckboxCurrencyRate_MP.Checked(),
+                                                                    CheckboxLane.Checked(),
+                                                                    CheckboxLaneLeg.Checked() );
       
-      WebMessageBox::Success( "鎷夊彇鎴愬姛锛�", true );
+      WebMessageBox::Information( "鏁版嵁寮�濮嬫媺鍙栦腑锛侊紙浠呴檺涓�浜烘搷浣滐級", true );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def
index c2eb216..91508e3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def
@@ -13,10 +13,7 @@
   {
     Body:
     [*
-      businessTypes := construct( Strings );
-      businessTypes.Add( DropDownListBusinessType.Data().BusinessTypeName() );
       GlobalOTDTable.SynchronizeDataToMacroPlan( MacroPlan, 
-                                                 businessTypes,
                                                  CheckboxCustomOrder.Checked(),
                                                  CheckboxForecast.Checked()
                                                 );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
index 05dd2d6..a50ad14 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
@@ -7,9 +7,12 @@
   BaseType: 'WebForm'
   Children:
   [
-    #child: PanelInterfaceOptions
+    #child: PanelInterfaceOption1
     #child: PanelInterfaceTest
-    #child: PanelInterfaceTest981
+    #child: PanelInterfaceGlobal_BrokerExecuteLog
+    #child: PanelInterfaceOption2
+    #child: PanelInterfaceOption3
+    #child: PanelInterfaceOption4
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp b/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
index cb94597..bc71299 100644
--- a/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
+++ b/_Main/UI/MacroPlannerWebApp/_ROOT_Project_MacroPlannerWebApp.qp
@@ -5,7 +5,7 @@
   ProjectProperties
   {
     ApplicationComponentName: 'ApplicationMacroPlanner'
-    BuildVersion: '2022.3.0.32'
+    BuildVersion: '2022.3.0.84'
     Description: 'Quintiq Macro Planner'
     ProjectKind: 'WebClient'
   }

--
Gitblit v1.9.3