From 13c4f4920ece7b0060ec51e2510acf98f28abe90 Mon Sep 17 00:00:00 2001 From: rislai <risheng.lai@capgemini.com> Date: 星期二, 25 六月 2024 18:15:51 +0800 Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev --- _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def | 2 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def | 2 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def | 22 + _Main/BL/Type_FinancialProductionSearch/Attribute_Unit.qbl | 8 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def | 25 ++ _Main/BL/Type_FinancialProductionSource/Method_Filter.qbl | 18 + _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def | 3 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelFinancialProductionReportHeader.def | 3 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def | 16 + _Main/BL/Type_FinancialProductionRow/Method_Initialize#110.qbl | 15 + _Main/BL/Type_FinancialProductionSearch/Attribute_MqbMlb.qbl | 7 _Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl | 49 +++ _Main/BL/Type_FinancialProductionSearch/Attribute_Power.qbl | 7 _Main/BL/Type_FinancialProductionSearch/Attribute_Generation.qbl | 7 _Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl | 10 _Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultName.qbl | 10 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_matrixEditorActionBarPageTable.def | 10 _Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl | 10 _Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl | 76 ++++++ _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def | 19 + _Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl | 38 +++ _Main/BL/Type_FinancialProductionSource/StaticMethod_Upload.qbl | 1 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelTable.def | 14 + _Main/BL/Type_FinancialProductionSource/Attribute_IsImport.qbl | 7 _Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl | 5 /dev/null | 10 _Main/BL/Relations/Relation_FinancialProductionSearch_FinancialProductionSource_FinancialProduc.qbl | 23 ++ _Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl | 6 _Main/BL/Type_FinancialProductionSearch/_ROOT_Type_FinancialProductionSearch.qbl | 10 _Main/BL/Type_FinancialProductionRow/Method_Initialize.qbl | 16 + _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def | 99 +++++++++ _Main/BL/Type_FinancialProductionRow/Method_Filter.qbl | 22 ++ _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def | 16 + _Main/BL/Type_FinancialProductionReport/Attribute_IsImport.qbl | 2 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelUnit.def | 1 _Main/BL/Type_FinancialProductionRow/Attribute_Unit.qbl | 8 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def | 16 + _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def | 16 + _Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultAllUnit.qbl | 10 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_matrixeditorContextMenuTable.def | 10 40 files changed, 624 insertions(+), 25 deletions(-) diff --git a/_Main/BL/Relations/Relation_FinancialProductionSearch_FinancialProductionSource_FinancialProduc.qbl b/_Main/BL/Relations/Relation_FinancialProductionSearch_FinancialProductionSource_FinancialProduc.qbl new file mode 100644 index 0000000..1fb618d --- /dev/null +++ b/_Main/BL/Relations/Relation_FinancialProductionSearch_FinancialProductionSource_FinancialProduc.qbl @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +Relation FinancialProductionSearch_FinancialProductionSource_FinancialProductionSource_FinancialProductionSearch +{ + #keys: '1[415136.0.854770948]' + DefaultRelationStrategy + { + } + RelationSide.LeftSide FinancialProductionSource + { + #keys: '3[415136.0.854770950][415136.0.854770949][415136.0.854770951]' + Cardinality: '0to1' + ObjectDefinition: FinancialProductionSearch + OwningSide: 'Reference' + } + RelationSide.RightSide FinancialProductionSearch + { + #keys: '3[415136.0.854770953][415136.0.854770952][415136.0.854770954]' + Cardinality: '0to1' + ObjectDefinition: FinancialProductionSource + OwningSide: 'Owned' + } +} diff --git a/_Main/BL/Type_FinancialProductionReport/Attribute_IsImport.qbl b/_Main/BL/Type_FinancialProductionReport/Attribute_IsImport.qbl index c8eb836..125eb9d 100644 --- a/_Main/BL/Type_FinancialProductionReport/Attribute_IsImport.qbl +++ b/_Main/BL/Type_FinancialProductionReport/Attribute_IsImport.qbl @@ -2,6 +2,6 @@ #parent: #root Attribute IsImport { - #keys: '3[415136.0.834715063][415136.0.834715062][415136.0.834715064]' + #keys: '3[415136.0.842718583][415136.0.842718582][415136.0.842718584]' ValueType: Boolean } diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultAllUnit.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultAllUnit.qbl new file mode 100644 index 0000000..e912c3f --- /dev/null +++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultAllUnit.qbl @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod GetDefaultAllUnit () const declarative as String +{ + TextBody: + [* + // 鐢勫叞楦� Jun-25-2024 (created) + return '<All>'; + *] +} diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl new file mode 100644 index 0000000..0c1bf92 --- /dev/null +++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod GetDefaultCCUnit () const as String +{ + TextBody: + [* + // 鐢勫叞楦� Jun-25-2024 (created) + return 'Assembly Plant (France)'; + *] +} diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl new file mode 100644 index 0000000..a7800dd --- /dev/null +++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod GetDefaultDLUnit () const as String +{ + TextBody: + [* + // 鐢勫叞楦� Jun-25-2024 (created) + return 'Assembly Plant (Spain)'; + *] +} diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultName.qbl new file mode 100644 index 0000000..99eb092 --- /dev/null +++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultName.qbl @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod GetDefaultName () const as String +{ + TextBody: + [* + // 鐢勫叞楦� Jun-25-2024 (created) + return 'Financial productions'; + *] +} diff --git a/_Main/BL/Type_FinancialProductionRow/Attribute_Unit.qbl b/_Main/BL/Type_FinancialProductionRow/Attribute_Unit.qbl new file mode 100644 index 0000000..2131a22 --- /dev/null +++ b/_Main/BL/Type_FinancialProductionRow/Attribute_Unit.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute Unit +{ + #keys: '3[415136.0.842400951][415136.0.842400950][415136.0.842400952]' + Description: '浜х嚎' + ValueType: String +} diff --git a/_Main/BL/Type_FinancialProductionRow/Method_Filter.qbl b/_Main/BL/Type_FinancialProductionRow/Method_Filter.qbl new file mode 100644 index 0000000..8c62e9b --- /dev/null +++ b/_Main/BL/Type_FinancialProductionRow/Method_Filter.qbl @@ -0,0 +1,22 @@ +Quintiq file version 2.0 +#parent: #root +Method Filter ( + FinancialProductionSearch search, + Product_MPs products +) declarative remote as Boolean +{ + Description: '杩囨护' + TextBody: + [* + // 鐢勫叞楦� Jun-24-2024 (created) + allunit := '<All>'; + productids := selectuniquevalues( products, Elements, product, ( search.Generation() = allunit or product.Generation() = search.Generation() ) + and ( search.MqbMlb() = allunit or product.MQBMLB() = search.MqbMlb() ) + and ( search.Power() = allunit or product.Power() = search.Power() ), product.ID() ); + + productid := construct( Strings ); + productid.Add( this.Name() ); + + return productids.ContainsAll( productid ) and this.Unit() = search.Unit(); + *] +} diff --git "a/_Main/BL/Type_FinancialProductionRow/Method_Initialize\043110.qbl" "b/_Main/BL/Type_FinancialProductionRow/Method_Initialize\043110.qbl" new file mode 100644 index 0000000..ca0352d --- /dev/null +++ "b/_Main/BL/Type_FinancialProductionRow/Method_Initialize\043110.qbl" @@ -0,0 +1,15 @@ +Quintiq file version 2.0 +#parent: #root +Method Initialize ( + FinancialProductionColumn column, + String unit +) +{ + TextBody: + [* + // 鐢勫叞楦� Jun-24-2024 (created) + cell := column.FinancialProductionCell( relnew, Value := '' ); + + this.FinancialProductionCell( relinsert, cell ); + *] +} diff --git a/_Main/BL/Type_FinancialProductionRow/Method_Initialize.qbl b/_Main/BL/Type_FinancialProductionRow/Method_Initialize.qbl new file mode 100644 index 0000000..2bdcc0c --- /dev/null +++ b/_Main/BL/Type_FinancialProductionRow/Method_Initialize.qbl @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: #root +Method Initialize ( + FinancialProductionColumn column, + Real quantity +) +{ + TextBody: + [* + // 鐢勫叞楦� Jun-24-2024 (created) + cell := selectobject( this, FinancialProductionCell, cell, cell.FinancialProductionColumn() = column ); + + value := [Real]cell.Value() + quantity; + cell.Value( [String]value ); + *] +} diff --git a/_Main/BL/Type_FinancialProductionSearch/Attribute_Generation.qbl b/_Main/BL/Type_FinancialProductionSearch/Attribute_Generation.qbl new file mode 100644 index 0000000..1f3448b --- /dev/null +++ b/_Main/BL/Type_FinancialProductionSearch/Attribute_Generation.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute Generation +{ + #keys: '3[415136.0.854770962][415136.0.854770961][415136.0.854770963]' + ValueType: String +} diff --git a/_Main/BL/Type_FinancialProductionSearch/Attribute_MqbMlb.qbl b/_Main/BL/Type_FinancialProductionSearch/Attribute_MqbMlb.qbl new file mode 100644 index 0000000..f82aef2 --- /dev/null +++ b/_Main/BL/Type_FinancialProductionSearch/Attribute_MqbMlb.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute MqbMlb +{ + #keys: '3[415136.0.854770972][415136.0.854770971][415136.0.854770973]' + ValueType: String +} diff --git a/_Main/BL/Type_FinancialProductionSearch/Attribute_Power.qbl b/_Main/BL/Type_FinancialProductionSearch/Attribute_Power.qbl new file mode 100644 index 0000000..a7abf83 --- /dev/null +++ b/_Main/BL/Type_FinancialProductionSearch/Attribute_Power.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute Power +{ + #keys: '3[415136.0.854770982][415136.0.854770981][415136.0.854770983]' + ValueType: String +} diff --git a/_Main/BL/Type_FinancialProductionSearch/Attribute_Unit.qbl b/_Main/BL/Type_FinancialProductionSearch/Attribute_Unit.qbl new file mode 100644 index 0000000..4005f62 --- /dev/null +++ b/_Main/BL/Type_FinancialProductionSearch/Attribute_Unit.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute Unit +{ + #keys: '3[415136.0.854770939][415136.0.854770938][415136.0.854770940]' + Description: '浜х嚎' + ValueType: String +} diff --git a/_Main/BL/Type_FinancialProductionSearch/_ROOT_Type_FinancialProductionSearch.qbl b/_Main/BL/Type_FinancialProductionSearch/_ROOT_Type_FinancialProductionSearch.qbl new file mode 100644 index 0000000..ed2c807 --- /dev/null +++ b/_Main/BL/Type_FinancialProductionSearch/_ROOT_Type_FinancialProductionSearch.qbl @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +#root +#parent: #DomainModel +Type FinancialProductionSearch +{ + #keys: '5[415136.0.854770935][415136.0.854770933][0.0.0][415136.0.854770934][415136.0.854770936]' + BaseType: Object + Description: '鏌ヨ绫�' + StructuredName: 'FinancialProductionSearchs' +} diff --git a/_Main/BL/Type_FinancialProductionSource/Attribute_IsImport.qbl b/_Main/BL/Type_FinancialProductionSource/Attribute_IsImport.qbl new file mode 100644 index 0000000..cc83511 --- /dev/null +++ b/_Main/BL/Type_FinancialProductionSource/Attribute_IsImport.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute IsImport +{ + #keys: '3[415136.0.842718587][415136.0.842718586][415136.0.842718588]' + ValueType: Boolean +} diff --git a/_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl b/_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl new file mode 100644 index 0000000..b5170ce --- /dev/null +++ b/_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl @@ -0,0 +1,38 @@ +Quintiq file version 2.0 +#parent: #root +Method AfterImport +{ + TextBody: + [* + // 鐢勫叞楦� Jun-24-2024 (created) + allunit := FinancialProductionReport::GetDefaultAllUnit(); + table := selectobject( this.MacroPlan(), FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() ); + //info( '--------------------------', table.Name() ); + traverse( this, FinancialProductionReport, report ){ + productcolumn := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Product' ); + unitcolumn := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Unit' ); + + traverse( report, FinancialProductionRow, row ){ + product := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = productcolumn ); + unit := selectobject( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() = unitcolumn ); + + unitrow := selectobject( table, FinancialProductionRow, unitrow, unitrow.Name() = product.Value() and unitrow.Unit() = unit.Value() ); + allrow := selectobject( table, FinancialProductionRow, allrow, allrow.Name() = product.Value() and allrow.Unit() = allunit ); + + traverse( row, FinancialProductionCell, cell, cell.FinancialProductionColumn() <> productcolumn and cell.FinancialProductionColumn() <> unitcolumn and product.Value() = '120 kW Rotor' and unit.Value() = 'Assembly Plant (Spain)' ){ + column := cell.FinancialProductionColumn(); + unitcell := selectobject( unitrow, FinancialProductionCell, unitcell, unitcell.FinancialProductionColumn().Name() = column.Name() ); + allcell := selectobject( allrow, FinancialProductionCell, allcell, allcell.FinancialProductionColumn().Name() = column.Name() ); + info( isnull( unitcell ), isnull( allcell ), cell.Value(), unitcell.Value(), allcell.Value() ); + if( not isnull( unitcell ) ){ + unitcell.Value( cell.Value() ); + } + if( not isnull( allcell ) ){ + value := [Real]cell.Value() + [Real]allcell.Value(); + allcell.Value( [String]value ); + } + } + } + } + *] +} diff --git a/_Main/BL/Type_FinancialProductionSource/Method_Filter.qbl b/_Main/BL/Type_FinancialProductionSource/Method_Filter.qbl new file mode 100644 index 0000000..fa51b40 --- /dev/null +++ b/_Main/BL/Type_FinancialProductionSource/Method_Filter.qbl @@ -0,0 +1,18 @@ +Quintiq file version 2.0 +#parent: #root +Method Filter ( + String productids, + String unit +) declarative remote +{ + TextBody: + [* + // 鐢勫叞楦� Jun-24-2024 (created) + info( '------------1-----------', unit, '-', productids ); + traverse( this, FinancialProductionReport.FinancialProductionRow, row, row.Name() = '92 kW Stator' ){ + productid := construct( Strings ); + productid.Add( row.Name() ); + info( '-----------------------', row.Name(), row.Unit(), productids.FindString( row.Name(), 0 ), row.Unit() = unit ); + } + *] +} diff --git a/_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl b/_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl index 23e15cb..9e66381 100644 --- a/_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl +++ b/_Main/BL/Type_FinancialProductionSource/Method_ReadStructure.qbl @@ -20,7 +20,12 @@ xlstable.SyncRows(); xlstable.Name( sheetName ); + xlstable.IsImport( true ); this.FinancialProductionReport( relinsert, &xlstable ); + + Transaction::Transaction().Propagate( attribute( FinancialProductionColumn, Index ) ); } + //瀵煎叆鍚庡鐞嗘暟鎹� + this.AfterImport(); *] } diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl index 5d56a54..102cea7 100644 --- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl +++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl @@ -1,19 +1,41 @@ Quintiq file version 2.0 #parent: #root StaticMethod Download ( - MacroPlan macroPlan + MacroPlan macroPlan, + Boolean istemplate ) as BinaryValue { + Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁' TextBody: [* + startofplanning := macroPlan.StartOfPlanning().Date(); + allunit := FinancialProductionReport::GetDefaultAllUnit(); table := selectobject( macroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() ); xmlDOMI := XMLDOMImplementation::Create(); xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' ); tableElement := xmlDOM.GetElementByTagName( "table", 0 ); + //Product + productcolumnelement := xmlDOM.CreateElement( "column" ); + productnameelement := xmlDOM.CreateElement( "name" ); + producttypeelement := xmlDOM.CreateElement( "type" ); + productnameelement.TextContent( 'Product' ); + producttypeelement.TextContent( "String" ); + productcolumnelement.AppendChild( productnameelement ); + productcolumnelement.AppendChild( producttypeelement ); + //Unit + unitcolumnelement := xmlDOM.CreateElement( "column" ); + unitnameelement := xmlDOM.CreateElement( "name" ); + unittypeelement := xmlDOM.CreateElement( "type" ); + unitnameelement.TextContent( 'Unit' ); + unittypeelement.TextContent( "String" ); + unitcolumnelement.AppendChild( unitnameelement ); + unitcolumnelement.AppendChild( unittypeelement ); - traverse ( table, FinancialProductionColumn, column ) { + tableElement.AppendChild( productcolumnelement ); + tableElement.AppendChild( unitcolumnelement ); + traverse ( table, FinancialProductionColumn, column, not istemplate or column.Period() < startofplanning ) { columnelement := xmlDOM.CreateElement( "column" ); nameelement := xmlDOM.CreateElement( "name" ); typeelement := xmlDOM.CreateElement( "type" ); @@ -22,13 +44,28 @@ columnelement.AppendChild( nameelement ); columnelement.AppendChild( typeelement ); - cells := selectsortedset( column, FinancialProductionCell, cell, true, cell.FinancialProductionRow().RowNr() ); + cells := selectsortedset( column, FinancialProductionCell, cell, cell.FinancialProductionRow().Unit() <> allunit, cell.FinancialProductionRow().Name() ); + traverse ( cells, Elements, c ) { + if( column.Index() = 0 ){ + row := c.FinancialProductionRow(); + //Product + productcellElement := xmlDOM.CreateElement( "cell" ); + productcellElement.SetAttribute( "value", row.Name() ); + productcolumnelement.AppendChild( productcellElement ); + //Unit + unitcellElement := xmlDOM.CreateElement( "cell" ); + unitcellElement.SetAttribute( "value", row.Unit() ); + unitcolumnelement.AppendChild( unitcellElement ); + } cellElement := xmlDOM.CreateElement( "cell" ); - cellElement.SetAttribute( "value", c.Value() ); + if( istemplate ){ + cellElement.SetAttribute( "value", '' ); + }else{ + cellElement.SetAttribute( "value", c.Value() ); + } columnelement.AppendChild( cellElement ); } - tableElement.AppendChild( columnelement ); } @@ -36,7 +73,7 @@ //info( xmlString ); - tableGroupHandle := TableGroupHandle::Create( "Financial productions" ); + tableGroupHandle := TableGroupHandle::Create( FinancialProductionReport::GetDefaultName() ); tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) ); tableGroupHandle.Add( tableHandle ); diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl index 4e29ea7..6952017 100644 --- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl +++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_DownloadTemplate.qbl @@ -12,9 +12,9 @@ tableElement := xmlDOM.GetElementByTagName( "table", 0 ); startofyear := macroPlan.StartOfPlanning().StartOfYear(); - startofnextyear := macroPlan.StartOfPlanning().StartOfNextYear(); + startofplanning := macroPlan.StartOfPlanning(); - for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){ + for( start := startofyear; start < startofplanning; start := start.StartOfNextMonth() ){ columnElement := xmlDOM.CreateElement( "column" ); nameElement := xmlDOM.CreateElement( "name" ); typeElement := xmlDOM.CreateElement( "type" ); @@ -29,7 +29,7 @@ //info( xmlString ); - tableGroupHandle := TableGroupHandle::Create( "Financial productions" ); + tableGroupHandle := TableGroupHandle::Create( FinancialProductionReport::GetDefaultName() ); tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) ); tableGroupHandle.Add( tableHandle ); diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl new file mode 100644 index 0000000..8f1db4a --- /dev/null +++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl @@ -0,0 +1,76 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod Initialize ( + MacroPlan owner +) +{ + TextBody: + [* + // 鐢勫叞楦� Jun-24-2024 (created) + owner.FinancialProductionSource( relflush ); + ccunit := FinancialProductionReport::GetDefaultCCUnit(); + dlunit := FinancialProductionReport::GetDefaultDLUnit(); + allunit := FinancialProductionReport::GetDefaultAllUnit(); + source := owner.FinancialProductionSource( relnew, IsImport := false, Name := FinancialProductionReport::GetDefaultName() ); + table := source.FinancialProductionReport( relnew, ID := source.Name(), Name := source.Name(), IsImport := false ); + startofplanning := owner.StartOfPlanning(); + startofnextmonth := owner.StartOfPlanning().StartOfNextMonth(); + startofyear := startofplanning.StartOfYear(); + startofnextyear := startofplanning.StartOfNextYear(); + + source.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit ); + + traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and ( pisp.StockingPoint_MP().UnitID() = ccunit or pisp.StockingPoint_MP().UnitID() = dlunit ) ){ + unit := pisp.StockingPoint_MP().UnitID(); + info( unit, pisp.ProductID() ); + ccrow := null( FinancialProductionRow ); + dlrow := null( FinancialProductionRow ); + allrow := selectobject( table, FinancialProductionRow, row, row.Name() = pisp.ProductID() and row.Unit() = allunit ); + if( unit = ccunit ){ + ccrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := unit ); + }else{ + dlrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := unit ); + } + if( isnull( allrow ) ){ + allrow := table.FinancialProductionRow( relnew, Name := pisp.ProductID(), Unit := allunit ); + } + + for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){ + periodtime := start.Date(); + periodname := periodtime.Format( "M2/D2/Y" ); + column := selectobject( table, FinancialProductionColumn, column, column.Name() = periodname and column.Period() = periodtime ); + + if( isnull( column ) ){ + column := table.FinancialProductionColumn( relnew, Name := periodname, Period := periodtime ); + } + + if( not isnull( ccrow ) ){ + ccrow.Initialize( column, ccunit ); + } + if( not isnull( dlrow ) ){ + dlrow.Initialize( column, dlunit ); + } + if( not exists( allrow, FinancialProductionCell, allcell, allcell.FinancialProductionColumn() = column ) ){ + allrow.Initialize( column, allunit ); + } + } + + traverse( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning + and ( ( pispip.Start() < startofnextmonth and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() ) + or ( pispip.Start() < startofnextyear and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() ) ) ){ + periodtime := pispip.Start().StartOfMonth().Date(); + periodname := periodtime.Format( "M2/D2/Y" ); + + column := selectobject( table, FinancialProductionColumn, column, column.Name() = periodname and column.Period() = periodtime ); + + if( not isnull( ccrow ) ){ + ccrow.Initialize( column, pispip.NewSupplyProductionQuantity() ); + } + if( not isnull( dlrow ) ){ + dlrow.Initialize( column, pispip.NewSupplyProductionQuantity() ); + } + allrow.Initialize( column, pispip.NewSupplyProductionQuantity() ); + } + } + *] +} diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Upload.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Upload.qbl index 9ffca0d..2e3f777 100644 --- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Upload.qbl +++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Upload.qbl @@ -13,6 +13,7 @@ source := owner.FinancialProductionSource( relnew, FileBinaryValue := binaryValue, Name := fileName, IsXLSX := fileName.EndsWith( "xlsx" ), + IsImport := true, UploadDateTime := DateTime::ActualTime().Format( "Y-M2-D2 H:m:s" ), UploadUser := guard( QuintiqUser::CurrentUser().Username(), "" ) ); diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def new file mode 100644 index 0000000..8844548 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_MatrixEditorTable.def @@ -0,0 +1,99 @@ +Quintiq file version 2.0 +Component MatrixEditorTable +{ + #keys: '[415136.0.844701426]' + BaseType: 'WebMatrixEditor' + Children: + [ + Component MatrixEditorCellTable + { + #keys: '[415136.0.844701427]' + BaseType: 'WebMatrixEditorCell' + Children: + [ + Component DataExtractorCell + { + #keys: '[415136.0.844701428]' + BaseType: 'WebDataExtractor' + Properties: + [ + DataType: 'FinancialProductionReport' + Source: 'DataHolderTable' + Taborder: 0 + Transformation: 'FinancialProductionColumn.FinancialProductionCell' + ] + } + ] + Properties: + [ + Attributes: 'Value' + Column: 'FinancialProductionColumn' + Row: 'FinancialProductionRow' + Taborder: 0 + ] + } + Component MatrixEditorRowsTable + { + #keys: '[415136.0.844701431]' + BaseType: 'WebMatrixEditorHeaderLevel' + Children: + [ + Component DataExtractorRow + { + #keys: '[415136.0.844701432]' + BaseType: 'WebDataExtractor' + Properties: + [ + DataType: 'FinancialProductionReport' + FilterArguments: 'products:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderProduct;search:QMacroPlanner::FormFinancialProductionReport.dhSearch' + FixedFilter: 'object.Filter( search, products )' + Source: 'DataHolderTable' + Taborder: 0 + Transformation: 'FinancialProductionRow' + ] + } + ] + Properties: + [ + Legend: 'Name' + SortCriteria: 'Name' + Taborder: 1 + ] + } + Component MatrixEditorColumnsTable + { + #keys: '[415136.0.844701435]' + BaseType: 'WebMatrixEditorHeaderLevel' + Children: + [ + Component DataExtractorColumn + { + #keys: '[415136.0.844701436]' + BaseType: 'WebDataExtractor' + Properties: + [ + DataType: 'FinancialProductionReport' + Source: 'DataHolderTable' + Taborder: 0 + Transformation: 'FinancialProductionColumn' + ] + } + ] + Properties: + [ + Legend: 'Name' + SortCriteria: 'Index' + Taborder: 2 + ] + } + #child: matrixEditorActionBarPageTable + #child: matrixeditorContextMenuTable + ] + Properties: + [ + Columns: 'MatrixEditorColumnsTable' + ContextMenu: 'matrixeditorContextMenuTable' + Rows: 'MatrixEditorRowsTable' + Taborder: 0 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelFinancialProductionReportHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelFinancialProductionReportHeader.def index 5779852..5527cd6 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelFinancialProductionReportHeader.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelFinancialProductionReportHeader.def @@ -10,6 +10,7 @@ ] Properties: [ - Taborder: 0 + FixedSize: true + Taborder: 2 ] } diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelFinancialProductionReportTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelFinancialProductionReportTable.def deleted file mode 100644 index 19a477e..0000000 --- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelFinancialProductionReportTable.def +++ /dev/null @@ -1,10 +0,0 @@ -Quintiq file version 2.0 -Component PanelFinancialProductionReportTable -{ - #keys: '[415136.0.834352365]' - BaseType: 'WebPanel' - Properties: - [ - Taborder: 1 - ] -} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelTable.def new file mode 100644 index 0000000..4cf2817 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelTable.def @@ -0,0 +1,14 @@ +Quintiq file version 2.0 +Component PanelTable +{ + #keys: '[415136.0.834352365]' + BaseType: 'WebPanel' + Children: + [ + #child: MatrixEditorTable + ] + Properties: + [ + Taborder: 3 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelUnit.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelUnit.def index 451f699..067a367 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelUnit.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelUnit.def @@ -12,7 +12,6 @@ Properties: [ Label: 'Unit' - Strings: '<All>;闀挎槬;澶ц繛' Taborder: 0 ] } diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_matrixEditorActionBarPageTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_matrixEditorActionBarPageTable.def new file mode 100644 index 0000000..16fafd3 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_matrixEditorActionBarPageTable.def @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +Component matrixEditorActionBarPageTable +{ + #keys: '[415136.0.844701439]' + BaseType: 'matrixEditorActionBarPage' + Properties: + [ + Taborder: 3 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_matrixeditorContextMenuTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_matrixeditorContextMenuTable.def new file mode 100644 index 0000000..5a4b184 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_matrixeditorContextMenuTable.def @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +Component matrixeditorContextMenuTable +{ + #keys: '[415136.0.844701442]' + BaseType: 'matrixeditorContextMenu' + Properties: + [ + Taborder: 4 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def new file mode 100644 index 0000000..e6d457a --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def @@ -0,0 +1,25 @@ +Quintiq file version 2.0 +#parent: #root +Response OnCreated () id:Response_FormFinancialProductionReport_OnCreated +{ + #keys: '[415136.0.842812649]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebComponent_OnCreated' + QuillAction + { + Body: + [* + //鍒濆鍖� + //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){ + FinancialProductionSource::Initialize( MacroPlan ); + //} + //info( '------------------1----------------' ); + table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() ); + //info( '------------------2----------------' ); + DataHolderTable.Data( table ); + + dhSearch.Data( table.FinancialProductionSource().FinancialProductionSearch() ); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def index 13d7fd4..174cd83 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_ButtonExport_OnClick.def @@ -13,7 +13,7 @@ { Body: [* - binaryValue := FinancialProductionSource::Download( MacroPlan ); + binaryValue := FinancialProductionSource::Download( MacroPlan, false ); Application.Download( "Financial productions.xlsx", binaryValue.AsBinaryData() ); *] diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def index 176b03b..e78b4e0 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionExport_OnCl.def @@ -13,7 +13,7 @@ { Body: [* - binaryValue := FinancialProductionSource::DownloadTemplate( MacroPlan ); + binaryValue := FinancialProductionSource::Download( MacroPlan, true ); Application.Download( "Financial productions.xlsx", binaryValue.AsBinaryData() ); *] diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def index 03863b1..eece9c0 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelFinancialProductionReportOperation_ButtonProductionImport_OnCl.def @@ -28,6 +28,9 @@ source.ReadStructure(); WebMessageBox::Success( Translations::A_VWED_Success() ); + traverse( MacroPlan, FinancialProductionSource, psource, psource.IsImport() and psource <> source ){ + psource.Delete(); + } } } onerror { WebMessageBox::Error( e.GeneralInformation() ); diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def new file mode 100644 index 0000000..8ab2cf7 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: PanelGeneration/ddslGeneration +Response OnSelectionChanged () id:Response_PanelGeneration_ddslGeneration_OnSelectionChanged +{ + #keys: '[415136.0.840791771]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged' + QuillAction + { + Body: + [* + dhSearch.Data().Generation( selection ); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def new file mode 100644 index 0000000..7cfb83f --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: PanelMQBMLB/ddslMQBMLB +Response OnSelectionChanged () id:Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged +{ + #keys: '[415136.0.842090372]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged' + QuillAction + { + Body: + [* + dhSearch.Data().MqbMlb( selection ); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def new file mode 100644 index 0000000..c87e89d --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: PanelPower/ddslPower +Response OnSelectionChanged () id:Response_PanelPower_ddslPower_OnSelectionChanged +{ + #keys: '[415136.0.842090478]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged' + QuillAction + { + Body: + [* + dhSearch.Data().Power( selection ); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def new file mode 100644 index 0000000..a70ff22 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnCreated.def @@ -0,0 +1,19 @@ +Quintiq file version 2.0 +#parent: PanelUnit/ddslUnit +Response OnCreated () id:Response_PanelUnit_ddslUnit_OnCreated +{ + #keys: '[415136.0.848320822]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebComponent_OnCreated' + QuillAction + { + Body: + [* + + valueString := "<All>;Spider Assy Line 1;Body in White Line 3"; + + this.Strings( valueString ); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def new file mode 100644 index 0000000..9e84672 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: PanelUnit/ddslUnit +Response OnSelectionChanged () id:Response_PanelUnit_ddslUnit_OnSelectionChanged +{ + #keys: '[415136.0.840791631]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebDropDownStringList_OnSelectionChanged' + QuillAction + { + Body: + [* + dhSearch.Data().Unit( selection ); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def index aee99fe..146e986 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def @@ -8,7 +8,27 @@ Children: [ #child: PanelFinancialProductionReportHeader - #child: PanelFinancialProductionReportTable + #child: PanelTable + Component DataHolderTable + { + #keys: '[415136.0.840720309]' + BaseType: 'WebDataHolder' + Databinding: 'FinancialProductionReport' + Properties: + [ + Taborder: 0 + ] + } + Component dhSearch + { + #keys: '[415136.0.849431513]' + BaseType: 'WebDataHolder' + Databinding: 'FinancialProductionSearch' + Properties: + [ + Taborder: 1 + ] + } ] Properties: [ -- Gitblit v1.9.3