From 19e23a072fd48b81abb745cb5c8e8cd406cab9c9 Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期五, 18 十月 2024 12:34:20 +0800
Subject: [PATCH] 财务产量/销量,库存汇总的导出bug

---
 _Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl      |   95 +++++++++------
 _Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl    |  160 ++++++++++++++------------
 _Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl |  103 +++++++++--------
 3 files changed, 193 insertions(+), 165 deletions(-)

diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl
index ac8db97..bad3460 100644
--- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl
+++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Download.qbl
@@ -12,32 +12,32 @@
   TextBody:
   [*
     
-    table := selectobject( macroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
+    table                         := selectobject( macroPlan, FinancialProductionSource.FinancialProductionReport, 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>' );
+    xmlDOMI                       := XMLDOMImplementation::Create();
+    xmlDOM                        := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
     
-    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+    tableElement                  := xmlDOM.GetElementByTagName( "table", 0 );
     //Search
-    searchcolumnelement := xmlDOM.CreateElement( "column" );
-    searchnameelement   := xmlDOM.CreateElement( "name" );
-    searchtypeelement   := xmlDOM.CreateElement( "type" );
+    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" );
+    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" );
+    unitcolumnelement             := xmlDOM.CreateElement( "column" );
+    unitnameelement               := xmlDOM.CreateElement( "name" );
+    unittypeelement               := xmlDOM.CreateElement( "type" );
     unitnameelement.TextContent( 'Unit' );
     unittypeelement.TextContent( "String" );
     unitcolumnelement.AppendChild( unitnameelement );
@@ -46,94 +46,99 @@
     tableElement.AppendChild( searchcolumnelement ); 
     tableElement.AppendChild( productcolumnelement ); 
     tableElement.AppendChild( unitcolumnelement ); 
-    searchtotal     := factorys.Size() + generations.Size() + powers.Size() + mlbmqls.Size() + 4 ;
-    searchunitElement := xmlDOM.CreateElement( "cell" );
+    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       := xmlDOM.CreateElement( "cell" );
       searchunitcellElement.SetAttribute( "value", factory.Name() );
       searchcolumnelement.AppendChild( searchunitcellElement );
     }
-    searchgenerationElement := xmlDOM.CreateElement( "cell" );
+    searchgenerationElement       := xmlDOM.CreateElement( "cell" );
     searchgenerationElement.SetAttribute( "value", 'Generation' );
     searchcolumnelement.AppendChild( searchgenerationElement );
     traverse( generations, Elements, generation ){
-      generationcellElement := xmlDOM.CreateElement( "cell" );
+      generationcellElement       := xmlDOM.CreateElement( "cell" );
       generationcellElement.SetAttribute( "value", generation.Generation() );
       searchcolumnelement.AppendChild( generationcellElement );
     }
-    searchpowerElement := xmlDOM.CreateElement( "cell" );
+    searchpowerElement            := xmlDOM.CreateElement( "cell" );
     searchpowerElement.SetAttribute( "value", 'Power' );
     searchcolumnelement.AppendChild( searchpowerElement );
     traverse( powers, Elements, power ){
-      searchpowercellElement := xmlDOM.CreateElement( "cell" );
+      searchpowercellElement      := xmlDOM.CreateElement( "cell" );
       searchpowercellElement.SetAttribute( "value", power.Power() );
       searchcolumnelement.AppendChild( searchpowercellElement );
     }
-    searchmlbmqlElement := xmlDOM.CreateElement( "cell" );
+    searchmlbmqlElement           := xmlDOM.CreateElement( "cell" );
     searchmlbmqlElement.SetAttribute( "value", 'MQBMLB' );
     searchcolumnelement.AppendChild( searchmlbmqlElement );
     traverse( mlbmqls, Elements, mlbmql ){
-      searchmlbmqlcellElement := xmlDOM.CreateElement( "cell" );
+      searchmlbmqlcellElement     := xmlDOM.CreateElement( "cell" );
       searchmlbmqlcellElement.SetAttribute( "value", mlbmql.MLBMQB() );
       searchcolumnelement.AppendChild( searchmlbmqlcellElement );
     }
     
-    minindex        := min( table, FinancialProductionColumn, column, not column.IsDay(), column.Index() );
+    for( i := searchtotal; i < table.FinancialProductionRow( relsize ); i := i + 1 ){
+      searchcellElement           := xmlDOM.CreateElement( "cell" );
+      searchcellElement.SetAttribute( "value", '' );
+      searchcolumnelement.AppendChild( searchcellElement );
+    }
+    
+    minindex                      := min( table, FinancialProductionColumn, column, not column.IsDay(), column.Index() );
     traverse ( table, FinancialProductionColumn, column, not column.IsDay() ) {
-      columnelement := xmlDOM.CreateElement( "column" );
-      nameelement   := xmlDOM.CreateElement( "name" );
-      typeelement   := xmlDOM.CreateElement( "type" );
+      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, FinancialProductionCell, cell, cell.FinancialProductionRow().RowNr() );
+      cells                       := selectsortedset( column, FinancialProductionCell, cell, cell.FinancialProductionRow().RowNr() );
     
       traverse ( cells, Elements, c ) {
         if( column.Index() = minindex ){
-          row := c.FinancialProductionRow();
+          row                     := c.FinancialProductionRow();
           //Product
-          productcellElement := xmlDOM.CreateElement( "cell" );
+          productcellElement      := xmlDOM.CreateElement( "cell" );
           productcellElement.SetAttribute( "value", row.Name() );
           productcolumnelement.AppendChild( productcellElement );
           //Unit
-          unitcellElement := xmlDOM.CreateElement( "cell" );
+          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               := 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 );
+      for( i := cells.Size(); i < searchtotal; i := i + 1 ){
+        searchcellElement         := xmlDOM.CreateElement( "cell" );
+        searchcellElement.SetAttribute( "value", '' );
+        columnelement.AppendChild( searchcellElement );
+        
+        if( column.Index() = minindex ){
+          productcellElement      := xmlDOM.CreateElement( "cell" );
+          productcellElement.SetAttribute( "value", '' );
+          productcolumnelement.AppendChild( productcellElement );
+          //Unit
+          unitcellElement         := xmlDOM.CreateElement( "cell" );
+          unitcellElement.SetAttribute( "value", '' );
+          unitcolumnelement.AppendChild( unitcellElement );
         }
       }
       tableElement.AppendChild( columnelement );  
     }
     
-    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+    xmlString                     := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
     
-    //info( xmlString );
-    
-    tableGroupHandle := TableGroupHandle::Create( FinancialProductionReport::GetDefaultName() );
-    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+    tableGroupHandle              := TableGroupHandle::Create( FinancialProductionReport::GetDefaultName() );
+    tableHandle                   := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
     tableGroupHandle.Add( tableHandle );
     
-    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+    binaryData                    := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
     
     return binaryData.AsBinaryValue();
   *]
diff --git a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl
index 1bdd2e2..6edd436 100644
--- a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl
+++ b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Download.qbl
@@ -12,32 +12,32 @@
   TextBody:
   [*
     
-    table := selectobject( macroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
+    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>' );
+    xmlDOMI                       := XMLDOMImplementation::Create();
+    xmlDOM                        := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
     
-    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+    tableElement                  := xmlDOM.GetElementByTagName( "table", 0 );
     //Search
-    searchcolumnelement := xmlDOM.CreateElement( "column" );
-    searchnameelement   := xmlDOM.CreateElement( "name" );
-    searchtypeelement   := xmlDOM.CreateElement( "type" );
+    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" );
+    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" );
+    unitcolumnelement             := xmlDOM.CreateElement( "column" );
+    unitnameelement               := xmlDOM.CreateElement( "name" );
+    unittypeelement               := xmlDOM.CreateElement( "type" );
     unitnameelement.TextContent( 'Unit' );
     unittypeelement.TextContent( "String" );
     unitcolumnelement.AppendChild( unitnameelement );
@@ -46,44 +46,51 @@
     tableElement.AppendChild( searchcolumnelement ); 
     tableElement.AppendChild( productcolumnelement ); 
     tableElement.AppendChild( unitcolumnelement ); 
-    searchtotal     := factorys.Size() + generations.Size() + powers.Size() + mlbmqls.Size() + 4 ;
-    searchunitElement := xmlDOM.CreateElement( "cell" );
+    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       := xmlDOM.CreateElement( "cell" );
       searchunitcellElement.SetAttribute( "value", factory.Name() );
       searchcolumnelement.AppendChild( searchunitcellElement );
     }
-    searchgenerationElement := xmlDOM.CreateElement( "cell" );
+    searchgenerationElement       := xmlDOM.CreateElement( "cell" );
     searchgenerationElement.SetAttribute( "value", 'Generation' );
     searchcolumnelement.AppendChild( searchgenerationElement );
     traverse( generations, Elements, generation ){
-      generationcellElement := xmlDOM.CreateElement( "cell" );
+      generationcellElement       := xmlDOM.CreateElement( "cell" );
       generationcellElement.SetAttribute( "value", generation.Generation() );
       searchcolumnelement.AppendChild( generationcellElement );
     }
-    searchpowerElement := xmlDOM.CreateElement( "cell" );
+    searchpowerElement            := xmlDOM.CreateElement( "cell" );
     searchpowerElement.SetAttribute( "value", 'Power' );
     searchcolumnelement.AppendChild( searchpowerElement );
     traverse( powers, Elements, power ){
-      searchpowercellElement := xmlDOM.CreateElement( "cell" );
+      searchpowercellElement      := xmlDOM.CreateElement( "cell" );
       searchpowercellElement.SetAttribute( "value", power.Power() );
       searchcolumnelement.AppendChild( searchpowercellElement );
     }
-    searchmlbmqlElement := xmlDOM.CreateElement( "cell" );
+    searchmlbmqlElement           := xmlDOM.CreateElement( "cell" );
     searchmlbmqlElement.SetAttribute( "value", 'MQBMLB' );
     searchcolumnelement.AppendChild( searchmlbmqlElement );
     traverse( mlbmqls, Elements, mlbmql ){
-      searchmlbmqlcellElement := xmlDOM.CreateElement( "cell" );
+      searchmlbmqlcellElement     := xmlDOM.CreateElement( "cell" );
       searchmlbmqlcellElement.SetAttribute( "value", mlbmql.MLBMQB() );
       searchcolumnelement.AppendChild( searchmlbmqlcellElement );
     }
+    
+    for( i := searchtotal; i < table.FinancialSalesRow( relsize ); i := i + 1 ){
+      searchcellElement           := xmlDOM.CreateElement( "cell" );
+      searchcellElement.SetAttribute( "value", '' );
+      searchcolumnelement.AppendChild( searchcellElement );
+    }
+    
     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" );
+      columnelement               := xmlDOM.CreateElement( "column" );
+      nameelement                 := xmlDOM.CreateElement( "name" );
+      typeelement                 := xmlDOM.CreateElement( "type" );
       nameelement.TextContent( column.Name() );
       typeelement.TextContent( "String" );
       columnelement.AppendChild( nameelement );
@@ -93,46 +100,52 @@
     
       traverse ( cells, Elements, c ) {
         if( column.Index() = minindex ){
-          row := c.FinancialSalesRow();
+          row                     := c.FinancialSalesRow();
           //Product
-          productcellElement := xmlDOM.CreateElement( "cell" );
+          productcellElement      := xmlDOM.CreateElement( "cell" );
           productcellElement.SetAttribute( "value", row.Name() );
           productcolumnelement.AppendChild( productcellElement );
           //Unit
-          unitcellElement := xmlDOM.CreateElement( "cell" );
+          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  := xmlDOM.CreateElement( "cell" );
               searchcellElement1.SetAttribute( "value", '' );
               searchcolumnelement.AppendChild( searchcellElement1 );
             }
           }
         }
-        cellElement := xmlDOM.CreateElement( "cell" );
+        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 );
+      for( i := cells.Size(); i < searchtotal; i := i + 1 ){
+        searchcellElement         := xmlDOM.CreateElement( "cell" );
+        searchcellElement.SetAttribute( "value", '' );
+        columnelement.AppendChild( searchcellElement );
+        
+        if( column.Index() = minindex ){
+          productcellElement      := xmlDOM.CreateElement( "cell" );
+          productcellElement.SetAttribute( "value", '' );
+          productcolumnelement.AppendChild( productcellElement );
+          //Unit
+          unitcellElement         := xmlDOM.CreateElement( "cell" );
+          unitcellElement.SetAttribute( "value", '' );
+          unitcolumnelement.AppendChild( unitcellElement );
         }
       }
       tableElement.AppendChild( columnelement );  
     }
     
-    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
+    xmlString                     := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
     
-    //info( xmlString );
-    
-    tableGroupHandle := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() );
-    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+    tableGroupHandle              := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() );
+    tableHandle                   := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
     tableGroupHandle.Add( tableHandle );
     
-    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+    binaryData                    := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
     
     return binaryData.AsBinaryValue();
   *]
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl
index 06cfb30..c989643 100644
--- a/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Download.qbl
@@ -13,40 +13,40 @@
   TextBody:
   [*
     
-    table := selectobject( macroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
+    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>' );
+    xmlDOMI                     := XMLDOMImplementation::Create();
+    xmlDOM                      := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
     
-    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+    tableElement                := xmlDOM.GetElementByTagName( "table", 0 );
     //Search
-    searchcolumnelement := xmlDOM.CreateElement( "column" );
-    searchnameelement   := xmlDOM.CreateElement( "name" );
-    searchtypeelement   := xmlDOM.CreateElement( "type" );
+    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" );
+    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" );
+    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" );
+    attricolumnelement          := xmlDOM.CreateElement( "column" );
+    attrinameelement            := xmlDOM.CreateElement( "name" );
+    attritypeelement            := xmlDOM.CreateElement( "type" );
     attrinameelement.TextContent( 'Attribute' );
     attritypeelement.TextContent( "String" );
     attricolumnelement.AppendChild( attrinameelement );
@@ -56,159 +56,169 @@
     tableElement.AppendChild( productcolumnelement ); 
     tableElement.AppendChild( unitcolumnelement ); 
     tableElement.AppendChild( attricolumnelement );
-    searchtotal     := factorys.Size() + generations.Size() + powers.Size() + mlbmqls.Size() + 10 ;
-    searchunitElement := xmlDOM.CreateElement( "cell" );
+    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     := xmlDOM.CreateElement( "cell" );
       searchunitcellElement.SetAttribute( "value", factory.Name() );
       searchcolumnelement.AppendChild( searchunitcellElement );
     }
-    searchgenerationElement := xmlDOM.CreateElement( "cell" );
+    searchgenerationElement     := xmlDOM.CreateElement( "cell" );
     searchgenerationElement.SetAttribute( "value", 'Generation' );
     searchcolumnelement.AppendChild( searchgenerationElement );
     traverse( generations, Elements, generation ){
-      generationcellElement := xmlDOM.CreateElement( "cell" );
+      generationcellElement     := xmlDOM.CreateElement( "cell" );
       generationcellElement.SetAttribute( "value", generation.Generation() );
       searchcolumnelement.AppendChild( generationcellElement );
     }
-    searchpowerElement := xmlDOM.CreateElement( "cell" );
+    searchpowerElement          := xmlDOM.CreateElement( "cell" );
     searchpowerElement.SetAttribute( "value", 'Power' );
     searchcolumnelement.AppendChild( searchpowerElement );
     traverse( powers, Elements, power ){
-      searchpowercellElement := xmlDOM.CreateElement( "cell" );
+      searchpowercellElement    := xmlDOM.CreateElement( "cell" );
       searchpowercellElement.SetAttribute( "value", power.Power() );
       searchcolumnelement.AppendChild( searchpowercellElement );
     }
-    searchmlbmqlElement := xmlDOM.CreateElement( "cell" );
+    searchmlbmqlElement         := xmlDOM.CreateElement( "cell" );
     searchmlbmqlElement.SetAttribute( "value", 'MQBMLB' );
     searchcolumnelement.AppendChild( searchmlbmqlElement );
     traverse( mlbmqls, Elements, mlbmql ){
-      searchmlbmqlcellElement := xmlDOM.CreateElement( "cell" );
+      searchmlbmqlcellElement   := xmlDOM.CreateElement( "cell" );
       searchmlbmqlcellElement.SetAttribute( "value", mlbmql.MLBMQB() );
       searchcolumnelement.AppendChild( searchmlbmqlcellElement );
     }
-    searchstartdateElement := xmlDOM.CreateElement( "cell" );
+    searchstartdateElement      := xmlDOM.CreateElement( "cell" );
     searchstartdateElement.SetAttribute( "value", 'Start date' );
     searchcolumnelement.AppendChild( searchstartdateElement );
-    searchstartdatecellElement := xmlDOM.CreateElement( "cell" );
+    searchstartdatecellElement  := xmlDOM.CreateElement( "cell" );
     searchstartdatecellElement.SetAttribute( "value", search.StartDate().Format( 'M2/D2/Y' ) );
     searchcolumnelement.AppendChild( searchstartdatecellElement );
-    searchenddateElement := xmlDOM.CreateElement( "cell" );
+    searchenddateElement        := xmlDOM.CreateElement( "cell" );
     searchenddateElement.SetAttribute( "value", 'End date' );
     searchcolumnelement.AppendChild( searchenddateElement );
-    searchenddatecellElement := xmlDOM.CreateElement( "cell" );
+    searchenddatecellElement    := xmlDOM.CreateElement( "cell" );
     searchenddatecellElement.SetAttribute( "value", search.EndDate().Format( 'M2/D2/Y' ) );
     searchcolumnelement.AppendChild( searchenddatecellElement );
-    searchcellElement1 := xmlDOM.CreateElement( "cell" );
-    searchcellElement1.SetAttribute( "value", 'Periods' );
-    searchcolumnelement.AppendChild( searchcellElement1 );
-    searchcellElement1 := xmlDOM.CreateElement( "cell" );
-    searchcellElement1.SetAttribute( "value", search.Category() );
-    searchcolumnelement.AppendChild( searchcellElement1 );
+    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 );
+    }
+    
     traverse ( table, InventorySummaryColumn, column ) {
-      columnelement := xmlDOM.CreateElement( "column" );
-      nameelement   := xmlDOM.CreateElement( "name" );
-      typeelement   := xmlDOM.CreateElement( "type" );
+      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, InventorySummaryCell, cell, cell.InventroySummaryRow().RowNr() );
+      cells                     := selectsortedset( column, InventorySummaryCell, cell, cell.InventroySummaryRow().RowNr() );
     
       traverse ( cells, Elements, c ) {
         if( column.Index() = 0 ){
-          row := c.InventroySummaryRow();
+          row                   := c.InventroySummaryRow();
           //Product
-          productcellElement1 := xmlDOM.CreateElement( "cell" );
+          productcellElement1   := xmlDOM.CreateElement( "cell" );
           productcellElement1.SetAttribute( "value", row.Name() );
           productcolumnelement.AppendChild( productcellElement1 );
-          productcellElement2 := xmlDOM.CreateElement( "cell" );
+          productcellElement2   := xmlDOM.CreateElement( "cell" );
           productcellElement2.SetAttribute( "value", row.Name() );
           productcolumnelement.AppendChild( productcellElement2 );
-          productcellElement3 := xmlDOM.CreateElement( "cell" );
+          productcellElement3   := xmlDOM.CreateElement( "cell" );
           productcellElement3.SetAttribute( "value", row.Name() );
           productcolumnelement.AppendChild( productcellElement3 );
-          productcellElement4 := xmlDOM.CreateElement( "cell" );
+          productcellElement4   := xmlDOM.CreateElement( "cell" );
           productcellElement4.SetAttribute( "value", row.Name() );
           productcolumnelement.AppendChild( productcellElement4 );
           //Unit
-          unitcellElement1 := xmlDOM.CreateElement( "cell" );
+          unitcellElement1      := xmlDOM.CreateElement( "cell" );
           unitcellElement1.SetAttribute( "value", row.Unit() );
           unitcolumnelement.AppendChild( unitcellElement1 );
-          unitcellElement2 := xmlDOM.CreateElement( "cell" );
+          unitcellElement2      := xmlDOM.CreateElement( "cell" );
           unitcellElement2.SetAttribute( "value", row.Unit() );
           unitcolumnelement.AppendChild( unitcellElement2 );
-          unitcellElement3 := xmlDOM.CreateElement( "cell" );
+          unitcellElement3      := xmlDOM.CreateElement( "cell" );
           unitcellElement3.SetAttribute( "value", row.Unit() );
           unitcolumnelement.AppendChild( unitcellElement3 );
-          unitcellElement4 := xmlDOM.CreateElement( "cell" );
+          unitcellElement4      := xmlDOM.CreateElement( "cell" );
           unitcellElement4.SetAttribute( "value", row.Unit() );
           unitcolumnelement.AppendChild( unitcellElement4 );
           //Attribute
           //鏈熸湯搴撳瓨
-          endcellElement := xmlDOM.CreateElement( "cell" );
+          endcellElement        := xmlDOM.CreateElement( "cell" );
           endcellElement.SetAttribute( "value", '鏈熸湯搴撳瓨' );//EndingInventory
           attricolumnelement.AppendChild( endcellElement );
           //鏈�灏忓簱瀛�
-          mincellElement := xmlDOM.CreateElement( "cell" );
+          mincellElement        := xmlDOM.CreateElement( "cell" );
           mincellElement.SetAttribute( "value", '鏈�灏忓簱瀛�' );//MinimumInventory
           attricolumnelement.AppendChild( mincellElement );
           //鏈�澶у簱瀛�
-          maxcellElement := xmlDOM.CreateElement( "cell" );
+          maxcellElement        := xmlDOM.CreateElement( "cell" );
           maxcellElement.SetAttribute( "value", '鏈�澶у簱瀛�' );//MaximumInventory
           attricolumnelement.AppendChild( maxcellElement );
           //骞冲潎搴撳瓨
-          avecellElement := xmlDOM.CreateElement( "cell" );
+          avecellElement        := xmlDOM.CreateElement( "cell" );
           avecellElement.SetAttribute( "value", '骞冲潎搴撳瓨' );//AverageInventory
           attricolumnelement.AppendChild( avecellElement );
-          
-          if( cells.Size() > searchtotal ){
-            for( i := searchtotal; i < cells.Size(); i := i + 1 ){
-              searchcellElement1 := xmlDOM.CreateElement( "cell" );
-              searchcellElement1.SetAttribute( "value", '' );
-              searchcolumnelement.AppendChild( searchcellElement1 );
-            }
-          }
+    
         }
         //鏈熸湯搴撳瓨
-        endcellElement := xmlDOM.CreateElement( "cell" );
+        endcellElement          := xmlDOM.CreateElement( "cell" );
         endcellElement.SetAttribute( "value", [String]c.EndingInventory() );
         columnelement.AppendChild( endcellElement );
         //鏈�灏忓簱瀛�
-        mincellElement := xmlDOM.CreateElement( "cell" );
+        mincellElement          := xmlDOM.CreateElement( "cell" );
         mincellElement.SetAttribute( "value", [String]c.MinimumInventory() );
         columnelement.AppendChild( mincellElement );
         //鏈�澶у簱瀛�
-        maxcellElement := xmlDOM.CreateElement( "cell" );
+        maxcellElement          := xmlDOM.CreateElement( "cell" );
         maxcellElement.SetAttribute( "value", [String]c.MaximumInventory() );
         columnelement.AppendChild( maxcellElement );
         //骞冲潎搴撳瓨
-        avecellElement := xmlDOM.CreateElement( "cell" );
+        avecellElement          := xmlDOM.CreateElement( "cell" );
         avecellElement.SetAttribute( "value", [String]c.AverageInventory() );
         columnelement.AppendChild( avecellElement );
       }
-      if( cells.Size() < searchtotal ){
-        for( i := cells.Size(); i < searchtotal; i := i + 1 ){
-          searchcellElement1 := xmlDOM.CreateElement( "cell" );
-          searchcellElement1.SetAttribute( "value", '' );
-          searchcolumnelement.AppendChild( searchcellElement1 );
+      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 );  
     }
     
-    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
+    xmlString                   := xmlDOMI.CreateSerializer().WriteToString( xmlDOM );
     
-    //info( xmlString );
-    
-    tableGroupHandle := TableGroupHandle::Create( InventorySummaryReport::GetDefaultName() );
-    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+    tableGroupHandle            := TableGroupHandle::Create( InventorySummaryReport::GetDefaultName() );
+    tableHandle                 := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
     tableGroupHandle.Add( tableHandle );
     
-    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+    binaryData                  := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
     
     return binaryData.AsBinaryValue();
   *]

--
Gitblit v1.9.3