You need to sign in to do that
Don't have an account?
Dhairya
Trigger which Create New account from Case
Hi,
The scenario is :
(1) Case contains few custom field, and if that field value is not present as an account name then create account using that name.
They do not want to go with lookup idea. They want trigger.
The Code i tried to write is :
trigger EndUserAccountTrigger on Case (after insert) {
list<account> accname = [select name from account where type='End User'];
list<account> tempaccname = new list<account>();
for(case c: trigger.new)
{
for(account acc: accname)
{
if(acc.name != c.system__c)
{
tempaccname.add(new account(name=c.System__c));
}
}
}
database.insert(tempaccname);
}
But it throw an error.
Appreciate your response.
Thanks,
Dhairya
All Answers
Hi,
If i am not wrong in understanding your scenario, try the folowing trigger
Account_Name__c is a custom field based on which we are going to create an account
trigger newAccountfromCase on Case (after insert) {
Case c = [select Account_Name__c from Case where id = :Trigger.New];
if(c.Account_Name__c!=NULL){
Account acc = new Account();
acc.Name=c.Account_Name__c;
insert acc;
}
}
Correct me if i am wrong.....................
Hi Sravu,
Thanks for reply but at the same time i want to check whether that account name is already present or not? If not then create new one otherwise that fine.
Make the following changes and try if this helps you to meet your requirement.
trigger newAccountfromCase on Case (after insert) {
public Id aId;
public String aName;
List<Case> c = [select AccountId,Account_Name__c from Case where id = :Trigger.New];
for(Case ac : c){
aId=ac.AccountId;
aName=ac.Account_Name__c;
}
Account acc = [select Name from Account where Name=:aName];
if(aName!=acc.Name){
Account a = new Account();
a.Name=aName;
insert a;
}
}
Let me know if you face any difficulty..........
Hi, I modified the code with my custom field system__c : (1) Its not creating duplicate account and saved case succesfully (2) But following error throw when tried to save a case. Apex trigger EndUserAccountTrigger caused an unexpected exception, contact your administrator: EndUserAccountTrigger: execution of AfterInsert caused by: System.QueryException: List has no rows for assignment to SObject: Trigger.EndUserAccountTrigger: line 12, column 15 .
trigger EndUserAccountTrigger on Case (after insert) { public Id aId; public String aName; List c = [select AccountId,System__c from Case where id = :Trigger.New]; for(Case ac : c){ aId=ac.AccountId; aName=ac.system__c; } Account acc = [select Name from Account where Name=:aName]; if(aName!=acc.Name){ Account a = new Account(); a.Name=aName; insert a; } }
The problem here is when the account name field is null it is giving an exception:
Add the following if condition in your code
trigger newAccountfromCase on Case (after insert) {
public Id aId;
public String aName;
List<Case> c = [select AccountId,Account_Name__c from Case where id = :Trigger.New];
for(Case ac : c){
aId=ac.AccountId;
aName=ac.Account_Name__c;
}
if(aName!=NULL){
Account acc = [select Name from Account where Name=:aName];
if(aName!=acc.Name){
Account a = new Account();
a.Name=aName;
insert a;
}
}
}
Hope this helps you..............
Thanks for help.
Solution figured it out.