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_InventorySummarySource/StaticMethod_Download.qbl |  160 ++++++++++++++++++++++++++++-------------------------
 1 files changed, 85 insertions(+), 75 deletions(-)

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