This object has several fields that are used only for quantity and revenue schedules (for example, annuities). Schedules are available only for orgs that have enabled the products and schedules features. If these features aren’t enabled, the schedule fields don’t appear in the DescribeSObjectResult, and you can’t query, create, or update the fields.
create(), delete(), describeLayout(), describeSObjects(), getDeleted(), getUpdated(), query(), retrieve(), search(), undelete(), update(), upsert()
When enabling the schedules feature, orgs can decide whether to enable quantity schedules, revenue schedules, or both. In addition, you can use the API to control quantity and revenue scheduling at the product level via the CanUseQuantitySchedule and CanUseRevenueSchedule flags. A value of true for either flag indicates that the product and any OpportunityLineItems can have a schedule of that type. These flags can be set when creating or updating Product2 records.
The remaining schedule fields for this object define default schedules. Default schedule values are used to create an OpportunityLineItemSchedule when an OpportunityLineItem is created for the Product.
The default schedule fields support the following valid values (all fields are also nillable).
Field | Valid Values |
---|---|
RevenueScheduleType | Divide, Repeat |
RevenueInstallmentPeriod | Daily, Weekly, Monthly, Quarterly, Yearly |
NumberOfRevenueInstallments | Integer between 1 to 150, inclusive. |
QuantityScheduleType | Divide, Repeat |
QuantityInstallmentPeriod | Daily, Weekly, Monthly, Quarterly, Yearly |
NumberOfQuantityInstallments | Integer between 1 to 150, inclusive |
When you attempt to set the schedule fields when creating or updating, the API applies cross-field integrity checks. The integrity requirements are:
Any create or update that fails these integrity checks is rejected with an error.
These default schedule fields, as well as CanUseQuantitySchedule and CanUseRevenueSchedule, are restricted picklist fields and are available only if the org has the schedules feature enabled.
Use this object to define the default product information for your org. This object is associated by reference with Pricebook2 objects via PricebookEntry objects. The same product can be represented in different price books as price book entries. In fact, the same product can be represented multiple times (as separate PricebookEntry records) in the same price book with different prices or currencies. A product can only have one price for a given currency within the same price book. To be used in custom price books, all standard prices must be added as price book entries to the standard price book.
This object is defined only for those orgs that have products enabled as a feature. If the org does not have the products feature, this object does not appear in the describeGlobal() call, and you can’t describe or query this object.
If you try to delete a product via the API but there is an opportunity that uses that product, the delete fails. The workaround is to delete the product in the user interface, which gives you an option to archive the product.
On opportunities and opportunity products, the workflow rules, validation rules, and Apex triggers fire when an update to a child opportunity product or schedule causes an update to the parent record. This means your custom application logic is enforced when there are updates to the parent record, ensuring higher data quality and compliance with your organization’s business policies.