_Main/BL/Type_EnginePipelineReport/Method_Clear.qbl
@@ -11,8 +11,8 @@ // 甄兰鸽 Jun-25-2024 (created) this.Column( relflush ); this.Row( relflush ); this.Column( relnew, Name := '', TimeUnit := timeunit ); this.Column( relnew, Name := '', TimeUnit := timeunit ); //this.Column( relnew, Name := '', TimeUnit := timeunit ); //this.Column( relnew, Name := '', TimeUnit := timeunit ); this.GenerateColumn( this.Source().MacroPlan(), timeunit, startdate, enddate ); *] } _Main/BL/Type_EnginePipelineRow/StaticMethod_CraeteCellValueForRow.qbl
@@ -12,10 +12,10 @@ [* // 甄兰鸽 Jul-11-2024 (created) row := table.Row( relnew, Name := name, RowNr := rownr, Product := product, Demand := demand ); traverse( table, Column, column ){ cell := column.CellValue( relnew, Value := '0' ); row.CellValue( relinsert, cell ); } //traverse( table, Column, column ){ // cell := column.CellValue( relnew, Value := '0' ); // row.CellValue( relinsert, cell ); //} return row; *] } _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(); *] _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(); *] _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(); *] _Main/BL/Type_MachineLogisticsCostReportCell/StaticMethod_CreateData.qbl
@@ -36,43 +36,39 @@ // 运输成本参数 lct := select( macroPlan, LogisticsCostTransport, tempLCT, tempLCT.Product() = mlcrr.Category() and tempLCT.Origin() = ifexpr( mlcrr.Factory() = "大连工厂", "长春外租库", "大连厂内库" ) and tempLCT.Destination() = ifexpr( mlcrr.Factory() = "大连工厂", "大连场内库", "长春外租库" ) ); lct1 := select( macroPlan, LogisticsCostTransport, tempLCT, tempLCT.Product() = mlcrr.Category() and tempLCT.Origin() = ifexpr( mlcrr.Factory() = "大连工厂", "大连厂内库", "CC 厂内库" ) and tempLCT.Destination() = ifexpr( mlcrr.Factory() = "大连工厂", "大连外租库", "长春外租库" ) ); // 当前月末最后一天日期 lastDayOfThisMonth := mlcrc.StartDate().StartOfNextMonth() - 1; tempLCT.Product() = mlcrr.Category() and tempLCT.Origin() = ifexpr( mlcrr.Category() = "AGW", "DL AGW", ifexpr( mlcrr.Factory() = "大连工厂", "DL", "CC" ) + " " + mlcrr.Category() + "外租库" ) and tempLCT.Destination() = ifexpr( mlcrr.Category() = "AGW", "CC AGW库房", ifexpr( mlcrr.Factory() = "大连工厂", "DL", "CC" ) + " " + mlcrr.Category() + "线边库" ) ); // 当前月末最后一天日期 lastDayOfThisMonth := mlcrc.StartDate().StartOfNextMonth() - 1; cell := mlcrr.MachineLogisticsCostReportCell( relnew ); // 设置包装费用(包装量 * 包装单价) packageQuantity := sum( macroPlan, PackagingPlanRow.PackagingPlanCell, tempPPC, packageQuantity := sum( macroPlan, PackagingPlanRow.PackagingPlanCell, tempPPC, tempPPC.PackagingPlanRow().Category() = mlcrr.Category() and tempPPC.PackagingPlanRow().Factory() = mlcrr.Factory() and tempPPC.PackagingPlanColumn().StartDate().Year() = mlcrc.StartDate().Year() and tempPPC.PackagingPlanColumn().StartDate().Month() = mlcrc.StartDate().Month(), tempPPC.Package() ); cell.PackingCharges( packageQuantity * guard( lcm.PackagePrice(), 1 ) ); // 设置拆包费用(拆包量 * 拆包单价) unpackingQuantity := sum( macroPlan, PackagingPlanRow.PackagingPlanCell, tempPPC, unpackingQuantity := sum( macroPlan, PackagingPlanRow.PackagingPlanCell, tempPPC, tempPPC.PackagingPlanRow().Category() = mlcrr.Category() and tempPPC.PackagingPlanRow().Factory() = mlcrr.Factory() and tempPPC.PackagingPlanColumn().StartDate().Year() = mlcrc.StartDate().Year() and tempPPC.PackagingPlanColumn().StartDate().Month() = mlcrc.StartDate().Month(), tempPPC.Unpacking() ); cell.UnpackingCost( unpackingQuantity * guard( lcm.UnpackingPrice(), 1 ) ); // 设置缓冲纸费用(包装类 * 缓冲纸单价) cell.BufferPaperCost( packageQuantity * guard( lcm.BufferPaperPrice(), 1 ) ); // 设置木箱单价 cell.WoodenCratePriceReal( guard( lcm.WoodenCratePrice(), 1 ) ); // 设置调拨费用(调拨数量 / 包装容量 / 装载容量 * 运输单价) transferQuantity := sum( macroPlan, TransferPlanRow.TransferPlanCell, tempTPC, tempTPC.TransferPlanRow().Category() = mlcrr.Category() and @@ -80,25 +76,35 @@ guard( tempTPC.TransferPlanColumn().ColumnDate().Year() = mlcrc.StartDate().Year(), false ) and guard( tempTPC.TransferPlanColumn().ColumnDate().Month() = mlcrc.StartDate().Month(), false ), [Number]tempTPC.Value() ); cell.TransferCost( transferQuantity / guard( lcm.PackagingCapacity(), 1 ) / guard( lct.LoadingCapacity(), 1 ) * guard( lct.TransportPrice(), 1 ) ); cell.TransferCost( [Number] ( [Number] ( transferQuantity / guard( lcm.PackagingCapacity(), 1 ) ) / guard( lct.LoadingCapacity(), 1 ) ) * guard( lct.TransportPrice(), 1 ) ); // 外租库入库费用(入库量[包装量] / 包装容量 * 入库单价) cell.StorageFeesForRentedWarehouses( packageQuantity / guard( lcm.PackagingCapacity(), 1 ) * guard( lcm.WarehousingPrice(), 1 ) ); // 外租库出库费用(出库量[拆包量] / 包装容量 * 出库单价) cell.OutboundExpensesForRentedWarehouses( unpackingQuantity / guard( lcm.PackagingCapacity(), 1 ) * guard( lcm.OutboundPrice(), 1 ) ); // 外租库运输费用(运输数量 / 包装容量 / 装载容量 * 运输单价) transportationQuantity := sum( macroPlan, Unit.Lane.LaneLeg.Trip.ProductInTrip, tempPIT, tempPIT.Product_MP().ParentID() = mlcrr.Category() and tempPIT.Trip().Departure().Date() >= mlcrc.StartDate() and tempPIT.Trip().Arrival().Date() <= lastDayOfThisMonth and tempPIT.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID() = "CC 厂内库" and tempPIT.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID() = "长春外租库", transportationQuantity := sum( macroPlan, Unit.Lane.LaneLeg.Trip.ProductInTrip, tempPIT, tempPIT.Product_MP().ParentID() = mlcrr.Category() and tempPIT.Trip().Departure().Date() >= mlcrc.StartDate() and tempPIT.Trip().Arrival().Date() <= lastDayOfThisMonth and tempPIT.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID() = ifexpr( mlcrr.Factory() = "大连工厂", "DL", "CC" ) + " " + mlcrr.Category() + "线边库" and tempPIT.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID() = ifexpr( mlcrr.Factory() = "大连工厂", "DL", "CC" ) + " " + mlcrr.Category() + "外租库", tempPIT.Quantity() ); cell.ExternalRentalWarehouseTransportationCosts( transportationQuantity / guard( lcm.PackagingCapacity(), 1 ) / guard( lct1.LoadingCapacity(), 1 ) * guard( lct1.TransportPrice(), 1 ) ); transportationQuantity := transportationQuantity + sum( macroPlan, Unit.Lane.LaneLeg.Trip.ProductInTrip, tempPIT, tempPIT.Product_MP().ParentID() = mlcrr.Category() and tempPIT.Trip().Departure().Date() >= mlcrc.StartDate() and tempPIT.Trip().Arrival().Date() <= lastDayOfThisMonth and tempPIT.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID() = ifexpr( mlcrr.Factory() = "大连工厂", "DL", "CC" ) + " " + mlcrr.Category() + "外租库" and tempPIT.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID() = ifexpr( mlcrr.Factory() = "大连工厂", "DL", "CC" ) + " " + mlcrr.Category() + "线边库", tempPIT.Quantity() ); cell.ExternalRentalWarehouseTransportationCosts( transportationQuantity / guard( lcm.PackagingCapacity(), 1 ) / guard( lct.LoadingCapacity(), 1 ) * guard( lct.TransportPrice(), 1 ) ); // 外租库仓储费用:仓储数量/包装容量*仓储单价 plannedInventory := sum( macroPlan, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, tempPISPIP, tempPISPIP.ProductInStockingPoint_MP().Product_MP().IsLeaf() and @@ -106,9 +112,20 @@ tempPISPIP.ProductInStockingPoint_MP().Product_MP().ParentID() = mlcrr.Category() and tempPISPIP.Start().Date() >= mlcrc.StartDate() and tempPISPIP.End().Date() <= lastDayOfThisMonth and tempPISPIP.ProductInStockingPoint_MP().StockingPointID() = ifexpr( mlcrr.Factory() = "大连工厂", "大连外租库", "长春外租库" ), tempPISPIP.ProductInStockingPoint_MP().StockingPointID() = ifexpr( mlcrr.Factory() = "大连工厂", "DL", "CC" ) + " " + mlcrr.Category() + "外租库", tempPISPIP.PlannedInventoryLevelEnd() ); cell.RentalWarehouseStorageFees( plannedInventory / guard( lcm.PackagingCapacity(), 1 ) * guard( lcm.StoragePrice(), 1 ) ); // 预计总费用 cell.EstimatedTotalCost( cell.PackingCharges() + cell.UnpackingCost() + cell.BufferPaperCost() + cell.WoodenCrateCost() + cell.TransferCost() + cell.StorageFeesForRentedWarehouses() + cell.OutboundExpensesForRentedWarehouses() + cell.ExternalRentalWarehouseTransportationCosts() + cell.RentalWarehouseStorageFees() ); // 系数 cell.Coefficient( 1.05 ); // 总费用 cell.TotalCost( cell.EstimatedTotalCost() * cell.Coefficient() ); cell.MachineLogisticsCostReportColumn( relset, mlcrc ); } _Main/Sys/Repr/Global/PackagingPlanCell.qrp
@@ -30,7 +30,7 @@ AttributeRepresentation PackagingInventory { AttributeKey: '[413988.0.1393320143]' Synonym: 'Packaged' Synonym: 'Packaged inventory' } AttributeRepresentation TransferIn { @@ -40,7 +40,7 @@ AttributeRepresentation UnpackagedInventory { AttributeKey: '[413988.0.1393320130]' Synonym: 'Unpackaged' Synonym: 'Unpackaged inventory' } AttributeRepresentation Unpacking { _Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_MatrixEditorTable.def
@@ -53,7 +53,7 @@ ] Properties: [ Legend: 'ShowName' Legend: 'Name' SortCriteria: 'RowNr' Taborder: 1 ]