From 79fecb110aece49ed850c72c5b33a5c36eb1338d Mon Sep 17 00:00:00 2001
From: lihongji <3117313295@qq.com>
Date: 星期二, 04 六月 2024 18:19:54 +0800
Subject: [PATCH] 库存更新

---
 _Main/BL/Type_InventoryPointSelection/Attribute_IsIncluded.qbl                                                                              |    7 
 _var/_Main/ModelSettings/Common/_ROOT_Role_Common.properties                                                                                |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Response_listContextMenuInventoryInterfaceData_mTest_OnClick.def           |   16 
 _Main/BL/Relations/Relation_InventoryInterfaceData_InterfaceDataset_InterfaceDataset_InventoryI.qbl                                         |   23 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Response_List1_MenuDelete_OnClick.def                                                |   15 
 _Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def                                                         |    2 
 _Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Method_InventoryPointSelection.def                                      |   20 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swBottom.def                                                               |   20 
 _Main/BL/Dataset_InterfaceDataset/_ROOT_Dataset_InterfaceDataset.qbl                                                                        |    9 
 _Main/BL/Type_InventoryPointSelection/Attribute_ProductID.qbl                                                                               |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageInventory.def                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Method_OnOK.def                                                         |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_listActionBarPageInventoryInterfaceData.def                      |   10 
 _Main/BL/Type_InventoryPointSelection/_ROOT_Type_InventoryPointSelection.qbl                                                                |    9 
 _Main/BL/Type_DMF_CustomLogic/Method_OnFinished.qbl                                                                                         |    3 
 _Main/BL/Type_InventoryInterfaceData/StaticMethod_Test.qbl                                                                                  |   24 +
 _Main/BL/Relations/Relation_InventoryPointSelection_InterfaceDataset_InterfaceDataset_Inventory.qbl                                         |   23 
 _Main/BL/Type_InterfaceDataset/StaticMethod_OnServerStartup.qbl                                                                             |   23 
 _Main/BL/Type_InventoryInterfaceDataDetail/Attribute_Quantity.qbl                                                                           |    7 
 _Main/Sys/Repr/Global/InventoryInterfaceDataDetail.qrp                                                                                      |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_ListInventoryPointSelection.def                                 |   60 ++
 _var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties                                                               |    2 
 _Main/BL/Type_InventoryInterfaceData/Attribute_PartNumber.qbl                                                                               |    7 
 _Main/BL/Relations/Relation_InventoryPointSelection_InventoryInterfaceDataDetail_InventoryInter.qbl                                         |   23 
 _Main/BL/Type_InventoryInterfaceDataDetail/Attribute_InventoryPoint.qbl                                                                     |    7 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swTop.def                                                                  |   29 +
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_listContextMenuInventoryPointSelection.def                      |   57 ++
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_listActionBarPageInventoryPointSelection.def                    |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/_ROOT_Component_FormInventoryPointSelection.def                           |   16 
 _Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Response_pnlActions_btnOk_OnClick.def                                   |   15 
 _Main/BL/Type_InventoryInterfaceDataDetail/Attribute_Date.qbl                                                                               |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_ListInventoryInterfaceData.def                                   |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mInventoryPointSelection_OnClick.def |   25 +
 _Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Component_pnlActions.def                                                |   40 +
 _Main/Sys/Repr/Global/InventoryInterfaceData.qrp                                                                                            |   18 
 _Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/_ROOT_Component_DialogInventoryPointSelection.def                       |   33 +
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgInvnetoryDev_btnInvnetoryUpdate_OnClick.def          |   16 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mEnable_OnClick.def                  |   18 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInvnetoryDev.def                                                 |   25 +
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_List1.def                                                                  |   46 +
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_ListInventoryInterfaceDataDetail.def                       |   42 +
 _Main/UI/MacroPlannerWebApp/Views/InvnetoryUpdate.vw                                                                                        |  296 ++++++++++++
 _Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Response_pnlActions_btnCancel_OnClick.def                               |   15 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis822/_ROOT_Component_frmStandardAnalysis822.def                                           |   17 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def                                   |    1 
 _Main/BL/Type_InventoryInterfaceData/_ROOT_Type_InventoryInterfaceData.qbl                                                                  |    9 
 _Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Component_pnlContent.def                                                |   63 ++
 _Main/BL/Type_InventoryInterfaceData/Attribute_Date.qbl                                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_listContextMenuInventoryInterfaceData.def                        |   24 +
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/_ROOT_Component_FormInventoryInterfaceDataDetail.def                 |   16 
 _Main/BL/Type_InventoryInterfaceDataDetail/Attribute_PartNumber.qbl                                                                         |    8 
 _Main/BL/Type_InventoryInterfaceDataDetail/_ROOT_Type_InventoryInterfaceDataDetail.qbl                                                      |   19 
 _Main/BL/Type_InventoryPointSelection/Attribute_InventoryPoint.qbl                                                                          |    7 
 _Main/Sys/ImgAttr/InventoryPointSelection.dme                                                                                               |   25 +
 _Main/BL/Type_InterfaceDataset/_ROOT_Type_InterfaceDataset.qbl                                                                              |    9 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swTopMost.def                                                              |   30 +
 _Main/BL/Relations/Relation_InventoryInterfaceDataDetail_InventoryInterfaceData_InventoryInterf.qbl                                         |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/_ROOT_Component_FormInventoryInterfaceData.def                             |   16 
 _Main/BL/Type_InventoryPointSelection/Attribute_StockpoingPoint.qbl                                                                         |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_listActionBarPageInventoryInterfaceDataDetail.def          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mDisable_OnClick.def                 |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_listContextMenuInventoryInterfaceDataDetail.def            |   10 
 62 files changed, 1,426 insertions(+), 3 deletions(-)

diff --git a/_Main/BL/Dataset_InterfaceDataset/_ROOT_Dataset_InterfaceDataset.qbl b/_Main/BL/Dataset_InterfaceDataset/_ROOT_Dataset_InterfaceDataset.qbl
new file mode 100644
index 0000000..637e9b6
--- /dev/null
+++ b/_Main/BL/Dataset_InterfaceDataset/_ROOT_Dataset_InterfaceDataset.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Dataset InterfaceDataset
+{
+  #keys: '2[413988.0.1220100065][413988.0.1220100064]'
+  DefaultMDSName: 'InterfaceDataset'
+  InstanceType: InterfaceDataset
+}
diff --git a/_Main/BL/Relations/Relation_InventoryInterfaceDataDetail_InventoryInterfaceData_InventoryInterf.qbl b/_Main/BL/Relations/Relation_InventoryInterfaceDataDetail_InventoryInterfaceData_InventoryInterf.qbl
new file mode 100644
index 0000000..7eb41c7
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventoryInterfaceDataDetail_InventoryInterfaceData_InventoryInterf.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventoryInterfaceDataDetail_InventoryInterfaceData_InventoryInterfaceData_InventoryInterfaceDataDetail
+{
+  #keys: '1[413988.0.1225354673]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide InventoryInterfaceData
+  {
+    #keys: '3[413988.0.1225354675][413988.0.1225354674][413988.0.1225354676]'
+    Cardinality: '0to1'
+    ObjectDefinition: InventoryInterfaceDataDetail
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide InventoryInterfaceDataDetail
+  {
+    #keys: '3[413988.0.1225354678][413988.0.1225354677][413988.0.1225354679]'
+    Cardinality: '1toN'
+    ObjectDefinition: InventoryInterfaceData
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_InventoryInterfaceData_InterfaceDataset_InterfaceDataset_InventoryI.qbl b/_Main/BL/Relations/Relation_InventoryInterfaceData_InterfaceDataset_InterfaceDataset_InventoryI.qbl
new file mode 100644
index 0000000..1ede96d
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventoryInterfaceData_InterfaceDataset_InterfaceDataset_InventoryI.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventoryInterfaceData_InterfaceDataset_InterfaceDataset_InventoryInterfaceData
+{
+  #keys: '1[413988.0.1225354618]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide InterfaceDataset
+  {
+    #keys: '3[413988.0.1225354620][413988.0.1225354619][413988.0.1225354621]'
+    Cardinality: '0to1'
+    ObjectDefinition: InventoryInterfaceData
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide InventoryInterfaceData
+  {
+    #keys: '3[413988.0.1225354623][413988.0.1225354622][413988.0.1225354624]'
+    Cardinality: '1toN'
+    ObjectDefinition: InterfaceDataset
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_InventoryPointSelection_InterfaceDataset_InterfaceDataset_Inventory.qbl b/_Main/BL/Relations/Relation_InventoryPointSelection_InterfaceDataset_InterfaceDataset_Inventory.qbl
new file mode 100644
index 0000000..3fc848b
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventoryPointSelection_InterfaceDataset_InterfaceDataset_Inventory.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventoryPointSelection_InterfaceDataset_InterfaceDataset_InventoryPointSelection
+{
+  #keys: '1[413988.0.1225354693]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide InterfaceDataset
+  {
+    #keys: '3[413988.0.1225354695][413988.0.1225354694][413988.0.1225354696]'
+    Cardinality: '0to1'
+    ObjectDefinition: InventoryPointSelection
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide InventoryPointSelection
+  {
+    #keys: '3[413988.0.1225354698][413988.0.1225354697][413988.0.1225354699]'
+    Cardinality: '1toN'
+    ObjectDefinition: InterfaceDataset
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_InventoryPointSelection_InventoryInterfaceDataDetail_InventoryInter.qbl b/_Main/BL/Relations/Relation_InventoryPointSelection_InventoryInterfaceDataDetail_InventoryInter.qbl
new file mode 100644
index 0000000..0635d2f
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventoryPointSelection_InventoryInterfaceDataDetail_InventoryInter.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventoryPointSelection_InventoryInterfaceDataDetail_InventoryInterfaceDataDetail_InventoryPointSelection
+{
+  #keys: '1[413988.0.1225354706]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide InventoryInterfaceDataDetail
+  {
+    #keys: '3[413988.0.1225354708][413988.0.1225354707][413988.0.1225354709]'
+    Cardinality: '1toN'
+    ObjectDefinition: InventoryPointSelection
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide InventoryPointSelection
+  {
+    #keys: '3[413988.0.1225354711][413988.0.1225354710][413988.0.1225354712]'
+    Cardinality: '0to1'
+    ObjectDefinition: InventoryInterfaceDataDetail
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Type_DMF_CustomLogic/Method_OnFinished.qbl b/_Main/BL/Type_DMF_CustomLogic/Method_OnFinished.qbl
index 60920c4..2ef99c2 100644
--- a/_Main/BL/Type_DMF_CustomLogic/Method_OnFinished.qbl
+++ b/_Main/BL/Type_DMF_CustomLogic/Method_OnFinished.qbl
@@ -18,6 +18,9 @@
     // 鍒涘缓瀛樻。鐘舵�佹暟鎹泦
     ArchiveExecutionStatus::OnServerStartup();
     
+    // 鍒涘缓鎺ュ彛鏁版嵁闆�
+    InterfaceDataset::OnServerStartup();
+    
     // Create MPDomainHandler
     MPDomainHandler::OnServerStartup();
     
diff --git a/_Main/BL/Type_InterfaceDataset/StaticMethod_OnServerStartup.qbl b/_Main/BL/Type_InterfaceDataset/StaticMethod_OnServerStartup.qbl
new file mode 100644
index 0000000..5b0f5b8
--- /dev/null
+++ b/_Main/BL/Type_InterfaceDataset/StaticMethod_OnServerStartup.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod OnServerStartup
+{
+  TextBody:
+  [*
+    // lihongji May-15-2024 (created)
+    folder := DomainModel::Domain().MDSFolderDefinitions().FindFolder( "/root" );
+    
+    datasetName := typeof( InterfaceDataset ).Name();
+    
+    oinfo := MDSEditor::Editor().ObjectInfos( datasetName, folder.FolderID(), datasetName );
+    
+    o := select( oinfo, Elements, o, not o.IsLoaded() );
+    emptydataset := isnull( o );
+    
+    if ( emptydataset ) {
+      MDSInterfaceDataset::CreateMDS( datasetName, DMF_Utility::GetStorageState() );
+    } else {
+      MDSInterfaceDataset::LoadMDSAndConvert( o.MDSID(), DMF_Utility::GetStorageState() );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_InterfaceDataset/_ROOT_Type_InterfaceDataset.qbl b/_Main/BL/Type_InterfaceDataset/_ROOT_Type_InterfaceDataset.qbl
new file mode 100644
index 0000000..2d0430b
--- /dev/null
+++ b/_Main/BL/Type_InterfaceDataset/_ROOT_Type_InterfaceDataset.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InterfaceDataset
+{
+  #keys: '5[413988.0.1220100061][413988.0.1220100059][0.0.0][413988.0.1220100060][413988.0.1220100062]'
+  BaseType: Object
+  StructuredName: 'InterfaceDatasets'
+}
diff --git a/_Main/BL/Type_InventoryInterfaceData/Attribute_Date.qbl b/_Main/BL/Type_InventoryInterfaceData/Attribute_Date.qbl
new file mode 100644
index 0000000..9493827
--- /dev/null
+++ b/_Main/BL/Type_InventoryInterfaceData/Attribute_Date.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Date
+{
+  #keys: '3[413988.0.1225354599][413988.0.1225354598][413988.0.1225354600]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_InventoryInterfaceData/Attribute_PartNumber.qbl b/_Main/BL/Type_InventoryInterfaceData/Attribute_PartNumber.qbl
new file mode 100644
index 0000000..0907d2f
--- /dev/null
+++ b/_Main/BL/Type_InventoryInterfaceData/Attribute_PartNumber.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PartNumber
+{
+  #keys: '3[413988.0.1225354609][413988.0.1225354608][413988.0.1225354610]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_InventoryInterfaceData/StaticMethod_Test.qbl b/_Main/BL/Type_InventoryInterfaceData/StaticMethod_Test.qbl
new file mode 100644
index 0000000..7291d1d
--- /dev/null
+++ b/_Main/BL/Type_InventoryInterfaceData/StaticMethod_Test.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Test (
+  InterfaceDataset interfaceDataset
+)
+{
+  TextBody:
+  [*
+    interfaceDataset.InventoryInterfaceData( relflush );
+    interfaceDataset.InventoryPointSelection( relflush );
+    
+    interfaceDataset.InventoryPointSelection( relnew, ProductID := "065100010N", InventoryPoint := "PXSN" );
+    
+    iid1 := interfaceDataset.InventoryInterfaceData( relnew, Date := Date::ActualDate() + 1, PartNumber := "065100010N" );
+    iid1.InventoryInterfaceDataDetail( relnew, Date := Date::ActualDate() + 1, PartNumber := "065100010N", InventoryPoint := "PXSN", Quantity := 900 );
+    iid1.InventoryInterfaceDataDetail( relnew, Date := Date::ActualDate() + 1, PartNumber := "065100010N", InventoryPoint := "LPLE", Quantity := 800 );
+    iid1.InventoryInterfaceDataDetail( relnew, Date := Date::ActualDate() + 1, PartNumber := "065100010N", InventoryPoint := "3PLE", Quantity := 3100 );
+    
+    iid2 := interfaceDataset.InventoryInterfaceData( relnew, Date := Date::ActualDate() - 1, PartNumber := "065100010S" );
+    iid2.InventoryInterfaceDataDetail( relnew, Date := Date::ActualDate() - 1, PartNumber := "065100010S", InventoryPoint := "ABCD", Quantity := 234 );
+    iid2.InventoryInterfaceDataDetail( relnew, Date := Date::ActualDate() - 1, PartNumber := "065100010S", InventoryPoint := "EIOI", Quantity := 454 );
+    iid2.InventoryInterfaceDataDetail( relnew, Date := Date::ActualDate() - 1, PartNumber := "065100010S", InventoryPoint := "SDNL", Quantity := 232 );
+  *]
+}
diff --git a/_Main/BL/Type_InventoryInterfaceData/_ROOT_Type_InventoryInterfaceData.qbl b/_Main/BL/Type_InventoryInterfaceData/_ROOT_Type_InventoryInterfaceData.qbl
new file mode 100644
index 0000000..2446e9c
--- /dev/null
+++ b/_Main/BL/Type_InventoryInterfaceData/_ROOT_Type_InventoryInterfaceData.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventoryInterfaceData
+{
+  #keys: '5[413988.0.1225354590][413988.0.1225354588][0.0.0][413988.0.1225354589][413988.0.1225354591]'
+  BaseType: Object
+  StructuredName: 'InventoryInterfaceDatas'
+}
diff --git a/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_Date.qbl b/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_Date.qbl
new file mode 100644
index 0000000..045e3a1
--- /dev/null
+++ b/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_Date.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Date
+{
+  #keys: '3[413988.0.1225354634][413988.0.1225354633][413988.0.1225354635]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_InventoryPoint.qbl b/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_InventoryPoint.qbl
new file mode 100644
index 0000000..5f73b14
--- /dev/null
+++ b/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_InventoryPoint.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InventoryPoint
+{
+  #keys: '3[413988.0.1225354654][413988.0.1225354653][413988.0.1225354655]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_PartNumber.qbl b/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_PartNumber.qbl
new file mode 100644
index 0000000..9b26d4a
--- /dev/null
+++ b/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_PartNumber.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PartNumber
+{
+  #keys: '3[413988.0.1225354644][413988.0.1225354643][413988.0.1225354645]'
+  Description: 's'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_Quantity.qbl b/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_Quantity.qbl
new file mode 100644
index 0000000..d34954c
--- /dev/null
+++ b/_Main/BL/Type_InventoryInterfaceDataDetail/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[413988.0.1225354664][413988.0.1225354663][413988.0.1225354665]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_InventoryInterfaceDataDetail/_ROOT_Type_InventoryInterfaceDataDetail.qbl b/_Main/BL/Type_InventoryInterfaceDataDetail/_ROOT_Type_InventoryInterfaceDataDetail.qbl
new file mode 100644
index 0000000..3af4ef4
--- /dev/null
+++ b/_Main/BL/Type_InventoryInterfaceDataDetail/_ROOT_Type_InventoryInterfaceDataDetail.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventoryInterfaceDataDetail
+{
+  #keys: '5[413988.0.1225354595][413988.0.1225354593][0.0.0][413988.0.1225354594][413988.0.1225354596]'
+  BaseType: Object
+  OnCreate:
+  [*
+    ips := select( this, InventoryInterfaceData.InterfaceDataset.InventoryPointSelection, tempIPS, tempIPS.ProductID() = this.PartNumber() and tempIPS.InventoryPoint() = this.InventoryPoint() );
+    
+    if ( isnull( ips ) ) {
+      ips := this.InventoryInterfaceData().InterfaceDataset().InventoryPointSelection( relnew, ProductID := this.PartNumber(), InventoryPoint := this.InventoryPoint() );
+    }
+    
+    this.InventoryPointSelection( relset, ips );
+  *]
+  StructuredName: 'InventoryInterfaceDataDetails'
+}
diff --git a/_Main/BL/Type_InventoryPointSelection/Attribute_InventoryPoint.qbl b/_Main/BL/Type_InventoryPointSelection/Attribute_InventoryPoint.qbl
new file mode 100644
index 0000000..3f92cb3
--- /dev/null
+++ b/_Main/BL/Type_InventoryPointSelection/Attribute_InventoryPoint.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InventoryPoint
+{
+  #keys: '3[413988.0.1225354742][413988.0.1225354741][413988.0.1225354743]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_InventoryPointSelection/Attribute_IsIncluded.qbl b/_Main/BL/Type_InventoryPointSelection/Attribute_IsIncluded.qbl
new file mode 100644
index 0000000..4dee6cb
--- /dev/null
+++ b/_Main/BL/Type_InventoryPointSelection/Attribute_IsIncluded.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsIncluded
+{
+  #keys: '3[413988.0.1225354722][413988.0.1225354721][413988.0.1225354723]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_InventoryPointSelection/Attribute_ProductID.qbl b/_Main/BL/Type_InventoryPointSelection/Attribute_ProductID.qbl
new file mode 100644
index 0000000..6e6c548
--- /dev/null
+++ b/_Main/BL/Type_InventoryPointSelection/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[413988.0.1225354732][413988.0.1225354731][413988.0.1225354733]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_InventoryPointSelection/Attribute_StockpoingPoint.qbl b/_Main/BL/Type_InventoryPointSelection/Attribute_StockpoingPoint.qbl
new file mode 100644
index 0000000..4ebcbf0
--- /dev/null
+++ b/_Main/BL/Type_InventoryPointSelection/Attribute_StockpoingPoint.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockpoingPoint
+{
+  #keys: '3[413988.0.1225354752][413988.0.1225354751][413988.0.1225354753]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_InventoryPointSelection/_ROOT_Type_InventoryPointSelection.qbl b/_Main/BL/Type_InventoryPointSelection/_ROOT_Type_InventoryPointSelection.qbl
new file mode 100644
index 0000000..69e3743
--- /dev/null
+++ b/_Main/BL/Type_InventoryPointSelection/_ROOT_Type_InventoryPointSelection.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InventoryPointSelection
+{
+  #keys: '5[413988.0.1225354690][413988.0.1225354688][0.0.0][413988.0.1225354689][413988.0.1225354691]'
+  BaseType: Object
+  StructuredName: 'InventoryPointSelections'
+}
diff --git a/_Main/Sys/ImgAttr/InventoryPointSelection.dme b/_Main/Sys/ImgAttr/InventoryPointSelection.dme
new file mode 100644
index 0000000..d8ef43a
--- /dev/null
+++ b/_Main/Sys/ImgAttr/InventoryPointSelection.dme
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+TypeDataInterface InventoryPointSelection
+{
+  TypeKey: '[413988.0.1225354688]'
+  ImageDataMember ImgIsIncluded
+  {
+    #keys: '1[413988.0.1227912357]'
+    ImageSpecifications:
+    [
+      ImageDataMemberImageSpecification
+      {
+        Image: 'CHECKEDCHECKBOX'
+        Quill: 'object.IsIncluded()'
+        Value: 'Included'
+      }
+      ImageDataMemberImageSpecification
+      {
+        Image: 'EMPTYCHECKBOX'
+        Quill: 'not object.IsIncluded()'
+        Value: 'NotIncluded'
+      }
+    ]
+  }
+}
diff --git a/_Main/Sys/Repr/Global/InventoryInterfaceData.qrp b/_Main/Sys/Repr/Global/InventoryInterfaceData.qrp
new file mode 100644
index 0000000..9b40d0b
--- /dev/null
+++ b/_Main/Sys/Repr/Global/InventoryInterfaceData.qrp
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation InventoryInterfaceData
+{
+  AttributeRepresentation Date
+  {
+    AttributeKey: '[413988.0.1225354598]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'Y/M2/D2'
+      InheritFormatting: false
+    }
+  }
+  RelationRepresentation InterfaceDataset { RelationKey: '[413988.0.1225354619]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/InventoryInterfaceDataDetail.qrp b/_Main/Sys/Repr/Global/InventoryInterfaceDataDetail.qrp
new file mode 100644
index 0000000..17d38b5
--- /dev/null
+++ b/_Main/Sys/Repr/Global/InventoryInterfaceDataDetail.qrp
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation InventoryInterfaceDataDetail
+{
+  AttributeRepresentation Date
+  {
+    AttributeKey: '[413988.0.1225354633]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'Y/M2/D2'
+      InheritFormatting: false
+    }
+  }
+  RelationRepresentation InventoryInterfaceData { RelationKey: '[413988.0.1225354674]' Visibility: 'Normal' }
+}
diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
index 422e889..899ebeb 100644
--- a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
+++ b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
@@ -82,6 +82,7 @@
         Component menuSeparator222 { #keys: '[413988.0.1172464289]' BaseType: 'Menu' Properties: [ Separator: true ] }
         Component ComponentMenu347 { #keys: '[413988.0.1172464302]' BaseType: 'ComponentMenu' Properties: [ ComponentType: 'FormTest1' Text: '' ] }
         Component ComponentMenu357 { #keys: '[414996.0.395684386]' BaseType: 'ComponentMenu' Properties: [ ComponentType: 'frmStandardAnalysis589' Text: 'Archive Execution Status' ] }
+        Component ComponentMenu702 { #keys: '[413988.0.1234424010]' BaseType: 'ComponentMenu' Properties: [ ComponentType: 'frmStandardAnalysis822' Text: 'Interface Dataset' ] }
       ]
       Properties:
       [
@@ -100,6 +101,7 @@
           c: menuSeparator833
           c: ComponentMenu469
           c: ComponentMenu357
+          c: ComponentMenu702
           c: menuSeparator222
           c: ComponentMenu347
         }
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_List1.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_List1.def
new file mode 100644
index 0000000..fc07df2
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_List1.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component List1
+{
+  #keys: '[530.0.3531950]'
+  BaseType: 'List1'
+  IsDerived: true
+  Children:
+  [
+    Component popupList1
+    {
+      #keys: '[530.0.5957094]'
+      BaseType: 'popupList1'
+      IsDerived: true
+      Children:
+      [
+        Component PopupParent
+        {
+          #keys: '[514.0.129466]'
+          BaseType: 'PopupParent'
+          IsDerived: true
+          Children:
+          [
+            Component menuSeparator { #keys: '[413988.0.1234255023]' BaseType: 'Menu' Properties: [ Separator: true ] }
+            Component MenuDelete { #keys: '[413988.0.1234255079]' BaseType: 'Menu' Properties: [ Image: 'DELETE' Text: 'Delete' ] }
+          ]
+          Properties:
+          [
+            ModeledStringList ChildOrdering
+            {
+              c: MenuActions
+              c: MenuFilter
+              c: menuListQuintiqSetQuantor
+              c: menuOLSeparator0
+              c: menuUseFilter
+              c: menuAppendFilter
+              c: menuClearAnalysisFilter
+              c: MenuClearAnalysisConfigurationsList
+              c: menuSeparator
+              c: MenuDelete
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swBottom.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swBottom.def
new file mode 100644
index 0000000..1541eaf
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swBottom.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+Component swBottom
+{
+  #keys: '[530.0.3531811]'
+  BaseType: 'swBottom'
+  IsDerived: true
+  Children:
+  [
+    Component spBottomRight
+    {
+      #keys: '[530.0.3531813]'
+      BaseType: 'spBottomRight'
+      IsDerived: true
+      Children:
+      [
+        #child: List1
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swTop.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swTop.def
new file mode 100644
index 0000000..cc57eb2
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swTop.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+Component swTop
+{
+  #keys: '[530.0.3531806]'
+  BaseType: 'swTop'
+  IsDerived: true
+  Children:
+  [
+    Component spTopLeft
+    {
+      #keys: '[530.0.3531807]'
+      BaseType: 'spTopLeft'
+      IsDerived: true
+      Children:
+      [
+        Component Analysis
+        {
+          #keys: '[530.0.3532065]'
+          BaseType: 'Analysis'
+          IsDerived: true
+          Properties:
+          [
+            GlobalInstance: 'InterfaceDataset'
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swTopMost.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swTopMost.def
new file mode 100644
index 0000000..0cad53e
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Component_swTopMost.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+Component swTopMost
+{
+  #keys: '[530.0.3531801]'
+  BaseType: 'swTopMost'
+  IsDerived: true
+  Children:
+  [
+    Component SplitterPane1
+    {
+      #keys: '[530.0.3531802]'
+      BaseType: 'SplitterPane1'
+      IsDerived: true
+      Children:
+      [
+        #child: swTop
+      ]
+    }
+    Component SplitterPane2
+    {
+      #keys: '[530.0.3531803]'
+      BaseType: 'SplitterPane2'
+      IsDerived: true
+      Children:
+      [
+        #child: swBottom
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Response_List1_MenuDelete_OnClick.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Response_List1_MenuDelete_OnClick.def
new file mode 100644
index 0000000..4c55f20
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/Response_List1_MenuDelete_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: List1
+Response OnClick (
+  structured[Object] selection
+) id:Response_List1_MenuDelete_OnClick
+{
+  #keys: '[413988.0.1234255107]'
+  Body:
+  [*
+    MacroPlan::DeleteObjects( selection );
+  *]
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_List1_Menu_OnClick'
+  Initiator: 'MenuDelete'
+}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/_ROOT_Component_frmStandardAnalysis822.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/_ROOT_Component_frmStandardAnalysis822.def
new file mode 100644
index 0000000..c2c28f2
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis822/_ROOT_Component_frmStandardAnalysis822.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlanner
+OrphanComponent frmStandardAnalysis822
+{
+  #keys: '[413988.0.1234254066]'
+  BaseType: 'frmStandardAnalysis'
+  Children:
+  [
+    #child: swTopMost
+  ]
+  Properties:
+  [
+    Height: 611
+    Width: 927
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageInventory.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageInventory.def
new file mode 100644
index 0000000..64246c6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageInventory.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component ActionBarPageInventory #extension
+{
+  Children:
+  [
+    #child: abgInvnetoryDev
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInvnetoryDev.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInvnetoryDev.def
new file mode 100644
index 0000000..bde0ff5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgInvnetoryDev.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component abgInvnetoryDev
+{
+  #keys: '[413988.0.1227912496]'
+  BaseType: 'WebActionBarGroup'
+  Children:
+  [
+    Component btnInvnetoryUpdate
+    {
+      #keys: '[413988.0.1227912668]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'WAREHOUSE'
+        Label: 'Inventory updates'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Category: 'Actions-3'
+    Taborder: 4
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgInvnetoryDev_btnInvnetoryUpdate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgInvnetoryDev_btnInvnetoryUpdate_OnClick.def
new file mode 100644
index 0000000..7a2966c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgInvnetoryDev_btnInvnetoryUpdate_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: abgInvnetoryDev/btnInvnetoryUpdate
+Response OnClick () id:Response_MacroPlanner_abgInvnetoryDev_btnInvnetoryUpdate_OnClick
+{
+  #keys: '[413988.0.1227912935]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      ApplicationScope.ViewManager().ResetUserViewById( "InvnetoryUpdate", true );
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
index 9db7b49..3816dc4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -12,6 +12,7 @@
         #child: ActionBarPageData
         #child: ActionBarPageSales
         #child: applicationConfigureActionBarPageDef
+        #child: ActionBarPageInventory
       ]
     }
     Component dhBinaryDataPR id:dhBinaryDataPR_688
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Component_pnlActions.def
new file mode 100644
index 0000000..d6415aa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[413988.0.1234532417]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[413988.0.1234532421]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[413988.0.1234532423]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'Cancel'
+        Taborder: 1
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    Border: true
+    ExcludeFromActiveComponent: true
+    FixedSize: true
+    Orientation: 'horizontal'
+    Padding: 'true'
+    Style: 'footer'
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Component_pnlContent.def
new file mode 100644
index 0000000..289ed91
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Component_pnlContent.def
@@ -0,0 +1,63 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[413988.0.1234532415]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component efProductID
+    {
+      #keys: '[413988.0.1234532440]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Enabled: false
+        Label: 'ProductID'
+        Taborder: 0
+      ]
+    }
+    Component efInventoryPoint
+    {
+      #keys: '[413988.0.1234532453]'
+      BaseType: 'WebEditField'
+      Properties:
+      [
+        Enabled: false
+        Label: 'InventoryPoint'
+        Taborder: 1
+      ]
+    }
+    Component ddlStockingPoint
+    {
+      #keys: '[413988.0.1234562397]'
+      BaseType: 'WebDropDownList'
+      Databinding: 'StockingPoint_MP'
+      Children:
+      [
+        Component deContent
+        {
+          #keys: '[413988.0.1234562399]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'StockingPoint_MP'
+          ]
+        }
+      ]
+      Properties:
+      [
+        DisplayField: 'Name'
+        Label: 'StockingPoint'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Method_InventoryPointSelection.def b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Method_InventoryPointSelection.def
new file mode 100644
index 0000000..054a5b3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Method_InventoryPointSelection.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method InventoryPointSelection (
+  InventoryPointSelection inventoryPointSelection
+) id:Method_DialogInventoryPointSelection_InventoryPointSelection
+{
+  #keys: '[413988.0.1233021750]'
+  Body:
+  [*
+    dhInventoryPointSelection.Data( inventoryPointSelection );
+    
+    efProductID.Text( dhInventoryPointSelection.Data().ProductID() );
+    efInventoryPoint.Text( dhInventoryPointSelection.Data().InventoryPoint() );
+    
+    spmp := select( MacroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = inventoryPointSelection.StockpoingPoint() );
+    ddlStockingPoint.Data( spmp );
+    
+    ApplicationMacroPlanner.ShowFormModal( this );
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Method_OnOK.def b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Method_OnOK.def
new file mode 100644
index 0000000..4d952ec
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Method_OnOK.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnOK () id:Method_DialogInventoryPointSelection_OnOK
+{
+  #keys: '[413988.0.1231653773]'
+  Body:
+  [*
+    Form.ApplyChanges();
+    
+    dhInventoryPointSelection.Data().StockpoingPoint( ddlStockingPoint.Data().ID() );
+    
+    Form.Close();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..daf4f47
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Response_pnlActions_btnCancel_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnCancel
+Response OnClick () id:Response_pnlActions_btnCancel_OnClick
+{
+  #keys: '[413988.0.1234532427]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..8551738
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+  #keys: '[413988.0.1234532426]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      Form.OnOK();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/_ROOT_Component_DialogInventoryPointSelection.def b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/_ROOT_Component_DialogInventoryPointSelection.def
new file mode 100644
index 0000000..3491687
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogInventoryPointSelection/_ROOT_Component_DialogInventoryPointSelection.def
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogInventoryPointSelection
+{
+  #keys: '[413988.0.1234532413]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+    Component dhInventoryPointSelection
+    {
+      #keys: '[413988.0.1234806214]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'InventoryPointSelection'
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    MinimumColumns: 60
+    Padding: 'false'
+    Title: 'Inventory Point Selection'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_ListInventoryInterfaceData.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_ListInventoryInterfaceData.def
new file mode 100644
index 0000000..dff510e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_ListInventoryInterfaceData.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListInventoryInterfaceData
+{
+  #keys: '[413988.0.1227911672]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorInventoryInterfaceData
+    {
+      #keys: '[413988.0.1227911673]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'InterfaceDataset'
+        Source: 'InterfaceDataset'
+        Taborder: 0
+        Transformation: 'InventoryInterfaceData'
+      ]
+    }
+    #child: listActionBarPageInventoryInterfaceData
+    Component DataSetLevelInventoryInterfaceData
+    {
+      #keys: '[413988.0.1227911678]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuInventoryInterfaceData
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Date","title":"Date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Date"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PartNumber","title":"PartNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PartNumber"}}]'
+        ContextMenu: 'listContextMenuInventoryInterfaceData'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_listActionBarPageInventoryInterfaceData.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_listActionBarPageInventoryInterfaceData.def
new file mode 100644
index 0000000..31272d1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_listActionBarPageInventoryInterfaceData.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageInventoryInterfaceData
+{
+  #keys: '[413988.0.1227911675]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_listContextMenuInventoryInterfaceData.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_listContextMenuInventoryInterfaceData.def
new file mode 100644
index 0000000..6d00296
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Component_listContextMenuInventoryInterfaceData.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component listContextMenuInventoryInterfaceData
+{
+  #keys: '[413988.0.1227911680]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component mTest
+    {
+      #keys: '[413988.0.1229020405]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'BLOT'
+        Taborder: 3
+        Title: '娴嬭瘯浣跨敤'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Response_listContextMenuInventoryInterfaceData_mTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Response_listContextMenuInventoryInterfaceData_mTest_OnClick.def
new file mode 100644
index 0000000..b54517e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/Response_listContextMenuInventoryInterfaceData_mTest_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: listContextMenuInventoryInterfaceData/mTest
+Response OnClick () id:Response_listContextMenuInventoryInterfaceData_mTest_OnClick
+{
+  #keys: '[413988.0.1227950665]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebMenu_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      InventoryInterfaceData::Test( InterfaceDataset );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/_ROOT_Component_FormInventoryInterfaceData.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/_ROOT_Component_FormInventoryInterfaceData.def
new file mode 100644
index 0000000..cb2cd09
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceData/_ROOT_Component_FormInventoryInterfaceData.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormInventoryInterfaceData
+{
+  #keys: '[413988.0.1223190616]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListInventoryInterfaceData
+  ]
+  Properties:
+  [
+    Title: 'Inventory Interface Data'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_ListInventoryInterfaceDataDetail.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_ListInventoryInterfaceDataDetail.def
new file mode 100644
index 0000000..8d8e8c8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_ListInventoryInterfaceDataDetail.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListInventoryInterfaceDataDetail
+{
+  #keys: '[413988.0.1227911953]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorInventoryInterfaceDataDetail
+    {
+      #keys: '[413988.0.1227911954]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'InventoryInterfaceData'
+        ExtractionMode: 'Selected'
+        Source: 'FormInventoryInterfaceData.ListInventoryInterfaceData'
+        Taborder: 0
+        Transformation: 'InventoryInterfaceDataDetail'
+      ]
+    }
+    #child: listActionBarPageInventoryInterfaceDataDetail
+    Component DataSetLevelInventoryInterfaceDataDetail
+    {
+      #keys: '[413988.0.1227911959]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuInventoryInterfaceDataDetail
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Date","title":"Date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Date"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PartNumber","title":"PartNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PartNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"InventoryPoint","title":"InventoryPoint","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"InventoryPoint"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}}]'
+        ContextMenu: 'listContextMenuInventoryInterfaceDataDetail'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_listActionBarPageInventoryInterfaceDataDetail.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_listActionBarPageInventoryInterfaceDataDetail.def
new file mode 100644
index 0000000..fe7346a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_listActionBarPageInventoryInterfaceDataDetail.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageInventoryInterfaceDataDetail
+{
+  #keys: '[413988.0.1227911956]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_listContextMenuInventoryInterfaceDataDetail.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_listContextMenuInventoryInterfaceDataDetail.def
new file mode 100644
index 0000000..9f862bd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/Component_listContextMenuInventoryInterfaceDataDetail.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuInventoryInterfaceDataDetail
+{
+  #keys: '[413988.0.1227911961]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/_ROOT_Component_FormInventoryInterfaceDataDetail.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/_ROOT_Component_FormInventoryInterfaceDataDetail.def
new file mode 100644
index 0000000..c0b339f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryInterfaceDataDetail/_ROOT_Component_FormInventoryInterfaceDataDetail.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormInventoryInterfaceDataDetail
+{
+  #keys: '[413988.0.1227911909]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListInventoryInterfaceDataDetail
+  ]
+  Properties:
+  [
+    Title: 'Inventory Interface Data Detail'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_ListInventoryPointSelection.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_ListInventoryPointSelection.def
new file mode 100644
index 0000000..72f0b47
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_ListInventoryPointSelection.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component ListInventoryPointSelection
+{
+  #keys: '[413988.0.1227912173]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractorInventoryPointSelection
+    {
+      #keys: '[413988.0.1227912174]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'InventoryInterfaceData'
+        ExtractionMode: 'Selected'
+        Source: 'FormInventoryInterfaceData.ListInventoryInterfaceData'
+        Taborder: 0
+        Transformation: 'InventoryInterfaceDataDetail.InventoryPointSelection'
+      ]
+    }
+    #child: listActionBarPageInventoryPointSelection
+    Component DataSetLevelInventoryPointSelection
+    {
+      #keys: '[413988.0.1227912179]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenuInventoryPointSelection
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsIncluded","title":"ImgIsIncluded","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsIncluded"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"InventoryPoint","title":"InventoryPoint","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"InventoryPoint"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockpoingPoint","title":"StockpoingPoint","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockpoingPoint"}}]'
+        ContextMenu: 'listContextMenuInventoryPointSelection'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListInventoryPointSelection_WebMenu_OnClick
+    {
+      #keys: '[413988.0.1234713524]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[3061.0.40431062]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_listActionBarPageInventoryPointSelection.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_listActionBarPageInventoryPointSelection.def
new file mode 100644
index 0000000..7da3652
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_listActionBarPageInventoryPointSelection.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageInventoryPointSelection
+{
+  #keys: '[413988.0.1227912176]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_listContextMenuInventoryPointSelection.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_listContextMenuInventoryPointSelection.def
new file mode 100644
index 0000000..9221976
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Component_listContextMenuInventoryPointSelection.def
@@ -0,0 +1,57 @@
+Quintiq file version 2.0
+Component listContextMenuInventoryPointSelection
+{
+  #keys: '[413988.0.1227912181]'
+  BaseType: 'listContextMenu'
+  Children:
+  [
+    Component mInventoryPointSelection
+    {
+      #keys: '[413988.0.1234744270]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        BindOnDoubleClick: true
+        Image: 'EDITOR_LOCAL_ATTRIBUTE'
+        Taborder: 3
+        Title: 'Edit'
+      ]
+    }
+    Component mSeparator1
+    {
+      #keys: '[413988.0.1233042431]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Separator: true
+        Taborder: 4
+      ]
+    }
+    Component mEnable
+    {
+      #keys: '[413988.0.1233077530]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'CHECKEDCHECKBOX'
+        Taborder: 5
+        Title: 'Enable'
+      ]
+    }
+    Component mDisable
+    {
+      #keys: '[413988.0.1235583724]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'EMPTYCHECKBOX'
+        Taborder: 6
+        Title: 'Disable'
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mDisable_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mDisable_OnClick.def
new file mode 100644
index 0000000..fc296f5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mDisable_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListInventoryPointSelection
+Response OnClick (
+  InventoryPointSelection selection
+) id:Response_ListInventoryPointSelection_mDisable_OnClick
+{
+  #keys: '[413988.0.1235616234]'
+  DefinitionID => /ListInventoryPointSelection/Responsedef_ListInventoryPointSelection_WebMenu_OnClick
+  Initiator: 'mDisable'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.IsIncluded( false );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mEnable_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mEnable_OnClick.def
new file mode 100644
index 0000000..c36de39
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mEnable_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListInventoryPointSelection
+Response OnClick (
+  InventoryPointSelection selection
+) id:Response_ListInventoryPointSelection_mEnable_OnClick
+{
+  #keys: '[413988.0.1235645466]'
+  DefinitionID => /ListInventoryPointSelection/Responsedef_ListInventoryPointSelection_WebMenu_OnClick
+  Initiator: 'mEnable'
+  QuillAction
+  {
+    Body:
+    [*
+      selection.IsIncluded( true );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mInventoryPointSelection_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mInventoryPointSelection_OnClick.def
new file mode 100644
index 0000000..16497c7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/Response_ListInventoryPointSelection_mInventoryPointSelection_OnClick.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: ListInventoryPointSelection
+Response OnClick (
+  InventoryPointSelection selection
+) id:Response_ListInventoryPointSelection_mInventoryPointSelection_OnClick
+{
+  #keys: '[413988.0.1234713625]'
+  CanBindMultiple: false
+  DefinitionID => /ListInventoryPointSelection/Responsedef_ListInventoryPointSelection_WebMenu_OnClick
+  Initiator: 'mInventoryPointSelection'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      dlg := construct( DialogInventoryPointSelection );
+      
+      dlg.InventoryPointSelection( selection );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/_ROOT_Component_FormInventoryPointSelection.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/_ROOT_Component_FormInventoryPointSelection.def
new file mode 100644
index 0000000..7436f3b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventoryPointSelection/_ROOT_Component_FormInventoryPointSelection.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormInventoryPointSelection
+{
+  #keys: '[413988.0.1227912143]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: ListInventoryPointSelection
+  ]
+  Properties:
+  [
+    Title: 'Inventory Point Selection'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/InvnetoryUpdate.vw b/_Main/UI/MacroPlannerWebApp/Views/InvnetoryUpdate.vw
new file mode 100644
index 0000000..1d0a1f8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/InvnetoryUpdate.vw
@@ -0,0 +1,296 @@
+Quintiq file version 2.0
+{
+  viewcontents
+  {
+    forms
+    {
+      form_FormInventoryInterfaceDataDetail
+      {
+        title: 'QMacroPlanner::FormInventoryInterfaceDataDetail'
+        shown: true
+        componentID: 'QMacroPlanner::FormInventoryInterfaceDataDetail'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 7
+          columnPosition: 6
+          columnSpan: 7
+        }
+        components
+        {
+          FormInventoryInterfaceDataDetail_ListInventoryInterfaceDataDetail
+          {
+          }
+          FormInventoryInterfaceDataDetail_DataSetLevelInventoryInterfaceDataDetail
+          {
+            groupDepth: -1
+            sort: 'DESC:Date,DESC:Quantity'
+            column_Date
+            {
+              columnId: 'Date'
+              dataPath: 'Date'
+              dataType: 'date'
+              index: 0
+              subtotals: ''
+              width: 166
+            }
+            column_PartNumber
+            {
+              columnId: 'PartNumber'
+              dataPath: 'PartNumber'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 172
+            }
+            column_InventoryPoint
+            {
+              columnId: 'InventoryPoint'
+              dataPath: 'InventoryPoint'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 177
+            }
+            column_Quantity
+            {
+              columnId: 'Quantity'
+              dataPath: 'Quantity'
+              dataType: 'real'
+              index: 3
+              subtotals: ''
+              width: 155
+            }
+          }
+        }
+      }
+      form_FormInventoryInterfaceData
+      {
+        title: 'QMacroPlanner::FormInventoryInterfaceData'
+        shown: true
+        componentID: 'QMacroPlanner::FormInventoryInterfaceData'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 1
+          rowSpan: 14
+          columnPosition: 1
+          columnSpan: 5
+        }
+        components
+        {
+          FormInventoryInterfaceData_ListInventoryInterfaceData
+          {
+          }
+          FormInventoryInterfaceData_DataSetLevelInventoryInterfaceData
+          {
+            groupDepth: -1
+            sort: 'DESC:Date'
+            column_Date
+            {
+              columnId: 'Date'
+              dataPath: 'Date'
+              dataType: 'date'
+              index: 0
+              subtotals: ''
+              width: 150
+            }
+            column_PartNumber
+            {
+              columnId: 'PartNumber'
+              dataPath: 'PartNumber'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      form_FormInventoryPointSelection
+      {
+        title: 'QMacroPlanner::FormInventoryPointSelection'
+        shown: true
+        componentID: 'QMacroPlanner::FormInventoryPointSelection'
+        layout
+        {
+          mode: 'open'
+          rowPosition: 8
+          rowSpan: 7
+          columnPosition: 6
+          columnSpan: 7
+        }
+        components
+        {
+          FormInventoryPointSelection_ListInventoryPointSelection
+          {
+          }
+          FormInventoryPointSelection_DataSetLevelInventoryPointSelection
+          {
+            groupDepth: -1
+            sort: 'InventoryPoint'
+            column_ImgIsIncluded
+            {
+              columnId: 'ImgIsIncluded'
+              dataPath: 'ImgIsIncluded'
+              dataType: 'string'
+              index: 0
+              subtotals: ''
+              width: 34
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_InventoryPoint
+            {
+              columnId: 'InventoryPoint'
+              dataPath: 'InventoryPoint'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_StockpoingPoint
+            {
+              columnId: 'StockpoingPoint'
+              dataPath: 'StockpoingPoint'
+              dataType: 'string'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
+      }
+      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: 'WAREHOUSE'
+    description: ''
+  }
+  formatversion: 2
+  id: 'InvnetoryUpdate'
+  name: 'InvnetoryUpdate'
+  isglobal: false
+  isroot: true
+}
diff --git a/_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties b/_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties
index ad592b1..ccd758c 100644
--- a/_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties
+++ b/_var/_Main/ModelSettings/Common/Development/_ROOT_Role_Development.properties
@@ -454,7 +454,7 @@
 domainmodel.mdsstoragedefinitionmanager=template:domainmodel.mdsstoragedefinitionmanager
 domainmodel.mdsstoragedefinitionmanager.audittrailenabled=false
 domainmodel.mdsstoragedefinitionmanager.audittraillocation=
-domainmodel.mdsstoragedefinitionmanager.databaseenabled=true
+domainmodel.mdsstoragedefinitionmanager.databaseenabled=false
 domainmodel.mdsstoragedefinitionmanager.datasetstoredatasource=MacroPlanner
 domainmodel.mdsstoragedefinitionmanager.datasetstoreenabled=false
 domainmodel.mdsstoragedefinitionmanager.datasetstoreislocal=false
diff --git a/_var/_Main/ModelSettings/Common/_ROOT_Role_Common.properties b/_var/_Main/ModelSettings/Common/_ROOT_Role_Common.properties
index fc7d143..4d45d3b 100644
--- a/_var/_Main/ModelSettings/Common/_ROOT_Role_Common.properties
+++ b/_var/_Main/ModelSettings/Common/_ROOT_Role_Common.properties
@@ -459,14 +459,14 @@
 domainmodel.soapserverinterfacedefinition.interface.utf.timezone=GMT
 domainmodel.soapserverinterfacedefinition.interface.utf.url=http://Q05299:8890/soap/UTF
 domainmodel.soapserverinterfacedefinition.interface.utf.useoslocaltimezone=true
+libopt=template:libopt
+libopt.createglobalalgorithmstoredataset=false
 liboptbt=template:liboptbt
 liboptbt.autoexportresult=false
 liboptbt.backuprundatasets=true
 liboptbt.numberofiterations=1
 liboptbt.runonstartup=false
 liboptbt.showprogress=false
-libopt=template:libopt
-libopt.createglobalalgorithmstoredataset=false
 osm.osm=template:osm
 osm.osm.geocodingserverendpoint=OSM-NOMINATIM
 osm.osm.geocodingservertimeout=60

--
Gitblit v1.9.3