I’ve created a scratch org, but it’s empty without a price book. I’d like to create it with script/code/CLI so it can be automated. Unless the price book is in place I can’t really add products w price.
1 Answer
Apex:
In Apex, you can create a Price Book (Pricebook2
) and a Product (Product2
) and relate the two records with a Price Book Entry (PricebookEntry
) using the following method:
// Create a Pricebook
Pricebook2 priceBook = new Pricebook2(
Name = 'Example Price Book',
Description = 'This is the Price Book description.',
IsActive = true
);
insert priceBook;
// Create a Product
Product2 product = new Product2(
Name = 'Example Product',
Description = 'This is the Product description.',
ProductCode = 'EX1234',
StockKeepingUnit = 'EX5678',
Family = 'Example Product Family',
QuantityUnitOfMeasure = 'inches',
DisplayUrl = 'https://www.example.com/',
ExternalId = 'ID #1234',
ExternalDataSourceId = '0XCXXXXXXXXXXXXXXX',
IsActive = true
);
insert product;
// Get the Standard Price Book ID
Pricebook2 standardPriceBook = [
SELECT Id
FROM Pricebook2
WHERE isStandard = true
LIMIT 1
];
// Insert the Product in the Standard Price Book (if necessary)
PricebookEntry standardPriceBookEntry = new PricebookEntry(
Pricebook2Id = standardPriceBook.Id,
Product2Id = product.Id,
UnitPrice = 100.00,
UseStandardPrice = false,
IsActive = true
);
insert standardPriceBookEntry;
// Insert the Product in the New Price Book
PricebookEntry priceBookEntry = new PricebookEntry(
Pricebook2Id = priceBook.Id,
Product2Id = product.Id,
UnitPrice = 100.00,
UseStandardPrice = false,
IsActive = true
);
insert priceBookEntry;
SFDX:
If you store the above Apex code in a file (i.e. example.apex), in SFDX, you can run the apex:execute
command to execute the code anonymously to create the Price Book in the org:
sfdx force:apex:execute --apexcodefile ~/example.apex