42 lines
1.5 KiB
Rust
42 lines
1.5 KiB
Rust
|
//! The invoice handlers
|
||
|
//!
|
||
|
//! These handlers are for creating and viewing invoices for a specific customer.
|
||
|
|
||
|
use rocket::{get, post, put};
|
||
|
|
||
|
/// Creates a new invoice object for the customer the given ID.
|
||
|
///
|
||
|
/// A unique number is generated for the invoice by taking the year and a sequence number.
|
||
|
///
|
||
|
/// Fixed cost tasks are directly tied to the invoice.
|
||
|
///
|
||
|
/// For a task with an hourly rate, a task copy is created with the select time entries that need
|
||
|
/// to be billed and put in the invoice; the remaining unbilled time entries are left in the
|
||
|
/// original task.
|
||
|
#[post("/<_customer_id>/invoices")]
|
||
|
pub fn create(_customer_id: u32) {
|
||
|
unimplemented!()
|
||
|
}
|
||
|
|
||
|
/// Generates the form to create a new invoice object by listing unbulled fixed cost tasks and
|
||
|
/// unbilled registered time (for tasks with an hourly rate) of the customer with the given ID so
|
||
|
/// that a selection can be made.
|
||
|
#[get("/<_customer_id>/invoices/new")]
|
||
|
pub fn new(_customer_id: u32) {
|
||
|
unimplemented!()
|
||
|
}
|
||
|
|
||
|
/// Shows a form for the invoice with the given number for the customer with the given ID
|
||
|
/// and shows a firm for updating it.
|
||
|
// FIXME: Handle PDF and LaTex generation here too!
|
||
|
#[get("/<_customer_id>/invoices/<_number>", rank = 2)] // Number could be "new"
|
||
|
pub fn show(_customer_id: u32, _number: String) {
|
||
|
unimplemented!()
|
||
|
}
|
||
|
|
||
|
/// Updates the invoices with the given number for the customer with the given ID.
|
||
|
#[put("/<_customer_id>/invoices/<_number>")]
|
||
|
pub fn update(_customer_id: u32, _number: String) {
|
||
|
unimplemented!()
|
||
|
}
|