pub struct CatalogEngine { /* private fields */ }Expand description
Main Product Catalog Engine
Implementations§
Source§impl CatalogEngine
impl CatalogEngine
Sourcepub fn add_pricing_rule(&mut self, rule: PricingRule)
pub fn add_pricing_rule(&mut self, rule: PricingRule)
Add a pricing rule
Sourcepub fn add_eligibility_rule(&mut self, rule: EligibilityRule)
pub fn add_eligibility_rule(&mut self, rule: EligibilityRule)
Add an eligibility rule
Sourcepub fn add_catalog_rule(&mut self, rule: CatalogRule)
pub fn add_catalog_rule(&mut self, rule: CatalogRule)
Add a catalog rule
Sourcepub fn add_relationship(&mut self, relationship: ProductRelationship)
pub fn add_relationship(&mut self, relationship: ProductRelationship)
Add a product relationship
Sourcepub fn add_complex_pricing_model(
&mut self,
product_offering_id: Uuid,
model: ComplexPricingModel,
)
pub fn add_complex_pricing_model( &mut self, product_offering_id: Uuid, model: ComplexPricingModel, )
Register a complex pricing model for an offering.
Sourcepub fn current_snapshot(&self) -> CatalogSnapshot
pub fn current_snapshot(&self) -> CatalogSnapshot
Snapshot current in-memory catalog content.
Sourcepub fn create_version(
&mut self,
catalog_id: Uuid,
version: String,
description: Option<String>,
created_by: Option<Uuid>,
) -> CatalogVersion
pub fn create_version( &mut self, catalog_id: Uuid, version: String, description: Option<String>, created_by: Option<Uuid>, ) -> CatalogVersion
Create a catalog version from the current engine state.
Sourcepub fn publish_version(&mut self, version_id: Uuid) -> Result<(), String>
pub fn publish_version(&mut self, version_id: Uuid) -> Result<(), String>
Publish a version and load its snapshot into the live engine.
Sourcepub fn rollback_to_version(&mut self, version_id: Uuid) -> Result<(), String>
pub fn rollback_to_version(&mut self, version_id: Uuid) -> Result<(), String>
Rollback to a version (re-publish + load snapshot).
Sourcepub fn versions(&self) -> &VersionManager
pub fn versions(&self) -> &VersionManager
Access the version manager.
Sourcepub fn check_eligibility(
&self,
product_offering_id: Uuid,
context: &EligibilityContext,
) -> bool
pub fn check_eligibility( &self, product_offering_id: Uuid, context: &EligibilityContext, ) -> bool
Check if a product is eligible for a customer
Sourcepub fn explain_eligibility(
&self,
product_offering_id: Uuid,
context: &EligibilityContext,
) -> EligibilityOutcome
pub fn explain_eligibility( &self, product_offering_id: Uuid, context: &EligibilityContext, ) -> EligibilityOutcome
Eligibility with failure reasons across all rules for the offering.
Sourcepub fn calculate_price(
&self,
product_offering_id: Uuid,
context: &PricingContext,
) -> Option<Money>
pub fn calculate_price( &self, product_offering_id: Uuid, context: &PricingContext, ) -> Option<Money>
Calculate price for a product offering (best matching simple rule).
Sourcepub fn qualify_and_price(
&self,
product_offering_id: Uuid,
eligibility: &EligibilityContext,
pricing: &PricingContext,
cart: &[Uuid],
) -> QualifyAndPriceResult
pub fn qualify_and_price( &self, product_offering_id: Uuid, eligibility: &EligibilityContext, pricing: &PricingContext, cart: &[Uuid], ) -> QualifyAndPriceResult
Qualify (eligibility + relationships) and price in one call.
Sourcepub fn validate_bundle_selection(
&self,
bundle_id: Uuid,
selected: &[Uuid],
) -> Result<(), String>
pub fn validate_bundle_selection( &self, bundle_id: Uuid, selected: &[Uuid], ) -> Result<(), String>
Validate a bundle selection against a stored bundle.
Sourcepub fn calculate_bundle_price(
&self,
bundle_id: Uuid,
individual_prices: &[(Uuid, f64)],
) -> Result<f64, String>
pub fn calculate_bundle_price( &self, bundle_id: Uuid, individual_prices: &[(Uuid, f64)], ) -> Result<f64, String>
Calculate price for a named bundle given unit prices.
Sourcepub fn get_bundles_for_product(&self, product_offering_id: Uuid) -> Vec<&Bundle>
pub fn get_bundles_for_product(&self, product_offering_id: Uuid) -> Vec<&Bundle>
Get bundles for a product
Sourcepub fn evaluate_rules(&self, context: &RuleContext) -> Vec<&CatalogRule>
pub fn evaluate_rules(&self, context: &RuleContext) -> Vec<&CatalogRule>
Evaluate catalog rules for a given context