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
45
46
47
48
49
50
51
52
53
54
55
56
57
Quintiq file version 2.0
#parent: #root
Method SynchronizeExtensionTypes (Lib3DS_Entities entities) as owning Lib3DS_ExtensionTypes
{
  TextBody:
  [*
    extensions := selectuniquevalues( entities, Elements.Extensions, extension,
                                      isnull( extension.ExtensionType() ),
                                      extension.Type() );
    
    traverse( extensions, Elements, extension )
    {
      entity := select( entities, Elements, entity,
                        exists( entity, Extensions, ext, ext.Type() = extension ) );
    
      if( not isnull( entity ) )
      {
        path := '';
        if( entity.Kind() = Lib3DS_EntityKind::Object() )
        {
          path := path + 'bus';
        }
        else if( entity.Kind() = Lib3DS_EntityKind::Relation() )
        {
          path := path + 'rel';
        }
        
        extensionUrl := URL::Encode( extension );
        querystring := 'select=interface%5B' + extensionUrl + '%5D.name&select=interface%5B' + extensionUrl + '%5D.allparents';
        path := path + '?' + querystring;
        
        nvtrequest := LibInt_MessageAccessor::CreateEmptyMessage();
        LibInt_MessageAccessor::SetHeaderProperty( nvtrequest, '_QI.ContentType', 'RAW' );
        LibInt_MessageAccessor::SetHeaderProperty( nvtrequest, 'HttpEndpointMethod', 'GET' );
        LibInt_MessageAccessor::SetHeaderProperty( nvtrequest, 'HttpEndpointPath', path );
        LibInt_MessageAccessor::SetHeaderProperty( nvtrequest, 'HTTPHeader.Accept', 'application/json' );
        
        nvtresponse := LibInt_IntegratorProxy::SyncNvtRequest( this.Root().IntegratorID(), '', nvtrequest );
        response := LibInt_MessageAccessor::GetBodyValueAsString( nvtresponse );
        
        jsonresponse := JSON::Parse( response );
        
        if( not isnull( jsonresponse ) )
        {
          this.Root().ParseExtensionTypeQuery( jsonresponse );
        }
      }
    }
    
    Transaction::Transaction().Propagate( relation( Lib3DS_Extension, ExtensionType ) );
    
    extensiontypes := selectset( entities, Elements.Extensions.ExtensionType, extensiontype, true );
    
    return &extensiontypes;
  *]
  InterfaceProperties { Accessibility: 'Module' }
}