Quintiq file version 2.0
#parent: #root
StaticMethod Export (
MacroPlan macroPlan,
PackagingPlanRows pprs
) as BinaryValue
{
TextBody:
[*
xmlDOMI := XMLDOMImplementation::Create();
xmlDOM := xmlDOMI.CreateDocumentFromString( '
' );
tableElement := xmlDOM.GetElementByTagName( "table", 0 );
// 第一列(名称)
pprs := selectsortedset( pprs, Elements, tempPPR, true, tempPPR.ProductID(), tempPPR.StockingPointID() );
firstColumn := xmlDOM.CreateElement( "column" );
firstName := xmlDOM.CreateElement( "name" );
firstType := xmlDOM.CreateElement( "type" );
firstName.TextContent( "*" );
firstType.TextContent( "String" );
firstColumn.AppendChild( firstName );
firstColumn.AppendChild( firstType );
traverse ( pprs, Elements, ppr ) {
firstCell := xmlDOM.CreateElement( "cell" );
firstCell.SetAttribute( "value", ppr.ProductID() );
firstColumn.AppendChild( firstCell );
for ( i := 0; i < 8; i++ ) {
firstCell := xmlDOM.CreateElement( "cell" );
firstCell.SetAttribute( "value", "" );
firstColumn.AppendChild( firstCell );
}
}
tableElement.AppendChild( firstColumn );
// 第二列
attrs := construct( Strings ); attrs.Add( "Demand" ); attrs.Add( "New supply" ); attrs.Add( "Inventory end" ); attrs.Add( "Transport-out" ); attrs.Add( "Transport-in" );
attrs.Add( "Unpackaged inventory" ); attrs.Add( "Packaged inventory" ); attrs.Add( "Package" ); attrs.Add( "Unpackage" );
secondColumn := xmlDOM.CreateElement( "column" );
secondName := xmlDOM.CreateElement( "name" );
secondType := xmlDOM.CreateElement( "type" );
secondName.TextContent( "*" );
secondType.TextContent( "String" );
secondColumn.AppendChild( secondName );
secondColumn.AppendChild( secondType );
for ( i := 0; i < pprs.Size(); i++ ) {
traverse ( attrs, Elements, attr ) {
secondCell := xmlDOM.CreateElement( "cell" );
secondCell.SetAttribute( "value", attr );
secondColumn.AppendChild( secondCell );
}
}
tableElement.AppendChild( secondColumn );
// 时间列
ppcs := selectsortedset( macroPlan, PackagingPlanColumn, tempPPC, true, tempPPC.StartDate() );
traverse ( ppcs, Elements, ppc ) {
cellColumn := xmlDOM.CreateElement( "column" );
cellName := xmlDOM.CreateElement( "name" );
cellType := xmlDOM.CreateElement( "type" );
cellName.TextContent( ppc.StartDate().Format( "Y-M2-D2" ) );
cellType.TextContent( "Real" );
cellColumn.AppendChild( cellName );
cellColumn.AppendChild( cellType );
cells := selectsortedset( ppc, PackagingPlanCell, tempPPCell,
exists( pprs, Elements, tempPPR, tempPPR = tempPPCell.PackagingPlanRow() ),
tempPPCell.PackagingPlanRow().ProductID(), tempPPCell.PackagingPlanRow().StockingPointID() );
traverse ( cells, Elements, c ) {
cell := xmlDOM.CreateElement( "cell" );
cell.SetAttribute( "value", [String]c.NetDemand().Round( 0 ) );
cellColumn.AppendChild( cell );
cell := xmlDOM.CreateElement( "cell" );
cell.SetAttribute( "value", [String]c.NewSupply().Round( 0 ) );
cellColumn.AppendChild( cell );
cell := xmlDOM.CreateElement( "cell" );
cell.SetAttribute( "value", [String]c.EndingInventory().Round( 0 ) );
cellColumn.AppendChild( cell );
cell := xmlDOM.CreateElement( "cell" );
cell.SetAttribute( "value", [String]c.Out().Round( 0 ) );
cellColumn.AppendChild( cell );
cell := xmlDOM.CreateElement( "cell" );
cell.SetAttribute( "value", [String]c.TransferIn().Round( 0 ) );
cellColumn.AppendChild( cell );
cell := xmlDOM.CreateElement( "cell" );
cell.SetAttribute( "value", [String]c.UnpackagedInventory().Round( 0 ) );
cellColumn.AppendChild( cell );
cell := xmlDOM.CreateElement( "cell" );
cell.SetAttribute( "value", [String]c.PackagingInventory().Round( 0 ) );
cellColumn.AppendChild( cell );
cell := xmlDOM.CreateElement( "cell" );
cell.SetAttribute( "value", [String]c.Package().Round( 0 ) );
cellColumn.AppendChild( cell );
cell := xmlDOM.CreateElement( "cell" );
cell.SetAttribute( "value", [String]c.Unpacking().Round( 2 ) );
cellColumn.AppendChild( cell );
}
tableElement.AppendChild( cellColumn );
}
xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
//info( xmlString );
tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
tableGroupHandle.Add( tableHandle );
binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
return binaryData.AsBinaryValue();
*]
}