Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method SynchronizeClassTypes (Lib3DS_Entities entities) as owning Lib3DS_ClassTypes 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    entitieswithoutclasstype := selectset( entities, Elements, entity, 
 | 
                                           isnull( entity.ClassType() ) ); 
 | 
     
 | 
    path := 'op/fetch'; 
 | 
    querystring := 'select=type&select=type.derived&select=type.derived.derived' 
 | 
                 + '&select=type.derived.derived.derived&select=type.derived.derived.derived.derived' 
 | 
                 + '&select=type.derived.derived.derived.derived.derived&select=type.derived.derived.derived.derived.derived.derived' 
 | 
                 + '&select=type.derived.derived.derived.derived.derived.derived.derived&select=type.derived.derived.derived.derived.derived.derived.derived.derived' 
 | 
                 + '&select=type.derived.derived.derived.derived.derived.derived.derived.derived.derived' 
 | 
    path := path + '?' + querystring; 
 | 
     
 | 
    body := this.Root().GetClassTypeQueryBody( entitieswithoutclasstype ); 
 | 
     
 | 
    nvtrequest := LibInt_MessageAccessor::CreateEmptyMessage(); 
 | 
    LibInt_MessageAccessor::SetHeaderProperty( nvtrequest, '_QI.ContentType', 'RAW' ); 
 | 
    LibInt_MessageAccessor::SetHeaderProperty( nvtrequest, 'HttpEndpointMethod', 'POST' ); 
 | 
    LibInt_MessageAccessor::SetHeaderProperty( nvtrequest, 'HttpEndpointPath', path ); 
 | 
    LibInt_MessageAccessor::SetHeaderProperty( nvtrequest, 'HTTPHeader.Accept', 'application/json' ); 
 | 
    LibInt_MessageAccessor::SetHeaderProperty( nvtrequest, 'HTTPHeader.Content-Type', 'application/json' ); 
 | 
    LibInt_MessageAccessor::SetBodyValueAsString( nvtrequest, body ); 
 | 
     
 | 
    nvtresponse := LibInt_IntegratorProxy::SyncNvtRequest( this.Root().IntegratorID(), '', nvtrequest ); 
 | 
    response := LibInt_MessageAccessor::GetBodyValueAsString( nvtresponse ); 
 | 
     
 | 
    jsonresponse := JSON::Parse( response ); 
 | 
     
 | 
    if( not isnull( jsonresponse ) ) 
 | 
    { 
 | 
      this.Root().ParseClassTypeQuery( jsonresponse ); 
 | 
    } 
 | 
     
 | 
    // Propagate Lib3DS_Entity::ClassType() relation 
 | 
    Transaction::Transaction().Propagate( relation( Lib3DS_Entity, ClassType ) ); 
 | 
     
 | 
    return selectset( entities, Elements.ClassType, classtype, true ); 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |