From 191fc5cc2e5eeaff377b749dfa7e497fe503506b Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期一, 27 五月 2024 20:56:50 +0800
Subject: [PATCH] PR,PP,Budget 功能

---
 _Main/BL/InfoMessages.qbl                                                                                                                      |    4 
 _Main/BL/Type_Archive/StaticMethod_Success.qbl                                                                                                 |   26 +
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pCurve.def                                                             |   20 
 _Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def                                                            |    2 
 _Main/BL/Type_TemporaryDemandData/Attribute_ProductID.qbl                                                                                      |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPP_cPP_OnChanged.def                                                   |   16 
 _Main/BL/Type_TemporaryDemandData/TypeIndex_TemporaryDemandDataTypeIndex.qbl                                                                   |   12 
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPPA.def                                                               |   20 
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPR_cPR_OnChanged.def                                                   |   16 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_List1.def                                                                     |   46 ++
 _Main/BL/Type_Archive/StaticMethod_GenerateForecast.qbl                                                                                        |   37 +
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_dhRequirementImportExecuti.def |   26 
 _Main/BL/Type_Archive/StaticMethod_OnException.qbl                                                                                             |    7 
 _Main/BL/Type_TemporaryDemandData/Attribute_Price.qbl                                                                                          |    7 
 _Main/BL/Relations/Relation_TemporaryDemandData_ArchiveExecutionStatus_ArchiveExecutionStatus_T.qbl                                            |   23 +
 _Main/BL/EDI/Broker_AES_TemporaryDemandData.qbl                                                                                                |  164 +++++++
 _Main/BL/Type_TemporaryDemandData/Attribute_CurrencyID.qbl                                                                                     |    7 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_bRequirementUpload_OnClick.def |    5 
 _Main/BL/Type_TemporaryDemandData/Attribute_StockingPointID.qbl                                                                                |    7 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_swBottom.def                                                                  |   20 
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Method_OnOK.def                                                                  |    3 
 _Main/BL/Type_TemporaryDemandData/Attribute_StartDate.qbl                                                                                      |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pBudget.def                                                            |   20 
 _Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Component_pnlActions.def                                                             |   40 +
 _Main/BL/Type_RequirementImportExecutionStatus/StaticMethod_Create.qbl                                                                         |   21 +
 _Main/BL/Type_Archive/StaticMethod_HandlePP.qbl                                                                                                |   50 +-
 _Main/BL/Type_TemporaryDemandData/Attribute_PriorityName.qbl                                                                                   |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pBudget_cBudget_OnChanged.def                                           |   16 
 _Main/BL/Type_TemporaryDemandData/Attribute_SalesSegmentName.qbl                                                                               |    7 
 _Main/BL/Type_TemporaryDemandData/Attribute_DemandUncertaintyPercentage.qbl                                                                    |    7 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis589/_ROOT_Component_frmStandardAnalysis589.def                                              |   12 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def                                      |  160 +++++++
 _Main/BL/Type_RequirementImportExecutionStatus/Attribute_ExecutionCode.qbl                                                                     |    7 
 _Main/BL/Type_TemporaryDemandData/Attribute_EndDate.qbl                                                                                        |    7 
 _Main/BL/Type_TemporaryDemandData/_ROOT_Type_TemporaryDemandData.qbl                                                                           |    9 
 _Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Method_OnOK.def                                                                      |   21 +
 _Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Response_pnlActions_btnCancel_OnClick.def                                            |   15 
 _Main/BL/Type_Archive/StaticMethod_HandlePR.qbl                                                                                                |   36 -
 _Main/BL/Type_TemporaryDemandData/Attribute_Quantity.qbl                                                                                       |    7 
 _Main/BL/Type_TemporaryDemandData/Attribute_ID.qbl                                                                                             |    8 
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPR.def                                                                |   20 
 _Main/BL/ConfigTemplates.properties                                                                                                            |    1 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_swTop.def                                                                     |   29 +
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pIDS.def                                                               |   20 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Response_List1_MenuDelete_OnClick.def                                                   |   15 
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPPA_cPPA_OnChanged.def                                                 |   16 
 _Main/BL/Type_Archive/StaticMethod_HandleBudget.qbl                                                                                            |   36 
 _Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/_ROOT_Component_DialogOverwriteFile.def                                              |   22 +
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_OnCreated.def                                                           |   48 ++
 _Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Response_pnlActions_btnOk_OnClick.def                                                |   15 
 _Main/BL/Type_TemporaryDemandData/Attribute_UnitOfMeasureName.qbl                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPP.def                                                                |   20 
 _Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_swTopMost.def                                                                 |   30 +
 _Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Component_pnlContent.def                                                             |   24 +
 _Main/BL/Type_Archive/StaticMethod_RequirementProcessing.qbl                                                                                   |   19 
 55 files changed, 1,051 insertions(+), 203 deletions(-)

diff --git a/_Main/BL/ConfigTemplates.properties b/_Main/BL/ConfigTemplates.properties
index 0b1fb1a..6ddcaf9 100644
--- a/_Main/BL/ConfigTemplates.properties
+++ b/_Main/BL/ConfigTemplates.properties
@@ -108,6 +108,7 @@
 domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstoexcel=template:domainmodel.ediremotedatasourcedefinition
 domainmodel.ediremotedatasourcedefinition.remotestorage.outputunitstomodel=template:domainmodel.ediremotedatasourcedefinition
 domainmodel.ediremotedatasourcedefinition.remotestorage.syncobject=template:domainmodel.ediremotedatasourcedefinition
+domainmodel.ediremotedatasourcedefinition.remotestorage.vwed=template:domainmodel.ediremotedatasourcedefinition
 domainmodel.fileprovider.qdrive=template:domainmodel.fileprovider.qdrive
 domainmodel.gisdefinition.osm=template:domainmodel.gisdefinition
 domainmodel.historicaltransactioncontrol=template:domainmodel.historicaltransactioncontrol
diff --git a/_Main/BL/EDI/Broker_AES_TemporaryDemandData.qbl b/_Main/BL/EDI/Broker_AES_TemporaryDemandData.qbl
new file mode 100644
index 0000000..0e53f61
--- /dev/null
+++ b/_Main/BL/EDI/Broker_AES_TemporaryDemandData.qbl
@@ -0,0 +1,164 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker AES_TemporaryDemandData
+{
+  MDSDefinition: ArchiveExecutionStatus
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination0
+  {
+    EDIMLTable TemporaryDemandData
+    {
+      PrimaryKeyColumns: ID
+      TargetType: TemporaryDemandData
+      TypeIndex: TemporaryDemandDataTypeIndex
+      EDIMLColumn CurrencyID { Attribute: CurrencyID ValueType: String }
+      EDIMLColumn DemandUncertaintyPercentage { Attribute: DemandUncertaintyPercentage ValueType: Number }
+      EDIMLColumn EndDate { Attribute: EndDate ValueType: Date }
+      EDIMLColumn ID { Attribute: ID ValueType: Number }
+      EDIMLColumn Price { Attribute: Price ValueType: Number }
+      EDIMLColumn PriorityName { Attribute: PriorityName ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn Quantity { Attribute: Quantity ValueType: Real }
+      EDIMLColumn SalesSegmentName { Attribute: SalesSegmentName ValueType: String }
+      EDIMLColumn StartDate { Attribute: StartDate ValueType: Date }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+    }
+  }
+  EDIODBCLink.Source dbTemporaryDemandData
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.vwed'
+    EDIODBCLinkTable A_Forecasts
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="dbo"'
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn CURRENCY_ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn DEMAND_UNCERTAINTY_PERCENTAGE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Number
+      }
+      EDIODBCLinkColumn END_DATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Number
+      }
+      EDIODBCLinkColumn IS_EXCLUDED_FROM_FULFILLMENT_KPI_USER
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Boolean
+      }
+      EDIODBCLinkColumn PRICE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Number
+      }
+      EDIODBCLinkColumn PRIORITY_NAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCT_ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn QUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn SALES_SEGMENT_NAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn START_DATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn STOCKING_POINT_ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNIT_OF_MEASURE_NAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation
+  {
+    EDITableTransformation
+    {
+      InputTable: A_Forecasts
+      OutputTable: TemporaryDemandData
+      EDIColumnMatch { InputColumn: CURRENCY_ID OutputColumn: CurrencyID }
+      EDIColumnMatch { InputColumn: DEMAND_UNCERTAINTY_PERCENTAGE OutputColumn: DemandUncertaintyPercentage }
+      EDIColumnMatch
+      {
+        InputColumn: END_DATE
+        OutputColumn: EndDate
+        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: ID OutputColumn: ID }
+      EDIColumnMatch { InputColumn: PRICE OutputColumn: Price }
+      EDIColumnMatch { InputColumn: PRIORITY_NAME OutputColumn: PriorityName }
+      EDIColumnMatch { InputColumn: PRODUCT_ID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: QUANTITY OutputColumn: Quantity }
+      EDIColumnMatch { InputColumn: SALES_SEGMENT_NAME OutputColumn: SalesSegmentName }
+      EDIColumnMatch
+      {
+        InputColumn: START_DATE
+        OutputColumn: StartDate
+        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: STOCKING_POINT_ID OutputColumn: StockingPointID }
+      EDIColumnMatch { InputColumn: UNIT_OF_MEASURE_NAME OutputColumn: UnitOfMeasureName }
+    }
+  }
+}
diff --git a/_Main/BL/InfoMessages.qbl b/_Main/BL/InfoMessages.qbl
index 16b4d4a..ef50327 100644
--- a/_Main/BL/InfoMessages.qbl
+++ b/_Main/BL/InfoMessages.qbl
@@ -48,6 +48,10 @@
   {
     DefaultText: 'The vehicle model, engine part number, and existing data do not match'
   }
+  InfoMessage A_VWED_RequirementImportSuccessful
+  {
+    DefaultText: 'Requirement import successful'
+  }
   InfoMessage A_VWED_SixDigitCode_Code
   {
     DefaultText: 'Code'
diff --git a/_Main/BL/Relations/Relation_TemporaryDemandData_ArchiveExecutionStatus_ArchiveExecutionStatus_T.qbl b/_Main/BL/Relations/Relation_TemporaryDemandData_ArchiveExecutionStatus_ArchiveExecutionStatus_T.qbl
new file mode 100644
index 0000000..f223704
--- /dev/null
+++ b/_Main/BL/Relations/Relation_TemporaryDemandData_ArchiveExecutionStatus_ArchiveExecutionStatus_T.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation TemporaryDemandData_ArchiveExecutionStatus_ArchiveExecutionStatus_TemporaryDemandData
+{
+  #keys: '1[414996.0.388320052]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide ArchiveExecutionStatus
+  {
+    #keys: '3[414996.0.388320054][414996.0.388320053][414996.0.388320055]'
+    Cardinality: '0to1'
+    ObjectDefinition: TemporaryDemandData
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide TemporaryDemandData
+  {
+    #keys: '3[414996.0.388320057][414996.0.388320056][414996.0.388320058]'
+    Cardinality: '1toN'
+    ObjectDefinition: ArchiveExecutionStatus
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Type_Archive/StaticMethod_GenerateForecast.qbl b/_Main/BL/Type_Archive/StaticMethod_GenerateForecast.qbl
new file mode 100644
index 0000000..ec7b503
--- /dev/null
+++ b/_Main/BL/Type_Archive/StaticMethod_GenerateForecast.qbl
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateForecast (
+  ArchiveExecutionStatus archiveExecutionStatus,
+  MacroPlan macroPlan
+)
+{
+  TextBody:
+  [*
+    traverse ( macroPlan, SalesDemand.astype( Forecast ), f ) {
+      f.Delete();
+    }
+    
+    traverse ( archiveExecutionStatus, TemporaryDemandData, tdd ) {
+      targetProduct_MP       := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = tdd.ProductID() );
+      targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = tdd.StockingPointID() );
+      info( tdd.SalesSegmentName() );
+      if ( not isnull( targetProduct_MP ) and not isnull( targetStockingPoint_MP ) ) {
+        Forecast::Create( targetProduct_MP,
+                          targetStockingPoint_MP,
+                          [String]tdd.ID(),
+                          tdd.StartDate(),
+                          tdd.EndDate(),
+                          tdd.Quantity(),
+                          [Real]tdd.Price(),
+                          tdd.PriorityName(),
+                          tdd.SalesSegmentName(),
+                          tdd.CurrencyID(),
+                          tdd.UnitOfMeasureName(),
+                          0.0,
+                          false,
+                          false
+                         );
+      }
+    }
+  *]
+}
diff --git a/_Main/BL/Type_Archive/StaticMethod_HandleBudget.qbl b/_Main/BL/Type_Archive/StaticMethod_HandleBudget.qbl
index 37fff73..ed3e960 100644
--- a/_Main/BL/Type_Archive/StaticMethod_HandleBudget.qbl
+++ b/_Main/BL/Type_Archive/StaticMethod_HandleBudget.qbl
@@ -7,37 +7,41 @@
   String budgetFileName,
   BinaryValue budgetBinaryValue,
   Boolean isBudgetArchive,
-  String filePath
-)
+  String filePath,
+  Boolean isOverwriteFile
+) as stream[JSON]
 {
   TextBody:
   [*
     // 璇锋眰鍙傛暟
     pathBudget := filePath + budgetFileName;
     isArchive  := ifexpr( isBudgetArchive, "true", "false" );
+    isOverride := ifexpr( isOverwriteFile, "true", "false" );
     minorKey   := [String]macroPlan.MDSID().MinorKey();
     json       := JSON::Object()
                   .Add( "path", pathBudget )
                   .Add( "isArchive", isArchive )
+                  .Add( "isOverride", isOverride )
                   .Add( "minorKey", minorKey ).Build().AsString();
     
     // 鍐欏叆涓存椂鏂囦欢
     Archive::WriteTempFile( pathBudget, budgetBinaryValue );
     
-    info( json );
-    
     // 璋冪敤鎺ュ彛
-    //url := "/PR/Import";
-    //i := HTTPInterface::Create( archive.JavaInterfaceAddress(), archive.JavaInterfacePort() );
-    //i.URL( url );
-    //i.PostMethod( true );
-    //
-    //try {
-    //  i.Call( json );
-    //  
-    //  htmlresult := i.Result();
-    //} onerror {
-    //
-    //}
+    url := "/PPBudget/Import";
+    
+    i := HTTPInterface::Create( archive.JavaInterfaceAddress(), archive.JavaInterfacePort() );
+    i.URL( url );
+    i.PostMethod( true );
+    i.MediaType( "application/json" );
+    i.TimeOut( Duration::Minutes( 5 ) );
+    
+    i.Call( json );
+      
+    htmlresult := i.Result();
+      
+    respJSON   := JSON::Parse( htmlresult );
+    
+    return emit( respJSON );
   *]
 }
diff --git a/_Main/BL/Type_Archive/StaticMethod_HandlePP.qbl b/_Main/BL/Type_Archive/StaticMethod_HandlePP.qbl
index 445a11d..177b889 100644
--- a/_Main/BL/Type_Archive/StaticMethod_HandlePP.qbl
+++ b/_Main/BL/Type_Archive/StaticMethod_HandlePP.qbl
@@ -7,37 +7,41 @@
   String ppFileName,
   BinaryValue ppBinaryValue,
   Boolean isPPArchive,
-  String filePath
-)
+  String filePath,
+  Boolean isOverwriteFile
+) as stream[JSON]
 {
   TextBody:
   [*
     // 璇锋眰鍙傛暟
-    pathPP    := filePath + ppFileName;
-    isArchive := ifexpr( isPPArchive, "true", "false" );
-    minorKey  := [String]macroPlan.MDSID().MinorKey();
-    json      := JSON::Object()
-                 .Add( "path", pathPP )
-                 .Add( "isArchive", isArchive )
-                 .Add( "minorKey", minorKey ).Build().AsString();
+    pathPP     := filePath + ppFileName;
+    isArchive  := ifexpr( isPPArchive, "true", "false" );
+    isOverride := ifexpr( isOverwriteFile, "true", "false" );
+    minorKey   := [String]macroPlan.MDSID().MinorKey();
+    json       := JSON::Object()
+                  .Add( "path", pathPP )
+                  .Add( "isArchive", isArchive )
+                  .Add( "isOverride", isOverride )
+                  .Add( "minorKey", minorKey ).Build().AsString();
     
     // 鍐欏叆涓存椂鏂囦欢
     Archive::WriteTempFile( pathPP, ppBinaryValue );
     
-    info( json );
-    
     // 璋冪敤鎺ュ彛
-    //url := "/PR/Import";
-    //i := HTTPInterface::Create( archive.JavaInterfaceAddress(), archive.JavaInterfacePort() );
-    //i.URL( url );
-    //i.PostMethod( true );
-    //
-    //try {
-    //  i.Call( json );
-    //  
-    //  htmlresult := i.Result();
-    //} onerror {
-    //
-    //}
+    url := "/PPBudget/Import";
+    
+    i := HTTPInterface::Create( archive.JavaInterfaceAddress(), archive.JavaInterfacePort() );
+    i.URL( url );
+    i.PostMethod( true );
+    i.MediaType( "application/json" );
+    i.TimeOut( Duration::Minutes( 5 ) );
+    
+    i.Call( json );
+      
+    htmlresult := i.Result();
+      
+    respJSON   := JSON::Parse( htmlresult );
+    
+    return emit( respJSON );
   *]
 }
diff --git a/_Main/BL/Type_Archive/StaticMethod_HandlePR.qbl b/_Main/BL/Type_Archive/StaticMethod_HandlePR.qbl
index 4744b67..24d0b71 100644
--- a/_Main/BL/Type_Archive/StaticMethod_HandlePR.qbl
+++ b/_Main/BL/Type_Archive/StaticMethod_HandlePR.qbl
@@ -7,29 +7,26 @@
   String prFileName,
   BinaryValue prBinaryValue,
   Boolean isPRArchive,
-  String filePath
-)
+  String filePath,
+  Boolean isOverwriteFile
+) as stream[JSON]
 {
   TextBody:
   [*
     // 璇锋眰鍙傛暟
-    pathPR    := filePath + prFileName;
-    isArchive := ifexpr( isPRArchive, "true", "false" );
-    minorKey  := [String]macroPlan.MDSID().MinorKey();
-    json      := JSON::Object()
-                 .Add( "pathPR", pathPR )
-                 .Add( "isArchive", isArchive )
-                 .Add( "minorKey", minorKey ).Build().AsString();
+    pathPR     := filePath + prFileName;
+    isArchive  := ifexpr( isPRArchive, "true", "false" );
+    isOverride := ifexpr( isOverwriteFile, "true", "false" );
+    minorKey   := [String]macroPlan.MDSID().MinorKey();
+    json       := JSON::Object()
+                  .Add( "pathPR", pathPR )
+                  .Add( "isArchive", isArchive )
+                  .Add( "isOverride", isOverride )
+                  .Add( "minorKey", minorKey ).Build().AsString();
     
     // 鍐欏叆涓存椂鏂囦欢
     Archive::WriteTempFile( pathPR, prBinaryValue );
     
-    info( json );
-    for ( i := 0; i < 10000; i++ ) {
-      for ( j := 0; j < 20000; j++ ) {
-        info( i + j ); 
-      } 
-    }
     // 璋冪敤鎺ュ彛
     url := "/PR/Import";
     
@@ -37,19 +34,14 @@
     i.URL( url );
     i.PostMethod( true );
     i.MediaType( "application/json" );
+    i.TimeOut( Duration::Minutes( 5 ) );
     
     i.Call( json );
       
     htmlresult := i.Result();
       
     respJSON   := JSON::Parse( htmlresult );
-    code       := respJSON.Get( "code" ).GetNumber();
-    message    := respJSON.Get( "message" ).GetString();
-      
-    if ( code = 200 ) {
     
-    } else {
-      error( message );
-    }
+    return emit( respJSON );
   *]
 }
diff --git a/_Main/BL/Type_Archive/StaticMethod_OnException.qbl b/_Main/BL/Type_Archive/StaticMethod_OnException.qbl
index 061db6c..d231716 100644
--- a/_Main/BL/Type_Archive/StaticMethod_OnException.qbl
+++ b/_Main/BL/Type_Archive/StaticMethod_OnException.qbl
@@ -9,9 +9,10 @@
   TextBody:
   [*
     archiveExecutionStatus.RequirementImportExecutionStatus( relnew, 
-                                                             ExecutionStatus      := "Complete",
-                                                             ExecutionUserName    := userName,
+                                                             ExecutionCode        := 500,
+                                                             ExecutionIsSuccess   := false,
                                                              ExecutionRespMessage := e.Message(),
-                                                             ExecutionIsSuccess   := false );
+                                                             ExecutionStatus      := "Complete",
+                                                             ExecutionUserName    := userName );
   *]
 }
diff --git a/_Main/BL/Type_Archive/StaticMethod_RequirementProcessing.qbl b/_Main/BL/Type_Archive/StaticMethod_RequirementProcessing.qbl
index f482917..b03e1bd 100644
--- a/_Main/BL/Type_Archive/StaticMethod_RequirementProcessing.qbl
+++ b/_Main/BL/Type_Archive/StaticMethod_RequirementProcessing.qbl
@@ -20,7 +20,8 @@
   String curveFileName,
   BinaryValue curveBinaryValue,
   String idsFileName,
-  BinaryValue idsBinaryValue
+  BinaryValue idsBinaryValue,
+  Boolean isOverwriteFile
 )
 {
   TextBody:
@@ -30,15 +31,25 @@
     
     // 鍒涘缓鎵ц鐘舵��
     archiveExecutionStatus.RequirementImportExecutionStatus( relnew, 
+                                                             ExecutionCode      := -1,
                                                              ExecutionStatus    := "InProgress",
                                                              ExecutionUserName  := userName );
     
     if ( prBinaryValue.Size() > 0 ) {
-      archive -> Archive::HandlePR( macroPlan, userName, prFileName, prBinaryValue, isPRArchive, filePath ) ->Archive::Success() -> Exception() -> Archive::OnException( archiveExecutionStatus, userName );
+      archive -> Archive::HandlePR( macroPlan, userName, prFileName, prBinaryValue, isPRArchive, filePath, isOverwriteFile ) 
+              -> Archive::Success( macroPlan, archiveExecutionStatus, userName ) 
+              -> Exception() 
+              -> Archive::OnException( archiveExecutionStatus, userName );
     } else if ( ppBinaryValue.Size() > 0 ) {
-      Archive::HandlePP( archive, macroPlan, userName, ppFileName, ppBinaryValue, isPPArchive, filePath );
+      archive -> Archive::HandlePP( macroPlan, userName, ppFileName, ppBinaryValue, isPPArchive, filePath, isOverwriteFile ) 
+              -> Archive::Success( macroPlan, archiveExecutionStatus, userName ) 
+              -> Exception() 
+              -> Archive::OnException( archiveExecutionStatus, userName );
     } else if ( budgetBinaryValue.Size() > 0 ) {
-      Archive::HandleBudget( archive, macroPlan, userName, budgetFileName, budgetBinaryValue, isBudgetArchive, filePath );
+      archive -> Archive::HandleBudget( macroPlan, userName, budgetFileName, budgetBinaryValue, isBudgetArchive, filePath, isOverwriteFile ) 
+              -> Archive::Success( macroPlan, archiveExecutionStatus, userName ) 
+              -> Exception() 
+              -> Archive::OnException( archiveExecutionStatus, userName );
     } else {
       Archive::HandlePPA_Curve_IDS( archive, macroPlan, userName, ppaFileName, ppaBinaryValue, isPPAArchive, curveFileName, curveBinaryValue, idsFileName, idsBinaryValue, filePath );
     }
diff --git a/_Main/BL/Type_Archive/StaticMethod_Success.qbl b/_Main/BL/Type_Archive/StaticMethod_Success.qbl
index 5897825..8b945f0 100644
--- a/_Main/BL/Type_Archive/StaticMethod_Success.qbl
+++ b/_Main/BL/Type_Archive/StaticMethod_Success.qbl
@@ -1,9 +1,31 @@
 Quintiq file version 2.0
 #parent: #root
-StaticMethod Success
+StaticMethod Success (
+  JSON respJSON,
+  MacroPlan macroPlan,
+  ArchiveExecutionStatus archiveExecutionStatus,
+  String userName
+)
 {
   TextBody:
   [*
-    // lihongji May-25-2024 (created)
+    code    := respJSON.Get( "code" ).GetNumber();
+    message := respJSON.Get( "message" ).GetString();
+    
+    if ( code = 200 ) { // 鎵ц鎴愬姛锛屽鐞嗛渶姹�
+      // 鑾峰彇闇�姹�
+      archiveExecutionStatus.AES_TemporaryDemandData().Execute();
+      
+      // 鐢熸垚Forecast
+      Archive::GenerateForecast( archiveExecutionStatus, macroPlan );
+      
+      // 娓呯┖涓存椂鏁版嵁搴�
+      archiveExecutionStatus.AES_TemporaryDemandData().Source().FlatQuery( "truncate table A_Forecasts" );
+      
+      // 杩斿洖鎴愬姛娑堟伅
+      RequirementImportExecutionStatus::Create( archiveExecutionStatus, code, "Complete", userName, Translations::A_VWED_RequirementImportSuccessful(), true );
+    } else {
+      RequirementImportExecutionStatus::Create( archiveExecutionStatus, code, "Complete", userName, message, false );
+    }
   *]
 }
diff --git a/_Main/BL/Type_RequirementImportExecutionStatus/Attribute_ExecutionCode.qbl b/_Main/BL/Type_RequirementImportExecutionStatus/Attribute_ExecutionCode.qbl
new file mode 100644
index 0000000..95ebe7f
--- /dev/null
+++ b/_Main/BL/Type_RequirementImportExecutionStatus/Attribute_ExecutionCode.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ExecutionCode
+{
+  #keys: '3[414996.0.388310598][414996.0.388310597][414996.0.388310599]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_RequirementImportExecutionStatus/StaticMethod_Create.qbl b/_Main/BL/Type_RequirementImportExecutionStatus/StaticMethod_Create.qbl
new file mode 100644
index 0000000..fcf21a8
--- /dev/null
+++ b/_Main/BL/Type_RequirementImportExecutionStatus/StaticMethod_Create.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Create (
+  ArchiveExecutionStatus archiveExecutionStatus,
+  Number executionCode,
+  String executionStatus,
+  String executionUserName,
+  String executionRespMessage,
+  Boolean executionIsSuccess
+)
+{
+  TextBody:
+  [*
+    archiveExecutionStatus.RequirementImportExecutionStatus( relnew, 
+                                                             ExecutionCode        := executionCode,
+                                                             ExecutionStatus      := executionStatus,
+                                                             ExecutionUserName    := executionUserName,
+                                                             ExecutionRespMessage := executionRespMessage,
+                                                             ExecutionIsSuccess   := executionIsSuccess );
+  *]
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_CurrencyID.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_CurrencyID.qbl
new file mode 100644
index 0000000..ce3d4a7
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_CurrencyID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CurrencyID
+{
+  #keys: '3[414996.0.388235043][414996.0.388235042][414996.0.388235044]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_DemandUncertaintyPercentage.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_DemandUncertaintyPercentage.qbl
new file mode 100644
index 0000000..aeef6c8
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_DemandUncertaintyPercentage.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DemandUncertaintyPercentage
+{
+  #keys: '3[414996.0.388235066][414996.0.388235065][414996.0.388235067]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_EndDate.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_EndDate.qbl
new file mode 100644
index 0000000..99ce98f
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_EndDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EndDate
+{
+  #keys: '3[414996.0.388235090][414996.0.388235089][414996.0.388235091]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_ID.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_ID.qbl
new file mode 100644
index 0000000..14d742f
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+  #keys: '3[414996.0.388235113][414996.0.388235112][414996.0.388235114]'
+  IsReadOnly: true
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_Price.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_Price.qbl
new file mode 100644
index 0000000..00b0270
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_Price.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+  #keys: '3[414996.0.388235161][414996.0.388235160][414996.0.388235162]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_PriorityName.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_PriorityName.qbl
new file mode 100644
index 0000000..16ecc7f
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_PriorityName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PriorityName
+{
+  #keys: '3[414996.0.388235184][414996.0.388235183][414996.0.388235185]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_ProductID.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_ProductID.qbl
new file mode 100644
index 0000000..20073a5
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+  #keys: '3[414996.0.388235207][414996.0.388235206][414996.0.388235208]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_Quantity.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_Quantity.qbl
new file mode 100644
index 0000000..975b6a1
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+  #keys: '3[414996.0.388235231][414996.0.388235230][414996.0.388235232]'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_SalesSegmentName.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_SalesSegmentName.qbl
new file mode 100644
index 0000000..f2596b9
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_SalesSegmentName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SalesSegmentName
+{
+  #keys: '3[414996.0.388235254][414996.0.388235253][414996.0.388235255]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_StartDate.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_StartDate.qbl
new file mode 100644
index 0000000..af84fa8
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_StartDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+  #keys: '3[414996.0.388235302][414996.0.388235301][414996.0.388235303]'
+  ValueType: Date
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_StockingPointID.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..d56e4b2
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+  #keys: '3[414996.0.388235325][414996.0.388235324][414996.0.388235326]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/Attribute_UnitOfMeasureName.qbl b/_Main/BL/Type_TemporaryDemandData/Attribute_UnitOfMeasureName.qbl
new file mode 100644
index 0000000..a082bbe
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/Attribute_UnitOfMeasureName.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UnitOfMeasureName
+{
+  #keys: '3[414996.0.388235349][414996.0.388235348][414996.0.388235350]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/TypeIndex_TemporaryDemandDataTypeIndex.qbl b/_Main/BL/Type_TemporaryDemandData/TypeIndex_TemporaryDemandDataTypeIndex.qbl
new file mode 100644
index 0000000..1cb29c4
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/TypeIndex_TemporaryDemandDataTypeIndex.qbl
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex TemporaryDemandDataTypeIndex
+{
+  Attributes:
+  [
+    TypeIndexAttribute
+    {
+      ModelElement: ID
+    }
+  ]
+}
diff --git a/_Main/BL/Type_TemporaryDemandData/_ROOT_Type_TemporaryDemandData.qbl b/_Main/BL/Type_TemporaryDemandData/_ROOT_Type_TemporaryDemandData.qbl
new file mode 100644
index 0000000..e84be77
--- /dev/null
+++ b/_Main/BL/Type_TemporaryDemandData/_ROOT_Type_TemporaryDemandData.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type TemporaryDemandData
+{
+  #keys: '5[414996.0.388320032][414996.0.388320030][0.0.0][414996.0.388320031][414996.0.388320033]'
+  BaseType: Object
+  StructuredName: 'TemporaryDemandDatas'
+}
diff --git a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
index 28047f2..422e889 100644
--- a/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
+++ b/_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
@@ -81,6 +81,7 @@
         Component ComponentMenu469 { #keys: '[413988.0.1164544687]' BaseType: 'ComponentMenu' Properties: [ ComponentType: 'frmStandardAnalysis857' Text: '' ] }
         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' ] }
       ]
       Properties:
       [
@@ -98,6 +99,7 @@
           c: MenuSelectDemoDataset
           c: menuSeparator833
           c: ComponentMenu469
+          c: ComponentMenu357
           c: menuSeparator222
           c: ComponentMenu347
         }
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_List1.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_List1.def
new file mode 100644
index 0000000..5fc8eaf
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/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: '[414996.0.395684559]' BaseType: 'Menu' Properties: [ Separator: true ] }
+            Component MenuDelete { #keys: '[414996.0.395684612]' 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_frmStandardAnalysis589/Component_swBottom.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_swBottom.def
new file mode 100644
index 0000000..1541eaf
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/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_frmStandardAnalysis589/Component_swTop.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_swTop.def
new file mode 100644
index 0000000..b945577
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/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: 'ArchiveExecutionStatus'
+          ]
+        }
+      ]
+    }
+  ]
+}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_swTopMost.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Component_swTopMost.def
new file mode 100644
index 0000000..0cad53e
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/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_frmStandardAnalysis589/Response_List1_MenuDelete_OnClick.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/Response_List1_MenuDelete_OnClick.def
new file mode 100644
index 0000000..a5c6320
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/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: '[414996.0.395684637]'
+  Body:
+  [*
+    MacroPlan::DeleteObjects( selection );
+  *]
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_List1_Menu_OnClick'
+  Initiator: 'MenuDelete'
+}
diff --git a/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/_ROOT_Component_frmStandardAnalysis589.def b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/_ROOT_Component_frmStandardAnalysis589.def
new file mode 100644
index 0000000..0166c91
--- /dev/null
+++ b/_Main/UI/MacroPlanner/Component_frmStandardAnalysis589/_ROOT_Component_frmStandardAnalysis589.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlanner
+OrphanComponent frmStandardAnalysis589
+{
+  #keys: '[414996.0.395683203]'
+  BaseType: 'frmStandardAnalysis'
+  Children:
+  [
+    #child: swTopMost
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_bRequirementUpload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_bRequirementUpload_OnClick.def
index f8ab424..36b70f1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_bRequirementUpload_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_bRequirementUpload_OnClick.def
@@ -9,9 +9,10 @@
   {
     Body:
     [*
-      dlg := construct( DialogRequirementUpload );
+      info( this.Image() );
+        dlg := construct( DialogRequirementUpload );
       
-      ApplicationMacroPlanner.ShowFormModal( dlg );
+        ApplicationMacroPlanner.ShowFormModal( dlg );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_dhRequirementImportExecuti.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_dhRequirementImportExecuti.def
index 2c02609..4afacaf 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_dhRequirementImportExecuti.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgRequirementPreprocessing_dhRequirementImportExecuti.def
@@ -12,16 +12,22 @@
       if ( not isnull( this.Data() ) ) {
         ries := this.Data();
         
-        info( "鎵ц鐢ㄦ埛锛�", this.Data().ExecutionUserName(), "    鎵ц鐘舵�侊細", this.Data().ExecutionUserName(), "    鎵ц娑堟伅锛�", this.Data().ExecutionRespMessage() );
-        
-        if ( ries.ExecutionIsSuccess() ) {
-          
-        } else {
-          if ( ries.ExecutionStatus() = "InProgress" ) {
-            bRequirementUpload.Image( "APPLICATION_STOP" );
-          } else if ( ries.ExecutionStatus() = "Complete" ) {
-            bRequirementUpload.Image( "FLASH" );
-          }
+        if ( ries.ExecutionCode() = 200 ) {
+          WebMessageBox::Success( ries.ExecutionRespMessage() );
+          bRequirementUpload.Image( "FLASH" );
+          bRequirementUpload.Enabled( true, "" );
+        } else if ( ries.ExecutionCode() = 500 ) {
+          WebMessageBox::Error( ries.ExecutionRespMessage() );
+          bRequirementUpload.Image( "FLASH" );
+          bRequirementUpload.Enabled( true, "" );
+        } else if ( ries.ExecutionCode() = 501 ) {
+          dlg := construct( DialogOverwriteFile );
+          ApplicationMacroPlanner.ShowFormModal( dlg );
+          bRequirementUpload.Image( "FLASH" );
+          bRequirementUpload.Enabled( true, "" );
+        } else if ( ries.ExecutionCode() = -1 ) {
+          bRequirementUpload.Image( "APPLICATION_STOP" );
+          bRequirementUpload.Enabled( false, "" );
         }
         
         this.Data().Delete();
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
index 3b4a266..9db7b49 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -14,5 +14,165 @@
         #child: applicationConfigureActionBarPageDef
       ]
     }
+    Component dhBinaryDataPR id:dhBinaryDataPR_688
+    {
+      #keys: '[414996.0.393643308]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'BinaryData*'
+      Properties:
+      [
+        Taborder: 40
+      ]
+    }
+    Component dhOriginalFileNamePR id:dhOriginalFileNamePR_648
+    {
+      #keys: '[414996.0.393612592]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'String*'
+      Properties:
+      [
+        Taborder: 41
+      ]
+    }
+    Component dhBinaryDataPP id:dhBinaryDataPP_821
+    {
+      #keys: '[414996.0.393824611]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'BinaryData*'
+      Properties:
+      [
+        Taborder: 43
+      ]
+    }
+    Component dhOriginalFileNamePP id:dhOriginalFileNamePP_14
+    {
+      #keys: '[414996.0.393824682]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'String*'
+      Properties:
+      [
+        Taborder: 44
+      ]
+    }
+    Component dhBinaryDataBudget id:dhBinaryDataBudget_98
+    {
+      #keys: '[414996.0.393824752]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'BinaryData*'
+      Properties:
+      [
+        Taborder: 46
+      ]
+    }
+    Component dhOriginalFileNameBudget id:dhOriginalFileNameBudget_623
+    {
+      #keys: '[414996.0.393824822]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'String*'
+      Properties:
+      [
+        Taborder: 47
+      ]
+    }
+    Component dhBinaryDataPPA id:dhBinaryDataPPA_838
+    {
+      #keys: '[414996.0.393824892]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'BinaryData*'
+      Properties:
+      [
+        Taborder: 49
+      ]
+    }
+    Component dhOriginalFileNamePPA id:dhOriginalFileNamePPA_673
+    {
+      #keys: '[414996.0.393824962]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'String*'
+      Properties:
+      [
+        Taborder: 50
+      ]
+    }
+    Component dhBinaryDataCurve id:dhBinaryDataCurve_97
+    {
+      #keys: '[414996.0.393825033]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'BinaryData*'
+      Properties:
+      [
+        Taborder: 52
+      ]
+    }
+    Component dhOriginalFileNameCurve id:dhOriginalFileNameCurve_971
+    {
+      #keys: '[414996.0.393825103]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'String*'
+      Properties:
+      [
+        Taborder: 53
+      ]
+    }
+    Component dhBinaryDataIDS id:dhBinaryDataIDS_976
+    {
+      #keys: '[414996.0.393825179]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'BinaryData*'
+      Properties:
+      [
+        Taborder: 54
+      ]
+    }
+    Component dhOriginalFileNameIDS id:dhOriginalFileNameIDS_878
+    {
+      #keys: '[414996.0.393825249]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'String*'
+      Properties:
+      [
+        Taborder: 55
+      ]
+    }
+    Component dhIsPRArchive
+    {
+      #keys: '[414996.0.395211329]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'Boolean*'
+      Properties:
+      [
+        Taborder: 42
+      ]
+    }
+    Component dhIsPPArchive
+    {
+      #keys: '[414996.0.395393587]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'Boolean*'
+      Properties:
+      [
+        Taborder: 45
+      ]
+    }
+    Component dhIsBudgetArchive
+    {
+      #keys: '[414996.0.395393613]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'Boolean*'
+      Properties:
+      [
+        Taborder: 48
+      ]
+    }
+    Component dhIsPPAArchive
+    {
+      #keys: '[414996.0.395393638]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'Boolean*'
+      Properties:
+      [
+        Taborder: 51
+      ]
+    }
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Component_pnlActions.def
new file mode 100644
index 0000000..ed8e7ad
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+  #keys: '[414996.0.392231422]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component btnOk
+    {
+      #keys: '[414996.0.392231426]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Label: 'OK'
+        Taborder: 0
+      ]
+    }
+    Component btnCancel
+    {
+      #keys: '[414996.0.392231428]'
+      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_DialogOverwriteFile/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Component_pnlContent.def
new file mode 100644
index 0000000..d32898a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Component_pnlContent.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+  #keys: '[414996.0.392231420]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component lOverwriteFile
+    {
+      #keys: '[414996.0.393341499]'
+      BaseType: 'WebLabel'
+      Properties:
+      [
+        Label: '瀛樻。鏂囦欢鍚嶉噸澶嶏紝鏄惁瑕嗙洊鏂囦欢'
+        Taborder: 0
+      ]
+    }
+  ]
+  Properties:
+  [
+    Padding: 'true'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Method_OnOK.def b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Method_OnOK.def
new file mode 100644
index 0000000..619b14c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Method_OnOK.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnOK () id:Method_DialogOverwriteFile_OnOK
+{
+  #keys: '[414996.0.395210951]'
+  Body:
+  [*
+    Form.ApplyChanges();
+    
+    Archive::RequirementProcessing( Archive, ArchiveExecutionStatus, MacroPlan, ApplicationMacroPlanner.GetUserName(), 
+                                    dhOriginalFileNamePR.Data()    , guard( dhBinaryDataPR.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) )    , dhIsPRArchive.Data(),
+                                    dhOriginalFileNamePP.Data()    , guard( dhBinaryDataPP.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) )    , dhIsPPArchive.Data(),
+                                    dhOriginalFileNameBudget.Data(), guard( dhBinaryDataBudget.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) ), dhIsBudgetArchive.Data(),
+                                    dhOriginalFileNamePPA.Data()   , guard( dhBinaryDataPPA.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) )   , dhIsPPAArchive.Data(),
+                                    dhOriginalFileNameCurve.Data() , guard( dhBinaryDataCurve.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) ),
+                                    dhOriginalFileNameIDS.Data()   , guard( dhBinaryDataIDS.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) ),
+                                    true ); 
+    
+    Form.Close();
+  *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..14271fd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/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: '[414996.0.392231432]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      Form.Close();
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..7ecce02
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/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: '[414996.0.392231431]'
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  QuillAction
+  {
+    Body:
+    [*
+      Form.OnOK();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/_ROOT_Component_DialogOverwriteFile.def b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/_ROOT_Component_DialogOverwriteFile.def
new file mode 100644
index 0000000..8440d90
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogOverwriteFile/_ROOT_Component_DialogOverwriteFile.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogOverwriteFile
+{
+  #keys: '[414996.0.392231418]'
+  BaseType: 'WebForm'
+  Children:
+  [
+    #child: pnlContent
+    #child: pnlActions
+  ]
+  Properties:
+  [
+    Alignment: 'trailing'
+    EnterButton: 'btnOk'
+    EscapeButton: 'btnCancel'
+    ExcludeFromActiveComponent: true
+    Padding: 'false'
+    Title: 'Overwrite file'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pBudget.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pBudget.def
index b531fb8..081206b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pBudget.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pBudget.def
@@ -48,26 +48,6 @@
         Taborder: 0
       ]
     }
-    Component dhBinaryDataBudget
-    {
-      #keys: '[413988.0.1186302663]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'BinaryData*'
-      Properties:
-      [
-        Taborder: 4
-      ]
-    }
-    Component dhOriginalFileNameBudget
-    {
-      #keys: '[413988.0.1186121268]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'String*'
-      Properties:
-      [
-        Taborder: 5
-      ]
-    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pCurve.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pCurve.def
index 441e6d1..43cfea7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pCurve.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pCurve.def
@@ -37,26 +37,6 @@
         Taborder: 0
       ]
     }
-    Component dhBinaryDataCurve
-    {
-      #keys: '[413988.0.1186330961]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'BinaryData*'
-      Properties:
-      [
-        Taborder: 3
-      ]
-    }
-    Component dhOriginalFileNameCurve
-    {
-      #keys: '[413988.0.1187151501]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'String*'
-      Properties:
-      [
-        Taborder: 4
-      ]
-    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pIDS.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pIDS.def
index 88f53dc..68338a2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pIDS.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pIDS.def
@@ -37,26 +37,6 @@
         Taborder: 0
       ]
     }
-    Component dhBinaryDataIDS
-    {
-      #keys: '[413988.0.1186390982]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'BinaryData*'
-      Properties:
-      [
-        Taborder: 3
-      ]
-    }
-    Component dhOriginalFileNameIDS
-    {
-      #keys: '[413988.0.1187214517]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'String*'
-      Properties:
-      [
-        Taborder: 4
-      ]
-    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPP.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPP.def
index 482f72d..fa39264 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPP.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPP.def
@@ -48,26 +48,6 @@
         Taborder: 0
       ]
     }
-    Component dhBinaryDataPP
-    {
-      #keys: '[413988.0.1186302619]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'BinaryData*'
-      Properties:
-      [
-        Taborder: 4
-      ]
-    }
-    Component dhOriginalFileNamePP
-    {
-      #keys: '[413988.0.1186363668]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'String*'
-      Properties:
-      [
-        Taborder: 5
-      ]
-    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPPA.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPPA.def
index 942cfb0..802bc74 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPPA.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPPA.def
@@ -48,26 +48,6 @@
         Taborder: 0
       ]
     }
-    Component dhBinaryDataPPA
-    {
-      #keys: '[413988.0.1186330911]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'BinaryData*'
-      Properties:
-      [
-        Taborder: 4
-      ]
-    }
-    Component dhOriginalFileNamePPA
-    {
-      #keys: '[413988.0.1187121752]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'String*'
-      Properties:
-      [
-        Taborder: 5
-      ]
-    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPR.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPR.def
index 5fc0826..49e3f6a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPR.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Component_pPR.def
@@ -48,26 +48,6 @@
         Taborder: 0
       ]
     }
-    Component dhBinaryDataPR
-    {
-      #keys: '[413988.0.1186120299]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'BinaryData*'
-      Properties:
-      [
-        Taborder: 4
-      ]
-    }
-    Component dhOriginalFileNamePR
-    {
-      #keys: '[413988.0.1186971485]'
-      BaseType: 'WebDataHolder'
-      Databinding: 'String*'
-      Properties:
-      [
-        Taborder: 5
-      ]
-    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Method_OnOK.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Method_OnOK.def
index b2a892f..44983ad 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Method_OnOK.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Method_OnOK.def
@@ -13,7 +13,8 @@
                                     efBudget.Text()                                                                      , guard( dhBinaryDataBudget.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) ), cBudget.Checked(),
                                     ifexpr( cPPAPPAArchiveEnable.Checked(), ddlPPAArchive.Data().Name(), efCurve.Text() ), guard( dhBinaryDataPPA.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) ), cPPA.Checked(),
                                     efCurve.Text()                                                                       , guard( dhBinaryDataCurve.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) ),
-                                    efIDS.Text()                                                                         , guard( dhBinaryDataIDS.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) ) );   
+                                    efIDS.Text()                                                                         , guard( dhBinaryDataIDS.Data().AsBinaryValue(), BinaryValue::Construct( 0 ) ),
+                                    false );   
     
     
     Form.Close();
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_OnCreated.def
new file mode 100644
index 0000000..fb14a74
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_OnCreated.def
@@ -0,0 +1,48 @@
+Quintiq file version 2.0
+#parent: #root
+Response OnCreated () id:Response_DialogRequirementUpload_OnCreated
+{
+  #keys: '[414996.0.395481593]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      if ( not isnull( dhBinaryDataPR.Data() ) ) {
+        dhBinaryDataPR.Data().Clear();
+      }
+      dhOriginalFileNamePR.Data( "" );
+      dhIsPRArchive.Data( false );
+      
+      if ( not isnull( dhBinaryDataPP.Data() ) ) {
+        dhBinaryDataPP.Data().Clear();
+      }
+      dhOriginalFileNamePP.Data( "" );
+      dhIsPPArchive.Data( false );
+      
+      if ( not isnull( dhBinaryDataBudget.Data() ) ) {
+        dhBinaryDataBudget.Data().Clear();
+      }
+      dhOriginalFileNameBudget.Data( "" );
+      dhIsBudgetArchive.Data( false );
+      
+      if ( not isnull( dhBinaryDataPPA.Data() ) ) {
+        dhBinaryDataPPA.Data().Clear();
+      }
+      dhOriginalFileNamePPA.Data( "" );
+      dhIsPPAArchive.Data( false );
+      
+      if ( not isnull( dhBinaryDataCurve.Data() ) ) {
+        dhBinaryDataCurve.Data().Clear();
+      }
+      dhOriginalFileNameCurve.Data( "" );
+      
+      if ( not isnull( dhBinaryDataIDS.Data() ) ) {
+        dhBinaryDataIDS.Data().Clear();
+      }
+      dhOriginalFileNameIDS.Data( "" );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pBudget_cBudget_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pBudget_cBudget_OnChanged.def
new file mode 100644
index 0000000..dfdb780
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pBudget_cBudget_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: pBudget/cBudget
+Response OnChanged () id:Response_pBudget_cBudget_OnChanged
+{
+  #keys: '[414996.0.395394037]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      dhIsBudgetArchive.Data( this.Checked() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPPA_cPPA_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPPA_cPPA_OnChanged.def
new file mode 100644
index 0000000..53275b4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPPA_cPPA_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: pPPA/cPPA
+Response OnChanged () id:Response_pPPA_cPPA_OnChanged
+{
+  #keys: '[414996.0.395394557]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      dhIsPPAArchive.Data( this.Checked() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPP_cPP_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPP_cPP_OnChanged.def
new file mode 100644
index 0000000..0e9635a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPP_cPP_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: pPP/cPP
+Response OnChanged () id:Response_pPP_cPP_OnChanged
+{
+  #keys: '[414996.0.395393952]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      dhIsPPArchive.Data( this.Checked() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPR_cPR_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPR_cPR_OnChanged.def
new file mode 100644
index 0000000..2285fdf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogRequirementUpload/Response_pPR_cPR_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: pPR/cPR
+Response OnChanged () id:Response_pPR_cPR_OnChanged
+{
+  #keys: '[414996.0.395393868]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
+  QuillAction
+  {
+    Body:
+    [*
+      dhIsPRArchive.Data( this.Checked() );
+    *]
+    GroupServerCalls: false
+  }
+}

--
Gitblit v1.9.3