_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl
@@ -72,7 +72,9 @@ info( "dealing 颿¿åé é" ) if( CapacityAndSaleBudgeFilterItem::Contains( items, "颿¿åé é" ) ) { traverse( years, Elements, year ) { info( "颿¿åé é" + [String]year.YearNo() + "å¹´" ); // å岿°æ® info( "颿¿åé é" + [String]year.YearNo() + "å¹´å岿°æ®" ); traverse( months, Elements, month ) { columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "颿¿åé é-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "æ-年度é¢ç®" ); traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { @@ -87,6 +89,7 @@ cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); } info( "颿¿åé é" + [String]year.YearNo() + "å¹´S&OPæ°æ®" ); // S&OPæ°æ® traverse( macroPlans, Elements, macroPlan ) { traverse( months, Elements, month ) { @@ -112,7 +115,9 @@ info( "dealing éå®é¢" ) if( CapacityAndSaleBudgeFilterItem::Contains( items, "éå®é¢" ) ) { traverse( years, Elements, year ) { info( "éå®é¢" + [String]year.YearNo() + "å¹´" ); // å岿°æ® info( "éå®é¢" + [String]year.YearNo() + "å¹´å岿°æ®" ); traverse( months, Elements, month ) { columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对å¤éå®é¢-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "æ-年度é¢ç®" ); traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { @@ -127,6 +132,7 @@ cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal ); cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); } info( "éå®é¢" + [String]year.YearNo() + "å¹´å岿°æ®S&OPæ°æ®" ); // S&OPæ°æ® traverse( macroPlans, Elements, macroPlan ) { traverse( months, Elements, month ) { @@ -151,7 +157,7 @@ info( "dealing å¤§å¼ çå©é¢" ) traverse( years, Elements, year ) { // å岿°æ® columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "å¤§å¼ çå©é¢-年度é¢ç®" ); columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "å¤§å¼ çå©é¢-" + [String]year.YearNo() + "å¹´-年度é¢ç®" ); traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { // todo // QID 23 @@ -160,7 +166,7 @@ } // S&OPæ°æ® traverse( macroPlans, Elements, macroPlan ) { columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "å¤§å¼ çå©é¢-" + [String]year.YearNo() + "å¹´" ); columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "å¤§å¼ çå©é¢-" + [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName() ); traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) ); cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); @@ -171,16 +177,15 @@ info( "dealing 产åçå©é¢" ) traverse( years, Elements, year ) { // å岿°æ® columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产åçå©é¢-年度é¢ç®" ); columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产åçå©é¢-" + [String]year.YearNo() + "å¹´-年度é¢ç®" ); traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { // todo // QID 23 cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) ); cell.CapacityAndSaleBudgeCompareItemRow( relset, row ); } // S&OPæ°æ® traverse( macroPlans, Elements, macroPlan ) { columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产åçå©é¢-" + [String]year.YearNo() + "å¹´" ); columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产åçå©é¢-" + [String]year.YearNo() + "å¹´-" + macroPlan.ScenarioName() ); traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) { // todo cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]Number::Random( 0, 0 ) ); _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompareExport.qbl
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ Quintiq file version 2.0 #parent: #root Method CapacityAndSaleBudgeCompareExport () as BinaryValue { Description: 'å¯¼åºæ¯è¾ç»æ' TextBody: [* // yypsybs Sep-22-2023 (created) tableName := "年度产éé¢ç®å¯¹æ¯"; text:= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><table><name>' + tableName + '</name>'; // å¤çcolumn <column><name>ç©æç¼ç </name><type>String</type></column> columnXml := "" traverse( this, CapacityAndSaleBudgeCompareItemColumn, column ) { info( "columnName : " + column.ColumnName() ); columnXml := columnXml + "<column><name>" + column.ColumnName() + "</name><type>String</type></column>"; } text := text + columnXml + "</table>" // å¡å 容 xmlDOMImplementation := XMLDOMImplementation::Create(); xmlDOMDocument := xmlDOMImplementation.CreateDocumentFromString( text ); tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 ); rows := selectsortedset( this, CapacityAndSaleBudgeCompareItemRow, row, row.PlaceOfProductionOfArray() + "_" + row.BusinessType() ); traverse ( rows, Elements, row ) { info( "rowNo : " + [String]row.RowNo() ); traverse( row, CapacityAndSaleBudgeCompareItemCell, cell ) { ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, cell.CellContent(), cell.CapacityAndSaleBudgeCompareItemColumn().ColumnName() ); } } xmlDOMSerializer := xmlDOMImplementation.CreateSerializer(); xmlTableString := xmlDOMSerializer.WriteToString( xmlDOMDocument ); tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTableString ) ); tableGroupHandle := TableGroupHandle::Create( tableName ); tableGroupHandle.Add( tableHandle ); tableBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true ); return tableBinaryData.AsBinaryValue(); *] } _Main/BL/Type_ScenarioManager/StaticMethod_GeneratesTheSpecifiedXMLColumn.qbl
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ Quintiq file version 2.0 #parent: #root StaticMethod GeneratesTheSpecifiedXMLColumn ( XMLDOMDocument xmlDOMDocument, XMLDOMElement tableElement, String value, String columnName ) { TextBody: [* columnElements := tableElement.GetElementsByTagName( "column" ); traverse ( columnElements, Elements, ce ) { nameElement := ce.GetElementByTagName( "name", 0 ); if ( nameElement.TextContent() = columnName ) { cell := xmlDOMDocument.CreateElement( "cell" ); cell.SetAttribute( "value", value ); ce.AppendChild( cell ); } } *] } _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
@@ -93,6 +93,6 @@ ContextMenu: 'matrixeditorContextMenuCapacityAndSaleBudgeCompare' Editable: false Rows: 'MatrixEditorRowsCapacityAndSaleBudgeCompare' Taborder: 1 Taborder: 2 ] } _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ Quintiq file version 2.0 #parent: ButtonExportCompare Response OnClick () id:Response_FormCapacityAndSaleBudgeCompare_ButtonExportCompare_OnClick { #keys: '[414384.0.881345276]' CanBindMultiple: false DefinitionID: 'Responsedef_WebButton_OnClick' Precondition: [* return not isnull( GlobalOTDTable ); *] QuillAction { Body: [* tableBinaryData := ScenarioManager.CapacityAndSaleBudgeCompareExport().AsBinaryData(); Application.Download( "年度产éé¢ç®å¯¹æ¯.xlsx", tableBinaryData ); *] GroupServerCalls: false } } _Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/_ROOT_Component_FormCapacityAndSaleBudgeCompare.def
@@ -18,6 +18,17 @@ Taborder: 0 ] } Component ButtonExportCompare { #keys: '[414384.0.881345277]' BaseType: 'WebButton' Properties: [ Image: 'EXPORT1' Label: '导åº' Taborder: 1 ] } ] Properties: [