¶Ô±ÈÐÂÎļþ |
| | |
| | | Quintiq file version 2.0 |
| | | #parent: #root |
| | | StaticMethod Export ( |
| | | MacroPlan macroPlan, |
| | | PackagingPlanRows pprs |
| | | ) as BinaryValue |
| | | { |
| | | TextBody: |
| | | [* |
| | | xmlDOMI := XMLDOMImplementation::Create(); |
| | | xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' ); |
| | | |
| | | 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(); |
| | | *] |
| | | } |