From 9e7f6bf445c0cc04a2626596a6f2ee7b80f51ee6 Mon Sep 17 00:00:00 2001 From: lazhen <17772815105@139.com> Date: 星期五, 18 十月 2024 21:03:54 +0800 Subject: [PATCH] 库存汇总下载查询条件位置调整 --- _Main/BL/Type_InventorySummarySource/StaticMethod_CreateCellElement.qbl | 16 + _Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement#822.qbl | 24 ++ _Main/BL/Type_InventorySummarySource/StaticMethod_GetSearchRows.qbl | 22 ++ _Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement#817.qbl | 23 ++ _Main/BL/Type_InventorySummarySource/StaticMethod_Download0.qbl | 104 +++++++++++ _Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl | 26 +- _Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement.qbl | 26 ++ _Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement0.qbl | 21 ++ _Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl | 235 +++++++------------------ _Main/BL/Type_InventorySummarySource/StaticMethod_CreateCellElement0.qbl | 19 ++ 10 files changed, 336 insertions(+), 180 deletions(-) diff --git a/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl index 6bcfb2a..f9b03a6 100644 --- a/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl +++ b/_Main/BL/Type_FinancialWeeklyReport/StaticMethod_Initialize.qbl @@ -115,7 +115,7 @@ ccsvaluesum := ccsvaluesum + ccsvalue; } sumcolumn := table.FinancialWeeklyColumn( relnew, Name := 'SUM' ); - //cumulantcolumn := table.FinancialWeeklyColumn( relnew, Name := '绱閲�' ); + cumulantcolumn := table.FinancialWeeklyColumn( relnew, Name := '绱閲�' ); proportioncolumn := table.FinancialWeeklyColumn( relnew, Name := '鍗犳瘮' ); //SUM totalpcellsum := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]( [Number]totalpvaluesum ) ); @@ -131,18 +131,18 @@ ccscellsum := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]ccsvaluesum ); ccsales.FinancialWeeklyCell( relinsert, ccscellsum ); //绱閲� - //totalpcellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]totalpvaluecumulant ); - //totalproduction.FinancialWeeklyCell( relinsert, totalpcellcumulant ); - //dlpcellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]dlpvaluecumulant ); - //dlproduction.FinancialWeeklyCell( relinsert, dlpcellcumulant ); - //ccpcellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]ccpvaluecumulant ); - //ccproduction.FinancialWeeklyCell( relinsert, ccpcellcumulant ); - //totalscellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]totalsvaluecumulant ); - //totalsales.FinancialWeeklyCell( relinsert, totalscellcumulant ); - //dlscellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]dlsvaluecumulant ); - //dlsales.FinancialWeeklyCell( relinsert, dlscellcumulant ); - //ccscellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]ccsvaluecumulant ); - //ccsales.FinancialWeeklyCell( relinsert, ccscellcumulant ); + totalpcellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]totalpvaluecumulant ); + totalproduction.FinancialWeeklyCell( relinsert, totalpcellcumulant ); + dlpcellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]dlpvaluecumulant ); + dlproduction.FinancialWeeklyCell( relinsert, dlpcellcumulant ); + ccpcellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]ccpvaluecumulant ); + ccproduction.FinancialWeeklyCell( relinsert, ccpcellcumulant ); + totalscellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]totalsvaluecumulant ); + totalsales.FinancialWeeklyCell( relinsert, totalscellcumulant ); + dlscellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]dlsvaluecumulant ); + dlsales.FinancialWeeklyCell( relinsert, dlscellcumulant ); + ccscellcumulant := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]ccsvaluecumulant ); + ccsales.FinancialWeeklyCell( relinsert, ccscellcumulant ); //鍗犳瘮 totalpvalueproportion := guard( ( totalpvaluecumulant / totalpvaluesum ).Format( 'N(Dec(2))' ), '0.00' ); totalpcellproportion := proportioncolumn.FinancialWeeklyCell( relnew, Value := totalpvalueproportion ); diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateCellElement.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateCellElement.qbl new file mode 100644 index 0000000..6099ad5 --- /dev/null +++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateCellElement.qbl @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateCellElement ( + XMLDOMDocument xmlDOM, + XMLDOMElement columnelement, + String value +) +{ + TextBody: + [* + // 鐢勫叞楦� Oct-18-2024 (created) + cellElement := xmlDOM.CreateElement( "cell" ); + cellElement.SetAttribute( "value", value ); + columnelement.AppendChild( cellElement ); + *] +} diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateCellElement0.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateCellElement0.qbl new file mode 100644 index 0000000..509d7b3 --- /dev/null +++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateCellElement0.qbl @@ -0,0 +1,19 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateCellElement ( + XMLDOMDocument xmlDOM, + XMLDOMElement columnelement, + String value, + Number rowsize +) +{ + TextBody: + [* + // 鐢勫叞楦� Oct-18-2024 (created) + for( j := 0; j < rowsize; j := j + 1 ){ + cellElement := xmlDOM.CreateElement( "cell" ); + cellElement.SetAttribute( "value", value ); + columnelement.AppendChild( cellElement ); + } + *] +} diff --git "a/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement\043817.qbl" "b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement\043817.qbl" new file mode 100644 index 0000000..3060af4 --- /dev/null +++ "b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement\043817.qbl" @@ -0,0 +1,23 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateColumnElement ( + XMLDOMElement xmltable, + XMLDOMDocument xmlDOM, + String name +) as XMLDOMElement +{ + TextBody: + [* + // 鐢勫叞楦� Oct-18-2024 (created) + columnelement := xmlDOM.CreateElement( "column" ); + nameelement := xmlDOM.CreateElement( "name" ); + typeelement := xmlDOM.CreateElement( "type" ); + nameelement.TextContent( name ); + typeelement.TextContent( "String" ); + columnelement.AppendChild( nameelement ); + columnelement.AppendChild( typeelement ); + + xmltable.AppendChild( columnelement ); + return columnelement; + *] +} diff --git "a/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement\043822.qbl" "b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement\043822.qbl" new file mode 100644 index 0000000..690264a --- /dev/null +++ "b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement\043822.qbl" @@ -0,0 +1,24 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateColumnElement ( + XMLDOMElement xmltable, + XMLDOMDocument xmlDOM, + String value, + String name, + Number rowsize +) as XMLDOMElement +{ + TextBody: + [* + // 鐢勫叞楦� Oct-18-2024 (created) + columnelement := InventorySummarySource::CreateColumnElement( xmltable, xmlDOM, name ); + + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, value ); + + for( i := 1; i < rowsize; i := i + 1 ){ + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, '' ); + } + + return columnelement; + *] +} diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement.qbl new file mode 100644 index 0000000..e1d08e3 --- /dev/null +++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement.qbl @@ -0,0 +1,26 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateColumnElement ( + XMLDOMElement xmltable, + XMLDOMDocument xmlDOM, + Strings values, + String name, + Number rowsize +) as XMLDOMElement +{ + TextBody: + [* + // 鐢勫叞楦� Oct-18-2024 (created) + columnelement := InventorySummarySource::CreateColumnElement( xmltable, xmlDOM, name ); + + for( i := 0; i < rowsize; i := i + 1 ){ + if( i < values.Size() ){ + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, values.Element( i ) ); + }else{ + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, '' ); + } + } + + return columnelement; + *] +} diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement0.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement0.qbl new file mode 100644 index 0000000..e018a3e --- /dev/null +++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_CreateColumnElement0.qbl @@ -0,0 +1,21 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CreateColumnElement ( + XMLDOMElement xmltable, + XMLDOMDocument xmlDOM, + String name, + Number rowsize +) as XMLDOMElement +{ + TextBody: + [* + // 鐢勫叞楦� Oct-18-2024 (created) + columnelement := InventorySummarySource::CreateColumnElement( xmltable, xmlDOM, '' ); + + for( i := 0; i < rowsize; i := i + 1 ){ + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, '' ); + } + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, name ); + return columnelement; + *] +} diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl index c989643..d18d397 100644 --- a/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl +++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl @@ -12,116 +12,67 @@ Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁' TextBody: [* - + //鑾峰彇鏌ヨ琛屾暟 + searchrowsize := InventorySummarySource::GetSearchRows( factorys, generations, powers, mlbmqls ); table := selectobject( macroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() ); xmlDOMI := XMLDOMImplementation::Create(); xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' ); tableElement := xmlDOM.GetElementByTagName( "table", 0 ); - //Search - searchcolumnelement := xmlDOM.CreateElement( "column" ); - searchnameelement := xmlDOM.CreateElement( "name" ); - searchtypeelement := xmlDOM.CreateElement( "type" ); - searchnameelement.TextContent( 'Search' ); - searchtypeelement.TextContent( "String" ); - searchcolumnelement.AppendChild( searchnameelement ); - searchcolumnelement.AppendChild( searchtypeelement ); - //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 ); - //Attribute - attricolumnelement := xmlDOM.CreateElement( "column" ); - attrinameelement := xmlDOM.CreateElement( "name" ); - attritypeelement := xmlDOM.CreateElement( "type" ); - attrinameelement.TextContent( 'Attribute' ); - attritypeelement.TextContent( "String" ); - attricolumnelement.AppendChild( attrinameelement ); - attricolumnelement.AppendChild( attritypeelement ); + //Product/Unit + factoryvalues := selectuniquevalues( factorys, Elements, factory, factory.Name() ); + productcolumnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, factoryvalues, 'Unit', searchrowsize ); + InventorySummarySource::CreateCellElement( xmlDOM, productcolumnelement, 'Product' ); + //Unit/Generation + generationvalues := selectuniquevalues( generations, Elements, generation, generation.Generation() ); + unitcolumnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, generationvalues, 'Generation', searchrowsize ); + InventorySummarySource::CreateCellElement( xmlDOM, unitcolumnelement, 'Unit' ); + //Attribute/Power + powervalues := selectuniquevalues( powers, Elements, power, power.Power() ); + attricolumnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, powervalues, 'Power', searchrowsize ); + InventorySummarySource::CreateCellElement( xmlDOM, attricolumnelement, 'Attribute' ); + //MLBMQBS + mlbmqbvalues := selectuniquevalues( mlbmqls, Elements, mlbmqb, mlbmqb.MLBMQB() ); + mlbmqlcolumnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, mlbmqbvalues, 'MLBMQB', searchrowsize ); + //Start date + startcolumnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, search.StartDate().Format( 'M2/D2/Y' ), 'Start date', searchrowsize ); + //End date + endcolumnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, search.EndDate().Format( 'M2/D2/Y' ), 'End date', searchrowsize ); + //Period + periodcolumnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, search.Category(), 'Period', searchrowsize ); - tableElement.AppendChild( searchcolumnelement ); - tableElement.AppendChild( productcolumnelement ); - tableElement.AppendChild( unitcolumnelement ); - tableElement.AppendChild( attricolumnelement ); - searchtotal := factorys.Size() + generations.Size() + powers.Size() + mlbmqls.Size() + 10 ; - searchunitElement := xmlDOM.CreateElement( "cell" ); - searchunitElement.SetAttribute( "value", 'Unit' ); - searchcolumnelement.AppendChild( searchunitElement ); - traverse( factorys, Elements, factory ){ - searchunitcellElement := xmlDOM.CreateElement( "cell" ); - searchunitcellElement.SetAttribute( "value", factory.Name() ); - searchcolumnelement.AppendChild( searchunitcellElement ); - } - searchgenerationElement := xmlDOM.CreateElement( "cell" ); - searchgenerationElement.SetAttribute( "value", 'Generation' ); - searchcolumnelement.AppendChild( searchgenerationElement ); - traverse( generations, Elements, generation ){ - generationcellElement := xmlDOM.CreateElement( "cell" ); - generationcellElement.SetAttribute( "value", generation.Generation() ); - searchcolumnelement.AppendChild( generationcellElement ); - } - searchpowerElement := xmlDOM.CreateElement( "cell" ); - searchpowerElement.SetAttribute( "value", 'Power' ); - searchcolumnelement.AppendChild( searchpowerElement ); - traverse( powers, Elements, power ){ - searchpowercellElement := xmlDOM.CreateElement( "cell" ); - searchpowercellElement.SetAttribute( "value", power.Power() ); - searchcolumnelement.AppendChild( searchpowercellElement ); - } - searchmlbmqlElement := xmlDOM.CreateElement( "cell" ); - searchmlbmqlElement.SetAttribute( "value", 'MQBMLB' ); - searchcolumnelement.AppendChild( searchmlbmqlElement ); - traverse( mlbmqls, Elements, mlbmql ){ - searchmlbmqlcellElement := xmlDOM.CreateElement( "cell" ); - searchmlbmqlcellElement.SetAttribute( "value", mlbmql.MLBMQB() ); - searchcolumnelement.AppendChild( searchmlbmqlcellElement ); - } - searchstartdateElement := xmlDOM.CreateElement( "cell" ); - searchstartdateElement.SetAttribute( "value", 'Start date' ); - searchcolumnelement.AppendChild( searchstartdateElement ); - searchstartdatecellElement := xmlDOM.CreateElement( "cell" ); - searchstartdatecellElement.SetAttribute( "value", search.StartDate().Format( 'M2/D2/Y' ) ); - searchcolumnelement.AppendChild( searchstartdatecellElement ); - searchenddateElement := xmlDOM.CreateElement( "cell" ); - searchenddateElement.SetAttribute( "value", 'End date' ); - searchcolumnelement.AppendChild( searchenddateElement ); - searchenddatecellElement := xmlDOM.CreateElement( "cell" ); - searchenddatecellElement.SetAttribute( "value", search.EndDate().Format( 'M2/D2/Y' ) ); - searchcolumnelement.AppendChild( searchenddatecellElement ); - searchperiodElement := xmlDOM.CreateElement( "cell" ); - searchperiodElement.SetAttribute( "value", 'Periods' ); - searchcolumnelement.AppendChild( searchperiodElement ); - searchperiodcellElement := xmlDOM.CreateElement( "cell" ); - searchperiodcellElement.SetAttribute( "value", search.Category() ); - searchcolumnelement.AppendChild( searchperiodcellElement ); - - for( i := searchtotal; i < table.InventroySummaryRow( relsize ) * 4; i := i + 1 ){ - searchcellElement := xmlDOM.CreateElement( "cell" ); - searchcellElement.SetAttribute( "value", '' ); - searchcolumnelement.AppendChild( searchcellElement ); + searchcolumn := 7 ; + rowsize := table.InventroySummaryRow( relsize ) * 4; + for( i := table.InventorySummaryColumn( relsize ); i < searchcolumn - 3; i := i + 1 ){ + if( i = 0 ){ + InventorySummarySource::CreateCellElement( xmlDOM, mlbmqlcolumnelement, '', rowsize ); + }else if( i = 1 ){ + InventorySummarySource::CreateCellElement( xmlDOM, startcolumnelement, '', rowsize ); + }else if( i = 2 ){ + InventorySummarySource::CreateCellElement( xmlDOM, endcolumnelement, '', rowsize ); + }else if( i = 3 ){ + InventorySummarySource::CreateCellElement( xmlDOM, periodcolumnelement, '', rowsize ); + } } traverse ( table, InventorySummaryColumn, column ) { - columnelement := xmlDOM.CreateElement( "column" ); - nameelement := xmlDOM.CreateElement( "name" ); - typeelement := xmlDOM.CreateElement( "type" ); - nameelement.TextContent( column.Name() ); - typeelement.TextContent( "String" ); - columnelement.AppendChild( nameelement ); - columnelement.AppendChild( typeelement ); + columnelement := null( XMLDOMElement ); + if( column.Index() = 0 ){ + columnelement := mlbmqlcolumnelement; + InventorySummarySource::CreateCellElement( xmlDOM, mlbmqlcolumnelement, column.Name() ); + }else if( column.Index() = 1 ){ + columnelement := startcolumnelement + InventorySummarySource::CreateCellElement( xmlDOM, startcolumnelement, column.Name() ); + }else if( column.Index() = 2 ){ + columnelement := endcolumnelement; + InventorySummarySource::CreateCellElement( xmlDOM, endcolumnelement, column.Name() ); + }else if( column.Index() = 3 ){ + columnelement := periodcolumnelement; + InventorySummarySource::CreateCellElement( xmlDOM, periodcolumnelement, column.Name() ); + }else{ + columnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, column.Name(), rowsize ); + } cells := selectsortedset( column, InventorySummaryCell, cell, cell.InventroySummaryRow().RowNr() ); @@ -129,86 +80,36 @@ if( column.Index() = 0 ){ row := c.InventroySummaryRow(); //Product - productcellElement1 := xmlDOM.CreateElement( "cell" ); - productcellElement1.SetAttribute( "value", row.Name() ); - productcolumnelement.AppendChild( productcellElement1 ); - productcellElement2 := xmlDOM.CreateElement( "cell" ); - productcellElement2.SetAttribute( "value", row.Name() ); - productcolumnelement.AppendChild( productcellElement2 ); - productcellElement3 := xmlDOM.CreateElement( "cell" ); - productcellElement3.SetAttribute( "value", row.Name() ); - productcolumnelement.AppendChild( productcellElement3 ); - productcellElement4 := xmlDOM.CreateElement( "cell" ); - productcellElement4.SetAttribute( "value", row.Name() ); - productcolumnelement.AppendChild( productcellElement4 ); + InventorySummarySource::CreateCellElement( xmlDOM, productcolumnelement, row.Name() ); + InventorySummarySource::CreateCellElement( xmlDOM, productcolumnelement, row.Name() ); + InventorySummarySource::CreateCellElement( xmlDOM, productcolumnelement, row.Name() ); + InventorySummarySource::CreateCellElement( xmlDOM, productcolumnelement, row.Name() ); //Unit - unitcellElement1 := xmlDOM.CreateElement( "cell" ); - unitcellElement1.SetAttribute( "value", row.Unit() ); - unitcolumnelement.AppendChild( unitcellElement1 ); - unitcellElement2 := xmlDOM.CreateElement( "cell" ); - unitcellElement2.SetAttribute( "value", row.Unit() ); - unitcolumnelement.AppendChild( unitcellElement2 ); - unitcellElement3 := xmlDOM.CreateElement( "cell" ); - unitcellElement3.SetAttribute( "value", row.Unit() ); - unitcolumnelement.AppendChild( unitcellElement3 ); - unitcellElement4 := xmlDOM.CreateElement( "cell" ); - unitcellElement4.SetAttribute( "value", row.Unit() ); - unitcolumnelement.AppendChild( unitcellElement4 ); + InventorySummarySource::CreateCellElement( xmlDOM, unitcolumnelement, row.Unit() ); + InventorySummarySource::CreateCellElement( xmlDOM, unitcolumnelement, row.Unit() ); + InventorySummarySource::CreateCellElement( xmlDOM, unitcolumnelement, row.Unit() ); + InventorySummarySource::CreateCellElement( xmlDOM, unitcolumnelement, row.Unit() ); //Attribute //鏈熸湯搴撳瓨 - endcellElement := xmlDOM.CreateElement( "cell" ); - endcellElement.SetAttribute( "value", '鏈熸湯搴撳瓨' );//EndingInventory - attricolumnelement.AppendChild( endcellElement ); + InventorySummarySource::CreateCellElement( xmlDOM, attricolumnelement, '鏈熸湯搴撳瓨' );//EndingInventory //鏈�灏忓簱瀛� - mincellElement := xmlDOM.CreateElement( "cell" ); - mincellElement.SetAttribute( "value", '鏈�灏忓簱瀛�' );//MinimumInventory - attricolumnelement.AppendChild( mincellElement ); + InventorySummarySource::CreateCellElement( xmlDOM, attricolumnelement, '鏈�灏忓簱瀛�' );//MinimumInventory //鏈�澶у簱瀛� - maxcellElement := xmlDOM.CreateElement( "cell" ); - maxcellElement.SetAttribute( "value", '鏈�澶у簱瀛�' );//MaximumInventory - attricolumnelement.AppendChild( maxcellElement ); + InventorySummarySource::CreateCellElement( xmlDOM, attricolumnelement, '鏈�澶у簱瀛�' );//MaximumInventory //骞冲潎搴撳瓨 - avecellElement := xmlDOM.CreateElement( "cell" ); - avecellElement.SetAttribute( "value", '骞冲潎搴撳瓨' );//AverageInventory - attricolumnelement.AppendChild( avecellElement ); + InventorySummarySource::CreateCellElement( xmlDOM, attricolumnelement, '骞冲潎搴撳瓨' );//AverageInventory } //鏈熸湯搴撳瓨 - endcellElement := xmlDOM.CreateElement( "cell" ); - endcellElement.SetAttribute( "value", [String]c.EndingInventory() ); - columnelement.AppendChild( endcellElement ); + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, [String]c.EndingInventory() ); //鏈�灏忓簱瀛� - mincellElement := xmlDOM.CreateElement( "cell" ); - mincellElement.SetAttribute( "value", [String]c.MinimumInventory() ); - columnelement.AppendChild( mincellElement ); + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, [String]c.MinimumInventory() ); //鏈�澶у簱瀛� - maxcellElement := xmlDOM.CreateElement( "cell" ); - maxcellElement.SetAttribute( "value", [String]c.MaximumInventory() ); - columnelement.AppendChild( maxcellElement ); + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, [String]c.MaximumInventory() ); //骞冲潎搴撳瓨 - avecellElement := xmlDOM.CreateElement( "cell" ); - avecellElement.SetAttribute( "value", [String]c.AverageInventory() ); - columnelement.AppendChild( avecellElement ); + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, [String]c.AverageInventory() ); } - for( i := cells.Size() * 4; i < searchtotal; i := i + 1 ){ - searchcellElement := xmlDOM.CreateElement( "cell" ); - searchcellElement.SetAttribute( "value", '' ); - columnelement.AppendChild( searchcellElement ); - if( column.Index() = 0 ){ - productcellElement := xmlDOM.CreateElement( "cell" ); - productcellElement.SetAttribute( "value", '' ); - productcolumnelement.AppendChild( productcellElement ); - - unitcellElement := xmlDOM.CreateElement( "cell" ); - unitcellElement.SetAttribute( "value", '' ); - unitcolumnelement.AppendChild( unitcellElement ); - - endcellElement := xmlDOM.CreateElement( "cell" ); - endcellElement.SetAttribute( "value", '' );//EndingInventory - attricolumnelement.AppendChild( endcellElement ); - - } - } + tableElement.AppendChild( columnelement ); } diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Download0.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download0.qbl new file mode 100644 index 0000000..36a27c4 --- /dev/null +++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download0.qbl @@ -0,0 +1,104 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod Download0 ( + MacroPlan macroPlan, + Factorys factorys, + ProductGenerations generations, + ProductPowers powers, + ProductMLBMQBs mlbmqls, + InventorySummarySearch search +) as BinaryValue +{ + Description: '涓嬭浇璐㈠姟鎶ヨ〃鏁版嵁' + TextBody: + [* + //鑾峰彇鏌ヨ琛屾暟 + searchrowsize := InventorySummarySource::GetSearchRows( factorys, generations, powers, mlbmqls ); + table := selectobject( macroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() ); + + 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 := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, 'Product' ); + //Unit + unitcolumnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, 'Unit' ); + //Attribute + attricolumnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, 'Attribute' ); + traverse ( table, InventorySummaryColumn, column ) { + columnelement := InventorySummarySource::CreateColumnElement( tableElement, xmlDOM, column.Name() ); + + cells := selectsortedset( column, InventorySummaryCell, cell, cell.InventroySummaryRow().RowNr() ); + + traverse ( cells, Elements, c ) { + if( column.Index() = 0 ){ + row := c.InventroySummaryRow(); + //Product + InventorySummarySource::CreateCellElement( xmlDOM, productcolumnelement, row.Name() ); + InventorySummarySource::CreateCellElement( xmlDOM, productcolumnelement, row.Name() ); + InventorySummarySource::CreateCellElement( xmlDOM, productcolumnelement, row.Name() ); + InventorySummarySource::CreateCellElement( xmlDOM, productcolumnelement, row.Name() ); + //Unit + InventorySummarySource::CreateCellElement( xmlDOM, unitcolumnelement, row.Unit() ); + InventorySummarySource::CreateCellElement( xmlDOM, unitcolumnelement, row.Unit() ); + InventorySummarySource::CreateCellElement( xmlDOM, unitcolumnelement, row.Unit() ); + InventorySummarySource::CreateCellElement( xmlDOM, unitcolumnelement, row.Unit() ); + //Attribute + //鏈熸湯搴撳瓨 + InventorySummarySource::CreateCellElement( xmlDOM, attricolumnelement, '鏈熸湯搴撳瓨' );//EndingInventory + //鏈�灏忓簱瀛� + InventorySummarySource::CreateCellElement( xmlDOM, attricolumnelement, '鏈�灏忓簱瀛�' );//MinimumInventory + //鏈�澶у簱瀛� + InventorySummarySource::CreateCellElement( xmlDOM, attricolumnelement, '鏈�澶у簱瀛�' );//MaximumInventory + //骞冲潎搴撳瓨 + InventorySummarySource::CreateCellElement( xmlDOM, attricolumnelement, '骞冲潎搴撳瓨' );//AverageInventory + + } + //鏈熸湯搴撳瓨 + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, [String]c.EndingInventory() ); + //鏈�灏忓簱瀛� + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, [String]c.MinimumInventory() ); + //鏈�澶у簱瀛� + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, [String]c.MaximumInventory() ); + //骞冲潎搴撳瓨 + InventorySummarySource::CreateCellElement( xmlDOM, columnelement, [String]c.AverageInventory() ); + } + + tableElement.AppendChild( columnelement ); + } + searchxmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + 'Search' + '</name></table>' ); + searchElement := searchxmlDOM.GetElementByTagName( "table", 0 ); + //Unit + factoryvalues := selectuniquevalues( factorys, Elements, factory, factory.Name() ); + InventorySummarySource::CreateColumnElement( searchElement, searchxmlDOM, factoryvalues, 'Unit', searchrowsize ); + //Generation + generationvalues := selectuniquevalues( generations, Elements, generation, generation.Generation() ); + InventorySummarySource::CreateColumnElement( searchElement, searchxmlDOM, generationvalues, 'Generation', searchrowsize ); + //Power + powervalues := selectuniquevalues( powers, Elements, power, power.Power() ); + InventorySummarySource::CreateColumnElement( searchElement, searchxmlDOM, powervalues, 'Power', searchrowsize ); + //MLBMQBS + mlbmqbvalues := selectuniquevalues( mlbmqls, Elements, mlbmqb, mlbmqb.MLBMQB() ); + InventorySummarySource::CreateColumnElement( searchElement, searchxmlDOM, mlbmqbvalues, 'MLBMQB', searchrowsize ); + //Start date + InventorySummarySource::CreateColumnElement( searchElement, searchxmlDOM, search.StartDate().Format( 'M2/D2/Y' ), 'Start date', searchrowsize ); + //End date + InventorySummarySource::CreateColumnElement( searchElement, searchxmlDOM, search.EndDate().Format( 'M2/D2/Y' ), 'End date', searchrowsize ); + //Period + InventorySummarySource::CreateColumnElement( searchElement, searchxmlDOM, search.Category(), 'Period', searchrowsize ); + + xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM ); + + tableGroupHandle := TableGroupHandle::Create( InventorySummaryReport::GetDefaultName() ); + tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) ); + tableGroupHandle.Add( tableHandle ); + searchxmlString := xmlDOMI.CreateSerializer().WriteToString( searchxmlDOM ); + searchtableHandle := TableHandle::ImportXML( BinaryValue::Construct( searchxmlString ) ); + tableGroupHandle.Add( searchtableHandle ); + + binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true ); + + return binaryData.AsBinaryValue(); + *] +} diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_GetSearchRows.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_GetSearchRows.qbl new file mode 100644 index 0000000..b8deb38 --- /dev/null +++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_GetSearchRows.qbl @@ -0,0 +1,22 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod GetSearchRows ( + Factorys factorys, + ProductGenerations generations, + ProductPowers powers, + ProductMLBMQBs mlbmqls +) as Number +{ + Description: '鑾峰彇鏌ヨ鏉′欢琛屾暟' + TextBody: + [* + // 鐢勫叞楦� Oct-18-2024 (created) + searchrows := construct( Numbers ); + searchrows.Add( factorys.Size() ); + searchrows.Add( generations.Size() ); + searchrows.Add( powers.Size() ); + searchrows.Add( mlbmqls.Size() ); + searchrowsize := max( searchrows, Elements, e, e ); + return searchrowsize; + *] +} -- Gitblit v1.9.3