Tuesday, 25 March 2014

Error in test classe: System.DmlException: Insert failed. First exception on row 0; first error: FIELD_INTEGRITY_EXCEPTION, field integrity exception: PortalType (Account is not enabled for this portal type): [PortalType]

Question

 
I have this scenario:
Account acc = new Account(Name='Partner', Razao_social__c='Partner', CNPJ_CPF__c='98868716000100', Codigo_empresa__c='01')
Database.insert( acc );


Answer






To make a partner portal account, any account is ok. Simply ensure the account's owner has the correct values in the UserRoleId and ProfileId fields.
To make a partner user, any user is ok. Simply ensure the user's profile is a Portal User profile. Then you can specify a value for its ContactId field.

Here's the code that's working for me:

//Create portal account owner
UserRole portalRole = [Select Id From UserRole Where PortalType = 'None' Limit 1];
Profile profile1 = [Select Id from Profile where name = 'System Administrator'];
User portalAccountOwner1 = new User(
 UserRoleId = portalRole.Id,
 ProfileId = profile1.Id,
 Username = System.now().millisecond() + 'test2@test.com',
    Alias = 'batman',
 Email='bruce.wayne@wayneenterprises.com',
 EmailEncodingKey='UTF-8',
 Firstname='Bruce',
 Lastname='Wayne',
 LanguageLocaleKey='en_US',
 LocaleSidKey='en_US',
 TimeZoneSidKey='America/Chicago'
);
Database.insert(portalAccountOwner1);

//Create account
Account portalAccount1 = new Account(
 Name = 'TestAccount',
 OwnerId = portalAccountOwner1.Id
);
Database.insert(portalAccount1);
     
//Create contact
Contact contact1 = new Contact(
    FirstName = 'Test',
     Lastname = 'McTesty',
 AccountId = portalAccount1.Id,
     Email = System.now().millisecond() + 'test@test.com'
);
Database.insert(contact1);
     
//Create user
Profile portalProfile = [SELECT Id FROM Profile WHERE Name LIKE '%Portal User%' Limit 1];
User user1 = new User(
 Username = System.now().millisecond() + 'test12345@test.com',
 ContactId = contact1.Id,
 ProfileId = portalProfile.Id,
 Alias = 'test123',
 Email = 'test12345@test.com',
 EmailEncodingKey = 'UTF-8',
 LastName = 'McTesty',
 CommunityNickname = 'test12345',
 TimeZoneSidKey = 'America/Los_Angeles',
 LocaleSidKey = 'en_US',
 LanguageLocaleKey = 'en_US'
);
Database.insert(user1);


No comments:

Post a Comment