Display opportunities as a related list on Product2 record

Glenn DalyGlenn Daly Member
edited June 25 in Questions
Has anybody been able to display opportunity records on a product2 record as a related list? 

Comments

  • Pat VachonPat Vachon Member 💎💎💎
    edited June 25
    Done as a popup to a list of Products, but the same can be done for a Product detail page.
    <skuidpage unsavedchangeswarning="yes" personalizationmode="server" showsidebar="true" useviewportmeta="true" showheader="true">
    <models>
    <model id="Products" limit="20" query="true" createrowifnonefound="false" datasource="salesforce" type="" sobject="Product2">
    <fields>
    <field id="Name"/>
    <field id="Description"/>
    <field id="Id"/>
    </fields>
    <conditions/>
    <actions/>
    </model>
    <model id="Opps" limit="20" query="false" createrowifnonefound="false" datasource="salesforce" type="" sobject="Opportunity">
    <fields>
    <field id="Name"/>
    <field id="StageName"/>
    <field id="CloseDate"/>
    </fields>
    <conditions>
    <condition type="join" value="" field="Id" operator="in" enclosevalueinquotes="true" joinobject="QuoteLineItem" joinfield="Quote.OpportunityId">
    <conditions>
    <condition type="fieldvalue" value="" enclosevalueinquotes="true" field="Product2Id" state="filterableon" inactive="false" name="Product2Id"/>
    </conditions>
    </condition>
    </conditions>
    <actions/>
    </model>
    </models>
    <components>
    <skootable showconditions="true" showsavecancel="true" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="true" model="Products" buttonposition="" mode="read" allowcolumnreordering="true" uniqueid="sk-2njv91-129">
    <fields>
    <field id="Name" hideable="true" uniqueid="fi-2nkNx5-194"/>
    <field id="Description" hideable="true" uniqueid="fi-2nkNx5-195"/>
    </fields>
    <rowactions>
    <action type="edit"/>
    <action type="delete"/>
    <action type="multi" label="View record details" icon="sk-icon-popup" openicon="fa-chevron-up">
    <drawer title="Drawer Area" width="90%" closehandle="true">
    <components>
    <skootable showconditions="true" showsavecancel="true" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="true" model="Opps" buttonposition="" mode="read" allowcolumnreordering="true" uniqueid="sk-2nl71J-238">
    <fields>
    <field id="Name" hideable="true" uniqueid="fi-2nlCPN-266" valuehalign="" type=""/>
    <field id="StageName" hideable="true" uniqueid="fi-2nlCj--276" valuehalign="" type=""/>
    <field id="CloseDate" hideable="true" uniqueid="fi-2nlD1c-287" valuehalign="" type=""/>
    </fields>
    <rowactions>
    <action type="edit"/>
    <action type="delete"/>
    </rowactions>
    <massactions usefirstitemasdefault="true">
    <action type="massupdate"/>
    <action type="massdelete"/>
    </massactions>
    <views>
    <view type="standard"/>
    </views>
    <conditions>
    <condition type="contextrow" field="Id" mergefield="Id" operator="="/>
    </conditions>
    </skootable>
    </components>
    <beforeload>
    <action type="setCondition" model="Opps" condition="Product2Id" value="{{Id}}"/>
    <action type="requeryModels" behavior="loadmore">
    <models>
    <model>Opps</model>
    </models>
    </action>
    </beforeload>
    </drawer>
    <actions>
    <action type="setCondition" model="Opps" condition="Product2Id" value="{{Id}}"/>
    <action type="requeryModel" model="Opps" behavior="standard"/>
    <action type="showPopup">
    <popup width="80%" title="Viewing {{Model.label}}: {{Name}}">
    <components>
    <skootable showconditions="true" showsavecancel="true" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="true" model="Opps" buttonposition="" mode="read" allowcolumnreordering="true" uniqueid="sk-2nlYuS-130">
    <fields>
    <field id="Name" hideable="true" uniqueid="fi-2nldg7-144"/>
    <field id="CloseDate" hideable="true" uniqueid="fi-2nldg8-145"/>
    <field id="StageName" hideable="true" uniqueid="fi-2nldg8-146"/>
    </fields>
    <rowactions>
    <action type="edit"/>
    <action type="delete"/>
    </rowactions>
    <massactions usefirstitemasdefault="true">
    <action type="massupdate"/>
    <action type="massdelete"/>
    </massactions>
    <views>
    <view type="standard"/>
    </views>
    <conditions/>
    </skootable>
    </components>
    </popup>
    </action>
    </actions>
    </action>
    </rowactions>
    <massactions usefirstitemasdefault="true">
    <action type="massupdate"/>
    <action type="massdelete"/>
    </massactions>
    <views>
    <view type="standard"/>
    </views>
    </skootable>
    </components>
    <resources>
    <labels/>
    <javascript/>
    <css/>
    </resources>
    <styles>
    <styleitem type="background" bgtype="none"/>
    </styles>
    </skuidpage>


  • Glenn DalyGlenn Daly Member
    edited January 3
    Thanks very much but I receive the following error message when trying to view records.

    1. An error occurred while attempting to perform the following SOQL query: SELECT Name,StageName,CloseDate,Id FROM Opportunity WHERE (Id in (SELECT Quote.OpportunityId FROM QuoteLineItem WHERE (((Product2Id = '01t5E000000O3ALQA0'))))) LIMIT 21 Error:The inner select field 'Quote.OpportunityId' cannot have more than one level of relationships
  • Pat VachonPat Vachon Member 💎💎💎
    edited June 25
    Darn it. Didn't try testing it. Can be done, just have to add another / query.
  • Glenn DalyGlenn Daly Member
    edited June 25
    Ah no problem, thanks for your help :) So do i need to add another condition in the opps model, is that what you're saying?
  • Pat VachonPat Vachon Member 💎💎💎
    edited April 2017
    This is what I'm saying. ;)
    <skuidpage unsavedchangeswarning="yes" personalizationmode="server" showsidebar="true" useviewportmeta="true" showheader="true">
    <models>
    <model id="Products" limit="20" query="true" createrowifnonefound="false" datasource="salesforce" type="" sobject="Product2">
    <fields>
    <field id="Name"/>
    <field id="Description"/>
    <field id="Id"/>
    </fields>
    <conditions/>
    <actions/>
    </model>
    <model id="Quotes" limit="" query="false" createrowifnonefound="false" datasource="salesforce" type="" sobject="Quote">
    <fields>
    <field id="Id"/>
    <field id="OpportunityId"/>
    <field id="Opportunity.Name"/>
    </fields>
    <conditions>
    <condition type="join" value="" field="Id" operator="in" enclosevalueinquotes="true" joinobject="QuoteLineItem" joinfield="QuoteId">
    <conditions>
    <condition type="fieldvalue" value="" field="Product2Id" operator="=" mergefield="Id" novaluebehavior="deactivate" state="filterableon" inactive="false" name="Product2Id" enclosevalueinquotes="true"/>
    </conditions>
    </condition>
    </conditions>
    <actions/>
    </model>
    <model id="Opps" limit="" query="false" createrowifnonefound="false" datasource="salesforce" type="" sobject="Opportunity">
    <fields>
    <field id="Name"/>
    <field id="StageName"/>
    <field id="CloseDate"/>
    </fields>
    <conditions>
    <condition type="modelmerge" value="" field="Id" operator="in" model="Quotes" enclosevalueinquotes="true" mergefield="OpportunityId" novaluebehavior="noquery"/>
    </conditions>
    <actions/>
    </model>
    </models>
    <components>
    <skootable showconditions="true" showsavecancel="true" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="true" model="Products" buttonposition="" mode="read" allowcolumnreordering="true" uniqueid="sk-2njv91-129">
    <fields>
    <field id="Name" hideable="true" uniqueid="fi-2nkNx5-194"/>
    <field id="Description" hideable="true" uniqueid="fi-2nkNx5-195"/>
    </fields>
    <rowactions>
    <action type="edit"/>
    <action type="delete"/>
    <action type="multi" label="View record details" icon="sk-icon-popup" openicon="fa-chevron-up">
    <drawer title="Drawer Area" width="90%" closehandle="true">
    <components>
    <skootable showconditions="true" showsavecancel="true" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="true" model="Opps" buttonposition="" mode="read" allowcolumnreordering="true" uniqueid="sk-2nl71J-238">
    <fields>
    <field id="Name" hideable="true" uniqueid="fi-2nlCPN-266" valuehalign="" type=""/>
    <field id="StageName" hideable="true" uniqueid="fi-2nlCj--276" valuehalign="" type=""/>
    <field id="CloseDate" hideable="true" uniqueid="fi-2nlD1c-287" valuehalign="" type=""/>
    </fields>
    <rowactions>
    <action type="edit"/>
    <action type="delete"/>
    </rowactions>
    <massactions usefirstitemasdefault="true">
    <action type="massupdate"/>
    <action type="massdelete"/>
    </massactions>
    <views>
    <view type="standard"/>
    </views>
    <conditions>
    <condition type="contextrow" field="Id" mergefield="Id" operator="="/>
    </conditions>
    </skootable>
    </components>
    <beforeload>
    <action type="setCondition" model="Opps" condition="Product2Id" value="{{Id}}"/>
    <action type="requeryModels" behavior="loadmore">
    <models>
    <model>Opps</model>
    </models>
    </action>
    </beforeload>
    </drawer>
    <actions>
    <action type="setCondition" model="Quotes" condition="Product2Id" value="{{Id}}"/>
    <action type="requeryModels" model="Opps" behavior="standard">
    <models>
    <model>Quotes</model>
    <model>Opps</model>
    </models>
    </action>
    <action type="showPopup">
    <popup width="80%" title="Viewing {{Model.label}}: {{Name}}">
    <components>
    <skootable showconditions="true" showsavecancel="true" showerrorsinline="true" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="true" model="Opps" buttonposition="" mode="read" allowcolumnreordering="true" uniqueid="sk-2nlYuS-130">
    <fields>
    <field id="Name" hideable="true" uniqueid="fi-2nldg7-144"/>
    <field id="CloseDate" hideable="true" uniqueid="fi-2nldg8-145"/>
    <field id="StageName" hideable="true" uniqueid="fi-2nldg8-146"/>
    </fields>
    <rowactions>
    <action type="edit"/>
    <action type="delete"/>
    </rowactions>
    <massactions usefirstitemasdefault="true">
    <action type="massupdate"/>
    <action type="massdelete"/>
    </massactions>
    <views>
    <view type="standard"/>
    </views>
    <conditions/>
    </skootable>
    </components>
    </popup>
    </action>
    </actions>
    </action>
    </rowactions>
    <massactions usefirstitemasdefault="true">
    <action type="massupdate"/>
    <action type="massdelete"/>
    </massactions>
    <views>
    <view type="standard"/>
    </views>
    </skootable>
    </components>
    <resources>
    <labels/>
    <javascript/>
    <css/>
    </resources>
    <styles>
    <styleitem type="background" bgtype="none"/>
    </styles>
    </skuidpage>

  • Glenn DalyGlenn Daly Member
    edited April 2017
    Ah so you've created another model, thanks very much for your help with this, it's now resolved!
  • Pat VachonPat Vachon Member 💎💎💎
    edited April 2017
    yw ;)
Sign In or Register to comment.