stateset_embedded/
vendor_returns.rs1use stateset_core::{CreateVendorReturn, Result, VendorReturn, VendorReturnFilter, VendorReturnId};
4use stateset_db::{Database, DatabaseCapability};
5use std::sync::Arc;
6
7pub struct VendorReturns {
9 db: Arc<dyn Database>,
10}
11
12impl std::fmt::Debug for VendorReturns {
13 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14 f.debug_struct("VendorReturns").finish_non_exhaustive()
15 }
16}
17
18impl VendorReturns {
19 pub(crate) fn new(db: Arc<dyn Database>) -> Self {
20 Self { db }
21 }
22
23 #[must_use]
25 pub fn is_supported(&self) -> bool {
26 self.db.supports_capability(DatabaseCapability::VendorReturns)
27 }
28
29 fn ensure(&self) -> Result<()> {
30 self.db.ensure_capability(DatabaseCapability::VendorReturns)
31 }
32
33 pub fn create(&self, input: CreateVendorReturn) -> Result<VendorReturn> {
35 self.ensure()?;
36 self.db.vendor_returns().create(input)
37 }
38
39 pub fn get(&self, id: VendorReturnId) -> Result<Option<VendorReturn>> {
41 self.ensure()?;
42 self.db.vendor_returns().get(id)
43 }
44
45 pub fn list(&self, filter: VendorReturnFilter) -> Result<Vec<VendorReturn>> {
47 self.ensure()?;
48 self.db.vendor_returns().list(filter)
49 }
50
51 pub fn submit(&self, id: VendorReturnId) -> Result<VendorReturn> {
53 self.ensure()?;
54 self.db.vendor_returns().submit(id)
55 }
56
57 pub fn process(&self, id: VendorReturnId, generate_credit: bool) -> Result<VendorReturn> {
59 self.ensure()?;
60 self.db.vendor_returns().process(id, generate_credit)
61 }
62
63 pub fn cancel(&self, id: VendorReturnId) -> Result<VendorReturn> {
65 self.ensure()?;
66 self.db.vendor_returns().cancel(id)
67 }
68}