From d2ecbce7e1f1974a5ac1331dca5d18e35ecc58de Mon Sep 17 00:00:00 2001
From: hongjli <3117313295@qq.com>
Date: 星期三, 27 九月 2023 15:45:08 +0800
Subject: [PATCH] CustomOrder接口字段增加

---
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef#1.def                     |    1 
 _Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl                                                                              |   18 +
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def |   23 ++
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def                                            |   19 +
 _Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl                                                                                       |   29 ++
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInterfaceTest.def                                             |   24 ++
 _Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl                                                    |   20 ++
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listActionBarPageInterfaceTest.def                                     |   10 +
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def         |   28 ++
 /dev/null                                                                                                                                |    7 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_SheetProfitability.qbl                                                                 |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def                                                  |   41 ++++
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType#905.qbl                                                                      |    7 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_SegmentPriority.qbl                                                                    |    7 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductGrade.qbl                                                                       |    7 
 _Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderTime.qbl                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest.def                                                 |   37 +++
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgInterfaceTest_btnInterfaceTest_OnClick.def       |   16 +
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOptions.def                                              |   62 ++++++
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest981.def                                              |   14 +
 _Main/UI/MacroPlannerWebApp/Views/接口测试.vw                                                                                                |  146 ++++++++++++++
 _Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def                                       |   10 +
 _Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl                                                                       |   16 +
 23 files changed, 541 insertions(+), 15 deletions(-)

diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl
index 62a47a5..c405497 100644
--- a/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl
@@ -21,12 +21,16 @@
       EDIMLColumn OrderDate { Attribute: OrderDate ValueType: Date }
       EDIMLColumn OrderID { Attribute: OrderID ValueType: String }
       EDIMLColumn OrderLineID { Attribute: OrderLineID ValueType: String }
+      EDIMLColumn OrderTime { Attribute: OrderTime ValueType: Date }
       EDIMLColumn OrderType { Attribute: OrderType ValueType: String }
       EDIMLColumn Price { Attribute: Price ValueType: Real }
       EDIMLColumn PriorityName { Attribute: PriorityName ValueType: String }
+      EDIMLColumn ProductGrade { Attribute: ProductGrade ValueType: String }
       EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
       EDIMLColumn Quantity { Attribute: Quantity ValueType: Real }
       EDIMLColumn SalesSegmentName { Attribute: SalesSegmentName ValueType: String }
+      EDIMLColumn SegmentPriority { Attribute: SegmentPriority ValueType: String }
+      EDIMLColumn SheetProfitability { Attribute: SheetProfitability ValueType: String }
       EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
       EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
     }
@@ -93,7 +97,7 @@
       EDIODBCLinkColumn ORDERTIME
       {
         OthersMayUpdateColumn: true
-        ValueType: String
+        ValueType: DateTime
       }
       EDIODBCLinkColumn ORDERTYPE
       {
@@ -184,12 +188,33 @@
       }
       EDIColumnMatch { InputColumn: ORDERID OutputColumn: OrderID }
       EDIColumnMatch { InputColumn: ORDERLINEID OutputColumn: OrderLineID }
-      EDIColumnMatch { InputColumn: ORDERTIME OutputColumn: OrderType }
+      EDIColumnMatch
+      {
+        InputColumn: ORDERTIME
+        OutputColumn: OrderTime
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: ORDERTYPE OutputColumn: OrderType }
       EDIColumnMatch { InputColumn: PRICE OutputColumn: Price }
       EDIColumnMatch { InputColumn: PRIORITYNAME OutputColumn: PriorityName }
+      EDIColumnMatch { InputColumn: PRODUCTGRADE OutputColumn: ProductGrade }
       EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
       EDIColumnMatch { InputColumn: QUANTITY OutputColumn: Quantity }
       EDIColumnMatch { InputColumn: SALESEGMENTNAME OutputColumn: SalesSegmentName }
+      EDIColumnMatch { InputColumn: SEGMENTPRIORITY OutputColumn: SegmentPriority }
+      EDIColumnMatch { InputColumn: SHEETPROFITABILITY OutputColumn: SheetProfitability }
       EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
       EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
     }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl
new file mode 100644
index 0000000..79a5e28
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizationAllMappingBrokerAndAPIByOption.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method SynchronizationAllMappingBrokerAndAPIByOption (
+  Boolean isCustomOrder,
+  Boolean isForeacst
+)
+{
+  TextBody:
+  [*
+    if ( isCustomOrder ) {
+      this.Global_MappingCustomOrder( relflush );
+      this.GlobalOTDTable_CustomOrder().AsyncExecute();
+    }
+    
+    if ( isForeacst ) {
+      this.Global_MappingForecast( relflush );
+      this.GlobalOTDTable_Forecast().AsyncExecute();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl
new file mode 100644
index 0000000..b41460d
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Method SynchronizeDataToMacroPlan (
+  MacroPlan macroPlan,
+  Strings businessTypes,
+  Boolean isCustomOrder,
+  Boolean isForecast
+)
+{
+  TextBody:
+  [*
+    if ( isCustomOrder ) {
+      macroPlan.MappingCustomerOrderData( businessTypes, this );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderTime.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderTime.qbl
new file mode 100644
index 0000000..a9066b7
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderTime.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderTime
+{
+  #keys: '3[414702.0.462647536][414702.0.462647535][414702.0.462647537]'
+  ValueType: Date
+}
diff --git "a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType\043905.qbl" "b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType\043905.qbl"
new file mode 100644
index 0000000..7998bc6
--- /dev/null
+++ "b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType\043905.qbl"
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderType
+{
+  #keys: '3[414702.0.462647526][414702.0.462647525][414702.0.462647527]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType.qbl
deleted file mode 100644
index 7e887b1..0000000
--- a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_OrderType.qbl
+++ /dev/null
@@ -1,7 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute OrderType
-{
-  #keys: '3[414702.0.265050347][414702.0.265050346][414702.0.265050348]'
-  ValueType: String
-}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductGrade.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductGrade.qbl
new file mode 100644
index 0000000..2eff593
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_ProductGrade.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductGrade
+{
+  #keys: '3[414702.0.462647546][414702.0.462647545][414702.0.462647547]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_SegmentPriority.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_SegmentPriority.qbl
new file mode 100644
index 0000000..47ce029
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_SegmentPriority.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SegmentPriority
+{
+  #keys: '3[414702.0.462647556][414702.0.462647555][414702.0.462647557]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/Attribute_SheetProfitability.qbl b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_SheetProfitability.qbl
new file mode 100644
index 0000000..d1c49f7
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomOrder/Attribute_SheetProfitability.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SheetProfitability
+{
+  #keys: '3[414702.0.462647566][414702.0.462647565][414702.0.462647567]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
index bee6304..3a572dc 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
@@ -33,12 +33,18 @@
         }
     //  if( not isnull( Product_MP::FindById( this, item.ProductID() ) ) ){
     //    info( item.ProductID().AsQUILL() );
-      CustomerOrder::CreateOrUpdate( this, item.CurrencyID(), item.Customer(), item.CustomerID(), item.ID(), 
-                                     item.OrderDate(), item.OrderID(), item.OrderLineID(), item.Price(), 
-                                     priorityName, item.ProductID(), 
-                                     item.StockingPointID(), 
-                                     item.SalesSegmentName(), 
-                                     item.Quantity(), item.UnitOfMeasureName(), item.OrderType(), item.IsAvailable());
+      customOrder := CustomerOrder::CreateOrUpdate( this, item.CurrencyID(), item.Customer(), item.CustomerID(), item.ID(), 
+                                                    item.OrderDate(), item.OrderID(), item.OrderLineID(), item.Price(), 
+                                                    priorityName, item.ProductID(), 
+                                                    item.StockingPointID(), 
+                                                    item.SalesSegmentName(), 
+                                                    item.Quantity(), item.UnitOfMeasureName(), item.OrderType(), item.IsAvailable());
+      customOrder.BusinessType( item.BusinessType() );
+      customOrder.OrderType( item.OrderType() );
+      customOrder.OrderTime( item.OrderTime() );
+      customOrder.ProductGrade( item.ProductGrade() );
+      customOrder.SegmentPriority( item.SegmentPriority() );
+      customOrder.SheetProfitability( item.SheetProfitability() );
     //  }else{
     //    info( "invaild product: " + item.ProductID().AsQUILL() );
     //    }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInterfaceTest.def
new file mode 100644
index 0000000..5941080
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInterfaceTest.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component abgInterfaceTest
+{
+  #keys: '[414702.0.457001887]'
+  BaseType: 'WebActionBarGroup'
+  Children:
+  [
+    Component btnInterfaceTest
+    {
+      #keys: '[414702.0.459575623]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'BEAR'
+        Label: '鎺ュ彛娴嬭瘯'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 5
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef\0431.def"
index 42787dc..7966b9e 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef\0431.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef\0431.def"
@@ -4,5 +4,6 @@
   Children:
   [
     #child: abgTest
+    #child: abgInterfaceTest
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgInterfaceTest_btnInterfaceTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgInterfaceTest_btnInterfaceTest_OnClick.def
new file mode 100644
index 0000000..d330b41
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgInterfaceTest_btnInterfaceTest_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: abgInterfaceTest/btnInterfaceTest
+Response OnClick () id:Response_TIANMA_JITUAN_abgInterfaceTest_btnInterfaceTest_OnClick
+{
+  #keys: '[414702.0.459575742]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "鎺ュ彛娴嬭瘯", true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def
new file mode 100644
index 0000000..e94876e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_ListInterfaceTest.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListInterfaceTest
+{
+  #keys: '[414702.0.459846558]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorInterfaceTest
+    {
+      #keys: '[414702.0.459846559]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'GlobalOTDTable'
+        Source: 'GlobalOTDTable'
+        Taborder: 0
+        Transformation: 'Global_BrokerExecuteLog'
+      ]
+    }
+    #child: listActionBarPageInterfaceTest
+    Component DataSetLevelInterfaceTest
+    {
+      #keys: '[414702.0.459846564]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuInterfaceTest
+      ]
+      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"}}]'
+        ContextMenu: 'listContextMenuInterfaceTest'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOptions.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOptions.def
new file mode 100644
index 0000000..4fe176c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceOptions.def
@@ -0,0 +1,62 @@
+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
new file mode 100644
index 0000000..90f59dd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+Component PanelInterfaceTest
+{
+  #keys: '[414702.0.459815967]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component ButtonPullInterfaceDataToIntermediateTable
+    {
+      #keys: '[414702.0.457042579]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'WINE'
+        Label: '鎷夊彇鎺ュ彛鏁版嵁鍒颁腑闂磋〃'
+        Taborder: 0
+      ]
+    }
+    Component ButtonSynchronizeDataToMacroPlan
+    {
+      #keys: '[414702.0.461471389]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'COFFEE_MACHINE'
+        Label: '鍚屾鏁版嵁鍒癕acroPlan'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest981.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest981.def
new file mode 100644
index 0000000..b8b4a3f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_PanelInterfaceTest981.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelInterfaceTest981
+{
+  #keys: '[414702.0.459917264]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListInterfaceTest
+  ]
+  Properties:
+  [
+    Taborder: 2
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listActionBarPageInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listActionBarPageInterfaceTest.def
new file mode 100644
index 0000000..fc5877b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listActionBarPageInterfaceTest.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageInterfaceTest
+{
+  #keys: '[414702.0.459846561]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def
new file mode 100644
index 0000000..d260c2c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Component_listContextMenuInterfaceTest.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuInterfaceTest
+{
+  #keys: '[414702.0.459846566]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def
new file mode 100644
index 0000000..7ec600a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnCli.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: PanelInterfaceTest/ButtonPullInterfaceDataToIntermediateTable
+Response OnClick () id:Response_PanelInterfaceTest_ButtonPullInterfaceDataToIntermediateTable_OnClick
+{
+  #keys: '[414702.0.459947783]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( GlobalOTDTable );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      GlobalOTDTable.SynchronizationAllMappingBrokerAndAPIByOption( CheckboxCustomOrder.Checked(),
+                                                                    CheckboxForecast.Checked() );
+      
+      WebMessageBox::Success( "鎷夊彇鎴愬姛锛�", 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
new file mode 100644
index 0000000..c2eb216
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick.def
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: PanelInterfaceTest/ButtonSynchronizeDataToMacroPlan
+Response OnClick () id:Response_PanelInterfaceTest_ButtonSynchronizeDataToMacroPlan_OnClick
+{
+  #keys: '[414702.0.465857875]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( GlobalOTDTable ) and not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      businessTypes := construct( Strings );
+      businessTypes.Add( DropDownListBusinessType.Data().BusinessTypeName() );
+      GlobalOTDTable.SynchronizeDataToMacroPlan( MacroPlan, 
+                                                 businessTypes,
+                                                 CheckboxCustomOrder.Checked(),
+                                                 CheckboxForecast.Checked()
+                                                );
+      
+      WebMessageBox::Success( "鍚屾鎴愬姛锛�", true );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
new file mode 100644
index 0000000..05dd2d6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormInterfaceTest
+{
+  #keys: '[414702.0.459670964]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: PanelInterfaceOptions
+    #child: PanelInterfaceTest
+    #child: PanelInterfaceTest981
+  ]
+  Properties:
+  [
+    Image: 'BACON'
+    Title: '鎺ュ彛娴嬭瘯'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/\346\216\245\345\217\243\346\265\213\350\257\225.vw" "b/_Main/UI/MacroPlannerWebApp/Views/\346\216\245\345\217\243\346\265\213\350\257\225.vw"
new file mode 100644
index 0000000..ae3c000
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Views/\346\216\245\345\217\243\346\265\213\350\257\225.vw"
@@ -0,0 +1,146 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormInterfaceTest
+      {
+        title: 'QTIANMA_JITUAN::FormInterfaceTest'
+        shown: true
+        componentID: 'QTIANMA_JITUAN::FormInterfaceTest'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 16
+          columnPosition: 1
+          columnSpan: 7
+        }
+        components: null
+      }
+      form_FormOptimizerPuzzles
+      {
+        title: 'Optimizer Puzzles'
+        shown: false
+        componentID: 'FormOptimizerPuzzles'
+        layout
+        {
+          mode: 'dockright'
+          index: 0
+        }
+        components
+        {
+          FormOptimizerPuzzles_ListOptimizerPuzzles
+          {
+          }
+          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: 'Name'
+              index: 1
+              subtotals: ''
+              width: 109
+            }
+            column_Description
+            {
+              columnId: 'Description'
+              dataPath: 'Description'
+              dataType: 'string'
+              title: 'Description'
+              index: 2
+              subtotals: ''
+              width: 207
+            }
+          }
+        }
+      }
+      form_FormKPI
+      {
+        title: 'KPI Dashboard'
+        shown: true
+        componentID: 'FormKPI'
+        layout
+        {
+          mode: 'dockright'
+          index: 1
+        }
+        components
+        {
+          FormKPI_PanelKPI
+          {
+            sizeRatio: 1
+            activeChild: 'PanelKPISelection'
+          }
+          FormKPI_PanelKPIDashboard
+          {
+            sizeRatio: 1
+          }
+          FormKPI_PanelKPISelection
+          {
+            sizeRatio: 1
+          }
+          FormKPI_ListKPISelection
+          {
+            QuillViewData
+            {
+              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
+            }
+          }
+          FormKPI_DataSetLevelKPISelection
+          {
+            groupDepth: -1
+            column_All_constraints
+            {
+              columnId: 'All constraints'
+              dataPath: 'All constraints'
+              dataType: 'string'
+              title: 'All constraints'
+              index: 0
+              subtotals: ''
+              width: 32
+            }
+            column_Name
+            {
+              columnId: 'Name'
+              dataPath: 'Name'
+              dataType: 'string'
+              title: 'Name'
+              index: 1
+              subtotals: ''
+              width: 200
+            }
+          }
+        }
+      }
+    }
+    userconfigurableinformation
+    {
+    }
+    page: ''
+    group: ''
+    index: 0
+    image: 'SKIN_TIGER'
+    description: ''
+  }
+  formatversion: 2
+  id: '鎺ュ彛娴嬭瘯'
+  name: '鎺ュ彛娴嬭瘯'
+  isglobal: false
+  isroot: true
+}

--
Gitblit v1.9.3