我正在创建OrderItem
记录,并得到错误和交叉引用身份:
原因-nsert失败。第1行的第一个例外;第一个错误:INVALID_CROSS_REFERENCE_KEY,无效的交叉引用ID:
此参考资料有帮助吗?
public class OrderItemCreate {
public static void createOrderLine() {
List<PriceBookEntry> priceBookList = new List<PriceBookEntry> ([SELECT Id, Pricebook2Id FROM PriceBookEntry]);
Set<Id> priceBookSet = new Set<Id>();
for (PriceBookEntry pb: priceBookList) {
priceBookSet.add(pb.Pricebook2Id);
}
List<OrderItem> orderItemList = new List<OrderItem>();
List<Order> orderList = new List< Order>([SELECT id FROM Order WHERE PriceBook2Id IN: priceBookSet]);
for (Integer i = 1; i <= 5; i++) {
OrderItem temp = new OrderItem();
temp.PricebookEntryId = priceBookList.get(Math.mod(i, 2)).id;
temp.OrderId = orderList.get(Math.mod(i, 2)).Id;
temp.UnitPrice = 100;
temp.Quantity = 1;
orderItemList.add(temp);
}
if (orderItemList.size() > 0)
insert orderItemList;
}
}
答案 0 :(得分:0)
此行: temp.PricebookEntryId = priceBookList.get(Math.mod(i,2))。id;
应为: temp.PricebookEntryId = priceBookSet.get(Math.mod(i,2))。id;
您正试图将PriceBookEntry id放入PriceBookId字段中。
我建议您将变量PriceBookList重命名为PriceBookEntryList。