pub struct Invoices { /* private fields */ }Expand description
Invoice operations for billing and accounts receivable
Implementations§
Source§impl Invoices
impl Invoices
Sourcepub fn create(&self, input: CreateInvoice) -> Result<Invoice>
pub fn create(&self, input: CreateInvoice) -> Result<Invoice>
Create a new invoice
§Example
use stateset_embedded::{Commerce, CreateInvoice, CreateInvoiceItem, InvoiceType};
use rust_decimal_macros::dec;
use uuid::Uuid;
let commerce = Commerce::new("./store.db")?;
let invoice = commerce.invoices().create(CreateInvoice {
customer_id: Uuid::new_v4().into(),
invoice_type: Some(InvoiceType::Standard),
billing_email: Some("billing@company.com".into()),
billing_name: Some("Acme Corp".into()),
items: vec![
CreateInvoiceItem {
description: "Consulting - November".into(),
quantity: dec!(40),
unit_price: dec!(200.00),
..Default::default()
},
CreateInvoiceItem {
description: "Software License".into(),
quantity: dec!(1),
unit_price: dec!(500.00),
..Default::default()
},
],
notes: Some("Payment due within 30 days".into()),
..Default::default()
})?;Sourcepub fn get_by_number(&self, invoice_number: &str) -> Result<Option<Invoice>>
pub fn get_by_number(&self, invoice_number: &str) -> Result<Option<Invoice>>
Get an invoice by invoice number (e.g., “INV-20231215123456”)
Sourcepub fn list(&self, filter: InvoiceFilter) -> Result<Vec<Invoice>>
pub fn list(&self, filter: InvoiceFilter) -> Result<Vec<Invoice>>
List invoices with optional filtering
Sourcepub fn for_customer(&self, customer_id: Uuid) -> Result<Vec<Invoice>>
pub fn for_customer(&self, customer_id: Uuid) -> Result<Vec<Invoice>>
Get all invoices for a customer
Sourcepub fn mark_viewed(&self, id: Uuid) -> Result<Invoice>
pub fn mark_viewed(&self, id: Uuid) -> Result<Invoice>
Mark invoice as viewed by customer
Sourcepub fn add_item(
&self,
invoice_id: Uuid,
item: CreateInvoiceItem,
) -> Result<InvoiceItem>
pub fn add_item( &self, invoice_id: Uuid, item: CreateInvoiceItem, ) -> Result<InvoiceItem>
Add an item to an invoice
Sourcepub fn update_item(
&self,
item_id: Uuid,
input: CreateInvoiceItem,
) -> Result<InvoiceItem>
pub fn update_item( &self, item_id: Uuid, input: CreateInvoiceItem, ) -> Result<InvoiceItem>
Update a line item
Sourcepub fn remove_item(&self, item_id: Uuid) -> Result<()>
pub fn remove_item(&self, item_id: Uuid) -> Result<()>
Remove an item from an invoice
Sourcepub fn record_payment(
&self,
id: Uuid,
payment: RecordInvoicePayment,
) -> Result<Invoice>
pub fn record_payment( &self, id: Uuid, payment: RecordInvoicePayment, ) -> Result<Invoice>
Record a payment against an invoice
§Example
use stateset_embedded::{Commerce, RecordInvoicePayment};
use rust_decimal_macros::dec;
use uuid::Uuid;
let commerce = Commerce::new("./store.db")?;
// Record full payment
let invoice = commerce.invoices().record_payment(Uuid::new_v4(), RecordInvoicePayment {
amount: dec!(1500.00),
payment_method: Some("wire_transfer".into()),
reference: Some("Wire ref: 123456789".into()),
notes: Some("Paid in full".into()),
..Default::default()
})?;
// Record partial payment
let invoice = commerce.invoices().record_payment(Uuid::new_v4(), RecordInvoicePayment {
amount: dec!(500.00),
payment_method: Some("check".into()),
reference: Some("Check #1234".into()),
..Default::default()
})?;Sourcepub fn get_overdue(&self) -> Result<Vec<Invoice>>
pub fn get_overdue(&self) -> Result<Vec<Invoice>>
Get all overdue invoices
Returns invoices that are past their due date and not fully paid.
Sourcepub fn recalculate(&self, id: Uuid) -> Result<Invoice>
pub fn recalculate(&self, id: Uuid) -> Result<Invoice>
Recalculate invoice totals
Use this after modifying line items to update subtotal, tax, and total.
Sourcepub fn count(&self, filter: InvoiceFilter) -> Result<u64>
pub fn count(&self, filter: InvoiceFilter) -> Result<u64>
Count invoices matching a filter
Sourcepub fn customer_balance(&self, customer_id: Uuid) -> Result<Decimal>
pub fn customer_balance(&self, customer_id: Uuid) -> Result<Decimal>
Get the total outstanding balance for a customer
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for Invoices
impl !UnwindSafe for Invoices
impl Freeze for Invoices
impl Send for Invoices
impl Sync for Invoices
impl Unpin for Invoices
impl UnsafeUnpin for Invoices
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