Skip to main content
Nintex Community Menu Bar
Question

How to create a revenue schedule

  • July 9, 2024
  • 13 replies
  • 27 views

Forum|alt.badge.img+3

I am new to Skuid. I have managed to set up products on a create opportunity page, but I cannot figure out how to configure the revenue schedule associated with each line item. I would be fine with having it on the page, but would prefer to use a pop up if possible. I really don’t see any tutorials or pre set up pages that include this feature. 

This topic has been closed for replies.

13 replies

Forum|alt.badge.img+11

Assume you have activated schedules.  

The sobject that you will need to model is OpportunityLineItemSchedule.  

Review these links for more details:

https://www.salesforce.com/developer/docs/api/Content/sforce_api_objects_opportunitylineitem.htm

https://www.salesforce.com/developer/docs/api/Content/sforce_api_objects_opportunitylineitemschedule…

Hope this get you started in the right direction.


Forum|alt.badge.img+11

Try this:

<skuidpage unsavedchangeswarning="yes" showsidebar="true" showheader="true" tabtooverride="OpportunityLineItem">   <models>
      <model id="OpportunityLineItem" limit="100" query="true" createrowifnonefound="false" sobject="OpportunityLineItem">
         <fields>
            <field id="Id"/>
            <field id="CreatedDate"/>
            <field id="OpportunityId"/>
            <field id="Opportunity.Name"/>
            <field id="HasQuantitySchedule"/>
            <field id="HasRevenueSchedule"/>
            <field id="Discount"/>
            <field id="ServiceDate"/>
            <field id="Description"/>
            <field id="ListPrice"/>
            <field id="Name"/>
            <field id="ProductCode"/>
            <field id="Quantity"/>
            <field id="UnitPrice"/>
            <field id="Subtotal"/>
            <field id="TotalPrice"/>
         </fields>
         <conditions>
            <condition type="modelmerge" value="" field="OpportunityId" operator="=" model="Opportunity" enclosevalueinquotes="true" mergefield="Id" novaluebehavior="deactivate"/>
         </conditions>
         <actions/>
      </model>
      <model id="Opportunity" limit="20" query="true" createrowifnonefound="false" sobject="Opportunity">
         <fields>
            <field id="Name"/>
            <field id="Id"/>
         </fields>
         <conditions>
            <condition type="param" value="id" field="Id" operator="=" enclosevalueinquotes="true" novaluebehavior=""/>
         </conditions>
         <actions/>
      </model>
      <model id="OpportunityLineItemSchedule" limit="20" query="true" createrowifnonefound="false" sobject="OpportunityLineItemSchedule">
         <fields>
            <field id="Revenue"/>
            <field id="Quantity"/>
            <field id="Type"/>
            <field id="Id"/>
            <field id="OpportunityLineItemId"/>
            <field id="OpportunityLineItem.Id"/>
            <field id="Description"/>
            <field id="ScheduleDate"/>
         </fields>
         <conditions>
            <condition type="fieldvalue" value="" enclosevalueinquotes="true" field="OpportunityLineItemId" state="filterableoff" inactive="true" name="OpportunityLineItemId"/>
         </conditions>
         <actions/>
      </model>
   </models>
   <components>
      <pagetitle model="Opportunity">
         <subtitle>Opportunity Products for</subtitle>
         <actions>
            <action type="savecancel"/>
         </actions>
         <maintitle>{{Name}}</maintitle>
      </pagetitle>
      <skootable showconditions="true" showsavecancel="false" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="false" model="OpportunityLineItem" mode="readonly">
         <fields>
            <field id="Name" valuehalign="" type=""/>
            <field id="Description" valuehalign="" type=""/>
            <field id="Quantity" decimalplaces="" valuehalign="" type="">
               <summaries>
                  <summary>sum</summary>
               </summaries>
            </field>
            <field id="ListPrice" decimalplaces="" valuehalign="" type=""/>
            <field id="UnitPrice" decimalplaces="" valuehalign="" type=""/>
            <field id="Subtotal" decimalplaces="" valuehalign="" type="">
               <summaries>
                  <summary>sum</summary>
               </summaries>
            </field>
            <field id="TotalPrice" decimalplaces="" valuehalign="" type="" allowordering="true">
               <summaries>
                  <summary>sum</summary>
               </summaries>
            </field>
            <field id="HasQuantitySchedule" type="" valuehalign=""/>
            <field id="HasRevenueSchedule" type="" valuehalign=""/>
         </fields>
         <rowactions>
            <action type="multi" label="Show Schedules" icon="ui-silk-application-form-add">
               <actions>
                  <action type="cancel">
                     <models>
                        <model>OpportunityLineItemSchedule</model>
                     </models>
                  </action>
                  <action type="setCondition" model="OpportunityLineItemSchedule" condition="OpportunityLineItemId" value="{{Id}}"/>
                  <action type="requeryModel" model="OpportunityLineItemSchedule" behavior="standard"/>
                  <action type="drawer" openicon="ui-silk-application-form-delete">
                     <drawer title="Drawer Area" width="90%" closehandle="true">
                        <components>
                           <skootable showconditions="true" showsavecancel="false" searchmethod="server" searchbox="true" showexportbuttons="false" pagesize="10" createrecords="false" model="OpportunityLineItemSchedule" buttonposition="" mode="readonly">
                              <fields>
                                 <field id="Type" valuehalign="" type=""/>
                                 <field id="ScheduleDate"/>
                                 <field id="Quantity" decimalplaces="" valuehalign="" type=""/>
                                 <field id="Revenue" decimalplaces="" valuehalign="" type=""/>
                                 <field id="Description"/>
                              </fields>
                              <rowactions/>
                              <massactions usefirstitemasdefault="true"/>
                              <views>
                                 <view type="standard"/>
                              </views>
                           </skootable>
                        </components>
                     </drawer>
                  </action>
               </actions>
               <renderconditions logictype="or">
                  <rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="false" fieldmodel="OpportunityLineItem" sourcetype="fieldvalue" field="HasQuantitySchedule" value="true"/>
                  <rendercondition type="fieldvalue" operator="=" enclosevalueinquotes="false" fieldmodel="OpportunityLineItem" sourcetype="fieldvalue" field="HasRevenueSchedule" value="true"/>
               </renderconditions>
            </action>
         </rowactions>
         <massactions usefirstitemasdefault="true"/>
         <views>
            <view type="standard"/>
         </views>
      </skootable>
   </components>
   <resources>
      <labels/>
      <css/>
      <javascript/>
   </resources>
</skuidpage>

Forum|alt.badge.img+3
  • Author
  • 15 replies
  • July 9, 2024

Thanks, I will give these a look!


Forum|alt.badge.img+3
  • Author
  • 15 replies
  • July 9, 2024

I will try this code in a second. I tried following the guides you gave me, and adding it to a pop up in my opportunity wizard. Here are the errors I am receiving.


Forum|alt.badge.img+3
  • Author
  • 15 replies
  • July 9, 2024

I really would be happy with it performing the same way that standard sf schedules performs.


Forum|alt.badge.img+11

Justin, Did you get past your issue? Hopefully my example pointed you in the right direction


Forum|alt.badge.img+3
  • Author
  • 15 replies
  • July 9, 2024

Irvin, thanks for all of your help. I will be working on your suggestions today. I have not had time to go through it all yet. Thanks!


Forum|alt.badge.img+3
  • Author
  • 15 replies
  • July 9, 2024

Irvin, you have been a big help and have certainly pointed my in the right direction. I was able to use your code to show products and schedules on an opp. How do I allow the schedule to be edited, or established if there isn’t one already?


Forum|alt.badge.img+3
  • Author
  • 15 replies
  • July 9, 2024

To be more clear. I have created an Opportunity create wizard. As one of the steps, I want the user to add products, then establish/customize a revenue schedule for each product. Thanks!


Forum|alt.badge.img+11

Take a look at this page for details on the schedule sobject.

https://www.salesforce.com/developer/docs/api/Content/sforce_api_objects_opportunitylineitemschedule…

I see a couple of challenges to work through:

  • Reproducing the Establish operation
  • Determining which columns to show depending on the type of schedule e.g. Revenue, Quantity or Both.
Note that the Type field is a restricted picklist.  I am intrigued and may give it a shot when I get a chance.


Forum|alt.badge.img+3
  • Author
  • 15 replies
  • July 9, 2024

Thanks. It seems bizarre that this would be so difficult. I cannot be the only person who has wanted to set up revenue schedules on a product, you would think there would be clear instructions…oh well. 


Forum|alt.badge.img+3
  • Author
  • 15 replies
  • July 9, 2024

I actually found a suitable workaround for the moment. I created an action on the product table that redirects in a new window to the standard lineId url and allows them to establish a schedule. It isn’t perfect, but it allows me to move on to more pressing matters. If you think of anything better let me know. Thanks!


Forum|alt.badge.img+11

Hi, Good to hear that you are moving forward.  Let me think about this one.