use crate::{Amount, Date, DateTime, Debtor, Request, RequestBuilder, Uuid};
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct OutstandingInvoice {
pub action_public_id: String,
pub invoice_number: String,
pub debtor: Debtor,
pub invoice_date: DateTime,
pub due_date: DateTime,
pub invoiced_amount_including_tax: Amount,
pub remaining_amount_including_tax: Amount,
pub period_start: Option<DateTime>,
pub period_end: Option<DateTime>,
pub your_reference: Option<String>,
}
pub fn get_outstanding_invoices(
creditor_id: Uuid,
date: Date,
exclude_invoices_with_period_outside_date: Option<bool>,
only_show_financed_invoices: Option<bool>,
is_period_specific: Option<bool>,
) -> Request<Vec<OutstandingInvoice>> {
RequestBuilder::new(
http::Method::GET,
"/v1/Analysis/AgeAnalysisAccountReceivables/",
)
.path_param(creditor_id)
.query_param("date", date)
.query_param(
"excludeInvoicesWithPeriodOutsideDate",
exclude_invoices_with_period_outside_date.unwrap_or(false),
)
.query_param(
"showOnlyFinancedInvoices",
only_show_financed_invoices.unwrap_or(false),
)
.query_param("isPeriodSpecific", is_period_specific.unwrap_or(false))
.build()
}