Skip to main content
グループ

Salesforce CPQ

A place to share information and ideas and discuss challenges with Salesforce CPQ
  1. The user adds a parent product in the Quote Line Editor (QLE).
  2. Custom QLE JavaScript detects the addition of the parent product.
  3. The JavaScript evaluates the applicable shipping rules stored in a custom Salesforce object.
  4. Based on the matching rules, it adds the corresponding dependent shipping product to the current QLE model.
  5. The dependent shipping product should become visible immediately in the QLE, without requiring the user to save the quote or reopen the Quote Line Editor.

Current Issue: The dependent shipping product is being added to the QLE model, but it is not displayed immediately. It only becomes visible after saving and reopening the QLE. The objective is to make the product appear dynamically as soon as the parent product is added.

1 件の回答
  1. 10月18日 18:11

    Attempting to dynamically push a dependent shipping product into the Quote Line Editor model via custom JavaScript without saving often causes state desync issues. Because the Quote Line Editor requires a server-side save to trigger the calculation engine and update its reactive state, client-side manipulation alone will not render the changes immediately. The most reliable approach is to rely on the standard save-and-refresh cycle or pivot to native product rules and option constraints to manage the relationship structurally.

0/9000

Hi All,

Currently, I'm updating our Oracle CPQ manage package to 8.6 version from 7.0 version.

The new version requires install two manage package. This process is already done and now i'm migrating some apex classes and test classes.

When I'm running my test classes, I'm facing next issue:

 

caused by: cafsl.DataSetService.DataSetException: Could not load the transaction; integration settings are missing.

 

I'm already creating a record of cpq site settings and embedded cpq site setting in my test classes and it's still failing. Does anyone know what I need to create?

 

Thanks

 

@Salesforce CPQ 

@* Salesforce Revenue Cloud * 

5 件の回答
  1. 9月16日 13:01

    Have you created the cafsl__Embedded_CPQ_Settings__c record in the test class? If not, please try adding it.

0/9000

Once invoices are generated, how are you managing payment reminders, dunning, and collections follow-up? Custom Flow/Apex, a third-party AR tool, or still manual chasing in Service Cloud or spreadsheets?  

 

Disclosure: I work on Quick Receivable, an AR automation app for Salesforce. Genuinely curious what teams here are doing post-invoice, not trying to pitch anything. 

 

#Salesforce CPQ & Billing

1 件の回答
  1. 9月7日 14:44

    We’ve found Flow is fine for basic reminders, but collections gets messy pretty quickly once invoices go overdue in different ways. At that point I’d rather have a proper AR tool handling the follow ups than keep adding more Flow rules or tracking things in spreadsheets.

0/9000

Using Enterprise Edition with CPQ. On a CPQ quote a sales rep pushes a custom button to book the order, which creates a case that moves on to Contracts, then the Sales Order team for entry into the ERP. There is a one-to-one lookup relationship between CQP Quote and Case. On the case, once the Sales Order teams confirms the quote is good, I would like to put a button or a checkbox on the case that runs a flow that goes to the quote and checks the box Ordered, which creates an order. The flow should then get the newly created order and do the same actions that clicking the Activate button does. I suspect it runs the two CPQ Apex triggers, on named OrderTrigger and the other named OrderProductTrigger. The main question is, would this take care of all the things that the order's Activate button does if you select it manually? Any other advice on how to "press the Activate button" via automation rather than manual action?

1 件の回答
  1. 8月12日 15:03

    Setting the Order Status to Activated should run the triggers and perform the same actions as using the button.  

     

    Note that Order creation runs some async processes that must complete before you Activate. Check the documentation for this. Some of the processes include creating price schedules (if needed) or contracting an amendment (if needed). You may need to build in a delay before triggering activation automatically. There may be some documentation or a knowledge article with more details. 

     

    -Frank 

0/9000

Hello All,

 

We have been working with the CPQ API for some time now, and are only recently leveraging the QCP JavaScript plugin. 

 

What i'm curious about and find odd is that when we do a database insert of quote lines for a quote, and then use the CPQ API to save/calculate the quote within Apex, i'm not seeing any signs that the JavaScript QCP is executing. 

 

So my question for anyone how might be familiar with QCP, does it execute when saving the quote and initiating calculate outside of the Quote Line Editor? 

 

The calculation sequence suggests that the plugin(s) run whenever calculation is initiated, but this isn't what I'm observing. Instead I only see the script execute from directly inside the quote line editor when either Save, Quick Save, and Calculate are clicked.

 

I've also noticed that when a new quote is created on the renewal opportunity which is initiated when the "Renewal Quoted" checkbox is checked on the contract, the plugin JavaScript is executed as the new quote is created. 

 

Thanks for your help.

7 件の回答
  1. 2022年11月21日 22:22

    Antonio - I just tested this out and was able to update a quote line field with the script outside of the cart.  I tested both the Calculate button on the quote as well as triggering a re-calc by updating a field in the Calculating Fields field set.  In both scenarios, the script ran and I am seeing my desired outcomes (in my case, I am simply updating a quote line text field via the script).

     

    Have you tried all of the methods available with the QCP?  Something has to be getting in the way of the calculate.

0/9000

I'm trying to disable the billing trigger for a specific usage type. CPQ uses the standard trigger to roll usages into the usage summary—any suggestions? 

 

I need to diable billing triggers from apex, if usage have type field equals to rebate. we are creating usages using scheduler apex.

3 件の回答
  1. 7月14日 15:46

    Hi Subham 

     

    Salesforce Billing's managed package triggers generally can't be selectively disabled from custom Apex. If CPQ/Billing automatically rolls Usage records into Usage Summaries, there isn't a supported API to bypass the trigger for only one Usage Type (such as Rebate). A better approach is to:

    •  Verify whether the managed package provides a custom setting, custom metadata, or feature flag to exclude specific usage types. 
    •  If possible, prevent Rebate usage records from being processed by the Billing engine through configuration rather than trying to disable the trigger. 
    •  If you're creating Usage records in a scheduled Apex job, consider staging the rebate records in a custom object and only creating Billing Usage records for the types that should be summarized. 

    If this behavior isn't configurable, I'd recommend opening a Salesforce Billing support case, as managed package trigger behavior isn't intended to be bypassed from custom Apex. 

     

    Best, 

    Golla

0/9000

I have a use case where a product is discountable, however it can only be discounted to 10%. If a user puts in a Quote line group of 50%, every line can be discounted to 50%, however, the line that contains this specific product, must have its discount capped at 10%

1 件の回答
  1. 7月7日 8:31

    Hi @Felix Philip  Yes, this can be achieved in Salesforce CPQ. Solution: Create a Price Rule or Product Rule to validate or automatically cap the discount at 10% for that specific product. This ensures that even if a higher group discount is applied, the product's discount won't exceed the allowed limit. You can also display a validation message to inform users when they enter a discount above 10%, helping maintain pricing policies while still allowing group-level discounts for other products. 

0/9000
2 件の回答
  1. 7月7日 8:23

    Hi @Gourav Rathod Yes, this is possible. Add a condition to your Product Search Filter or Product Rule so the bundle is displayed only when the Quote's Account Record Type = "Partner". If the search filter alone doesn't support this logic, use a Product Rule or custom configuration to control the bundle's visibility.

0/9000

I deleted a price rule and attempted to restore it from the recycle bin, some of the selected items were restored but the price rule record and price condition record failed to restore. Please the error encountered below.

 

"An error occurred while trying to update the record. Please try again. SBQQ.PriceConditionAfter: execution of AfterUndelete caused by: System.DmlException: Update failed. First exception on row 0 with id a043X00000ywSZsQAM; first error: FIELD_INTEGRITY_EXCEPTION, There is already an item in this list with the name Field 38: Name: [Name] (System Code) An error occurred while trying to update the record. Please try again. SBQQ.PriceRuleAfter: execution of AfterUndelete caused by: System.DmlException: Update failed. First exception on row 0 with id a043X00000ywSZsQAM; first error: FIELD_INTEGRITY_EXCEPTION, There is already an item in this list with the name Field 38: Name: [Name] (System Code)"

 

FIELD_INTEGRITY_EXCEPTION - Unable to create or edit price rule and unable to access quote lines

 

Now I can't access any quote line, I keep getting the error message below when I click on the Edit lines on quotes.

 

"We could not find the quote record you are trying to access. It may have been deleted by another user, or there may have been a system error. Ask your administrator for help"

 

Quote Line Error.png

 

Kindly assist.

6 件の回答
0/9000

Hi,    I like to update the one of the field of Quote line group object with the help of Price rule.    I have created the Price rule added all the required conditions for Triggering as well as Look up queries. But for some reason it seems its not working at all.    Below is the explanation for my scenario :    There is a X field on Quote line group object which I like to update. There is one Custom object  named ABC, on which there is one field named 'Y'. I want to update the value of Y field to the X field.

 

There is one to many relationship between Quote to ABC and Quote to Quote line Group.

 

Here is my Price rule :    1. Nothing special selection on Price rule side except field Lookup Object = ABC

 

Price Condition : 

  1. Quote line Group Name = XYZ (For this group name I like to update the field)    Lookup Query :

 

Tested Object = Quote line group  Tested Field = Name (Group Name)  Equals  Lookup Field = Group name (This field belong to ABC object)    Tested Object = Quote line group  Tested Field = SBQQ__Quote__c  Equals  Lookup Field = Quote__c (This field belong to ABC Object)

 

Price Action

 

Target Object = Quote Line Group  Target Field = 'X' 

Source Lookup Field = 'Y'   

As per my understanding my Look up query and Conditions are 100% correct. Still it doesn't update the field. I tried to put hardcode value but still it didn't work.    Does anyone have any idea what wrong I am doing here?   

  @Salesforce CPQ @* Salesforce Revenue Cloud *  @Yogesh Bhange     

4 件の回答
  1. 2025年3月6日 9:33

    Hi @Dhaval Shah, you will need to use QCP for that requirement. I believe that this is due to the fact that the Quote Line Groups can only be referenced after a Save / Quick Save.  

0/9000