admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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' }
}