How to get DynamicField values of type CustomerCompany

Moderator: crythias

Post Reply
RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

How to get DynamicField values of type CustomerCompany

Post by RStraub »

Hey forum,

I have a DynamicField of type "Text" for object "CustomerCompany". When I try the same code as for other dynamic fields, I do not get the current value:

Code: Select all

        my $DynamicFieldConfig = $DynamicFieldObject->DynamicFieldGet(
            ID => 95, # hardcoded magic number, bleh
        );
        my $Value = $DynamicFieldBackendObject->ValueGet(
            DynamicFieldConfig => $DynamicFieldConfig,
            ObjectID           	   => $CustomerID,
        );
        print "Currently set: for Customer [$CustomerID] is value: [$Value]\n";
In this example, $Value is empty (even though it's set and visible in the webfrontend.

As per documentation there is this new object:

Code: Select all

        my $DynamicFieldConfig = $DynamicFieldObject->DynamicFieldGet(
            ID => 95,
        );
        my %ObjectData = $DynamicFieldTicketHandlerObject->ObjectDataGet(
            DynamicFieldConfig => $DynamicFieldConfig,
            UserID             => 1,
        );
        print Dumper(\%ObjectData);
which throws:

Code: Select all

 Message: You have to give parameter ObjectName or ObjectID.

 Traceback (6215):
   Module: Kernel::System::DynamicField::ObjectMappingGet Line: 1224
   Module: Kernel::System::DynamicField::ObjectType::CustomerCompany::ObjectDataGet Line: 167
   Module: ./ScriptName.pl Line: 42

ERROR: ./ScriptName.pl-12 Perl: 5.22.1 OS: linux Time: Thu Jan 31 16:35:25 2019

 Message: Need ObjectName!

 Traceback (6215):
   Module: Kernel::System::DynamicField::ObjectMappingCreate Line: 1339
   Module: Kernel::System::DynamicField::ObjectType::CustomerCompany::ObjectDataGet Line: 176
   Module: ./ScriptName.pl Line: 42

ERROR: ./ScriptName.pl-12 Perl: 5.22.1 OS: linux Time: Thu Jan 31 16:35:25 2019

 Message: Unable to determine object id for object name  and type CustomerCompany!

 Traceback (6215):
   Module: Kernel::System::DynamicField::ObjectType::CustomerCompany::ObjectDataGet Line: 180
   Module: ./ScriptName.pl Line: 42
Checking the code, DynamicFieldTicketHandlerObject internally queries the URL parameters (which are given in the webfrontend, but not in a standalone module).

So, please advice: How can I get (and set) values for the new dynamic field objects?

Many thanks and best regards
Rolf

PS: This is the dynamic field config:

Code: Select all

$VAR1 = {
          'Name' => 'MyName',
          'ValidID' => '1',
          'FieldOrder' => '86',
          'Config' => {
                        'LinkPreview' => '',
                        'Link' => '',
                        'RegExList' => [],
                        'DefaultValue' => ''
                      },
          'FieldType' => 'Text',
          'ObjectType' => 'CustomerCompany',
          'ChangeTime' => '2019-01-31 15:50:38',
          'Label' => 'MyLabel',
          'InternalField' => '0',
          'ID' => '95',
          'CreateTime' => '2019-01-31 15:50:38'
        };

Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
skullz
Znuny superhero
Posts: 621
Joined: 24 Feb 2012, 03:58
Znuny Version: LTS and Features
Real Name: Mo Azfar
Location: Kuala Lumpur, MY
Contact:

Re: How to get DynamicField values of type CustomerCompany

Post by skullz »

maybe what you looking for
p/s: for specific dynamic field CC

Code: Select all

#get DF object
my $DynamicFieldObject = $Kernel::OM->Get('Kernel::System::DynamicField');

##Get object ID of CC based on customer id
my $cuid = "CompanyX";
my $ObjectMapping = $DynamicFieldObject->ObjectMappingGet(
        ObjectName            => $cuid,    
        ObjectType            => 'CustomerCompany', # Type of object to get mapping for
		);
		
##will return the object id that tie to the CC
				
##assign object mapping result to array values. This array return only one value.
my @ObjectID = values %{$ObjectMapping};
				
my $DynamicFieldValueObject = $Kernel::OM->Get('Kernel::System::DynamicFieldValue');
		
my $Value = $DynamicFieldValueObject->ValueGet(
        FieldID            => 30,                 # ID of the specific CC dynamic field
        ObjectID           => $ObjectID[0],                # 
	);
		
print "Content-type: text/plain\n\n";
print Dumper(\$Value);

RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

[Solved] Re: How to get DynamicField values of type CustomerCompany

Post by RStraub »

Perfect, exactly what I needed. Thanks a bunch!

Yet another object I didn't know about, and somewhat easier to handle than the backend value set/get.
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
Post Reply