U bent hier:
Geavanceerde transactiedetailregelprijzen gebruiken om aangepaste velden toe te wijzen
Gebruikers kunnen aangepaste velden voor verkooptransactie-items of details van verkooptransactie-items bijwerken via prijsstellingsprocedures met behulp van de voorziening Geavanceerde detailregelprijsstelling. Met deze voorziening hoeven gebruikers niet langer aangepaste triggers of stromen te gebruiken om die velden bij te werken. Deze voorziening is handig voor gebruikscases voor wijziging, verlenging en annulering.
Vereiste editions
| Beschikbaar in: Lightning Experience |
| Beschikbaar in: Enterprise, Unlimited en Developer Edition van Revenue Cloud waarin Transactiebeheer is ingeschakeld |
| Vereiste gebruikersmachtigingen | |
|---|---|
| Geavanceerde detailregelprijsstelling instellen en gebruiken: | Salesforce-beheerder EN Machtigingenset Design Time-gebruiker voor prijzen |
Voltooi voordat u begint deze taken.
- Als u de voorziening Geavanceerde detailregelprijsstelling wilt inschakelen, zoekt en selecteert u in Set-up Omzetinstellingen en schakelt u vervolgens de instelling Geavanceerde detailregelprijsstelling in.
- Configureer uw prijsstellingsprocedure.
- Toewijzingen van contexttags toevoegen aan het regelitemelement Prijsproceduretoewijzing met behulp van JSON
Als u een prijsstellingsprocedure wilt configureren om geavanceerde detailregelprijsstelling te gebruiken, kopieert en plakt u het kaartregelitem-JSON naar een prijsstellingsprocedure in Omzetprijsstelling. - Toewijzingen van contexttags toevoegen aan het regelitemelement van de Discovery-procedurekaart met behulp van JSON
Als u een ontdekkingsprocedure wilt configureren voor het gebruik van geavanceerde detailregelprijsstelling bij afgeleide prijsstellingsproducten, kopieert en plakt u het toewijzingsregelitem voor afgeleide prijsstellings-JSON naar een ontdekkingsprocedure in Omzetprijsstelling.
Procedure voor omzetprijzen bijwerken
Als u geavanceerde detailregelprijsstelling wilt configureren, wijzigt u uw procedure voor omzetprijsstelling.
- Zoek en selecteer vanuit de Appstarter Prijsprocedures en selecteer vervolgens een bij te werken prijsprocedure.
- Wijzig de prijsstellingsprocedure door een nieuw toewijzingsregelitemelement toe te voegen als het tweede element naast de prijsstelling in de prijsstellingsprocedure.
-
Voeg contexttagtoewijzingen toe aan het kaartregelitem.
Invoervariabele
Uitvoervariabele
LineItem
SalesTrxnItemDetailSource
LineItemQuantity
ItemDetailQuantity
NetUnitPrice
ItemDetailNetUnitPrice
price_water_fall
DetailPriceWaterfallIdentifier
InputUnitPrice
ItemDetailUnitPrice
ItemBillingReference
ItemDetailBillingReference
ItemNetTotalPrice
ItemDetailTotalPrice
TotalLineAmount
ItemDetailTotalLineAmount
EffectiveFrom
ItemDetailEffectiveFrom__std
EffectiveTo
ItemDetailEffectiveTo__std
PricingTermCount
ItemDetailPricingTermCount__std
itemTransientEndDate
ItemDetailTransientEndDate__std
ItemPricingSource
ItemDetailPricingSource__std
DerivedPricingAttribute
ItemDetailDerivedPricingAttribute__std
ItemGroupSummarySubtotal
ItemDetailGroupSummaryTotal__std
ListPrice
ItemDetailListPrice__std
IsContracted
ItemDetailIsContracted__std
ItemContractPrice
ItemDetailContractPrice__std
STI_TenantName__c
STID_TenantName__c
Nadat u de toewijzingen van contexttags hebt toegevoegd, ziet u de standaardtoewijzingen tussen SalesTransaction en SalesTransactionItemDetail met bijgewerkte contextdefinities.
Procedure voor het ontdekken van afgeleide prijzen bijwerken
Als u afgeleide prijzen gebruikt, brengt u aanvullende wijzigingen aan in uw ontdekkingsprocedure nadat u wijzigingen in uw prijsstellingsprocedure voor omzet hebt voltooid. Deze wijzigingen zijn noodzakelijk om geldige bijdragende en afgeleide producten te bepalen.
- Zoek en selecteer vanuit de Appstarter Ontdekkingsprocedures en selecteer vervolgens een ontdekkingsprocedure om bij te werken.
-
Voeg twee nieuwe elementen toe aan de ontdekkingsprocedure om afgeleide producten te prijzen: Discovery-instellingen en Regelitem toewijzen.
Voeg deze variabelen toe aan ontdekkingsinstellingen.
- Invoervariabele: Regelitem
- Uitvoervariabele: LineItem
Voeg deze variabelen toe aan het kaartregelitem.- Invoervariabele: SalesTransactionItem
- Uitvoervariabele: SalesTransactionItemDetail
Voeg deze extra variabelen toe aan het kaartregelitem.
Invoervariabele
Uitvoervariabele
LineItem
SalesTrxnItemDetailSource
EffectiveFrom
ItemDetailEffectiveFrom__std
EffectiveTo
ItemDetailEffectiveTo__std
DerivedPricingAttribute
ItemDetailDerivedPricingAttribute__std
-
Ondersteun aangepaste velden door middel van prijsstellingsprocedures voor gebruikscases voor wijzigen, verlengen en annuleren (ARC).
Set-up van aangepaste velden is van toepassing als u ARC-API's gebruikt en aangepaste velden wilt gebruiken.
- Voeg aangepaste velden toe aan de objecten QuoteLineItem, QuoteLineItem Detail, OrderProduct en OrderProductDetails.
- Maak in de contextdefinitie een ingang voor deze aangepaste velden in zowel SalesTransactionItem- als SalesTransactionItemDetail-knooppunten.
- Maak de vereiste toewijzingen in QuoteEntitiesMapping en OrderEntitiesMapping.
-
Wijzig de prijsstellingsprocedure voor omzet voor aangepaste velden.
- Wijzig het MapLineItem element in de prijsstellingsprocedure om een toewijzing toe te voegen tussen SalesTransactionItem.CustomField en SalesTransactionItemDetail.CustomField.
-
Maak alle noodzakelijke aanpassingselementen binnen de prijsstellingsprocedure om een waarde toe te wijzen aan SalesTransactionItem.CustomField.
De prijsstellingsprocedure detecteert automatisch of een specifieke regel detailgegevens heeft en schrijft naar SalesTransactionItemDetail.CustomField als deze bestaan. Anders wordt er geschreven naar SalesTransactionItem.CustomField.
Tijdens nieuwe verkooptransacties wordt CustomField voor SalesTransactionItem ingevuld. Voor ARC-scenario's met detailregels wordt de detailregel geschreven naar CustomField op SalesTransactionItemDetail. Als er geen detailregels worden gemaakt voor ARC, is de detailregel dat deze wordt geschreven naar CustomField voor SalesTransactionItem.
-
Als u aangepaste velden wilt schrijven voor QuoteLineItem of OrderProducts met detailregels, voltooit u deze aanvullende set-up met procedureplannen en Apex klassen.
- Schakel een procedureplan in. Zoek en selecteer in Set-up Omzetinstellingen en schakel de instelling Afstemming van procedureplan voor prijsstelling in.
- Maak een procedureplan voor de offerte en order.
- Controleer in het procedureplan of alle stappen het element MapLineItem bevatten. Wijzig de toewijzingen op basis van de velden die worden gebruikt in de prijsstellingsprocedure.
- Gebruik dit voorbeeld van ApexCustomFieldHandler Apex klasse, dat u kunt uitbreiden om indien nodig meerdere aangepaste velden bij te werken. Deze klasse voert een query uit op de knooppunten SalesTransactionItem en SalesTransactionItemDetail, extraheert aangepaste veldwaarden uit detailitems en werkt vervolgens de overeenkomende aangepaste velden voor SalesTransactionItem bij.
global class ApexCustomFieldHandler implements RevSignaling.SignalingApexProcessor {
public virtual class BaseException extends Exception {}
public class OtherException extends BaseException {}
public RevSignaling.TransactionResponse execute(RevSignaling.TransactionRequest request) {
String contextId = request.ctxInstanceId;
Context.IndustriesContext industriesContext = new Context.IndustriesContext();
// STEP 2 - Query SalesTransactionItem nodes
Map<String, Object> inputQueryItem = new Map<String, Object>{
'contextId' => contextId,
'tags' => new List<String>{ 'SalesTransactionItem', 'SalesTransactionItemDetail' }
};
Map<String, Object> itemQueryOutput = industriesContext.queryTags(inputQueryItem);
Map<String, Object> itemQueryResult = (Map<String, Object>) itemQueryOutput.get('queryResult');
List<Object> itemData = (List<Object>) itemQueryResult.get('SalesTransactionItem');
List<Object> itemDetailData = (List<Object>) itemQueryResult.get('SalesTransactionItemDetail');
Map<String, String> salesTransactionItemIdToCustomAggregatedValue = new Map<String, String>();
// STEP 3 - Custom Field Value from SalesTransactionItemDetail
for(Object itemDetailObj : itemDetailData) {
Map<String, Object> itemDetailNode = (Map<String, Object>) itemDetailObj;
Map<String, Object> detailTagMap = (Map<String, Object>) itemDetailNode.get('tagValue');
String lineItemId = (String)((Map<String, Object>) detailTagMap.get('SalesTrxnItemDetailParent')).get('tagValue');
String cfValue = (String)((Map<String, Object>) detailTagMap.get('STID_TenantName__c')).get('tagValue');
System.debug('Custom Field Value for Detail Item' + cfValue);
if(cfValue != null) {
salesTransactionItemIdToCustomAggregatedValue.put(lineItemId, cfValue);
}
}
// STEP 4 - Build update list
List<Map<String, Object>> itemNodeUpdates = new List<Map<String, Object>>();
for (Object itemObj : itemData) {
Map<String, Object> itemNode = (Map<String, Object>) itemObj;
Map<String, Object> tagMap = (Map<String, Object>) itemNode.get('tagValue');
String lineItemId = (String)((Map<String, Object>) tagMap.get('LineItem')).get('tagValue');
List<Object> dataPath = (List<Object>) itemNode.get('dataPath');
dataPath.remove(0); // Remove contextId
itemNodeUpdates.add(new Map<String, Object>{
'nodePath' => new Map<String, Object>{ 'dataPath' => dataPath },
'attributes' => new List<Object>{
new Map<String, Object>{
'attributeName' => 'STI_TenantName__c',
'attributeValue' => salesTransactionItemIdToCustomAggregatedValue.get(lineItemId)
}
}
});
}
// STEP 5 - Create collection context update
if (!itemNodeUpdates.isEmpty()) {
Map<String, Object> updateInput = new Map<String, Object>{
'contextId' => contextId,
'nodePathAndAttributes' => itemNodeUpdates
};
//Step 6 - Update context
System.debug('--- PREHOOK: SUBMITTING CONTEXT UPDATE ---');
System.debug(JSON.serializePretty(updateInput));
industriesContext.updateContextAttributes(updateInput);
}
RevSignaling.TransactionResponse response = new RevSignaling.TransactionResponse();
response.status = RevSignaling.TransactionStatus.SUCCESS;
return response;
}
}

