Quintiq file version 2.0
|
#parent: #root
|
StaticMethod Download (
|
MacroPlan macroPlan,
|
Factorys factorys,
|
ProductGenerations generations,
|
ProductPowers powers,
|
ProductMLBMQBs mlbmqls
|
) as BinaryValue
|
{
|
Description: '下载财务报表数据'
|
TextBody:
|
[*
|
|
table := selectobject( macroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and 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 );
|
|
tableElement.AppendChild( searchcolumnelement );
|
tableElement.AppendChild( productcolumnelement );
|
tableElement.AppendChild( unitcolumnelement );
|
searchtotal := factorys.Size() + generations.Size() + powers.Size() + mlbmqls.Size() + 4 ;
|
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 );
|
}
|
minindex := min( table, FinancialSalesColumn, column, not column.IsDay(), column.Index() );
|
traverse ( table, FinancialSalesColumn, column, not column.IsDay() ) {
|
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 );
|
|
cells := selectsortedset( column, FinancialSalesCell, cell, cell.FinancialSalesRow().RowNr() );
|
|
traverse ( cells, Elements, c ) {
|
if( column.Index() = minindex ){
|
row := c.FinancialSalesRow();
|
//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 );
|
if( cells.Size() > searchtotal ){
|
for( i := searchtotal; i < cells.Size(); i := i + 1 ){
|
searchcellElement1 := xmlDOM.CreateElement( "cell" );
|
searchcellElement1.SetAttribute( "value", '' );
|
searchcolumnelement.AppendChild( searchcellElement1 );
|
}
|
}
|
}
|
cellElement := xmlDOM.CreateElement( "cell" );
|
cellElement.SetAttribute( "value", c.Value() );
|
columnelement.AppendChild( cellElement );
|
}
|
if( cells.Size() < searchtotal ){
|
for( i := cells.Size(); i < searchtotal; i := i + 1 ){
|
searchcellElement1 := xmlDOM.CreateElement( "cell" );
|
searchcellElement1.SetAttribute( "value", '' );
|
searchcolumnelement.AppendChild( searchcellElement1 );
|
}
|
}
|
tableElement.AppendChild( columnelement );
|
}
|
|
xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
|
|
//info( xmlString );
|
|
tableGroupHandle := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() );
|
tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
|
tableGroupHandle.Add( tableHandle );
|
|
binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
|
|
return binaryData.AsBinaryValue();
|
*]
|
}
|