我正在创建OrderItem
记录并获取错误,交叉引用标识:
原因 - 插入失败。第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;
}
}
这一行:temp.PricebookEntryId = priceBookList.get(Math.mod(i,2))。id;
应该是:temp.PricebookEntryId = priceBookSet.get(Math.mod(i,2))。id;
您试图将PriceBookEntry标识放入PriceBookId字段。
我建议你将变量PriceBookList重命名为PriceBookEntryList。