1use reqwest;
13
14use crate::apis::ResponseContent;
15use super::{Error, configuration};
16
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum CreateInvoiceError {
22 Status400(crate::models::BadRequestError),
23 Status401(crate::models::UnauthorizedError),
24 Status403(crate::models::ForbiddenError),
25 Status404(crate::models::BadRequestNotFoundError),
26 Status500(crate::models::InternalServerError),
27 UnknownValue(serde_json::Value),
28}
29
30#[derive(Debug, Clone, Serialize, Deserialize)]
32#[serde(untagged)]
33pub enum DestroyInvoiceError {
34 Status400(crate::models::BadRequestError),
35 Status401(crate::models::UnauthorizedError),
36 Status403(crate::models::ForbiddenError),
37 Status404(crate::models::BadRequestNotFoundError),
38 Status500(crate::models::InternalServerError),
39 UnknownValue(serde_json::Value),
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
44#[serde(untagged)]
45pub enum GetInvoiceError {
46 Status400(crate::models::BadRequestError),
47 Status401(crate::models::UnauthorizedError),
48 Status403(crate::models::ForbiddenError),
49 Status404(crate::models::BadRequestNotFoundError),
50 Status500(crate::models::InternalServerError),
51 UnknownValue(serde_json::Value),
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
56#[serde(untagged)]
57pub enum GetInvoicesError {
58 Status400(crate::models::BadRequestError),
59 Status401(crate::models::UnauthorizedError),
60 Status403(crate::models::ForbiddenError),
61 Status404(crate::models::BadRequestNotFoundError),
62 Status500(crate::models::InternalServerError),
63 UnknownValue(serde_json::Value),
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize)]
68#[serde(untagged)]
69pub enum UpdateInvoiceError {
70 Status400(crate::models::BadRequestError),
71 Status401(crate::models::UnauthorizedError),
72 Status403(crate::models::ForbiddenError),
73 Status404(crate::models::BadRequestNotFoundError),
74 Status500(crate::models::InternalServerError),
75 UnknownValue(serde_json::Value),
76}
77
78
79pub async fn create_invoice(configuration: &configuration::Configuration, invoice_create_params: Option<crate::models::InvoiceCreateParams>) -> Result<crate::models::InvoiceResponse, Error<CreateInvoiceError>> {
81 let local_var_configuration = configuration;
82
83 let local_var_client = &local_var_configuration.client;
84
85 let local_var_uri_str = format!("{}/api/1/invoices", local_var_configuration.base_path);
86 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
87
88 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
89 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
90 }
91 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
92 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
93 };
94 local_var_req_builder = local_var_req_builder.json(&invoice_create_params);
95
96 let local_var_req = local_var_req_builder.build()?;
97 let local_var_resp = local_var_client.execute(local_var_req).await?;
98
99 let local_var_status = local_var_resp.status();
100 let local_var_content = local_var_resp.text().await?;
101
102 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
103 serde_json::from_str(&local_var_content).map_err(Error::from)
104 } else {
105 let local_var_entity: Option<CreateInvoiceError> = serde_json::from_str(&local_var_content).ok();
106 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
107 Err(Error::ResponseError(local_var_error))
108 }
109}
110
111pub async fn destroy_invoice(configuration: &configuration::Configuration, id: i32, company_id: i32) -> Result<(), Error<DestroyInvoiceError>> {
113 let local_var_configuration = configuration;
114
115 let local_var_client = &local_var_configuration.client;
116
117 let local_var_uri_str = format!("{}/api/1/invoices/{id}", local_var_configuration.base_path, id=id);
118 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
119
120 local_var_req_builder = local_var_req_builder.query(&[("company_id", &company_id.to_string())]);
121 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
122 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
123 }
124 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
125 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
126 };
127
128 let local_var_req = local_var_req_builder.build()?;
129 let local_var_resp = local_var_client.execute(local_var_req).await?;
130
131 let local_var_status = local_var_resp.status();
132 let local_var_content = local_var_resp.text().await?;
133
134 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
135 Ok(())
136 } else {
137 let local_var_entity: Option<DestroyInvoiceError> = serde_json::from_str(&local_var_content).ok();
138 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
139 Err(Error::ResponseError(local_var_error))
140 }
141}
142
143pub async fn get_invoice(configuration: &configuration::Configuration, company_id: i32, id: i32) -> Result<crate::models::InvoiceResponse, Error<GetInvoiceError>> {
145 let local_var_configuration = configuration;
146
147 let local_var_client = &local_var_configuration.client;
148
149 let local_var_uri_str = format!("{}/api/1/invoices/{id}", local_var_configuration.base_path, id=id);
150 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
151
152 local_var_req_builder = local_var_req_builder.query(&[("company_id", &company_id.to_string())]);
153 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
154 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
155 }
156 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
157 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
158 };
159
160 let local_var_req = local_var_req_builder.build()?;
161 let local_var_resp = local_var_client.execute(local_var_req).await?;
162
163 let local_var_status = local_var_resp.status();
164 let local_var_content = local_var_resp.text().await?;
165
166 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
167 serde_json::from_str(&local_var_content).map_err(Error::from)
168 } else {
169 let local_var_entity: Option<GetInvoiceError> = serde_json::from_str(&local_var_content).ok();
170 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
171 Err(Error::ResponseError(local_var_error))
172 }
173}
174
175pub async fn get_invoices(configuration: &configuration::Configuration, company_id: i32, partner_id: Option<i32>, partner_code: Option<&str>, start_issue_date: Option<&str>, end_issue_date: Option<&str>, start_due_date: Option<&str>, end_due_date: Option<&str>, invoice_number: Option<&str>, description: Option<&str>, invoice_status: Option<&str>, payment_status: Option<&str>, offset: Option<i64>, limit: Option<i32>) -> Result<crate::models::InvoiceIndexResponse, Error<GetInvoicesError>> {
177 let local_var_configuration = configuration;
178
179 let local_var_client = &local_var_configuration.client;
180
181 let local_var_uri_str = format!("{}/api/1/invoices", local_var_configuration.base_path);
182 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
183
184 local_var_req_builder = local_var_req_builder.query(&[("company_id", &company_id.to_string())]);
185 if let Some(ref local_var_str) = partner_id {
186 local_var_req_builder = local_var_req_builder.query(&[("partner_id", &local_var_str.to_string())]);
187 }
188 if let Some(ref local_var_str) = partner_code {
189 local_var_req_builder = local_var_req_builder.query(&[("partner_code", &local_var_str.to_string())]);
190 }
191 if let Some(ref local_var_str) = start_issue_date {
192 local_var_req_builder = local_var_req_builder.query(&[("start_issue_date", &local_var_str.to_string())]);
193 }
194 if let Some(ref local_var_str) = end_issue_date {
195 local_var_req_builder = local_var_req_builder.query(&[("end_issue_date", &local_var_str.to_string())]);
196 }
197 if let Some(ref local_var_str) = start_due_date {
198 local_var_req_builder = local_var_req_builder.query(&[("start_due_date", &local_var_str.to_string())]);
199 }
200 if let Some(ref local_var_str) = end_due_date {
201 local_var_req_builder = local_var_req_builder.query(&[("end_due_date", &local_var_str.to_string())]);
202 }
203 if let Some(ref local_var_str) = invoice_number {
204 local_var_req_builder = local_var_req_builder.query(&[("invoice_number", &local_var_str.to_string())]);
205 }
206 if let Some(ref local_var_str) = description {
207 local_var_req_builder = local_var_req_builder.query(&[("description", &local_var_str.to_string())]);
208 }
209 if let Some(ref local_var_str) = invoice_status {
210 local_var_req_builder = local_var_req_builder.query(&[("invoice_status", &local_var_str.to_string())]);
211 }
212 if let Some(ref local_var_str) = payment_status {
213 local_var_req_builder = local_var_req_builder.query(&[("payment_status", &local_var_str.to_string())]);
214 }
215 if let Some(ref local_var_str) = offset {
216 local_var_req_builder = local_var_req_builder.query(&[("offset", &local_var_str.to_string())]);
217 }
218 if let Some(ref local_var_str) = limit {
219 local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
220 }
221 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
222 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
223 }
224 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
225 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
226 };
227
228 let local_var_req = local_var_req_builder.build()?;
229 let local_var_resp = local_var_client.execute(local_var_req).await?;
230
231 let local_var_status = local_var_resp.status();
232 let local_var_content = local_var_resp.text().await?;
233
234 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
235 serde_json::from_str(&local_var_content).map_err(Error::from)
236 } else {
237 let local_var_entity: Option<GetInvoicesError> = serde_json::from_str(&local_var_content).ok();
238 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
239 Err(Error::ResponseError(local_var_error))
240 }
241}
242
243pub async fn update_invoice(configuration: &configuration::Configuration, id: i32, invoice_update_params: Option<crate::models::InvoiceUpdateParams>) -> Result<crate::models::InvoiceResponse, Error<UpdateInvoiceError>> {
245 let local_var_configuration = configuration;
246
247 let local_var_client = &local_var_configuration.client;
248
249 let local_var_uri_str = format!("{}/api/1/invoices/{id}", local_var_configuration.base_path, id=id);
250 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
251
252 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
253 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
254 }
255 if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
256 local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
257 };
258 local_var_req_builder = local_var_req_builder.json(&invoice_update_params);
259
260 let local_var_req = local_var_req_builder.build()?;
261 let local_var_resp = local_var_client.execute(local_var_req).await?;
262
263 let local_var_status = local_var_resp.status();
264 let local_var_content = local_var_resp.text().await?;
265
266 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
267 serde_json::from_str(&local_var_content).map_err(Error::from)
268 } else {
269 let local_var_entity: Option<UpdateInvoiceError> = serde_json::from_str(&local_var_content).ok();
270 let local_var_error = ResponseContent { status: local_var_status, content: local_var_content, entity: local_var_entity };
271 Err(Error::ResponseError(local_var_error))
272 }
273}
274