From be10d38e5c56c0070d6acfd344ebfae30ee5b0ac Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期五, 16 八月 2024 17:56:36 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg
---
_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_CreateFullTable.qbl | 75 ++
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison234#1.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData854_OnCreated.def | 12
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhTimeUnit_OnCreated.def | 16
_Main/BL/Type_LocalRow/DefaultValue_StockingPointID.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonAnnualPlanReport_OnClick.def | 17
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bDownload_OnClick.def | 30 +
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData854_OnDataChanged.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bExport_OnClick.def | 19
_Main/BL/Type_LocalCell_Default/StaticMethod_GetColumnXML.qbl | 35 +
_Main/BL/Type_LocalCell_Default/StaticMethod_AsyncExport.qbl | 29 +
_Main/BL/Type_MP_Cell_AnnualPlanReport/_ROOT_Type_MP_Cell_AnnualPlanReport.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bExport_OnClick.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def | 105 +++
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl | 20
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelStockingPoint_OnCreated.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon#805.def | 15
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor510#127.def | 102 +++
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dsEndDate_OnChanged.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged.def | 20
_Main/BL/Type_LocalColumn/Attribute_TimeUnit.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor.def | 103 +++
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedStockingPoint_OnDataChanged.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhStartDate_OnCreated.def | 16
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_Panel743_dhFinelEntity_OnCreated.def | 16
_Main/BL/Type_LocalRow/Attribute_ProductID.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bDownload_OnClick.def | 32 +
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def | 11
_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def | 4
_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_pHeader.def | 2
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_Panel743_dhCheckedEntity_OnDataChanged.def | 20
_Main/BL/Type_ExportXMLData/Method_CalculatePriority.qbl | 52 +
_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_Create.qbl | 51 +
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def | 35 +
_Main/BL/Type_MP_Row/Attribute_ProductID.qbl | 7
_Main/BL/Type_MP_Cell_AnnualPlanReport/Attribute_NewSupply.qbl | 7
_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl | 4
_Main/BL/Type_LocalRow/Attribute_StockingPointID.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison.def | 10
_Main/BL/Type_LocalRow/DefaultValue_ProductID.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction#633.def | 47 +
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon682_OnClick.def | 17
_Main/UI/MacroPlannerWebApp/Component_DialogBESIWarning/Response_pnlActions_btnOk_OnClick.def | 8
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_rbgTimeUnit_OnUserChanged.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pExport.def | 60 ++
_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_GetTableName.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon322.def | 102 +++
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison527#1.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelProduct_OnCreated.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/_ROOT_Component_FormAnnualPlanReport.def | 18
_Main/UI/MacroPlannerWebApp/Views/AnnualPlanReport.vw | 255 +++++++++
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData_OnCreated.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dsStartDate_OnChanged.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhEndDate_OnCreated.def | 16
_Main/BL/Type_MP_Row/Attribute_StockingPointID.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon_OnClick.def | 18
58 files changed, 1,628 insertions(+), 21 deletions(-)
diff --git a/_Main/BL/Type_ExportXMLData/Method_CalculatePriority.qbl b/_Main/BL/Type_ExportXMLData/Method_CalculatePriority.qbl
new file mode 100644
index 0000000..c01e5fa
--- /dev/null
+++ b/_Main/BL/Type_ExportXMLData/Method_CalculatePriority.qbl
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+#parent: #root
+Method CalculatePriority () as Number
+{
+ TextBody:
+ [*
+ // rislai Aug-13-2024 (created)
+ priority := 0;
+ element := this.XML();
+ if( element.LikeUserLocale( "<name>Product ID</name>" )){
+ priority := 1 ;
+ }else if( element.LikeUserLocale( "<name>浜х嚎</name>" )){
+ priority := 2 ;
+ }else if( element.LikeUserLocale( "<name>Attribute</name>" )){
+ priority := 3 ;
+ }else if( element.LikeUserLocale( "<name>浜у湴</name>" )){
+ priority := 4 ;
+ }else if( element.LikeUserLocale( "<name>杞﹀瀷</name>" )){
+ priority := 5 ;
+ }else if( element.LikeUserLocale( "<name>鍙戝姩鏈洪浂浠跺彿</name>" )){
+ priority := 6 ;
+ }else if( element.LikeUserLocale( "<name>鍙戝姩鏈哄洓浣嶇爜</name>" )){
+ priority := 7 ;
+ }else if( element.LikeUserLocale( "<name>鐢熶骇澶╂暟</name>" )){
+ priority := 8 ;
+ }else if( element.LikeUserLocale( "<name>鍔犵彮/娆犲伐鏃堕暱</name>" )){
+ priority := 9 ;
+ }else if( element.LikeUserLocale( "<name>骞虫棩鍔犵彮鏃堕暱</name>" )){
+ priority := 10 ;
+ }else if( element.LikeUserLocale( "<name>浼戞伅鏃ュ姞鐝椂闀�</name>" )){
+ priority := 11 ;
+ }else if( element.LikeUserLocale( "<name>鑺傚亣鏃ュ姞鐝椂闀�</name>" )){
+ priority := 12 ;
+ }else if( element.LikeUserLocale( "<name>娆犲伐鏃堕暱</name>" )){
+ priority := 13 ;
+ }else if( element.LikeUserLocale( "<name>鍔犵彮/娆犲伐璐�</name>" )){
+ priority := 14 ;
+ }else if( element.LikeUserLocale( "<name>骞虫棩鍔犵彮璐�</name>" )){
+ priority := 15 ;
+ }else if( element.LikeUserLocale( "<name>浼戞伅鏃ュ姞鐝垂</name>" )){
+ priority := 16 ;
+ }else if( element.LikeUserLocale( "<name>鑺傚亣鏃ュ姞鐝垂</name>" )){
+ priority := 17 ;
+ }else if( element.LikeUserLocale( "<name>娆犲伐璐�</name>" )){
+ priority := 18 ;
+ }else{
+ // <column><name>2020/04/01</name>
+ priority := [Number]element.SubString( 14,10 ).ReplaceAll( "/","") ;
+ }
+ return priority;
+ *]
+}
diff --git a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
index fd9deec..d30416e 100644
--- a/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
+++ b/_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
@@ -17,25 +17,7 @@
}
traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
data := manager.ExportXMLData( relnew, XML := element);
- if( element.LikeUserLocale( "Product ID" )){
- data.Priority( 1 );
- }else if( element.LikeUserLocale( "浜х嚎" )){
- data.Priority( 1 );
- }else if( element.LikeUserLocale( "Attribute" )){
- data.Priority( 2 );
- }else if( element.LikeUserLocale( "浜у湴" )){
- data.Priority( 3 );
- }else if( element.LikeUserLocale( "杞﹀瀷" )){
- data.Priority( 4 );
- }else if( element.LikeUserLocale( "鍙戝姩鏈洪浂浠跺彿" )){
- data.Priority( 5 );
- }else if( element.LikeUserLocale( "鍙戝姩鏈哄洓浣嶇爜" )){
- data.Priority( 6 );
- }else{
- info( element );
- // <column><name>2020/04/01</name>
- data.Priority( [Number]element.SubString( 14,10 ).ReplaceAll( "/","") );
- }
+ data.Priority( data.CalculatePriority( ));
}
*]
}
diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_AsyncExport.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_AsyncExport.qbl
new file mode 100644
index 0000000..1c4c1eb
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_Default/StaticMethod_AsyncExport.qbl
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AsyncExport (
+ RecycleBin recycleBin,
+ const constcontent LocalRows rows,
+ const constcontent LocalColumns columns
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ sortColumns := selectsortedset( columns,Elements,column,true,column.Index());
+
+ columnstring := emit( "" );
+ flag := true;
+ traverse( sortColumns,Elements,sortColumn ){
+ if( flag ){
+ flag := false;
+ attributeXML := rows -> LocalCell_Default::GetColumnXML( sortColumn,"attribute" );
+ columnstring := columnstring.Merge( attributeXML )
+ }
+
+ cellxml := rows -> LocalCell_Default::GetColumnXML( sortColumn ,"data" );
+ columnstring := columnstring.Merge( cellxml);
+ }
+
+ columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),MP_Cell_AnnualPlanReport::GetTableName()) );
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_GetColumnXML.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_GetColumnXML.qbl
new file mode 100644
index 0000000..e9956a5
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_Default/StaticMethod_GetColumnXML.qbl
@@ -0,0 +1,35 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetColumnXML (
+ const constcontent LocalRows rows,
+ const LocalColumn column,
+ String type
+) const as String
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+
+ columnXML := "";
+ cells := selectsortedset( column, LocalCell.astype( LocalCell_Default ), cell,
+ exists( rows,Elements,element,element = cell.LocalRow()), cell.LocalRow().Index());
+ if( type = "data" ){
+ columnXML := "<column><name>" + column.Name() + "</name><type>String</type>";
+ traverse ( cells, Elements, cell ) {
+ cellXML := '<cell value="' + cell.RealValue().Format( "N(Dec)" ) + '"/>'
+ columnXML := columnXML + cellXML;
+ }
+ columnXML := columnXML + "</column>";
+ }
+ if( type = "attribute" ){
+ columnXML1 := "<column><name>浜х嚎</name><type>String</type>";
+ traverse ( cells, Elements, cell ) {
+ cellXML := '<cell value="' + cell.LocalRow().Name() + '"/>'
+ columnXML1 := columnXML1 + cellXML;
+ }
+ columnXML := columnXML1 + "</column>";
+ }
+
+ return columnXML;
+ *]
+}
diff --git a/_Main/BL/Type_LocalColumn/Attribute_TimeUnit.qbl b/_Main/BL/Type_LocalColumn/Attribute_TimeUnit.qbl
new file mode 100644
index 0000000..1ebbe55
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/Attribute_TimeUnit.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeUnit
+{
+ #keys: '3[412672.1.108145936][412672.1.108145935][412672.1.108145937]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl b/_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl
index a8ef9c9..59886e3 100644
--- a/_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl
+++ b/_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl
@@ -13,9 +13,13 @@
index := [String]year;
if( month < 10 ){
index := index + "0" + [String]month;
+ }else{
+ index := index + [String]month;
}
if( day < 10 ){
index := index + "0" + [String]day;
+ }else{
+ index := index + [String]day;
}
value := [Number]index;
}else{
diff --git a/_Main/BL/Type_LocalRow/Attribute_ProductID.qbl b/_Main/BL/Type_LocalRow/Attribute_ProductID.qbl
new file mode 100644
index 0000000..cc3a825
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+ #keys: '3[412672.1.107689520][412672.1.107689519][412672.1.107689521]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalRow/Attribute_StockingPointID.qbl b/_Main/BL/Type_LocalRow/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..7d6d3b9
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+ #keys: '3[412672.1.107689523][412672.1.107689522][412672.1.107689524]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalRow/DefaultValue_ProductID.qbl b/_Main/BL/Type_LocalRow/DefaultValue_ProductID.qbl
new file mode 100644
index 0000000..98649b2
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/DefaultValue_ProductID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: ProductID
+}
diff --git a/_Main/BL/Type_LocalRow/DefaultValue_StockingPointID.qbl b/_Main/BL/Type_LocalRow/DefaultValue_StockingPointID.qbl
new file mode 100644
index 0000000..fbb83fc
--- /dev/null
+++ b/_Main/BL/Type_LocalRow/DefaultValue_StockingPointID.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: StockingPointID
+}
diff --git a/_Main/BL/Type_MP_Cell_AnnualPlanReport/Attribute_NewSupply.qbl b/_Main/BL/Type_MP_Cell_AnnualPlanReport/Attribute_NewSupply.qbl
new file mode 100644
index 0000000..9a529ee
--- /dev/null
+++ b/_Main/BL/Type_MP_Cell_AnnualPlanReport/Attribute_NewSupply.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NewSupply
+{
+ #keys: '3[412672.1.107664674][412672.1.107664673][412672.1.107664675]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_Create.qbl b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_Create.qbl
new file mode 100644
index 0000000..10e8056
--- /dev/null
+++ b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_Create.qbl
@@ -0,0 +1,51 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Create (
+ MacroPlan owner
+) as MP_Table
+{
+ TextBody:
+ [*
+ // rislai Aug-6-2024 (created)
+ table := select( owner,MP_Table,table,table.Name() = MP_Cell_AnnualPlanReport::GetTableName() );
+ if( not isnull( table )){
+ table.Delete();
+ }
+
+ table := owner.MP_Table( relnew,Name := MP_Cell_AnnualPlanReport::GetTableName());
+
+ startDate := owner.StartOfPlanning().Date();
+ endDate := startDate + 7;
+
+ columns := construct( MP_Columns );
+ columnIndexTree := NamedValueTree::Create();
+ for( i := startDate;i < endDate; i := i + 1){
+ column := table.MP_Column( relnew,CustomDate := i );
+ columnHandle := columnIndexTree.GetHandle( i.AsQUILL() );
+ columns.Add( column );
+ columnIndexTree.Root().AddChild( columnHandle,columns.Size() - 1 );
+ }
+
+ traverse( owner,Product_MP.ProductInStockingPoint_MP,pisp_mp ){
+ // unit.AsEntity().DisplayNameForSelection()
+ pispippls := selectset( pisp_mp,ProductInStockingPointInPeriod.astype( ProductInStockingPointInPeriodPlanningLeaf ),pispippl,
+ pispippl.Period_MP().StartDate() >= startDate
+ and pispippl.Period_MP().EndDate() <= endDate
+ and pispippl.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day());
+ if( pispippls.Size() <> 0 ){
+ row := table.MP_Row( relnew,ProductID := pisp_mp.ProductID(),StockingPointID := pisp_mp.StockingPointID(), CustomName := pisp_mp.Name() ,Index := table.GetRowIndexCache() );
+ traverse( pispippls,Elements,pispippl ){
+ columnHandle := columnIndexTree.GetHandle( pispippl.Period_MP().StartDate().AsQUILL() );
+ columnIndex := guard( columnIndexTree.Root().Child( columnHandle ),null( NamedValue ));
+ if( not isnull( columnIndex )){
+ column := columns.Element( columnIndex.GetValueAsNumber() );
+
+ row.MP_Cell( relnew,MP_Cell_AnnualPlanReport,MP_Column := column ,NewSupply := pispippl.NewSupplyQuantity());
+ }
+ }
+ }
+ }
+
+ return table;
+ *]
+}
diff --git a/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_CreateFullTable.qbl b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_CreateFullTable.qbl
new file mode 100644
index 0000000..3a8b313
--- /dev/null
+++ b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_CreateFullTable.qbl
@@ -0,0 +1,75 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateFullTable (
+ const MacroPlans owners,
+ RecycleBin recycleBin
+) as LocalTable
+{
+ TextBody:
+ [*
+ // rislai Aug-7-2024 (created)
+ tables := construct( MP_Tables );
+ traverse( owners,Elements,owner ){
+ table := select( owner,MP_Table,table,table.Name() = MP_Cell_AnnualPlanReport::GetTableName() );
+ if( isnull( table )){
+ table := MP_Cell_AnnualPlanReport::Create( owner );
+ }
+ tables.Add( table );
+ }
+
+ localTable := recycleBin.LocalTable( relnew,Name := MP_Cell_AnnualPlanReport::GetTableName() );
+ startDate := minselect( tables,Elements.MP_Column,column,column.CustomDate() ).CustomDate();
+ endDate := maxselect( tables,Elements.MP_Column,column,column.CustomDate() ).CustomDate();
+
+ localColumns := construct( LocalColumns );
+ localColumnIndexTree := NamedValueTree::Create();
+ for( i := startDate; i <= endDate; i := i + 1 ){
+ localColumn := localTable.LocalColumn( relnew,CustomDate := i ,TimeUnit := "Day");
+ localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL());
+ localColumns.Add( localColumn );
+ localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
+ }
+ for( i := startDate.StartOfWeek(); i <= endDate.StartOfNextWeek(); i := i.StartOfNextWeek() ){
+ localColumn := localTable.LocalColumn( relnew,CustomDate := i ,TimeUnit := "Week");
+ localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() + "Week" );
+ localColumns.Add( localColumn );
+ localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
+ }
+ for( i := startDate.StartOfMonth(); i <= endDate.StartOfNextMonth(); i := i.StartOfNextMonth() ){
+ localColumn := localTable.LocalColumn( relnew,CustomDate := i ,TimeUnit := "Month");
+ localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() + "Month" );
+ localColumns.Add( localColumn );
+ localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
+ }
+ traverse( tables,Elements.MP_Row,row ){
+ localRow := localTable.LocalRow( relnew,CustomName := row.Name(),ProductID := row.ProductID(),StockingPointID := row.StockingPointID(),Index := localTable.GetRowIndexCache() );
+ traverse( row,MP_Cell.astype( MP_Cell_AnnualPlanReport ),cell ){
+ localColumnHandle := localColumnIndexTree.GetHandle( cell.MP_Column().Date().AsQUILL() );
+ localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue ));
+ if( not isnull( localColumnIndex )){
+ localColumn := localColumns.Element( localColumnIndex.GetValueAsNumber() );
+ localCell := localRow.LocalCell( relnew,LocalCell_Default,LocalColumn := localColumn );
+ localCell.RealValue( cell.NewSupply() );
+ }
+ }
+ }
+ traverse( localTable,LocalRow,row ){
+ traverse( localTable,LocalColumn,column,column.TimeUnit() = "Week" ){
+ value := sum( row,LocalCell.astype( LocalCell_Default ),cell,
+ cell.LocalColumn().TimeUnit() = "Day" and
+ cell.LocalColumn().CustomDate() >= column.CustomDate() and
+ cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextWeek(),cell.RealValue());
+ row.LocalCell( relnew,LocalCell_Default,LocalColumn := column,RealValue := value );
+ }
+ traverse( localTable,LocalColumn,column,column.TimeUnit() = "Month" ){
+ value := sum( row,LocalCell.astype( LocalCell_Default ),cell,
+ cell.LocalColumn().TimeUnit() = "Day" and
+ cell.LocalColumn().CustomDate() >= column.CustomDate() and
+ cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextMonth(),cell.RealValue());
+ row.LocalCell( relnew,LocalCell_Default,LocalColumn := column,RealValue := value );
+ }
+ }
+
+ return localTable;
+ *]
+}
diff --git a/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_GetTableName.qbl b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_GetTableName.qbl
new file mode 100644
index 0000000..fdd18d6
--- /dev/null
+++ b/_Main/BL/Type_MP_Cell_AnnualPlanReport/StaticMethod_GetTableName.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetTableName () const declarative remote as owning String
+{
+ TextBody:
+ [*
+ // rislai Aug-7-2024 (created)
+ return "鍏ㄥ勾璁″垝鎶ヨ〃";
+ *]
+}
diff --git a/_Main/BL/Type_MP_Cell_AnnualPlanReport/_ROOT_Type_MP_Cell_AnnualPlanReport.qbl b/_Main/BL/Type_MP_Cell_AnnualPlanReport/_ROOT_Type_MP_Cell_AnnualPlanReport.qbl
new file mode 100644
index 0000000..8f10ada
--- /dev/null
+++ b/_Main/BL/Type_MP_Cell_AnnualPlanReport/_ROOT_Type_MP_Cell_AnnualPlanReport.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization MP_Cell_AnnualPlanReport
+{
+ #keys: '2[412672.1.107700065][412672.1.107700060]'
+ Parent: MP_Cell
+ StructuredName: 'MP_Cell_AnnualPlanReports'
+}
diff --git a/_Main/BL/Type_MP_Row/Attribute_ProductID.qbl b/_Main/BL/Type_MP_Row/Attribute_ProductID.qbl
new file mode 100644
index 0000000..1aec101
--- /dev/null
+++ b/_Main/BL/Type_MP_Row/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+ #keys: '3[412672.1.107684682][412672.1.107684681][412672.1.107684683]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MP_Row/Attribute_StockingPointID.qbl b/_Main/BL/Type_MP_Row/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..d274c47
--- /dev/null
+++ b/_Main/BL/Type_MP_Row/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+ #keys: '3[412672.1.107684692][412672.1.107684691][412672.1.107684693]'
+ ValueType: String
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index 25803c6..be2f284 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -172,6 +172,17 @@
Taborder: 12
]
}
+ Component ButtonAnnualPlanReport
+ {
+ #keys: '[412672.1.111811769]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOCUMENT_HEART'
+ Label: '鍏ㄥ勾璁″垝鎶ヨ〃'
+ Taborder: 13
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonAnnualPlanReport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonAnnualPlanReport_OnClick.def
new file mode 100644
index 0000000..30862a0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonAnnualPlanReport_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupReport/ButtonAnnualPlanReport
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonAnnualPlanReport_OnClick
+{
+ #keys: '[412672.1.111811838]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ // Open view
+ ApplicationMacroPlanner.OpenView( 'AnnualPlanReport', this );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogBESIWarning/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBESIWarning/Response_pnlActions_btnOk_OnClick.def
index a70e1aa..9f327be 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogBESIWarning/Response_pnlActions_btnOk_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBESIWarning/Response_pnlActions_btnOk_OnClick.def
@@ -4,6 +4,14 @@
{
#keys: '[414996.0.415672898]'
DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ flag := efBESI.Text().ToUpper() ~ "BESI";
+ if( not flag ){
+ feedback := "鏂囦欢鍚嶄腑闇�瑕佸寘鍚獴ESI";
+ }
+ return flag;
+ *]
QuillAction
{
Body:
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def
index 20b8c8e..6d90515 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_MatrixEditor.def
@@ -45,7 +45,7 @@
Properties:
[
DataType: 'LocalTable'
- FilterArguments: 'checkedProduct:QMacroPlanner::FormOfflinePlanComparison701.dhFinelProduct'
+ FilterArguments: 'checkedProduct:QMacroPlanner::FormOfflinePlanChanges.dhFinelProduct'
FixedFilter: 'exists( checkedProduct,Elements,product,product.ID() = object.Name() )'
Source: 'dhComparisonData'
Taborder: 0
@@ -73,7 +73,7 @@
Properties:
[
DataType: 'LocalTable'
- FilterArguments: 'startDate:QMacroPlanner::FormOfflinePlanComparison701.dhStartDate;endDate:QMacroPlanner::FormOfflinePlanComparison701.dhEndDate'
+ FilterArguments: 'startDate:QMacroPlanner::FormOfflinePlanChanges.dhStartDate;endDate:QMacroPlanner::FormOfflinePlanChanges.dhEndDate'
FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date() '
Source: 'dhComparisonData'
Taborder: 0
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor.def
new file mode 100644
index 0000000..aea0bf8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor.def
@@ -0,0 +1,103 @@
+Quintiq file version 2.0
+Component MatrixEditor
+{
+ #keys: '[412672.1.106503687]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell
+ {
+ #keys: '[412672.1.106503688]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCells
+ {
+ #keys: '[412672.1.106503689]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MP_Table'
+ Source: 'dhComparisonData'
+ Taborder: 0
+ Transformation: 'MP_Row.MP_Cell.astype(MP_Cell_AnnualPlanReport)'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'NewSupply'
+ Column: 'MP_Column'
+ Row: 'MP_Row'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows
+ {
+ #keys: '[412672.1.106503690]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRows
+ {
+ #keys: '[412672.1.106503691]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MP_Table'
+ FilterArguments: 'checkedProduct:QMacroPlanner::FormAnnualPlanReport.dhFinelProduct;checkedStockingPoint:QMacroPlanner::FormAnnualPlanReport.dhFinelStockingPoint'
+ FixedFilter: 'exists( checkedProduct,Elements,entity,entity.ID() = object.ProductID()) and exists( checkedStockingPoint,Elements,entity,entity.DisplayName() = object.StockingPointID())'
+ Source: 'dhComparisonData'
+ Taborder: 0
+ Transformation: 'MP_Row'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns
+ {
+ #keys: '[412672.1.106503692]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumns
+ {
+ #keys: '[412672.1.106503693]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MP_Table'
+ FilterArguments: 'startDate:QMacroPlanner::FormAnnualPlanReport.dhStartDate;endDate:QMacroPlanner::FormAnnualPlanReport.dhEndDate'
+ FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date() '
+ Source: 'dhComparisonData'
+ Taborder: 0
+ Transformation: 'MP_Column'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Date'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageDemandComparison
+ #child: matrixeditorContextMenuDemandComparison
+ ]
+ Properties:
+ [
+ AllowMultipleAttributes: true
+ Columns: 'MatrixEditorColumns'
+ ContextMenu: 'matrixeditorContextMenuDemandComparison'
+ Rows: 'MatrixEditorRows'
+ Taborder: 0
+ Visible: false
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor510\043127.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor510\043127.def"
new file mode 100644
index 0000000..e0b9cd6
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_MatrixEditor510\043127.def"
@@ -0,0 +1,102 @@
+Quintiq file version 2.0
+Component MatrixEditor510 id:MatrixEditor510_127
+{
+ #keys: '[412672.1.106503696]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell294
+ {
+ #keys: '[412672.1.106503697]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCells611
+ {
+ #keys: '[412672.1.106503698]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ Source: 'dhComparisonData854'
+ Taborder: 0
+ Transformation: 'LocalRow.LocalCell.astype(LocalCell_Default)'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'RealValue'
+ Column: 'LocalColumn'
+ Row: 'LocalRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows221
+ {
+ #keys: '[412672.1.106503699]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRows116
+ {
+ #keys: '[412672.1.106503700]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ FilterArguments: 'checkedProduct:QMacroPlanner::FormAnnualPlanReport.dhFinelProduct;checkedStockingPoint:QMacroPlanner::FormAnnualPlanReport.dhFinelStockingPoint'
+ FixedFilter: 'exists( checkedProduct,Elements,entity,entity.ID() = object.ProductID()) and exists( checkedStockingPoint,Elements,entity,entity.DisplayName() = object.StockingPointID())'
+ Source: 'dhComparisonData854'
+ Taborder: 0
+ Transformation: 'LocalRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns391
+ {
+ #keys: '[412672.1.106503701]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumns655
+ {
+ #keys: '[412672.1.106503702]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ FilterArguments: 'startDate:QMacroPlanner::FormAnnualPlanReport.dhStartDate;endDate:QMacroPlanner::FormAnnualPlanReport.dhEndDate;timeUnit:QMacroPlanner::FormAnnualPlanReport.dhTimeUnit'
+ FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date() and object.TimeUnit() = timeUnit'
+ Source: 'dhComparisonData854'
+ Taborder: 0
+ Transformation: 'LocalColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Date'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageDemandComparison234_1
+ #child: matrixeditorContextMenuDemandComparison527_1
+ ]
+ Properties:
+ [
+ AllowMultipleAttributes: true
+ Columns: 'MatrixEditorColumns391'
+ ContextMenu: 'matrixeditorContextMenuDemandComparison527'
+ Rows: 'MatrixEditorRows221'
+ Taborder: 2
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def
new file mode 100644
index 0000000..d4eb82e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def
@@ -0,0 +1,105 @@
+Quintiq file version 2.0
+Component PanelAnnualPlan
+{
+ #keys: '[412672.1.106503682]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component dhComparisonData
+ {
+ #keys: '[412672.1.106503683]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'MP_Table'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ Component dhCheckedProduct
+ {
+ #keys: '[412672.1.106503684]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Product_MP]*'
+ Children:
+ [
+ Component deCheckedProduct
+ {
+ #keys: '[412672.1.106503685]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Product_MP]'
+ Source: 'ApplicationMacroPlanner.DataHolderCheckedProduct'
+ Taborder: 0
+ Transformation: 'Elements'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 5
+ ]
+ }
+ Component dhFinelProduct
+ {
+ #keys: '[412672.1.106503686]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Product_MP]*'
+ Properties:
+ [
+ Taborder: 4
+ ]
+ }
+ Component dhComparisonData854
+ {
+ #keys: '[412672.1.106503705]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'LocalTable'
+ Properties:
+ [
+ Taborder: 3
+ ]
+ }
+ #child: MatrixEditor
+ #child: MatrixEditor510_127
+ Component dhCheckedStockingPoint
+ {
+ #keys: '[412672.1.107978890]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Entity]*'
+ Children:
+ [
+ Component deCheckedStockingPoint
+ {
+ #keys: '[412672.1.107978891]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Entity]'
+ Source: 'ApplicationMacroPlanner.DataHolderCheckedEntities'
+ Taborder: 0
+ Transformation: 'Elements'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 7
+ ]
+ }
+ Component dhFinelStockingPoint
+ {
+ #keys: '[412672.1.107978915]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Entity]*'
+ Properties:
+ [
+ Taborder: 6
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon\043805.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon\043805.def"
new file mode 100644
index 0000000..ea992df
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon\043805.def"
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelRibbon id:PanelRibbon_805
+{
+ #keys: '[412672.1.106503600]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelRibbon322
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon322.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon322.def
new file mode 100644
index 0000000..1da6c09
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon322.def
@@ -0,0 +1,102 @@
+Quintiq file version 2.0
+Component PanelRibbon322
+{
+ #keys: '[412672.1.106503607]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component dsStartDate
+ {
+ #keys: '[412672.1.106503612]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Label: 'Start Date'
+ Taborder: 4
+ ]
+ }
+ Component dhStartDate
+ {
+ #keys: '[412672.1.106503613]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Date*'
+ Properties:
+ [
+ Taborder: 5
+ ]
+ }
+ Component dsEndDate
+ {
+ #keys: '[412672.1.106503614]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Date: 9999-12-31
+ Label: 'End Date'
+ Taborder: 6
+ ]
+ }
+ Component dhEndDate
+ {
+ #keys: '[412672.1.106503615]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Date*'
+ Properties:
+ [
+ Taborder: 7
+ ]
+ }
+ Component ButtonRibbon
+ {
+ #keys: '[412672.1.106504238]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'C_CLAMP'
+ Label: 'Create'
+ Taborder: 0
+ Visible: false
+ ]
+ }
+ Component ButtonRibbon682
+ {
+ #keys: '[412672.1.108512062]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'C_CLAMP'
+ Label: 'Create full table'
+ Taborder: 1
+ ]
+ }
+ Component rbgTimeUnit
+ {
+ #keys: '[412672.1.108680900]'
+ BaseType: 'WebRadioButtonGroup'
+ Properties:
+ [
+ BoundValue: 'Day'
+ ButtonLabels: 'Day;Week;Month'
+ ButtonValues: 'Day;Week;Month'
+ Taborder: 2
+ ]
+ }
+ Component dhTimeUnit
+ {
+ #keys: '[412672.1.111067302]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'String*'
+ Properties:
+ [
+ Taborder: 3
+ ]
+ }
+ #child: pExport
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison.def
new file mode 100644
index 0000000..34e0ac5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageDemandComparison
+{
+ #keys: '[412672.1.106503694]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison234\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison234\0431.def"
new file mode 100644
index 0000000..76c954d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixEditorActionBarPageDemandComparison234\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageDemandComparison234 id:matrixEditorActionBarPageDemandComparison234_1
+{
+ #keys: '[412672.1.106503703]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison.def
new file mode 100644
index 0000000..a04c4b3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuDemandComparison
+{
+ #keys: '[412672.1.106503695]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison527\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison527\0431.def"
new file mode 100644
index 0000000..b2e5697
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_matrixeditorContextMenuDemandComparison527\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuDemandComparison527 id:matrixeditorContextMenuDemandComparison527_1
+{
+ #keys: '[412672.1.106503704]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pExport.def
new file mode 100644
index 0000000..35cd231
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pExport.def
@@ -0,0 +1,60 @@
+Quintiq file version 2.0
+Component pExport
+{
+ #keys: '[412672.1.111157999]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component bExport id:bExport_474
+ {
+ #keys: '[412672.1.111158037]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Taborder: 0
+ ]
+ }
+ Component dhXMLDataListener id:dhXMLDataListener_801
+ {
+ #keys: '[412672.1.111158064]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'ExportXMLManager'
+ Children:
+ [
+ Component DataExtractorRibbon id:DataExtractorRibbon_462
+ {
+ #keys: '[412672.1.111158065]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'RecycleBin'
+ FixedFilter: 'object.Name() = MP_Cell_ScheduleSummary::GetTableName()'
+ Source: 'RecycleBin'
+ Taborder: 0
+ Transformation: 'ExportXMLManager'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ Component bDownload id:bDownload_520
+ {
+ #keys: '[412672.1.111158091]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOWNLOAD'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 8
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged.def
new file mode 100644
index 0000000..348b3a1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelAnnualPlan/dhCheckedProduct
+Response OnDataChanged () id:Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged
+{
+ #keys: '[412672.1.106503680]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ if( this.Data().Size() <> 0 ){
+ dhFinelProduct.Data( this.Data().Copy() );
+ }else{
+ dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedStockingPoint_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedStockingPoint_OnDataChanged.def
new file mode 100644
index 0000000..e3d55cb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedStockingPoint_OnDataChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelAnnualPlan/dhCheckedStockingPoint
+Response OnDataChanged () id:Response_PanelAnnualPlan_dhCheckedStockingPoint_OnDataChanged
+{
+ #keys: '[412672.1.107978888]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ if( this.Data().Size() <> 0 ){
+ dhFinelStockingPoint.Data( this.Data().Copy() );
+ }else{
+ dhFinelStockingPoint.Data( DataHolderEntities.Data().Copy() );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData854_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData854_OnCreated.def
new file mode 100644
index 0000000..97b60d1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData854_OnCreated.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+#parent: PanelAnnualPlan/dhComparisonData854
+Response OnCreated () id:Response_PanelAnnualPlan_dhComparisonData854_OnCreated
+{
+ #keys: '[412672.1.106503674]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData854_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData854_OnDataChanged.def
new file mode 100644
index 0000000..3ea00c6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData854_OnDataChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelAnnualPlan/dhComparisonData854
+Response OnDataChanged () id:Response_PanelAnnualPlan_dhComparisonData854_OnDataChanged
+{
+ #keys: '[412672.1.106503673]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ PanelAnnualPlan.Title( this.Data().Name() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData_OnCreated.def
new file mode 100644
index 0000000..df2f792
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhComparisonData_OnCreated.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: PanelAnnualPlan/dhComparisonData
+Response OnCreated () id:Response_PanelAnnualPlan_dhComparisonData_OnCreated
+{
+ #keys: '[412672.1.106503681]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ table := select( MacroPlan,MP_Table,table,table.Name() = MP_Cell_AnnualPlanReport::GetTableName() );
+
+ dhComparisonData.Data( table );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelProduct_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelProduct_OnCreated.def
new file mode 100644
index 0000000..864b3b0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelProduct_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelAnnualPlan/dhFinelProduct
+Response OnCreated () id:Response_PanelAnnualPlan_dhFinelProduct_OnCreated
+{
+ #keys: '[412672.1.106503679]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( DataHolderProduct.Data().Copy() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelStockingPoint_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelStockingPoint_OnCreated.def
new file mode 100644
index 0000000..a5b1001
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhFinelStockingPoint_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelAnnualPlan/dhFinelStockingPoint
+Response OnCreated () id:Response_PanelAnnualPlan_dhFinelStockingPoint_OnCreated
+{
+ #keys: '[412672.1.107978913]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( DataHolderEntities.Data().Copy() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon682_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon682_OnClick.def
new file mode 100644
index 0000000..e1c1b14
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon682_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelRibbon322/ButtonRibbon682
+Response OnClick () id:Response_PanelRibbon322_ButtonRibbon682_OnClick
+{
+ #keys: '[412672.1.108512122]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ table := MP_Cell_AnnualPlanReport::CreateFullTable( ApplicationMacroPlanner.GetMacroPlans(),RecycleBin );
+ dhComparisonData854.Data( table );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon_OnClick.def
new file mode 100644
index 0000000..c7711e6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_ButtonRibbon_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: PanelRibbon322/ButtonRibbon
+Response OnClick () id:Response_PanelRibbon322_ButtonRibbon_OnClick
+{
+ #keys: '[412672.1.106504261]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ table := MP_Cell_AnnualPlanReport::Create( MacroPlan );
+
+ dhComparisonData.Data( table );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhEndDate_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhEndDate_OnCreated.def
new file mode 100644
index 0000000..9975661
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhEndDate_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelRibbon322/dhEndDate
+Response OnCreated () id:Response_PanelRibbon322_dhEndDate_OnCreated
+{
+ #keys: '[412672.1.106503587]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( Date::MaxDate() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhStartDate_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhStartDate_OnCreated.def
new file mode 100644
index 0000000..f2e53ed
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhStartDate_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelRibbon322/dhStartDate
+Response OnCreated () id:Response_PanelRibbon322_dhStartDate_OnCreated
+{
+ #keys: '[412672.1.106503589]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( Date::MinDate() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhTimeUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhTimeUnit_OnCreated.def
new file mode 100644
index 0000000..d90dcb3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dhTimeUnit_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelRibbon322/dhTimeUnit
+Response OnCreated () id:Response_PanelRibbon322_dhTimeUnit_OnCreated
+{
+ #keys: '[412672.1.111098277]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( "Day" );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dsEndDate_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dsEndDate_OnChanged.def
new file mode 100644
index 0000000..edb6111
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dsEndDate_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelRibbon322/dsEndDate
+Response OnChanged () id:Response_PanelRibbon322_dsEndDate_OnChanged
+{
+ #keys: '[412672.1.106503588]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ dhEndDate.Data( this.Date() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dsStartDate_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dsStartDate_OnChanged.def
new file mode 100644
index 0000000..d9d9e73
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_dsStartDate_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelRibbon322/dsStartDate
+Response OnChanged () id:Response_PanelRibbon322_dsStartDate_OnChanged
+{
+ #keys: '[412672.1.106503590]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ dhStartDate.Data( this.Date() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_rbgTimeUnit_OnUserChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_rbgTimeUnit_OnUserChanged.def
new file mode 100644
index 0000000..f56289a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelRibbon322_rbgTimeUnit_OnUserChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelRibbon322/rbgTimeUnit
+Response OnUserChanged () id:Response_PanelRibbon322_rbgTimeUnit_OnUserChanged
+{
+ #keys: '[412672.1.111001324]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebRadioButtonGroup_OnUserChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ dhTimeUnit.Data( this.BoundValue() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bDownload_OnClick.def
new file mode 100644
index 0000000..213451f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bDownload_OnClick.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: pExport/bDownload_520
+Response OnClick () id:Response_pExport_bDownload_OnClick
+{
+ #keys: '[412672.1.111158090]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ flag := true;
+ feedback := "";
+ if( isnull( dhXMLDataListener.Data() )){
+ flag := false;
+ feedback := "褰撳墠鏃犱笅杞芥暟鎹紝鐐瑰嚮瀵煎嚭鍒涘缓涓嬭浇鏁版嵁銆�"
+ }
+ return flag;
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := dhXMLDataListener.Data( ).Export();
+
+ Application.Download( MP_Cell_ScheduleSummary::GetTableName() + "_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
+
+ dhXMLDataListener.Data( ).Delete();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bExport_OnClick.def
new file mode 100644
index 0000000..0f71325
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pExport_bExport_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: pExport/bExport_474
+Response OnClick () id:Response_pExport_bExport_OnClick
+{
+ #keys: '[412672.1.111158036]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ rows := selectset( dhComparisonData854.Data(),LocalRow,row,exists( dhFinelProduct.Data(),Elements,entity,entity.ID() = row.ProductID()) and exists( dhFinelStockingPoint.Data(),Elements,entity,entity.DisplayName() = row.StockingPointID()));
+ columns := selectset( dhComparisonData854.Data(),LocalColumn,column,dhStartDate.Data() <= column.Date() and dhEndDate.Data() > column.Date() );
+ LocalCell_ScheduleSummary::AsyncExport( RecycleBin,rows,columns );
+ //Application.Download( "浜у嚭瀵煎叆妯℃澘.xlsx",data.AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/_ROOT_Component_FormAnnualPlanReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/_ROOT_Component_FormAnnualPlanReport.def
new file mode 100644
index 0000000..d525bba
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/_ROOT_Component_FormAnnualPlanReport.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormAnnualPlanReport
+{
+ #keys: '[412672.1.106503510]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: PanelRibbon_805
+ #child: PanelAnnualPlan
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT_HEART'
+ Title: '鍏ㄥ勾璁″垝鎶ヨ〃'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_pHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_pHeader.def
index 1a7eefd..088afc8 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_pHeader.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachineLogisticsCostReport/Component_pHeader.def
@@ -32,6 +32,8 @@
BaseType: 'WebButton'
Properties:
[
+ Image: 'PIG'
+ Label: 'Button655'
Taborder: 2
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def
index 915e9ca..64ff7df 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def
@@ -45,6 +45,8 @@
Properties:
[
DataType: 'LocalTable'
+ FilterArguments: 'checkedEntity:QMacroPlanner::FormComprehensiveStandardHoursReport.dhFinelEntity'
+ FixedFilter: 'exists( checkedEntity,Elements,entity,entity.DisplayName() = object.Name())'
Source: 'dhTable'
Taborder: 0
Transformation: 'LocalRow'
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def
index 8755839..48edb9f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def
@@ -16,6 +16,41 @@
Taborder: 1
]
}
+ Component dhFinelEntity
+ {
+ #keys: '[412672.1.111002548]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Entity]*'
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ Component dhCheckedEntity
+ {
+ #keys: '[412672.1.111002571]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Entity]*'
+ Children:
+ [
+ Component deCheckedStockingPoint id:deCheckedStockingPoint_217
+ {
+ #keys: '[412672.1.111002572]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Entity]'
+ Source: 'ApplicationMacroPlanner.DataHolderCheckedEntities'
+ Taborder: 0
+ Transformation: 'Elements'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 3
+ ]
+ }
]
Properties:
[
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction\043633.def" "b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction\043633.def"
index 8be63c5..2162fa1 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction\043633.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction\043633.def"
@@ -52,10 +52,57 @@
BaseType: 'WebButton'
Properties:
[
+ Image: 'CALCULATOR'
Label: 'Calculating'
Taborder: 4
]
}
+ Component bExport
+ {
+ #keys: '[412672.1.106501907]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Taborder: 5
+ ]
+ }
+ Component bDownload
+ {
+ #keys: '[412672.1.106502003]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOWNLOAD'
+ Taborder: 6
+ ]
+ }
+ Component dhXMLDataListener
+ {
+ #keys: '[412672.1.106502023]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[ExportXMLManager]*'
+ Children:
+ [
+ Component DataExtractor510
+ {
+ #keys: '[412672.1.106502024]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'RecycleBin'
+ FixedFilter: 'object.Name() = "缁煎悎宸ユ椂鍒舵姤琛�" or object.Name() = "鏍囧噯宸ユ椂鍒舵姤琛�"'
+ Source: 'RecycleBin'
+ Taborder: 0
+ Transformation: 'ExportXMLManager'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 7
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_Panel743_dhCheckedEntity_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_Panel743_dhCheckedEntity_OnDataChanged.def
new file mode 100644
index 0000000..e3b873c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_Panel743_dhCheckedEntity_OnDataChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: Panel743/dhCheckedEntity
+Response OnDataChanged () id:Response_Panel743_dhCheckedEntity_OnDataChanged
+{
+ #keys: '[412672.1.111002569]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ if( this.Data().Size() <> 0 ){
+ dhFinelEntity.Data( this.Data().Copy() );
+ }else{
+ dhFinelEntity.Data( DataHolderEntities.Data().Copy() );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_Panel743_dhFinelEntity_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_Panel743_dhFinelEntity_OnCreated.def
new file mode 100644
index 0000000..fb690d3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_Panel743_dhFinelEntity_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: Panel743/dhFinelEntity
+Response OnCreated () id:Response_Panel743_dhFinelEntity_OnCreated
+{
+ #keys: '[412672.1.111002546]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( DataHolderEntities.Data().Copy() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bDownload_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bDownload_OnClick.def
new file mode 100644
index 0000000..a657040
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bDownload_OnClick.def
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#parent: pOperaction/bDownload
+Response OnClick () id:Response_PanelOperation_568_bDownload_OnClick
+{
+ #keys: '[412672.1.106502002]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ flag := true;
+ feedback := "";
+ if( dhXMLDataListener.Data().Size() = 0 ){
+ flag := false;
+ feedback := "褰撳墠鏃犱笅杞芥暟鎹紝鐐瑰嚮瀵煎嚭鍒涘缓涓嬭浇鏁版嵁銆�"
+ }
+ return flag;
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ traverse( dhXMLDataListener.Data(),Elements,element ){
+ binaryValue := element.Export();
+
+ Application.Download( element.Name() + "_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
+
+ element.Delete();
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bExport_OnClick.def
new file mode 100644
index 0000000..2fee64b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bExport_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: pOperaction/bExport
+Response OnClick () id:Response_pOperaction_bExport_OnClick
+{
+ #keys: '[412672.1.106502326]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ rows := selectset( dhTable.Data(),LocalRow,row,true );
+ columns := selectset( dhTable.Data( ),LocalColumn,column,true );
+ LocalCell_Default::AsyncExport( RecycleBin, rows, columns );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/AnnualPlanReport.vw b/_Main/UI/MacroPlannerWebApp/Views/AnnualPlanReport.vw
new file mode 100644
index 0000000..6e4c2ef
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/AnnualPlanReport.vw
@@ -0,0 +1,255 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormAnnualPlanReport
+ {
+ title: 'QMacroPlanner::FormAnnualPlanReport'
+ shown: true
+ componentID: 'QMacroPlanner::FormAnnualPlanReport'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 20
+ columnPosition: 1
+ columnSpan: 9
+ }
+ components
+ {
+ FormAnnualPlanReport_PanelRibbon
+ {
+ sizeRatio: 1
+ }
+ FormAnnualPlanReport_PanelRibbon322
+ {
+ sizeRatio: 1
+ }
+ FormAnnualPlanReport_pExport
+ {
+ sizeRatio: 1
+ }
+ FormAnnualPlanReport_PanelAnnualPlan
+ {
+ sizeRatio: 1
+ }
+ FormAnnualPlanReport_MatrixEditor
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 341
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormAnnualPlanReport.MatrixEditor'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_NewSupply
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'NewSupply'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ }
+ }
+ }
+ FormAnnualPlanReport_MatrixEditor510
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormAnnualPlanReport.MatrixEditor510'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_RealValue
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'RealValue'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ 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'
+ CarCo_KPISetting: 'Blending'
+ }
+ }
+ 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: 26
+ image: 'DOCUMENT_HEART'
+ description: ''
+ }
+ formatversion: 2
+ id: 'AnnualPlanReport'
+ name: 'AnnualPlanReport'
+ isglobal: false
+ isroot: true
+}
--
Gitblit v1.9.3