pub struct Serials { /* private fields */ }Expand description
Serial number management interface.
Implementations§
Source§impl Serials
impl Serials
Sourcepub fn create(&self, input: CreateSerialNumber) -> Result<SerialNumber>
pub fn create(&self, input: CreateSerialNumber) -> Result<SerialNumber>
Create a serial number.
§Example
use stateset_embedded::{Commerce, CreateSerialNumber};
use chrono::Utc;
let commerce = Commerce::new(":memory:")?;
let serial = commerce.serials().create(CreateSerialNumber {
serial: Some("SN-12345".into()),
sku: "WIDGET-001".into(),
lot_number: Some("LOT-2025-001".into()),
manufactured_at: Some(Utc::now()),
..Default::default()
})?;Sourcepub fn create_bulk(
&self,
input: CreateSerialNumbersBulk,
) -> Result<Vec<SerialNumber>>
pub fn create_bulk( &self, input: CreateSerialNumbersBulk, ) -> Result<Vec<SerialNumber>>
Create multiple serial numbers in bulk.
§Example
use stateset_embedded::{Commerce, CreateSerialNumbersBulk};
let commerce = Commerce::new(":memory:")?;
// Generate 100 serial numbers with prefix
let serials = commerce.serials().create_bulk(CreateSerialNumbersBulk {
sku: "WIDGET-001".into(),
quantity: 100,
prefix: Some("WGT".into()),
lot_number: Some("LOT-2025-001".into()),
..Default::default()
})?;
println!("Created {} serial numbers", serials.len());Sourcepub fn get_by_serial(&self, serial: &str) -> Result<Option<SerialNumber>>
pub fn get_by_serial(&self, serial: &str) -> Result<Option<SerialNumber>>
Get a serial by its serial number string.
§Example
use stateset_embedded::Commerce;
let commerce = Commerce::new(":memory:")?;
if let Some(serial) = commerce.serials().get_by_serial("SN-12345")? {
println!("Serial {} is currently {}", serial.serial, serial.status);
}Sourcepub fn list(&self, filter: SerialFilter) -> Result<Vec<SerialNumber>>
pub fn list(&self, filter: SerialFilter) -> Result<Vec<SerialNumber>>
List serials with optional filtering.
Sourcepub fn update(
&self,
id: Uuid,
input: UpdateSerialNumber,
) -> Result<SerialNumber>
pub fn update( &self, id: Uuid, input: UpdateSerialNumber, ) -> Result<SerialNumber>
Update a serial number.
Sourcepub fn change_status(&self, input: ChangeSerialStatus) -> Result<SerialNumber>
pub fn change_status(&self, input: ChangeSerialStatus) -> Result<SerialNumber>
Change serial status with full tracking.
§Example
use stateset_embedded::{Commerce, ChangeSerialStatus, SerialStatus};
use uuid::Uuid;
let commerce = Commerce::new(":memory:")?;
commerce.serials().change_status(ChangeSerialStatus {
serial_id: Uuid::new_v4(),
new_status: SerialStatus::InService,
reference_type: Some("repair_order".into()),
reference_id: Some(Uuid::new_v4()),
notes: Some("Sent for repair".into()),
..Default::default()
})?;Sourcepub fn mark_sold(
&self,
id: Uuid,
customer_id: Uuid,
order_id: Option<Uuid>,
) -> Result<SerialNumber>
pub fn mark_sold( &self, id: Uuid, customer_id: Uuid, order_id: Option<Uuid>, ) -> Result<SerialNumber>
Mark a serial as sold.
Sourcepub fn mark_shipped(&self, id: Uuid, shipment_id: Uuid) -> Result<SerialNumber>
pub fn mark_shipped(&self, id: Uuid, shipment_id: Uuid) -> Result<SerialNumber>
Mark a serial as shipped.
Sourcepub fn mark_returned(&self, id: Uuid, return_id: Uuid) -> Result<SerialNumber>
pub fn mark_returned(&self, id: Uuid, return_id: Uuid) -> Result<SerialNumber>
Mark a serial as returned.
Sourcepub fn activate(&self, id: Uuid) -> Result<SerialNumber>
pub fn activate(&self, id: Uuid) -> Result<SerialNumber>
Activate a serial (e.g., for warranty start).
Sourcepub fn quarantine(&self, id: Uuid, reason: &str) -> Result<SerialNumber>
pub fn quarantine(&self, id: Uuid, reason: &str) -> Result<SerialNumber>
Quarantine a serial.
Sourcepub fn release_quarantine(&self, id: Uuid) -> Result<SerialNumber>
pub fn release_quarantine(&self, id: Uuid) -> Result<SerialNumber>
Release a serial from quarantine.
Sourcepub fn reserve(&self, input: ReserveSerialNumber) -> Result<SerialReservation>
pub fn reserve(&self, input: ReserveSerialNumber) -> Result<SerialReservation>
Reserve a serial for an order or other purpose.
§Example
use stateset_embedded::{Commerce, ReserveSerialNumber};
use uuid::Uuid;
let commerce = Commerce::new(":memory:")?;
let reservation = commerce.serials().reserve(ReserveSerialNumber {
serial_id: Uuid::new_v4(),
reference_type: "order".into(),
reference_id: Uuid::new_v4(),
reserved_by: Some("sales_user".into()),
expires_in_seconds: Some(3600), // 1 hour
..Default::default()
})?;
println!("Reservation created, expires at {:?}", reservation.expires_at);Sourcepub fn release_reservation(&self, reservation_id: Uuid) -> Result<()>
pub fn release_reservation(&self, reservation_id: Uuid) -> Result<()>
Release a reservation.
Sourcepub fn confirm_reservation(&self, reservation_id: Uuid) -> Result<()>
pub fn confirm_reservation(&self, reservation_id: Uuid) -> Result<()>
Confirm a reservation (finalize the allocation).
Sourcepub fn move_serial(&self, input: MoveSerial) -> Result<SerialNumber>
pub fn move_serial(&self, input: MoveSerial) -> Result<SerialNumber>
Move a serial to a new location.
Sourcepub fn transfer_ownership(
&self,
input: TransferSerialOwnership,
) -> Result<SerialNumber>
pub fn transfer_ownership( &self, input: TransferSerialOwnership, ) -> Result<SerialNumber>
Transfer ownership of a serial.
§Example
use stateset_embedded::{Commerce, TransferSerialOwnership};
use uuid::Uuid;
let commerce = Commerce::new(":memory:")?;
commerce.serials().transfer_ownership(TransferSerialOwnership {
serial_id: Uuid::new_v4(),
new_owner_id: Uuid::new_v4(),
new_owner_type: "customer".into(),
notes: Some("Warranty transfer requested".into()),
..Default::default()
})?;Sourcepub fn get_history(
&self,
serial_id: Uuid,
filter: SerialHistoryFilter,
) -> Result<Vec<SerialHistory>>
pub fn get_history( &self, serial_id: Uuid, filter: SerialHistoryFilter, ) -> Result<Vec<SerialHistory>>
Get serial history.
§Example
use stateset_embedded::{Commerce, SerialHistoryFilter};
use uuid::Uuid;
let commerce = Commerce::new(":memory:")?;
let history = commerce.serials().get_history(
Uuid::new_v4(),
SerialHistoryFilter {
limit: Some(50),
..Default::default()
},
)?;
for event in history {
println!("{}: {} -> {}", event.event_type, event.from_status, event.to_status);
}Sourcepub fn lookup(&self, serial: &str) -> Result<Option<SerialLookupResult>>
pub fn lookup(&self, serial: &str) -> Result<Option<SerialLookupResult>>
Full serial lookup with related data.
Returns the serial along with lot info, warranty status, and recent history.
§Example
use stateset_embedded::Commerce;
let commerce = Commerce::new(":memory:")?;
if let Some(result) = commerce.serials().lookup("SN-12345")? {
println!("Serial: {}", result.serial.serial);
println!("SKU: {}", result.serial.sku);
println!("Status: {}", result.serial.status);
if let Some(warranty) = result.warranty_status {
println!("Warranty active: {}", warranty.is_active);
}
}Sourcepub fn validate(&self, serial: &str) -> Result<SerialValidation>
pub fn validate(&self, serial: &str) -> Result<SerialValidation>
Validate a serial number.
Returns validation info without the full serial data.
Sourcepub fn get_available(&self, sku: &str, limit: u32) -> Result<Vec<SerialNumber>>
pub fn get_available(&self, sku: &str, limit: u32) -> Result<Vec<SerialNumber>>
Get available serials for a SKU.
Sourcepub fn get_for_lot(&self, lot_id: Uuid) -> Result<Vec<SerialNumber>>
pub fn get_for_lot(&self, lot_id: Uuid) -> Result<Vec<SerialNumber>>
Get serials for a lot.
Sourcepub fn get_for_customer(&self, customer_id: Uuid) -> Result<Vec<SerialNumber>>
pub fn get_for_customer(&self, customer_id: Uuid) -> Result<Vec<SerialNumber>>
Get serials owned by a customer.
Sourcepub fn count(&self, filter: SerialFilter) -> Result<u64>
pub fn count(&self, filter: SerialFilter) -> Result<u64>
Count serials matching filter.
Sourcepub fn create_batch(
&self,
inputs: Vec<CreateSerialNumber>,
) -> Result<BatchResult<SerialNumber>>
pub fn create_batch( &self, inputs: Vec<CreateSerialNumber>, ) -> Result<BatchResult<SerialNumber>>
Create multiple serials with partial success handling.
Sourcepub fn get_batch(&self, ids: Vec<Uuid>) -> Result<Vec<SerialNumber>>
pub fn get_batch(&self, ids: Vec<Uuid>) -> Result<Vec<SerialNumber>>
Get multiple serials by ID.
Sourcepub fn get_batch_by_serial(
&self,
serials: Vec<String>,
) -> Result<Vec<SerialNumber>>
pub fn get_batch_by_serial( &self, serials: Vec<String>, ) -> Result<Vec<SerialNumber>>
Get multiple serials by serial string.
Sourcepub fn is_available(&self, serial: &str) -> Result<bool>
pub fn is_available(&self, serial: &str) -> Result<bool>
Check if a serial is available for sale.