| 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' } | 
| } |