-
ChatterFeed
-
3Best Answers
-
0Likes Received
-
0Likes Given
-
6Questions
-
73Replies
Making a non SFDC required on a visualforce page
<td><apex:inputfield value="{!ClientProfile__c.Primary_Parts_Supplier__c}" required="true" id="PrimaryPartsSupplier" /></td>
It does show as requiered but still allow me to save the page w/o a value.
Once I can get this to work, is there a way to set it so that one of 3 fields need to be completed prirot be being saves?
Thanks
- Steve Gilbert 13
- October 26, 2016
- Like
- 0
- Continue reading or reply
How to update the converted lead ?
I want to update the few fields of converted leads. So can you guys please help me and let me know how can update it.
Thanks in advance
- Mayank.ms
- January 19, 2016
- Like
- 1
- Continue reading or reply
Trigger fails when updating with data loader. List index out of bounds.
Hi,
The trigger below was created to update all records on the Opportunity when Field_1__c on Object__c is updated. The trigger works fine when updates are done on the detail page but fails when updating more than 1value using data loader. I receive the error: List index out of bounds. Any help would be greatly appreciated. Code copied below.
Thank you,
trigger EstimatedUpdateOnOpp on Estimated_Capital_Adder__c (before update)
{
list<Opportunity> listUpdate = new list<Opportunity>();
list<Opportunity> listOppUpdate = new list<Opportunity>();
Integer j = 0;
Integer i = 0;
for(Object__c obj : Trigger.new)
{
if (trigger.new[j].Field_1__c != trigger.old[j].Field_1__c)
{
set<string> setI = new set<string>();
set<Decimal> setM = new set<Decimal>();
set<string> setP = new set<string>();
setI.add(obj.Field_I__c);
setM.add(obj.Field_M__c);
setP.add(obj.Field_P__c);
listOppUpdate = [SELECT id,
Field_I_2__c,
Field_M_2__c,
Field_P_2__c,
Field_E__c,
StageName
FROM Opportunity
WHERE Field_I_2__c IN :setI
AND Field_M_2__c IN :setM
AND Field_P_2__c IN :setP
AND (StageName != 'Won' AND StageName != 'Lost' AND StageName != 'Terminated')
AND Field_Co__c = 'Prod'];
for(Opportunity opp : listOppUpdate)
{
Opportunity Updates = new Opportunity (Id = listOppUpdate[i].Id,
Field_E__c = trigger.new[j].Field_1__c
);
listUpdate.add(Updates);
i++;
} // for(Opportunity opp : listOppUpdate)
update listUpdate;
system.debug('listUpdate: '+listUpdate);
}
j++;
}
}
- N _Rod
- January 28, 2013
- Like
- 0
- Continue reading or reply
Worldpay payment integration in Lightning communities
Hey all,
is there anybody who could post a sample code for a lightning component and controller to integrate with WorldPay's 3ds secure payment gateway if that is possible at all.
I have read all about their API's but it is all based on standard web not Salesforce.
For Salesforce there is an appExchange pack but that requires the commerce cloud , so this is not applicable
The Chargent package is also not applicable as it does not support Wordlpay UK only US
So I wonder , there must be someone out there who did this integration and might like to share some insight ( code sample) please
I have a payment form for the inputs, and works well with the standard https://api.worldpay.com/v1/tokens and orders but this is deemd not to be 3Ds
Any help wuld be appreciated
- Moggy
- February 12, 2021
- Like
- 0
- Continue reading or reply
enable / activate community via apex
HI All,
is there a way to activate a community via apex code.
The requirement is after a sandbox refresh, we run a class which creates all data needed for succesful testing , only bit left is the activation of the community , it would be nice to remove the needed admin step to login and activate the community, as contact, user and account are all there, its just the community is not active
Anyone has anything to share which works?
I know the workaround is to log in and do the setup bit, but i like to remove this administration step
- Moggy
- November 15, 2020
- Like
- 0
- Continue reading or reply
image formula is it empty or not
We all know how to use an image inside a formula field
(IMAGE(URL, Alternate Text, H,W)
In Lightning we can use <img src=..... onError....
My question is prteey simple:
is there any way to figure out (system) not by viewing if the formula is actually displaying an image.
Or differently phrased is there a way to find out if the image url will return nothing and therefoe display the alternate text / show an on error image which might be there or not, hence my question
Sure we use the formula to display images we know about but what if the image is sitting in the cloud and someone deleted it
a formula or img src tag does not do a http callout, so how to find out if its a shown image in that field or not??
- Moggy
- August 14, 2020
- Like
- 0
- Continue reading or reply
pricebook entry currency code does not match opportunity currency code
I have created a map ( found something similar in the net ) where I hold the pricbookentry by isocode
once a currency is chosen in the page , the product slection will be populated
that all works fine and i get only those products shwon which are available at a certain currency but if i then start the convert it throws at 98% the time the above error and if I system.debug i get show that
Lead Currency equals the opportunity currency and also the pricebookentry currency but not the product currency
I also exported the pricebookentry and observed that the ID of the entry is unique against product pricebook and currency but the product id is for all currencies the same that is why i think that it might be an server interanl issue but who knows maybe i just misssed something
Can you have a look if i miss something here
here the piece where i collect all Pricebookentries PBID is [select Id from Pricebook2 where isStandard=true]
private void popPBE(){
PBISO = new Map<Id,Map<String,Map<Id,PriceBookEntry>>>();
List<PriceBookEntry> opal = new List<PriceBookEntry>([SELECT Id, Name,PriceBook2Id, Product2Id, CurrencyIsoCode FROM PriceBookEntry WHERE
PriceBook2Id =: PBID AND IsActive =: True AND IsDeleted =:False]);
for(PriceBookEntry pri: opal)
{
if(!PBISO.containsKey(pri.PriceBook2Id))
{
PBISO.put(pri.PriceBook2Id,new Map<String,Map<Id,PriceBookEntry>>());
}
if(!PBISO.get(pri.PriceBook2Id).containsKey(pri.CurrencyIsoCode))
{
PBISO.get(pri.PriceBook2Id).put(pri.CurrencyIsoCode,new Map<Id,PriceBookEntry>());
}
PBISO.get(pri.PriceBook2Id).get(pri.CurrencyIsoCode).put(pri.Id,pri);
}
}
This seems to be ok as the products are correct populated in the selectOption as below
public void populateProducts() {
products = new List<selectOption>();
products.add(new SelectOption('None',' ',false));
System.Debug('######## PBID=' + PBID + ' ##### ISOC=' + isoc + ' ##### '); // this showed the correct Pricebook ID and the correct CurrencyIsoCode
for(PriceBookEntry x: PBISO.get(PBID).get(isoc).values())
{
products.add(new SelectOption(x.id,x.Name));
}
}
Now when the product gets selected in the page, I do the following (as you can see I tried 2 way, without success)
public PageReference productChanged() {
//List<PriceBookEntry> priceBookList = [SELECT Id,Name, PriceBook2Id, Product2Id, CurrencyIsoCode FROM PriceBookEntry
// WHERE Id =: selectedProduct LIMIT 1];
//OppItemID.PricebookEntryId = priceBookList[0].Id;
OppItemID.PricebookEntryId = selectedProduct;
return null;
}
the currency selection is as follows and alredy needed a nasty trick to get this in the right direction
( I needed to update the lead record wth the selected currency if it was different to the original )
populate the diff currencies
private void popcurrency(){
curre = new List<selectOption>();
curre.add(new SelectOption('none','-NONE-',true));
if(curren == null){
curren = new List<CurrencyType>([SELECT Id, ISOCode FROM CurrencyType WHERE IsActive=:true]);
}
for(CurrencyType x: curren)
{
curre.add(new SelectOption(x.id,x.ISOCode));
}
}
change of the currency via page
public PageReference curreChanged() {
List<CurrencyType> ex = [SELECT ISOCode FROM CurrencyType WHERE Id=: Currencyselected LIMIT 1];
this.Currencyselected = Currencyselected ;
isoc =ex[0].ISOCode;
leadConvert.CurrencyIsoCode=isoc;
opportunityId.CurrencyIsoCode=isoc;
system.debug('iso: ' + isoc);
populateProducts();
return null;
}
this works all fine beside the fact the the final Product is not in the correct currency ???
and strange on this is theat the WHERE Id =: selectedProduct within the productChange()
holds the correct ID of the correct PriceBookEntry record, I am a bit confused why the product then is not
Please help
- Moggy
- August 08, 2014
- Like
- 0
- Continue reading or reply
How to load main page like standard Account and get the embedded VF pages showing loading
Hi , we have a good hierarchy from account which can have multiple childs and these
child can have multiple opportuniies and contracts, and the contracts can also have multiple cases
AS requested I made an over view of that all on the TOP level ( Account) , depending on the data involved
the loading time takes, I have around 6 or 7 VF elements in the Account standard layout.
Is there a way to load the standard page , showing these VF pages "Loading.." and refreshing itself once
the controller is done? either all at once or every single VF element .
It is one controller, no Page references just {!get something} embedded within HTML tables
as sample would be
<apex:page standardController="Account" extensions="relatedListsController"> <apex:form > <apex:pageBlock title="Case's" tabStyle="Account"> <apex:pageBlockSection title="Case's last 30 Days: {!ccc3} record(s) - Open Case's: {!casecount2} - Total {!casecount} record(s) " > <apex:outputPanel id="rowArea" layout="inline"> <table id="conTable" cellspacing="10" style="border:0px !important;border-bottom:2px;"> <thead> <tr> <th>Case Number</th> <th>Consignment Number</th> <th>Type</th> <th>Reason</th> <th>Depot</th> <th>Status</th> <th>Created Date</th> <th>Closing Comments</th> <!-- <th>Region</th> <th>Postcode</th> <th>Address Lookup</th>--> </tr> </thead> <tbody id="clist"> <apex:repeat value="{!mycas3}" var="visicc" id="reptabl"> <tr> <td style="border-top:0px;border-bottom:0px;padding-left:10px;"> <apex:outputLink target="_blank" value="/{!visicc.Id}">{!visicc.CaseNumber}</apex:outputLink> </td> <td style="border-top:0px;border-bottom:0px;"> <apex:outputField value="{!visicc.Tracking_Job_Number__c}" id="tj"/> </td> <td style="border-top:0px;border-bottom:0px;"> <apex:outputField value="{!visicc.Type}" id="ty"/> </td> <td style="border-top:0px;border-bottom:0px;"> <apex:outputField value="{!visicc.Reason}" id="rea"/> </td> <td style="border-top:0px;border-bottom:0px;"> <apex:outputField value="{!visicc.Depot_Number__c}" id="dp"/> </td> <td style="border-top:0px;border-bottom:0px;"> <apex:outputField value="{!visicc.Status}" id="st"/> </td> <td style="border-top:0px;border-bottom:0px;"> <apex:outputField value="{!visicc.CreatedDate}" id="cd"/> </td> <td style="border-top:0px;border-bottom:0px;"> <apex:outputField value="{!visicc.Comments__c}" id="cc"/> </td> </tr> <tr style="background-color:gray;border-top:2px;border-bottom:2px;"> <span>_________________________________________________________</span> </tr> </apex:repeat> </tbody> </table> </apex:outputPanel> </apex:pageBlockSection> </apex:pageBlock> </apex:form> </apex:page>
the Cases are already reduced to 100 records and all varibles used by the controller are transient.
I don't mind the loading time itself , it would be just nice to have the standard page loaded and showing all VF elements that they are loading, so that the user knows something is happen.( on big accounts this controller nearly empties the DB )
so you can imagine that it takes a while but it loads...And yes , it only necessary data is loaded no null no archived records
I would have tried rerender, but tbh , i have no clue how i should get this into it 5 elements look like the above sample and one is a summarizing (below)
<apex:page standardController="Account" extensions="relatedListsController" sidebar="false"> <apex:form > <apex:variable value="{!$CurrentPage.parameters.id}" var="cp"/> <apex:pageBlock title="Customer summary " tabStyle="Account" > <table id="oview" cellspacing="10" style="border:1px !important;border-bottom:2px;"> <tbody> <tr> <td> <span> <b>Status</b> </span><apex:outputText value=" {!sflag}" escape="false"/> </td> <td> <span> <b>Financial Indication</b> </span><apex:outputText value="{!fflag}" escape="false"/> <span> {!FI}</span> </td> </tr> <tr> <td> <span><b>Opportunities: </b>{!oppcount} record(s) - Forecast Annual £ {!OppForAn} - Actual Weekly £ {!OppForWe} </span> </td> <td> <span><b>Trading: </b> {!oppcw} <b>Close Lost: </B>{!oppcl} <b>pot. Value other stage's from today: </B>£{!oppiyv}</span> </td> </tr> <tr> <td> <span><b>Contacts</b> {!pplcount} record(s) </span> </td> <td> <span><b>Master Trading Account(s)</b> {!acccount} record(s)</span> </td> </tr> <tr> <td> <span><b>Activities</b> {!tascount} record(s) <b>Last Week</b> {!tascountlw} record(s)</span><br></br> </td> <td> <span><b>Trading Account(s)</b> {!tacount} record(s) </span><br></br> </td> </tr> <tr> <td> <span><b>Competitor held Products</b>: {!compProsize}</span> </td> <td> <span><b>Case's</b> last 60 Days: {!ccc3} record(s) - Open Case's: {!casecount2} - Total {!casecount} record(s) </span> </td> </tr> </tbody> </table> </apex:pageBlock> </apex:form> </apex:page>
Any idea, help would be nice thanks
- Moggy
- June 11, 2013
- Like
- 0
- Continue reading or reply
System.LimitException: Too many SOQL queries: 101
I have written a trigger to fill some lookup fields depending on a given number
it worked fine until you try to mass update.
here is the trigger
trigger getTradingAccountUPD on Case (before update) { List<Contract> abc = new List<Contract>(); List<Account> mta = new List<Account>(); for(Case oldCase :trigger.old){ if(oldCase.Trading_Account__c == null && oldCase.Master_trading_Account__c == null && oldCase.Customer__c == null){ for(Case nCase :trigger.new){ if(nCase.Legacy_Account_Number__c != null){ nCase.System_Notification__c =''; abc = [SELECT Id,AccountId FROM Contract WHERE Legacy_Account_Number__c =: nCase.Legacy_Account_Number__c LIMIT 1]; if(abc.size()>0){ nCase.Trading_Account__c = abc[0].Id; nCase.Master_Trading_Account__c = abc[0].AccountId; mta = [SELECT ID,ParentId FROM Account WHERE Id =: abc[0].AccountId LIMIT 1]; if(mta[0].Id != null) { nCase.Customer__c = mta[0].ParentId; } } if(abc.size() == 0) { mta = [SELECT Id,ParentId FROM Account WHERE Legacy_Account_Number__c =: nCase.Legacy_Account_Number__c LIMIT 1]; if(mta.size() >0) { nCase.Master_Trading_Account__c = mta[0].Id; if(mta[0].ParentId != null) { nCase.Customer__c = mta[0].ParentId; } } } if((abc.size()==0) && (mta.size()==0)){ nCase.System_Notification__c = '(NOT FOUND IN DATABASE)'; } } } } } }
Okay I saw that the select query is in the loop so i moved my head around and came up with the following
trigger getTradingAccountUPD on Case (before update) { List<Account> cus = new List<Account>(); Set<id> mta = new Set<id>(); Map<id,String> cases = new Map<id,String>(); for(Case oldCase :trigger.old){ if(oldCase.Trading_Account__c == null && oldCase.Master_Trading_Account__c == null && oldCase.Customer__c == null){ for(Case ncase :trigger.New){ cases.put(ncase.Id,ncase.Legacy_Account_Number__c); ncase.System_Notification__c = ''; } } } Set<Contract> ta = new Set<Contract>([SELECT Id,AccountId,Legacy_Account_Number__c FROM Contract WHERE Legacy_Account_Number__c IN : cases.values() Limit 1]); If(!ta.isEmpty()){ for(Case ncase :trigger.New){ if(ncase.Legacy_Account_Number__c != null){ for(Contract lan : ta){ if(ncase.Legacy_Account_Number__c.equals(lan.Legacy_Account_Number__c)){ ncase.Trading_Account__c = lan.id; mta.add(lan.AccountId); } } } } } if(!mta.isEmpty()){ List<Account> acc = new List<Account>([SELECT Id,ParentId FROM Account WHERE Id IN : mta]); for(Case ncase :trigger.New){ ncase.Master_Trading_Account__c = acc[0].Id; if(acc[0].ParentId != null){ ncase.Customer__c = acc[0].ParentId; } } } if(ta.isEmpty() && mta.isEmpty()){ List<Account> amaster = new List<Account>([SELECT Id,ParentId,Legacy_Account_Number__c FROM Account WHERE Legacy_Account_Number__c IN : cases.values()]); if(!amaster.isEmpty()){ for(Case ncase :trigger.New){ ncase.Master_Trading_Account__c = amaster[0].Id; if(amaster[0].ParentId != null){ ncase.Customer__c = amaster[0].ParentId; } } } else if ((amaster.isEmpty()) &&(ta.isEmpty() && mta.isEmpty()) ){ for(Case oldCase :trigger.old){ if(oldCase.Trading_Account__c == null && oldCase.Master_Trading_Account__c == null && oldCase.Customer__c == null){ for(Case ncase :trigger.New){ ncase.System_Notification__c = 'NOT FOUND'; } } } } } }
but now my test class runs into the same System.LimitException: Too many SOQL queries: 101 issue at
Set<Contract> ta = new Set<Contract>([SELECT Id,AccountId,Legacy_Account_Number__c FROM Contract WHERE Legacy_Account_Number__c IN : cases.values() Limit 1]);
Any Idea how can I avoid that issue, because there are regular updates with the data loader
some backgroud
the account number is an external id which will be pulled into the legacy_account_number_ c
this number is pointing to a Contract object ( unique ), depending on that contract I need to pull the
ID of the related Account Object from that Contract and if any the parent account of that account.
I just wonder if there is anything else I could render to avoid the SQL limits
Thanks in advance
my testclass looks like that
@isTest(SeeAllData=true) public class getTradingAccountTest { static testMethod void test_getTradingAccount(){ Test.startTest(); Case cs = new Case(); cs.email__c = 'test.test@gmail.com'; cs.Preferred_Reply_Method__c = 'Letter'; cs.Post_Code__c = '95050'; cs.Phone__c = '408123123'; cs.First_Line_of_Address__c = 'test address'; cs.Tracking_Job_Number__c = '1234567'; cs.Consignment_Number__c = '24242323'; cs.description= 'test'; cs.Account_Number__c = '38J010W'; insert cs; Case ds = new Case(); ds.email__c = 'test.test@gmail.com'; ds.Preferred_Reply_Method__c = 'Letter'; ds.Post_Code__c = '95050'; ds.Phone__c = '408123123'; ds.First_Line_of_Address__c = 'test address'; ds.Tracking_Job_Number__c = '1234567'; ds.Consignment_Number__c = '24242323'; ds.description= 'test'; ds.Account_Number__c = 'test0001'; insert ds; Case es = new Case(); es.email__c = 'test.test@gmail.com'; es.Preferred_Reply_Method__c = 'Letter'; es.Post_Code__c = '95050'; es.Phone__c = '408123123'; es.First_Line_of_Address__c = 'test address'; es.Tracking_Job_Number__c = '1234567'; es.Consignment_Number__c = '24242323'; es.description= 'test'; es.Account_Number__c = 'rolle roe'; insert es; //for code coverage in the controller NewCaseController x = new NewCaseController(); x.trackAccount(cs); x.trackAccount(ds); x.trackAccount(es); //end of code coverage in controller es.Legacy_Account_Number__c = '38J010W'; update es; es.Legacy_Account_Number__c=null; es.Trading_Account__c=null; es.Master_Trading_Account__c=null; es.Customer__c=null; update es; es.Legacy_Account_Number__c='test0001'; update es; es.Legacy_Account_Number__c=null; es.Trading_Account__c=null; es.Master_Trading_Account__c=null; es.Customer__c=null; update es; es.Legacy_Account_Number__c='nope'; update es; Test.stopTest(); } }
- Moggy
- March 27, 2013
- Like
- 0
- Continue reading or reply
Worldpay payment integration in Lightning communities
Hey all,
is there anybody who could post a sample code for a lightning component and controller to integrate with WorldPay's 3ds secure payment gateway if that is possible at all.
I have read all about their API's but it is all based on standard web not Salesforce.
For Salesforce there is an appExchange pack but that requires the commerce cloud , so this is not applicable
The Chargent package is also not applicable as it does not support Wordlpay UK only US
So I wonder , there must be someone out there who did this integration and might like to share some insight ( code sample) please
I have a payment form for the inputs, and works well with the standard https://api.worldpay.com/v1/tokens and orders but this is deemd not to be 3Ds
Any help wuld be appreciated
- Moggy
- February 12, 2021
- Like
- 0
- Continue reading or reply
Error while creating a chatter post using Process Builder
As I understand, Process Builder runs under the system mode and if the running user doesn't have permission, the user still able to perform the operation due to system mode. I tried to create a chatter post on a case object using Process Builder, by running as a user who has implicit permission on the case. When I looked at the log, it still runs under the user mode (I can see as Current User) and got the following error while creating a chatter post
Error Occurred: You don't have permission to do this.
________________________________________
________________________________________
Salesforce Error ID: 157378386-59592 (1177104658)
Thanks,
- Kumar_Shah
- November 14, 2020
- Like
- 0
- Continue reading or reply
Invalid type?
My lookup field is to contact (which is filtered).
- Faizan Ali 17
- November 12, 2020
- Like
- 0
- Continue reading or reply
image formula is it empty or not
We all know how to use an image inside a formula field
(IMAGE(URL, Alternate Text, H,W)
In Lightning we can use <img src=..... onError....
My question is prteey simple:
is there any way to figure out (system) not by viewing if the formula is actually displaying an image.
Or differently phrased is there a way to find out if the image url will return nothing and therefoe display the alternate text / show an on error image which might be there or not, hence my question
Sure we use the formula to display images we know about but what if the image is sitting in the cloud and someone deleted it
a formula or img src tag does not do a http callout, so how to find out if its a shown image in that field or not??
- Moggy
- August 14, 2020
- Like
- 0
- Continue reading or reply
How to we can populate the based on select picklist value from one picklist to another picklist in visualforce page
i have two Picklist .Two pick list are TO and casereason.
whenever user a selected a vlaue with (Com Apg )from To Picklist then (PO Bokeed) with value dispaly in Casereason picklist .
How to we can achive in visualforce page.below i have attached my screen shat
Thanks,
VIswa.
- viswanadham A
- October 27, 2016
- Like
- 0
- Continue reading or reply
Lead conversion error due to managed package
'Error: System.DmlException: Insert failed. First exception on row 0; first error: FIELD_INTEGRITY_EXCEPTION, null: [] Class.leadconvert.BulkLeadConvert.handleRegularContactInserts: line 326, column 1 '
Any help is much appreciated.
Best,
Julian
- Julian Harris
- October 26, 2016
- Like
- 0
- Continue reading or reply
Check/Unchk chk box on Parent Object
I am trying to check the chkbox on oppty if their are atleast one child record (Lookup relationship to custom object) , If all records attached to Oppty are deleted, this box should be unchecked.
Any suggestions?
- SAHG-SFDC
- October 26, 2016
- Like
- 0
- Continue reading or reply
Making a non SFDC required on a visualforce page
<td><apex:inputfield value="{!ClientProfile__c.Primary_Parts_Supplier__c}" required="true" id="PrimaryPartsSupplier" /></td>
It does show as requiered but still allow me to save the page w/o a value.
Once I can get this to work, is there a way to set it so that one of 3 fields need to be completed prirot be being saves?
Thanks
- Steve Gilbert 13
- October 26, 2016
- Like
- 0
- Continue reading or reply
Allow an email from one case in queue A to create another case in another queue B
I want people who work in queue A to be able to send n email from a case in queue A and therefore generate a new case in queue B. We have the email thread on our templates and email subject at the moment and that prevents this from happening.
It will be great if anyone can help.
- Bamnan Dikwal 9
- October 26, 2016
- Like
- 0
- Continue reading or reply
Test Class help for my apex code
public static void CreaEventoCorrispondente() {
if (trigger.isInsert) {
Map<Integer, Event> EventstoUpsert1 = new Map<Integer, Event> ();
Map<Integer, Event> EventstoUpsert2 = new Map<Integer, Event> ();
List<Schema.PicklistEntry> ple = Edizione__c.Lead_Tutor__c.getDescribe().getPicklistValues();
List<String> cognomiTutor = new List<String> ();
for (Schema.PicklistEntry p : ple) {
cognomiTutor.add(p.getLabel());
}
Map<String, Id> CognomiIds = new Map<String, Id> ();
for (User u :[SELECT Id, LastName FROM User WHERE LastName IN :cognomiTutor]) {
CognomiIds.put(u.LastName, u.Id);
}
integer pos = 0;
for (Edizione__c e : (List<Edizione__c>) trigger.new) {
if (e.Lead_Tutor__c != NULL && CognomiIds.keySet().contains(e.Lead_Tutor__c)) {
Event newEvent1 = new Event(isAllDayEvent = TRUE, Location=e.Sede__c, Subject = e.Name, StartDateTime = (DateTime.newInstance(e.Data_inizio__c , (DateTime.newInstance(e.Data_inizio__c, Time.newInstance(0,0,0,0))).timeGMT())), EndDateTime = (DateTime.newInstance(e.Data_fine__c, (DateTime.newInstance(e.Data_fine__c, Time.newInstance(0,0,0,0))).timeGMT())), OwnerId = CognomiIds.get(e.Lead_Tutor__c));
EventstoUpsert1.put(pos, newEvent1);
}
if (e.Lead_Tutor__c != NULL && CognomiIds.keySet().contains(e.Second_Tutor__c)) {
Event newEvent2 = new Event(isAllDayEvent = TRUE, Location=e.Sede__c, Subject = e.Name, StartDateTime = (DateTime.newInstance(e.Data_inizio__c, (DateTime.newInstance(e.Data_inizio__c, Time.newInstance(0,0,0,0))).timeGMT())), EndDateTime = (DateTime.newInstance(e.Data_fine__c, (DateTime.newInstance(e.Data_fine__c, Time.newInstance(0,0,0,0))).timeGMT())), OwnerId = CognomiIds.get(e.Second_Tutor__c));
EventstoUpsert2.put(pos, newEvent2);
}
pos++;
}
if (!EventstoUpsert1.isEmpty()) {
insert EventstoUpsert1.values();
for (Integer i : EventstoUpsert1.keySet()) {
Edizione__c ed = ((Edizione__c) trigger.new[i]);
ed.IdEventoLeadTutor__c = EventstoUpsert1.get(i).Id;
}
}
if (!EventstoUpsert2.isEmpty()) {
insert EventstoUpsert2.values();
for (Integer i : EventstoUpsert2.keySet()) {
Edizione__c ed = ((Edizione__c) trigger.new[i]);
ed.IdEventoSecondTutor__c = EventstoUpsert2.get(i).Id;
}
}
} else if (trigger.isUpdate) {
Map<Id, Event> EventstoUpsert1 = new Map<Id, Event> ();
Map<Id, Event> EventstoUpsert2 = new Map<Id, Event> ();
List<Schema.PicklistEntry> ple = Edizione__c.Lead_Tutor__c.getDescribe().getPicklistValues();
List<String> cognomiTutor = new List<String> ();
List<Id> EventstoDelete = new List<Id>();
for (Schema.PicklistEntry p : ple) {
cognomiTutor.add(p.getLabel());
}
Map<String, Id> CognomiIds = new Map<String, Id> ();
for (User u :[SELECT Id, LastName FROM User WHERE LastName IN :cognomiTutor]) {
CognomiIds.put(u.LastName, u.Id);
}
for (Edizione__c e : (List<Edizione__c>) trigger.new) {
if (e.Lead_Tutor__c != ((Edizione__c) trigger.oldMap.get(e.Id)).Lead_Tutor__c) {
if (((Edizione__c) trigger.oldMap.get(e.Id)).Lead_Tutor__c == NULL){
Event ev = new Event();
ev = new Event(isAllDayEvent = TRUE, Subject = e.Name, Location=e.Sede__c, StartDateTime = (DateTime.newInstance(e.Data_inizio__c, (DateTime.newInstance(e.Data_inizio__c, Time.newInstance(0,0,0,0))).timeGMT())), EndDateTime = (DateTime.newInstance(e.Data_fine__c, (DateTime.newInstance(e.Data_fine__c, Time.newInstance(0,0,0,0))).timeGMT())), OwnerId = CognomiIds.get(e.Lead_Tutor__c));
EventstoUpsert1.put(e.Id, ev);
} else if (e.Lead_tutor__c == NULL) {
EventstoDelete.add(e.IdEventoLeadTutor__c);
e.IdEventoLeadTutor__c = NULL;
} else {
if (((Edizione__c) trigger.oldMap.get(e.Id)).IdEventoLeadTutor__c != NULL) {
EventstoUpsert1.put(e.Id, new Event(Id = ((Edizione__c) trigger.oldMap.get(e.Id)).IdEventoLeadTutor__c, OwnerId = CognomiIds.get(e.Lead_Tutor__c)));
}
}
}
if (e.Second_Tutor__c != ((Edizione__c) trigger.oldMap.get(e.Id)).Second_Tutor__c) {
if (((Edizione__c) trigger.oldMap.get(e.Id)).Second_Tutor__c == NULL){
Event ev = new Event();
ev = new Event(isAllDayEvent = TRUE, Subject = e.Name, Location=e.Sede__c, StartDateTime = (DateTime.newInstance(e.Data_inizio__c, (DateTime.newInstance(e.Data_inizio__c, Time.newInstance(0,0,0,0))).timeGMT())), EndDateTime = (DateTime.newInstance(e.Data_fine__c, (DateTime.newInstance(e.Data_fine__c, Time.newInstance(0,0,0,0))).timeGMT())), OwnerId = CognomiIds.get(e.Second_Tutor__c));
EventstoUpsert2.put(e.Id, ev);
} else if (e.Second_tutor__c == NULL) {
EventstoDelete.add(e.IdEventoSecondTutor__c);
e.IdEventoSecondTutor__c = NULL;
} else {
if (((Edizione__c) trigger.oldMap.get(e.Id)).IdEventoSecondTutor__c != NULL) {
EventstoUpsert2.put(e.Id, new Event(Id = ((Edizione__c) trigger.oldMap.get(e.Id)).IdEventoSecondTutor__c, OwnerId = CognomiIds.get(e.Second_Tutor__c)));
}
}
}
}
if (!EventstoUpsert1.isEmpty()) {
upsert EventstoUpsert1.values();
for (Id i : EventstoUpsert1.keySet()) {
Edizione__c ed = ((Edizione__c) trigger.newMap.get(i));
ed.IdEventoSecondTutor__c = EventstoUpsert1.get(i).Id;
}
}
if (!EventstoUpsert2.isEmpty()) {
upsert EventstoUpsert2.values();
for (Id i : EventstoUpsert2.keySet()) {
Edizione__c ed = ((Edizione__c) trigger.newMap.get(i));
ed.IdEventoSecondTutor__c = EventstoUpsert2.get(i).Id;
}
}
if (!EventstoDelete.isEmpty()){
List<Event> ETDL = new List<Event>();
for (Id i : EventstoDelete){
ETDL.add(new Event(Id = i));
}
delete ETDL;
}
}
}
This class retrive an apex trigger :
trigger Trigger_Edizione on Edizione__c (before update, before insert, after update, before delete) {
if (trigger.isBefore){
if (!trigger.isDelete){
EdizioneHelper.CreaEventoCorrispondente();
} else {
EdizioneHelper.CancellaEventoCorrispondente();
}
}
The test class that I have writed is :
static testMethod void TestCreaEventoCorrispondente() {
Map<Integer, Event> Events1 = new Map<Integer, Event> ();
Map<Integer, Event> Events2 = new Map<Integer, Event> ();
List <Schema.PicklistEntry> l_picklist = new List <Schema.PicklistEntry>();
List <Id>l_Ids= new List <Id>();
Map<String,Id> S_Ids = new Map <String,Id> ();
List <Edizione__c> l_ed= new List <Edizione__c>();
Edizione__c edizione = new Edizione__c(Data_inizio__c=date.valueof('2016-09-07'),Data_fine__c=date.valueof('2016-09-07'),motivo_stato__c='edizione confermata', Codice_piattaforma__c='edizione',Sede__c='Milano',Name='ciccio',Data_Invio_al_Sito__c=date.valueof('2016-09-15'),Lead_Tutor__c='Colonna');
insert edizione;
l_ed.add(edizione);
List <Event> l_ev = new List <Event>();
Event ev = new Event (Location=edizione.Sede__c,Subject=edizione.name, IsAllDayEvent=false, StartDateTime = datetime.newInstance(2014, 11, 13, 16, 30, 0), EndDateTime = datetime.newInstance(2014, 11, 13, 18, 30, 0));
l_ev.add(ev);
insert ev;
User us = new User (Username='d.pippo@bridgepartners.it.dev',LastName='Pugliese',FirstName='Domenico', Email='d.pugliese@bridgepartners.it', Alias='dpugl', CommunityNickname='d.pippo', TimeZoneSidKey='Europe/Rome', LocaleSidKey='it_IT', EmailEncodingKey='ISO-8859-1', ProfileId='00e58000000ZU0WAAW', LanguageLocaleKey='it');
insert us;
update us;
EdizioneHelper.CreaEventoCorrispondente();
update ev;
EdizioneHelper.CreaEventoCorrispondente();
delete ev;
EdizioneHelper.CreaEventoCorrispondente();
delete l_ev;
EdizioneHelper.CreaEventoCorrispondente();
ev.IsAllDayEvent=true;
update ev;
EdizioneHelper.CreaEventoCorrispondente();
edizione.Second_Tutor__c='Fioretti';
update edizione;
EdizioneHelper.CreaEventoCorrispondente();
}
The result of run test is :
System.NullPointerException: Attempt to de-reference a null object, when I write in the test class
EdizioneHelper.CreaEventoCorrispondente();
and when I write if (trigger.isInsert) in the apex class
- Anna Antonella Adiletta 1
- October 26, 2016
- Like
- 0
- Continue reading or reply
Test Class Help For My Trigger
Can anyone help me with a test class for the below trigger?
trigger defaultEntitlement on Case (Before Insert, Before Update) {
/*
If the Entitlement Name is not set then, check to see if the Contact on the Case has an active Entitlement
and select the first one. If not then check to see if the Account on the Case has an active Entitlement.
*/
List<Id> contactIds = new List<Id>();
List<Id> acctIds = new List<Id>();
for (Case c: Trigger.new){
if (c.EntitlementId == null && c.ContactId!= null && c.AccountId!= null){
contactIds.add(c.ContactId);
acctIds.add(c.AccountId);
}
}
if(contactIds.isEmpty()==false || acctIds.isEmpty()==false){
/* Added check for active entitlement */
List <EntitlementContact> entlContacts = [Select e.EntitlementId,e.ContactId,e.Entitlement.AssetId From EntitlementContact e
Where e.ContactId in:contactIds
And e.Entitlement.EndDate >= Today And e.Entitlement.StartDate <= Today];
if(entlContacts.isEmpty()==false){
for(Case c: Trigger.new){
if(c.EntitlementId == null && c.ContactId!= null){
for(EntitlementContact ec:entlContacts){
if(ec.ContactId==c.ContactId){
c.EntitlementId = ec.EntitlementId;
if(c.AssetId==null && ec.Entitlement.AssetId!=null)
c.AssetId=ec.Entitlement.AssetId;
break;
}
} // end for
}
} // end for
} else{
List <Entitlement> entls = [Select e.StartDate, e.Id, e.EndDate, e.AccountId, e.AssetId
From Entitlement e
Where e.AccountId in:acctIds And e.EndDate >= Today And e.StartDate <= Today];
if(entls.isEmpty()==false){
for(Case c: Trigger.new){
if(c.EntitlementId == null && c.AccountId!= null){
for(Entitlement e:entls){
if(e.AccountId==c.AccountId){
c.EntitlementId = e.Id;
if(c.AssetId==null && e.AssetId!=null)
c.AssetId=e.AssetId;
break;
}
} // end for
}
} // end for
}
}
} // end if(contactIds.isEmpty()==false)
}
- NevDev
- October 26, 2016
- Like
- 0
- Continue reading or reply
How to give our own LastModifiedaDate for records while insetring?
How can we give our own custom LastModifiedaDate to records while inserting in test classes.
We have class which has a query
if (jobType == PROCESS_DEL_VIOC_FRANCHISE_RECORDS) { query = Database.getQueryLocator([SELECT Id FROM Lead where RecordType.Name=:RecordTypeUtil.VIOC_Franchise_Web_lead and LastModifiedDate < LAST_N_YEARS:3]); }
While writing test class for this class, we are trying to create some test data. To meet above condition we have to give LastModifiedDate which must be 3 years old. How can we write a test class in this situations.
Any help is really appreciated.
Thanks,
Naveen.
- naveen reddy 19
- October 26, 2016
- Like
- 0
- Continue reading or reply
Getting visualforce page error as List has no rows for assignment to SObject An unexpected error has occurred.
Here is my page controller.
Controller-
public class MyFirstController {
private final Account account;
public MyFirstController () {
account = [SELECT Id, Name, Site FROM Account
WHERE Id = :ApexPages.currentPage().getParameters().get('id')];
}
public Account getAccount() {
return account;
}
public PageReference save() {
update account;
return null;
}
}
- samruddhi pode
- October 26, 2016
- Like
- 0
- Continue reading or reply
How to update the converted lead ?
I want to update the few fields of converted leads. So can you guys please help me and let me know how can update it.
Thanks in advance
- Mayank.ms
- January 19, 2016
- Like
- 1
- Continue reading or reply
You can't assign or unassign this permission set because it's associated with a profile.
I was previously able to delete PermissionSetAssignment through the REST API. Now I am getting:
You can't assign or unassign this permission set because it's associated with a profile.
I would think that I was doing exactly that - deleting the assignment to dissociate the profile from the PermissionSet. Any pointers?
thanks
yan at crowdcast dot com
- Crowdcast
- June 22, 2012
- Like
- 0
- Continue reading or reply
Simulate Cybersource Hosted Order Page in Apex
Hi All,
I have requirement where I have to implement Cybersource payment gateway in Salesforce.com. I am trying to use Cybersource Hosted Order Page approach to implement this functionality.
Cybersource has provided me some sample JSP pages which I can use in any java based web application and implement the payment gateway within that application and I am able to do that.
Now I have to simulate the same functionality in Salesforce.com using Visualforce and Apex. I am able to simulate most of the code in Apex but got stuck while simulating Message Authentication code and secret key. Below is the code written in java which I need to simulate in Apex.
public String getPublicDigest(String customValues) throws Exception{ String pub = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2L8taoXQvBV5xddZp58JE2i3rQauaBe1U1lEQCIYNYlIQSt4J6++F6NBgmCx1vnSCX2s4O0FI3S5b/No7QTfKkO19ofJVYBB6hdlcPStHsnYLV9mDmHuFfiR8Ebk3dUWYVCQX+eyZj99WQmYiTPIEZSAuB54jTMRQwyAE5GsVwIDAQAB"; BASE64Encoder encoder = new BASE64Encoder(); Mac sha1Mac = Mac.getInstance("HmacSHA1"); SecretKeySpec publicKeySpec = new SecretKeySpec(pub.getBytes(), "HmacSHA1"); sha1Mac.init(publicKeySpec); byte[] publicBytes = sha1Mac.doFinal(customValues.getBytes()); String publicDigest = encoder.encodeBuffer(publicBytes); return publicDigest.replaceAll("\n", ""); }
Here is the code which I simulated in Apex but the key generated is still invalid.
public String getPublicDigest(String customValues){ String secretKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2L8taoXQvBV5xddZp58JE2i3rQauaBe1U1lEQCIYNYlIQSt4J6++F6NBgmCx1vnSCX2s4O0FI3S5b/No7QTfKkO19ofJVYBB6hdlcPStHsnYLV9mDmHuFfiR8Ebk3dUWYVCQX+eyZj99WQmYiTPIEZSAuB54jTMRQwyAE5GsVwIDAQAB'; //Blob blobDigest = Crypto.generateDigest('hmacSHA1', Blob.valueOf(pub)); Blob sha1Mac = Crypto.generateMac('hmacSHA1', Blob.valueOf(customValues), EncodingUtil.base64Decode(secretKey)); String publicDigest = Encodingutil.convertToHex(sha1Mac); return publicDigest; }
Any help is appreciated.
- ajitverma
- April 28, 2011
- Like
- 0
- Continue reading or reply
How to log in via VB6
I was told that when I signed up as a developer, I would have access to a demo database.
I was told that I would use my logon user name and password to logon to Sales Force.
I copied the VB code from the PDF and appears to work, but I am getting an error:
"Invalid username, password, security token; or user locked out."
I assume the User name and/or password is not the correct one to use.
I did use WireShark to confirm Internet traffic was occuring when trying to login.
Any help would be appreciated,
Ira
- Ira
- January 18, 2010
- Like
- 0
- Continue reading or reply