• klr650
  • NEWBIE
  • 0 Points
  • Member since 2011

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 1
    Replies

Hello

 

i am trying to get the Webform to work properly for me.  When I use the FriendlyURl class I get the Page Not Found: page when I submit the form. When I remove. I get Insufficient Privileges when I submit. Form works fine in the Console.

  • August 24, 2012
  • Like
  • 0
Need some help with trigger to write to a custom object when submitted and then once work flow approved update the custom object with approved status. 

I was thinking of changing the following

**********//pick up the Quotes which has just approved.
    for(Integer i=0; i<trigger.new.size();i++){
        if(trigger.new[i].Special_Pricing_Approved__c == true && trigger.old[i].Special_Pricing_Approved__c != true){
            quotes.add(trigger.new[i]);     
        }
    }


with

*********   //pick up the Quotes which has just approved.
    for(Integer i=0; i<trigger.new.size();i++){
        if(trigger.new[i].Special_Pricing_Status__c == 'Submitted' && trigger.old[i].Special_Pricing_Status__c != 'Submitted'){
            quotes.add(trigger.new[i]);     
        }
    }*************


Currently it is set to write when approved is True then it writes to object. I want to write when submitted then update the object status field when approved with Approved.

trigger TrgSpecialPricingApproval on Quote (after update) {
    List<Quote> quotes = new List<Quote>();
    List<Quote> tempQuotes = new List<Quote>();
    List<Approved_Special_Pricing__c> aspList = new List<Approved_Special_Pricing__c>();
    List<Id> oppIds = new List<Id>();
    List<Id> quoteIds = new List<Id>();
    List<Id> PricebookEntryIds = new List<Id>();
    Map<Id,Opportunity> tempMap1 = new Map<Id,Opportunity>();
    Map<Id,List<QuoteLineItem>> tempMap2 = new Map<Id,List<QuoteLineItem>>();
    Map<Id,Id> tempMap3 = new Map<Id,Id>();
    List<Special_Pricing_Line_Item__c> spliList = new List<Special_Pricing_Line_Item__c>();
    List<PricebookEntry> peList = new List<PricebookEntry>();
    
    //pick up the Quotes which has just approved.
    for(Integer i=0; i<trigger.new.size();i++){
        if(trigger.new[i].Special_Pricing_Approved__c == true && trigger.old[i].Special_Pricing_Approved__c != true){
            quotes.add(trigger.new[i]);     
        }
    }
    
    if(quotes.size() != 0){
        for(Quote quote: quotes){
            oppIds.add(quote.OpportunityId);
            quoteIds.add(quote.id);
        }
        List<Opportunity> oppList = [select Id,AccountId,Sales_Region__c  from Opportunity where id = :oppIds]; 
        for(Opportunity opp:oppList){
            tempMap1.put(opp.id,opp);
        }
        
        List<QuoteLineItem> qli = [Select q.UnitPrice, q.ListPrice, q.LineNumber, q.PricebookEntryId, q.Id, q.Discount_Percent__c, q.CurrencyIsoCode, q.QuoteId From QuoteLineItem q where q.QuoteId = :quoteIds];
        
        if(qli.size() != 0){
            for(QuoteLineItem q: qli){
                List<QuoteLineItem> temp = new List<QuoteLineItem>();
                if(tempMap2.get(q.QuoteId) != null){
                    temp = tempMap2.get(q.QuoteId);
                    temp.add(q);        
                    tempMap2.put(q.QuoteId, temp);
                }else{
                    temp.add(q);
                    tempMap2.put(q.QuoteId, temp);
                }
                PricebookEntryIds.add(q.PricebookEntryId);
            }
            
            if(PricebookEntryIds.size() != 0){
            peList = [Select p.Product2Id, p.Id From PricebookEntry p where p.Id = :PricebookEntryIds];
            }
            
            for(PricebookEntry pe: peList){
                tempMap3.put(pe.Id,pe.Product2Id);
            }
        }
            
        //create new Account special pricing boject from Quote.
        for(Quote quote: quotes){
            Approved_Special_Pricing__c asp = new Approved_Special_Pricing__c();
            asp.End_User_Account__c = (tempMap1.get(quote.OpportunityId)).AccountId;
            asp.Active__c = true;
            asp.Partner_Account__c = quote.Partner_Account__c;
            asp.Competitor_Account__c = quote.Competitor_Account__c;
            asp.Reseller_Account__c = quote.Reseller_Account__c;
            asp.Special_Pricing_Expiration_Date__c = quote.Special_Pricing_Expiration_Date__c;
            asp.Printronix_Territory__c = (tempMap1.get(quote.OpportunityId)).Sales_Region__c;
            asp.Name = quote.Special_Pricing_Name__c;       
            asp.Special_Pricing_Status__c = 'Approved';  
            asp.Trade_In_or_Buy_Back__c = quote.Trade_In_or_Buy_Back__c;
            asp.Special_Pricing_Background__c = quote.Special_Pricing_Background__c;
            asp.Special_Configuration_Required__c = quote.Special_Configuration_Required__c;
            asp.Competitor_Price__c = quote.Competitor_Price__c;
            asp.Competitor_Product__c = quote.Competitor_Product__c;   
            aspList.add(asp);       
        }
        insert aspList;
        
        for(Quote quote: quotes){
            for(Approved_Special_Pricing__c asp: aspList){
                if(asp.End_User_Account__c == (tempMap1.get(quote.OpportunityId)).AccountId){
                    
                    //write Special Pricing id submitted Quote. 
                    Quote tempQuote = [select Approved_Special_Pricing__c,id from Quote where id = :quote.id];
                    tempQuote.Approved_Special_Pricing__c = asp.id;
                    tempQuotes.add(tempQuote);
                    
                    //create Special Pricing Line Items from Quote Line Items.
                    if(tempMap2.size() != 0){
                        List<QuoteLineItem> temp = tempMap2.get(quote.id);
                        for(QuoteLineItem qq: temp){
                            Special_Pricing_Line_Item__c spli = new Special_Pricing_Line_Item__c();
                            spli.List_Price__c = qq.ListPrice;
                            spli.Approved_Special_Pricing__c = asp.id;
                            spli.Discount_Percent__c = qq.Discount_Percent__c;
                            spli.CurrencyIsoCode = qq.CurrencyIsoCode;
                            spli.Sales_Price__c = qq.UnitPrice;
                            spli.Product__c = tempMap3.get(qq.PricebookEntryId);
                            spliList.add(spli);
                        }
                    }
                }
            }       
        }
        update tempQuotes;  
        insert spliList;            
    }
}



  • October 24, 2011
  • Like
  • 0

I have the following code that calls the standard pricebook selection page out of salesforce.  However, after selecting the pricebook, the pricebook value is saved on the opp and not the quote where this call originates from.  Can someone provide some pointers to get the pricebookid back into the quote? Cheers!

 

<apex:page standardController="Quote" extensions="ProductPicker" action="{!addPriceBookError}" >
<apex:form >

<apex:sectionheader title="Error missing Pricebook on opportunity" subtitle="{!quote.opportunity.name}" />
<apex:pageMessages /><h2>
<apex:commandlink oncomplete="window.location.href='/oppitm/choosepricebook.jsp?id {!quote.Opportunity}&retURL=%2F{!quote.id}&sUrl=%2F{!quote.id}';"  value="Select price book now" /></h2>
</apex:form>
</apex:page