You need to sign in to do that
Don't have an account?
New Formula Checkist Field Validates to True (with two non related objects)
I've tried this declaratively and it did not work so I'm hoping someone can help me do this through VisualForce or Appx. Please keep in mind that I'm not familiar with the developer coding so any samples you could provide for me to try out would be great.
My_Account__c : (API name) is a custom checkbox field that I'm trying to set to true based on certain conditions described below. This field is under the standard Account object.
To determine whether My_Account__c field is true, we want ot look at the field values specified below residing within two objects that are NOT related objects:
Standard Object 1: Account
Field 1: Billing Country (standard text type field, part of the address component)
Custom Object 2: Territory_Ownerships__c (API name)
Field 1: Name (API name and it's text type) but I've relabeled the name of the custom field to Owner SourceCountry (the label name)
Field 2: Opportunity_Owner_Sanctuary_Director__c (API name and it's a lookup type)
My_Account__c should equal true when
Account's Billing Country value is the same as ( Name field value in Territory_Ownerships__c object AND Opportunity_Owner_Sanctuary_Director__c in Territory object is the same as the name of the Salesforce user currently logged in) All else, the checkbox field should be false.
For example, my name is Andrea Sloan and I'm looking at a record in the Account's object whch has France listed as the billincountry name.
The territory record table shows that there's a record where the Name field contains France as a value and for that record the Opportunity Owner Sanctuary Director field has Andrea Sloan listed as a value. When I log in, if I run a report with MyAccount checkbox field as a filter value to true, I should be able to see the given account record that had shown France as the billing country.
Note:
This checkbox field, should refresh for each user login. When I tried this declaratively, once the field was checked, it remained checked under a user who should have had theirs checked off. In other words, if your name is not listed as the owner for France as per my example then that field should not be checked.
Also, this verification should take into effect anytime an account record is created but also anytime any of the fields in question that I mentioned above from either of the objects are edited. Therefore, the account may move and no longer be in France and Andrea's name may no longer belong to France in the Territories object.
Any help someone could provide hopefully with the syntaxed code would be great! Thank you in advance!
My_Account__c : (API name) is a custom checkbox field that I'm trying to set to true based on certain conditions described below. This field is under the standard Account object.
To determine whether My_Account__c field is true, we want ot look at the field values specified below residing within two objects that are NOT related objects:
Standard Object 1: Account
Field 1: Billing Country (standard text type field, part of the address component)
Custom Object 2: Territory_Ownerships__c (API name)
Field 1: Name (API name and it's text type) but I've relabeled the name of the custom field to Owner SourceCountry (the label name)
Field 2: Opportunity_Owner_Sanctuary_Director__c (API name and it's a lookup type)
My_Account__c should equal true when
Account's Billing Country value is the same as ( Name field value in Territory_Ownerships__c object AND Opportunity_Owner_Sanctuary_Director__c in Territory object is the same as the name of the Salesforce user currently logged in) All else, the checkbox field should be false.
For example, my name is Andrea Sloan and I'm looking at a record in the Account's object whch has France listed as the billincountry name.
The territory record table shows that there's a record where the Name field contains France as a value and for that record the Opportunity Owner Sanctuary Director field has Andrea Sloan listed as a value. When I log in, if I run a report with MyAccount checkbox field as a filter value to true, I should be able to see the given account record that had shown France as the billing country.
Note:
This checkbox field, should refresh for each user login. When I tried this declaratively, once the field was checked, it remained checked under a user who should have had theirs checked off. In other words, if your name is not listed as the owner for France as per my example then that field should not be checked.
Also, this verification should take into effect anytime an account record is created but also anytime any of the fields in question that I mentioned above from either of the objects are edited. Therefore, the account may move and no longer be in France and Andrea's name may no longer belong to France in the Territories object.
Any help someone could provide hopefully with the syntaxed code would be great! Thank you in advance!
Use following Trigger code
trigger AccountTrigger on Account (before insert) {
Set<String> accountBillingCity = new Set<String>();
for(Account act:trigger.new){
if(act.billingCity != null){
String billCity = act.billingCity;
accountBillingCity.add(billCity.toUpperCase());
}
}
if(!accountBillingCity.isEmpty()){
set<String> cityExistForUser = new set<String>();
for(Territory_Ownerships__c trOwnership:[Select name from
Territory_Ownerships__c where Opportunity_Owner_Sanctuary_Director__c =:UserInfo.getUserId()
and name in:accountBillingCity ]){
String billCity = trOwnership.name;
cityExistForUser.add(billCity.toUpperCase());
}
if(!cityExistForUser.isEmpty()){
for(Account act:trigger.new){
String billCity = act.billingCity;
if(act.billingCity != null && cityExistForUser.contains(billCity) ){
act.My_Account__c = true;
}
}
}
}
}
And
trigger Territory_OwnershipsTrigger on Territory_Ownerships__c (after insert, after undelete, after update, before delete) {
if(trigger.isAfter){
if(trigger.isInsert){
map<String,Id> accountCityName = new map<String,id>();
for(LightAppDev__Territory_Ownerships__c tOwnerShip:trigger.new){
if(tOnwerShip.Territory_Ownerships__c != null
&& tOwnerShip.Territory_Ownerships__c == UserInfo.getUserId()){
accountCityName.put(tOwnerShip.name);
}
}
if(!accountCityName.isEmpty()){
list<Account> updateMyAccounts = new list<Account>();
for(Account act:[Select id,My_Account__c from Account where billingCity in:accountCityName]){
act.My_Account__c = true;
updateMyAccounts.add(act);
}
if(!updateMyAccounts.isEmpty()){
update updateMyAccounts;
}
}
}
// Write Same for Update and delete and undelete
}
}
Thank you for your help . Not knowing much of proper development code aside from cut and paste and try and copy one code to a similar scenario, I'm a bit confused here:
1. Shouldn't "accountBillingCity" it be accountBillingCountry based on the field I've specified?
2. What does this mean? cityExistForUser.add(billCity.toUpperCase()); What are we putting in upper case and why are we doing this? 3. Your comment says "// Write Same for Update and delete and undelete " I'm not sure what you mean by this. What is it that you wrote? How do I write it differently? Am I opening up a new ApexClass to do so? Or a new Apex Trigger? or is it part of the same Trigger?
4. Where do I put the code that you've given me? Is it under Devloper- Apex Classes or Developer - Apex Trigger?
5. Do I need to create a VisualForce page and call this trigger from it?
Would you have a Skype contact so we could call you if you're okay with this? It may be easier to clear up some of my questions.