Quintiq file version 2.0
|
#parent: #root
|
StaticMethod Download (
|
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/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 );
|
|
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 := 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() );
|
|
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 );
|
}
|
|
xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
|
|
tableGroupHandle := TableGroupHandle::Create( InventorySummaryReport::GetDefaultName() );
|
tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
|
tableGroupHandle.Add( tableHandle );
|
|
binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
|
|
return binaryData.AsBinaryValue();
|
*]
|
}
|