pub struct WorkOrders { /* private fields */ }Expand description
Work Order operations.
Access via commerce.work_orders().
§Example
use stateset_embedded::{Commerce, CreateWorkOrder, CreateWorkOrderTask, ProductId};
use rust_decimal_macros::dec;
let commerce = Commerce::new("./store.db")?;
// Create a work order
let wo = commerce.work_orders().create(CreateWorkOrder {
product_id: ProductId::new(),
quantity_to_build: dec!(100),
tasks: Some(vec![
CreateWorkOrderTask {
task_name: "Assembly".into(),
sequence: Some(1),
estimated_hours: Some(dec!(2)),
..Default::default()
},
]),
..Default::default()
})?;
// Start the work order
let wo = commerce.work_orders().start(wo.id)?;
// Complete with quantity
let wo = commerce.work_orders().complete(wo.id, dec!(100))?;Implementations§
Source§impl WorkOrders
impl WorkOrders
Sourcepub fn create(&self, input: CreateWorkOrder) -> Result<WorkOrder>
pub fn create(&self, input: CreateWorkOrder) -> Result<WorkOrder>
Create a new work order.
§Example
use stateset_embedded::{Commerce, CreateWorkOrder, ProductId};
use rust_decimal_macros::dec;
let commerce = Commerce::new(":memory:")?;
let wo = commerce.work_orders().create(CreateWorkOrder {
product_id: ProductId::new(),
quantity_to_build: dec!(50),
notes: Some("Rush order".into()),
..Default::default()
})?;Sourcepub fn get_by_number(
&self,
work_order_number: &str,
) -> Result<Option<WorkOrder>>
pub fn get_by_number( &self, work_order_number: &str, ) -> Result<Option<WorkOrder>>
Get a work order by its work order number.
Sourcepub fn update(&self, id: Uuid, input: UpdateWorkOrder) -> Result<WorkOrder>
pub fn update(&self, id: Uuid, input: UpdateWorkOrder) -> Result<WorkOrder>
Update a work order.
Sourcepub fn list(&self, filter: WorkOrderFilter) -> Result<Vec<WorkOrder>>
pub fn list(&self, filter: WorkOrderFilter) -> Result<Vec<WorkOrder>>
List work orders with optional filter.
Sourcepub fn start(&self, id: Uuid) -> Result<WorkOrder>
pub fn start(&self, id: Uuid) -> Result<WorkOrder>
Start a work order.
Transitions the work order from Planned to InProgress and records the actual start time.
§Example
use stateset_embedded::Commerce;
use uuid::Uuid;
let commerce = Commerce::new(":memory:")?;
let wo_id = Uuid::new_v4(); // Existing work order ID
let wo = commerce.work_orders().start(wo_id)?;
assert_eq!(wo.status.to_string(), "in_progress");Sourcepub fn complete(
&self,
id: Uuid,
quantity_completed: Decimal,
) -> Result<WorkOrder>
pub fn complete( &self, id: Uuid, quantity_completed: Decimal, ) -> Result<WorkOrder>
Complete a work order with the quantity produced.
If the quantity meets or exceeds the target, the order is marked as Completed.
Otherwise, it’s marked as PartiallyCompleted.
§Example
use stateset_embedded::Commerce;
use rust_decimal_macros::dec;
use uuid::Uuid;
let commerce = Commerce::new(":memory:")?;
let wo_id = Uuid::new_v4(); // Existing work order ID
// Complete with full quantity
let wo = commerce.work_orders().complete(wo_id, dec!(100))?;Sourcepub fn add_task(
&self,
work_order_id: Uuid,
task: CreateWorkOrderTask,
) -> Result<WorkOrderTask>
pub fn add_task( &self, work_order_id: Uuid, task: CreateWorkOrderTask, ) -> Result<WorkOrderTask>
Add a task to a work order.
§Example
use stateset_embedded::{Commerce, CreateWorkOrderTask};
use rust_decimal_macros::dec;
use uuid::Uuid;
let commerce = Commerce::new(":memory:")?;
let wo_id = Uuid::new_v4(); // Existing work order ID
let task = commerce.work_orders().add_task(wo_id, CreateWorkOrderTask {
task_name: "Quality Check".into(),
sequence: Some(10),
estimated_hours: Some(dec!(0.5)),
..Default::default()
})?;Sourcepub fn update_task(
&self,
task_id: Uuid,
task: UpdateWorkOrderTask,
) -> Result<WorkOrderTask>
pub fn update_task( &self, task_id: Uuid, task: UpdateWorkOrderTask, ) -> Result<WorkOrderTask>
Update a task.
Sourcepub fn remove_task(&self, task_id: Uuid) -> Result<()>
pub fn remove_task(&self, task_id: Uuid) -> Result<()>
Remove a task from a work order.
Sourcepub fn get_tasks(&self, work_order_id: Uuid) -> Result<Vec<WorkOrderTask>>
pub fn get_tasks(&self, work_order_id: Uuid) -> Result<Vec<WorkOrderTask>>
Get all tasks for a work order.
Sourcepub fn start_task(&self, task_id: Uuid) -> Result<WorkOrderTask>
pub fn start_task(&self, task_id: Uuid) -> Result<WorkOrderTask>
Start a task.
Sourcepub fn complete_task(
&self,
task_id: Uuid,
actual_hours: Option<Decimal>,
) -> Result<WorkOrderTask>
pub fn complete_task( &self, task_id: Uuid, actual_hours: Option<Decimal>, ) -> Result<WorkOrderTask>
Complete a task with optional actual hours.
Sourcepub fn add_material(
&self,
work_order_id: Uuid,
material: AddWorkOrderMaterial,
) -> Result<WorkOrderMaterial>
pub fn add_material( &self, work_order_id: Uuid, material: AddWorkOrderMaterial, ) -> Result<WorkOrderMaterial>
Add material to a work order.
§Example
use stateset_embedded::{Commerce, AddWorkOrderMaterial};
use rust_decimal_macros::dec;
use uuid::Uuid;
let commerce = Commerce::new(":memory:")?;
let wo_id = Uuid::new_v4(); // Existing work order ID
let material = commerce.work_orders().add_material(wo_id, AddWorkOrderMaterial {
component_sku: "SCREW-M3".into(),
component_name: "M3 Screw".into(),
quantity: dec!(200),
..Default::default()
})?;Sourcepub fn consume_material(
&self,
material_id: Uuid,
quantity: Decimal,
) -> Result<WorkOrderMaterial>
pub fn consume_material( &self, material_id: Uuid, quantity: Decimal, ) -> Result<WorkOrderMaterial>
Consume material during production.
Records that a certain quantity of material has been used.
Sourcepub fn get_materials(
&self,
work_order_id: Uuid,
) -> Result<Vec<WorkOrderMaterial>>
pub fn get_materials( &self, work_order_id: Uuid, ) -> Result<Vec<WorkOrderMaterial>>
Get all materials for a work order.
Sourcepub fn count(&self, filter: WorkOrderFilter) -> Result<u64>
pub fn count(&self, filter: WorkOrderFilter) -> Result<u64>
Count work orders matching filter.