pub struct Bom { /* private fields */ }Expand description
Bill of Materials operations.
Access via commerce.bom().
§Example
use stateset_embedded::{Commerce, CreateBom, CreateBomComponent, ProductId};
use rust_decimal_macros::dec;
let commerce = Commerce::new("./store.db")?;
// Create a BOM
let bom = commerce.bom().create(CreateBom {
product_id: ProductId::new(),
name: "Widget Assembly".into(),
description: Some("Assembly instructions for widget".into()),
components: Some(vec![
CreateBomComponent {
name: "Screw M3x10".into(),
component_sku: Some("SCREW-M3-10".into()),
quantity: dec!(4),
..Default::default()
},
]),
..Default::default()
})?;Implementations§
Source§impl Bom
impl Bom
Sourcepub fn create(&self, input: CreateBom) -> Result<BillOfMaterials>
pub fn create(&self, input: CreateBom) -> Result<BillOfMaterials>
Create a new Bill of Materials.
§Example
use stateset_embedded::{Commerce, CreateBom, CreateBomComponent, ProductId};
use rust_decimal_macros::dec;
let commerce = Commerce::new(":memory:")?;
let bom = commerce.bom().create(CreateBom {
product_id: ProductId::new(),
name: "Widget Assembly".into(),
components: Some(vec![
CreateBomComponent {
name: "Part A".into(),
quantity: dec!(2),
..Default::default()
},
]),
..Default::default()
})?;Sourcepub fn get_by_number(&self, bom_number: &str) -> Result<Option<BillOfMaterials>>
pub fn get_by_number(&self, bom_number: &str) -> Result<Option<BillOfMaterials>>
Get a BOM by its BOM number.
Sourcepub fn list(&self, filter: BomFilter) -> Result<Vec<BillOfMaterials>>
pub fn list(&self, filter: BomFilter) -> Result<Vec<BillOfMaterials>>
List BOMs with optional filter.
Sourcepub fn add_component(
&self,
bom_id: Uuid,
component: CreateBomComponent,
) -> Result<BomComponent>
pub fn add_component( &self, bom_id: Uuid, component: CreateBomComponent, ) -> Result<BomComponent>
Add a component to a BOM.
§Example
use stateset_embedded::{Commerce, CreateBomComponent};
use rust_decimal_macros::dec;
use uuid::Uuid;
let commerce = Commerce::new(":memory:")?;
let bom_id = Uuid::new_v4(); // Existing BOM ID
let component = commerce.bom().add_component(bom_id, CreateBomComponent {
name: "Resistor 10K".into(),
component_sku: Some("RES-10K".into()),
quantity: dec!(4),
position: Some("R1, R2, R3, R4".into()),
..Default::default()
})?;Sourcepub fn update_component(
&self,
component_id: Uuid,
component: CreateBomComponent,
) -> Result<BomComponent>
pub fn update_component( &self, component_id: Uuid, component: CreateBomComponent, ) -> Result<BomComponent>
Update a component in a BOM.
Sourcepub fn remove_component(&self, component_id: Uuid) -> Result<()>
pub fn remove_component(&self, component_id: Uuid) -> Result<()>
Remove a component from a BOM.
Sourcepub fn get_components(&self, bom_id: Uuid) -> Result<Vec<BomComponent>>
pub fn get_components(&self, bom_id: Uuid) -> Result<Vec<BomComponent>>
Get all components for a BOM.
Sourcepub fn activate(&self, id: Uuid) -> Result<BillOfMaterials>
pub fn activate(&self, id: Uuid) -> Result<BillOfMaterials>
Activate a BOM (make it ready for production use).
Changes the BOM status from Draft to Active.
Sourcepub fn for_product(&self, product_id: ProductId) -> Result<Vec<BillOfMaterials>>
pub fn for_product(&self, product_id: ProductId) -> Result<Vec<BillOfMaterials>>
Get BOMs for a specific product.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Bom
impl !UnwindSafe for Bom
impl Freeze for Bom
impl Send for Bom
impl Sync for Bom
impl Unpin for Bom
impl UnsafeUnpin for Bom
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more