• shan876
  • NEWBIE
  • 25 Points
  • Member since 2007

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

Hi,

 

I've been advised this is the best place to post this...

 

I've installed Quote Line Items (Version 0.7) from Appexchange and want to edit the page "Quote PDF" so that it looks similar to our existing quote template as we're looking to run our quote process through Salesforce.com.  The application is great and I've been given the go ahead to roll it out to everyone as long as the quote PDF can look more like our original version.  This is where I'm falling down - I've managed to add our logo to the template instead of the standard Visualforce one but can't get my head around adding a table and some standard text to the template. I know it's only a simple template and if it was HTML I'd be able to do it but I just can't figure out Visualforce.

 

Can anybody help with this at all please?  E.g. does anyone have a standard table I can copy & paste and then edit?  If I identify which fields need to be included, could someone guide me through how to enter them in to the table?  Is there a way of adding a standard header & footer to the page?

 

Thanks,

Cherie

This person will be responsible forassisting in the planning and implementation of our customer relationshipmanagement (CRM) solution through Salesforce.com. Responsibilities include, but are not limited to, cleaning up and user set-up,addressing reporting needs, monitoring and supporting the application andon-going maintenance activities, addressing application issues, and assistingwith updates to the application. In addition, this individual will assist project leads/managers in determining next phases of the system aswell as determining project goals that serve as benchmarks of overall project andoperational success. Also, they will assist in the development of testing, training development/support, and launch plans asrequired to aid in delivery of a quality product, designed for user acceptanceand adoption.  Inaddition to working directly with the Sales team, this person will also workwith other business partners and Hybrid Mom divisions to identify practicalsolutions through existing and/ornew business systems technology, and will be responsible for the administrationand ongoing support of the application in cooperation with the business.       

  • Maintain and develop user roles, security, profiles, workflow rules and other system configuration options.
  • Assists in the creation of uniform business practices for data entry into Salesforce.com
  • Gathers requirements by working with Sales in order to produce appropriate reports (and eventually a dashboard) that can be used to enhance the client relationship.
  • Manages data loads and data quality
  • Monitor the overall usage and ensure consistent updating is being performed by the Sales team
  • Works with the Sales training group in order to ensure the Sales team is provided the necessary information to ensure an effective and efficient rollout of Salesforce .com
  • Acts in the role of an advocate for Salesforce.com when interacting with users throughout the organization
  • Communicates and organizes organizational behavior with the business and IT.
  • Providing central point of contact for all changes requests and system alterations
  • Other duties as deemed necessary

 

  • Bachelor's degree preferred, extensive, directly-related experience may be considered in lieu of degree
  • 3-5+ years experience with Salesforce.com or other CRM solutions
  • 3-5+ years reporting experience in creating Salesforce.com or other CRM reports   
  • Strong project management skills
  • Ability to build and maintain credibility with internal and external contacts
  • Strong consulting, analytical, negotiating, decision making and problem solving skills
  • Demonstrated commitment to customer centric culture, excellence and continuous learning
  • Strong attention to detail and accuracy
  • Highly proficient in Microsoft Office including Outlook, PowerPoint, Word, and Excel

 

Ultimately would love for this person to work in our Smithtown, New York offices but would entertain a remote position.

 

About Our Company:

Hybrid Mom Consulting & Media Group, headquartered in Smithtown, New York, is dedicated to supporting and championing a new generation of moms-those who seek to redefine their roles and enhance the quality of how they work, play and live, without sacrificing their families.

The Hybrid Mom Consulting division, provides mom-owned businesses withaccess to highly qualified, career-trained mom consultants.  Our Moms-for-Profit program is wheremompreneurs participate in business service opportunities including: marketingplans, business identity packages, website development, product development andplacement, PR, et al. All of these services are provided by our momconsultants.  This unique partnershipenables moms to have the freedom and flexibility to enjoy their profession andexperience the rewards of family life.

The Hybrid Mom Media division is dedicated to today's Moms. These women areno longer choosing between a successful career or a successful family life, butrather integrating their many aspirations for the purpose of achieving abalanced life. Hybrid Mom print magazine and hybridmom.com’s editorial contentreflects a voice of friendship, rather than an expert and focuses on the "real world" of this new generationof Moms.  Hybrid Mom is publishedquarterly. www.hybridmom.com

 

Message Edited by HybridMom on 03-20-2009 01:54 PM

Here is a link to the post.  Maybe this setup will be useful to others.  Also, is there a more specific location to submit things like this (helpful articles or project summaries)?

 

Console 2 for Salesforce

I create a simple VF page and custom controller that I intend to deliver as a Home Page widget for the Ideas object.  The idea (no pun intended) is to better engage my users by putting the ideas functionality right in front of them when they log in.

 

My question is, once I use a controller to return a set of rows from the object, how can I further format these values to present to the user?

 

My controller is just this so far:

public class ideasController { public List<Idea> getNewIdeas(){ return [select id, title, createddate, CreatedBy.Alias, numcomments, votescore from idea where status = 'new']; } }

 

But I need to format the CreatedDate and VoteScore values to something more user appealing.  What would you recommend?

 

Side note, also, how can I control the style of the row/cell values?  They default to left-align, but I want some of them to center.

 

 

<apex:page controller="ideasController" title="Ideas" tabstyle="idea"> <apex:pageBlock > <apex:dataTable value="{!NewIdeas}" var="iIdea" width="100%" > <apex:column > <apex:facet name="header"><b>Title</b></apex:facet> <a href="/ideas/viewIdea.apexp?id={!iIdea.Id}">{!iIdea.Title}</a> </apex:column> <apex:column > <apex:facet name="header"><b>Created On</b></apex:facet> {!iIdea.CreatedDate} </apex:column> <apex:column > <apex:facet name="header"><b>Created By</b></apex:facet> {!iIdea.CreatedBy.Alias} </apex:column> <apex:column > <apex:facet name="header"><b>Score</b></apex:facet> {!iIdea.VoteScore} </apex:column> <apex:column > <apex:facet name="header"><b ><center>Comments</center></b></apex:facet> {!iIdea.NumComments} </apex:column> </apex:dataTable> </apex:pageBlock> </apex:page>

 

 

 

 

 

I'm trying to create a Google Maps International styled Visualforce app with Weather Information - perhaps the next 5 days of weather displayed as images?

 

Has anyone done this or have any suggestions on websites with this information that i could use?

 

 

The AP Yr 1, AP Yr2 and AP Yr3 are input Fields. I want to be reduce their size so that they take lesser column space. How can I do that? The size attribute is supported only for inputText

 

Product Name Line Type Product Family List Price Quantity AP Yr 1 EP Yr 1 AP Yr 2 EP Yr 2 AP Yr 3 EP Yr 3
RegistrationNew USD 245.005USD 1,225.00USD 1,225.00USD 1,225.00
UsersNew USD 245.005USD 1,225.00USD 1,225.00USD 1,225.00

 

Thanks for your help

 

 

Hi,

 

I am a newbie in the VisualForce Development. Please help me with a good example How to add and delete a row in a datatable.

 

Thanks in Advance!!

 

Hi :

I am trying to modify what I wrote due to what the users want to see...

Which is:

Weekending          Monday    Tuesday    Wednesday ...

     Date               Draw Net  Draw Net   Draw Net

So I tried colspan=2 when it gets to Monday but it is not working correctly:

<apex:page standardcontroller="SFDCFEED__c" extensions="SalesByAccountTableController" id="thePage" tabStyle="Account"> <apex:pageblock > <apex:pageBlockSection title="Sales Detail Information" collapsible="false" columns="1"> <apex:pageBlockTable value="{!fed}" var="account" border="1" cellspacing="0" cellpadding="0" style="font-size:11px; font-family:garamond;"> <apex:column headerValue="Weekending Date"><apex:outputField value="{!account.SIS_DATE__c}"/></apex:column> <apex:column headerValue="Monday"colspan="2">Draw <apex:outputField value="{!account.SIS_MON_DRAW__c}"/> <apex:outputField value="{!account.SIS_MON_NET__c}"/></apex:column> <apex:column > <apex:facet name="header">Tuesday<br/>Draw</apex:facet> <apex:outputText value="{!account.SIS_TUE_DRAW__c}"/> </apex:column>

Thank you for helping

Shan

What is wrong with my statement:

  Also All I want to do is drop the CurrencyISO from the field:

<apex:outputField value="{!SUBSTITUTE(TEXT(ROUND(item.Unit_Price__c, 0)), "GBP", "," )}" />

 

 

What is wrong with this:

Basically saying: If the partner is HP and Sales_Discount has been changed and it is greater then 40% then cause an error to occur.. if not then go to the next scenario and say if Partner is Geo, and so fourth...

 

IF(AND(Quote__r.Partner_Direct__c = 'HP' , AND(ISCHANGED(Sales_Discount__c),OR(Sales_Discount__c>0.40))), IF(AND(Quote__r.Partner_Direct__c = 'GeoBridge' , AND(ISCHANGED(Sales_Discount__c),OR(Sales_Discount__c>0.35))), true,null))

 

 

 

Hi all:

   I have the following trigger and class...

Basically, this works real well when an user creates a quote.. it copies everything from product line to quoteline automatically once the quote is created...

Now the situation I have is if the Partner__c value changes then the sales_discount off the quoteline must change accordingly...

I am totally at a lost to do that...

Here is my trigger:

 

trigger quoteTrigger on SFDC_520_quote__c (after insert) { for (SFDC_520_Quote__c q : Trigger.new) { if (Trigger.isInsert) util.copyLineItemsFromOpp(Trigger.new); } }

 My class:

 

global class util { // Class variables can be used for communication between triggers public static Boolean inQuoteTrigger; public static Set<Id> opportunityIds = new Set<Id>(); public static SFDC_520_Quote__c[] getOtherPrimaryQuotes(list<SFDC_520_Quote__c > qs) { // Retrieve the list of all opportunities referenced by the given quotes List<Id> ops = new List<Id>(); for(SFDC_520_quote__c q : qs) ops.add(q.opportunity__c); // Now retrieve all quotes that reference the opportunities, // excluding the given quotes SFDC_520_Quote__c[] others = [select id from SFDC_520_quote__c where opportunity__c in :ops and id not in :qs and primary__c = true]; return others; } // This method moves opportunity line items to the given quote q. public static void copyLineItemsFromOpp(List<SFDC_520_Quote__c> qs) { // We will modify and update the quotes with totals at the end, so we clone it // first since Trigger.new records cannot be modified in after triggers. Notice that // we use the deepClone method on the list as clone for sobjects creates a shallow // copy which is still read-only. List<SFDC_520_quote__c> quoteList = qs.deepClone(true); try { // By setting the inQuoteTrigger class variable, this method tells // the quoteLine trigger that it should disable itself during this // operation (the quoteLine trigger is described in Example 3) inQuoteTrigger = true; //Now the method creates an empty array of quote line items List<SFDC_520_QuoteLine__c> quoteItemList = new List<SFDC_520_QuoteLine__c>(); // Next get the opportunity line items for the respective Opportunities. // This demonstrates the aggregate relationship query pattern for getting // children correlated back to their parent. You could also query // OpportunityLineItem directly but would then have to correlate the items // back to their respective parents (opportunity) inside the code manually. // We are constructing a map so the respective opportunity // (with its line items) can be easily correlated back to quote as we process // them below. Map<Id, Opportunity> opportunityMap = new Map<Id, Opportunity>( [select Id,Partner__c, (Select Id, OpportunityId, SortOrder, PricebookEntryId, Quantity, TotalPrice, UnitPrice, ListPrice, ServiceDate, Description, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp, IsDeleted , PricebookEntry.Name, PricebookEntry.Product2id from opportunitylineitems order by createddate) from Opportunity where Id IN :getOpportunityIds(quoteList)]); // Iterate through the quotes in the bulk operation. for(SFDC_520_Quote__c quote:quoteList) { // Next, the method manually calculates the overall total for the quote // by iterating over an array of OpportunityLineItem records from the // preceeding SOQL query. The query selects the data from opportunity // line items that match the opportunity associated with the quote. Double tot = 0; // The running total Integer i = 0; // Number the line items // Get the respective opportunity and its line items from the map. Opportunity opp = opportunityMap.get(quote.opportunity__c); // If this quote is not associated to an opportunity then skip it. if(opp == null) continue; for (opportunitylineitem oppline : opp.OpportunityLineItems) { i++; // For each opportunity line item, the method // calculates the running total if (oppline.unitprice != null && oppline.quantity != null) tot += oppline.unitprice * oppline.quantity; // And then it adds a new quote line item to the quoteitems, // array, initializing it with values. Reseller__c[] r =[Select Name, License__c from Reseller__c where Name=:quote.Partner_Direct__c]; if(r.isEmpty()){ quoteItemList.add(new SFDC_520_quoteline__c( quote__c = quote.id, Sales_Discount__c = 0.0, Qty_Ordered__c = oppline.Quantity, Unit_Price__c = oppline.UnitPrice, Description__c = oppline.Description, ServiceDate__c = oppline.ServiceDate, Product2__c = oppline.PricebookEntry.Product2id));} if(!r.isEmpty()){ quoteItemList.add(new SFDC_520_quoteline__c( quote__c = quote.id, Sales_Discount__c = r[0].License__c, Qty_Ordered__c = oppline.Quantity, Unit_Price__c = oppline.UnitPrice, Description__c = oppline.Description, ServiceDate__c = oppline.ServiceDate, Product2__c = oppline.PricebookEntry.Product2id)); } } } //The method adds the whole array of quote line items //to the database with a single insert statement. insert quoteItemList; update quoteList; } finally { // To clean up the working variable, the method resets inQuoteTrigger to false; inQuoteTrigger = false; } } // Generate a unique set of opportunity IDs that represents all the // quotes in the argument list. private static Set<Id> getOpportunityIds(List<SFDC_520_Quote__c> quotes) { Set<Id> idSet = new Set<Id>(); for(SFDC_520_Quote__c quote:quotes) { if(quote.opportunity__c != null) idSet.add(quote.opportunity__c); } return idSet; } static testMethod void testQuoteApp() { // To begin, the sample application first creates the necessary records // to test OpportunityLineItems: Pricebook2, Product2, and PricebookEntry // First it creates a product with a standard price Product2 p = new product2(name='x'); insert p; Pricebook2 stdPb = [select Id from Pricebook2 where isStandard=true limit 1]; insert new PricebookEntry(pricebook2id = stdPb.id, product2id = p.id, unitprice=1.0, isActive=true); // Next, it creates a new pricebook with an entry for this product Pricebook2 pb = new pricebook2(name='test'); insert pb; PricebookEntry pbe = new PricebookEntry(pricebook2id=pb.id, product2id=p.id, unitprice=1.0, isActive=true); insert pbe; // To test the first example from the sample application, the test // method creates an opportunity line item using the pricebook entry, // and then asserts that the Color field was correctly copied from the // product after record insertion. Opportunity o = new Opportunity(name='test', pricebook2id=pb.id, stageName='Open', CloseDate=Date.newInstance(2006,10,10)); insert o; OpportunityLineItem oli = new OpportunityLineItem(opportunityid=o.id, pricebookentryid=pbe.id, unitprice=1.5, quantity=2); insert oli; /*System.assertEquals('c', [select color__c from opportunitylineitem where id = :oli.id].color__c);*/ // To test the fifth example from the sample application, the test method // creates a primary quote and then asserts that its Primary field cannot // be deselected. The code uses the try...catch testing idiom to assert // that the error message is correct. SFDC_520_Quote__c q = new SFDC_520_Quote__c(opportunity__c = o.id, primary__c = true); insert q; // Cannot mark it non-primary q.primary__c = false; try { update q; } catch (DmlException e) { System.assert(e.getMessage().contains('first error: FIELD_CUSTOM_VALIDATION_EXCEPTION,'+ ' Primary quote cannot be marked non-primary: [Primary__c]'), e.getMessage()); System.assertEquals('Primary quote cannot be marked non-primary', e.getDmlMessage(0)); System.assertEquals(SFDC_520_Quote__c.Primary__c, e.getDmlFields(0)[0]); } // To test the second and third examples from the sample application, the // test method asserts that the inserted quote has the proper quote line // data copied from the opportunity line item, and that the quote's total // value is properly calculated. System.assertEquals(1, [select count() from SFDC_520_quoteline__c where quote__c = :q.id]); //delete o; // delete q; // To test the fifth example from the sample application, the test method // creates a primary quote and then asserts that its Primary field cannot // be deselected. The code uses the try...catch testing idiom to assert // that the error message is correct. SFDC_520_Quote__c q2 = new SFDC_520_Quote__c(opportunity__c = o.id, primary__c = true); insert q2; // To test the fifth example from the sample application, the test method // creates a primary quote and then asserts that its Primary field cannot // be deselected. The code uses the try...catch testing idiom to assert // that the error message is correct. //System.assert(![select primary__c from SFDC_520_quote__c where id = :q.id].primary__c); // Can't have the same opportunity marked as primary for the same opportunity // in the same insert/update SFDC_520_Quote__c[] quotes = new SFDC_520_Quote__c[] { new SFDC_520_Quote__c(opportunity__c = o.id, primary__c = true), new SFDC_520_Quote__c(opportunity__c = o.id, primary__c = true)} ; insert quotes; // Finally, the test method performs DML operations on quote line // items to assert that the quote line item values are properly // recalculated when associated values change. SFDC_520_QuoteLine__c qLine = new SFDC_520_QuoteLine__c(quote__c = q.id, product2__c = p.id, unit_price__c = 2.0, Qty_Ordered__c = 2); SFDC_520_QuoteLine__c qLine1 = qLine.clone(); insert qLine; // qLine.unit_price__c = 3.0; // update qLine; delete qLine; // Bulk line item operation insert new SFDC_520_QuoteLine__C[]{qLine1, qLine1.clone()}; // Test that updating the product master color and then updating the quote colors works } }

 

 Any Help would be kindly appreciated...