При создании QuoteLineItems обязательное поле PriceBookEntry отсутствует - PullRequest
0 голосов
/ 25 октября 2019

Я новичок в CPQ и безуспешно пытаюсь создать позицию для цитаты.

Opportunity OpportunityOne = [SELECT Id, PriceBook2Id FROM Opportunity WHERE 
                              Id='0067F000008qOJzQAM' LIMIT 1];
Quote QuoteOne = [SELECT Id FROM Quote WHERE Name =:'TestQuote' LIMIT 1];
                      Product2 Product = [SELECT Id FROM Product2 WHERE Id 
                       =: '01t7F0000032Y89QAE' LIMIT 1];     

System.debug('Opportunity: '+OpportunityOne);
System.debug('Quote:'+QuoteOne);
System.debug('Product2:'+Product);  

QuoteLineItem QuoteLineItemOne = new QuoteLineItem();
QuoteLineItemOne.QuoteId = QuoteOne.Id;
QuoteLineItemOne.Quantity = 100;
QuoteLineItemOne.UnitPrice = 2000;
QuoteLineItemOne.Product2Id = Product.Id;
insert QuoteLineItemOne;

Почему все время говорится, что запись в прайс-листе отсутствует. Это раздражает. Вставить не удалось, и я не вижу объекта, требующего ввода поля в ценовой книге.

Пожалуйста, помогите мне с этим.

1 Ответ

0 голосов
/ 26 октября 2019

Вам нужно будет откатить версию API apex до версии 38 или более ранней , чтобы таким образом создавать строки кавычек (используя поле product2Id). Как вы можете видеть в ссылке на объект начиная с версии 39 и выше, вам необходимо вместо этого заполнить поле pricebookentryId и оставить product2Id пустым. Чтобы получить pricebookEntryId, вам просто потребуется дополнительный запрос, например.

PriceBookEntry pbe = [SELECT id FROM PricebookEntry 
      WHERE Product2Id =: Product.id AND Pricebook2Id =: OpportunityOne.pricebook2Id LIMIT 1];

Затем просто установите поле pricebookentryId на вашем quotelineitem вместо product2Id

...