| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod GetShiftPlanColumnXML ( | 
|   const constcontent Units rows, | 
|   const Period_MP column, | 
|   const Strings attributeNames, | 
|   String type | 
| ) const as String | 
| { | 
|   TextBody: | 
|   [* | 
|     // rislai Jun-20-2024 (created) | 
|     columnXML := ""; | 
|     cells := selectsortedset( column, UnitPeriod.astype( UnitPeriodTime ).ShiftPlan, cell, | 
|                                   exists( rows,Elements,element,element = cell.UnitPeriodTime().Unit()), cell.UnitPeriodTime().Unit().ID()); | 
|     if( type = "data" ){ | 
|       columnXML := "<column><name>" + column.StartDate().Format( "Y-M2-D2 ")+ "</name><type>String</type>"; | 
|       traverse ( cells, Elements, cell ) { | 
|         traverse( attributeNames ,Elements,e ){ | 
|           cellXML := '<cell value="' + cell.GetAttributeByName( e ) + '"/>' | 
|           columnXML := columnXML + cellXML; | 
|         } | 
|       } | 
|       columnXML := columnXML + "</column>"; | 
|     } | 
|     if( type = "attribute" ){ | 
|       columnXML1 := "<column><name>Unit</name><type>String</type>"; | 
|       columnXML2 := "<column><name>Attribute</name><type>String</type>"; | 
|        | 
|       traverse ( cells, Elements, cell ) { | 
|         flag := true; | 
|         traverse( attributeNames ,Elements,e ){ | 
|           if( flag ){ | 
|             cellXML := '<cell value="' + cell.UnitPeriodTime().Unit().ID() + '"/>' | 
|             columnXML1 := columnXML1 + cellXML; | 
|             flag := false; | 
|           }else{ | 
|             cellXML := '<cell value="  "/>' | 
|             columnXML1 := columnXML1 + cellXML; | 
|           } | 
|           cellXML := '<cell value="' + e + '"/>' | 
|           columnXML2 := columnXML2 + cellXML; | 
|         } | 
|       } | 
|       columnXML := columnXML1 + "</column>" + columnXML2 + "</column>"; | 
|     } | 
|       | 
|     return columnXML; | 
|   *] | 
| } |