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(); 
 | 
  *] 
 | 
} 
 |