square_ox/builder/
implementations.rs1use super::*;
2use crate::objects::{TimeRange, DeviceCheckoutOptions, Money, Order, OrderLineItem, OrderServiceCharge, SearchOrdersFilter, SearchOrdersQuery, SearchOrdersSort, TerminalCheckoutQuery, TerminalCheckoutQueryFilter, TerminalCheckoutQuerySort, TerminalRefundQuery, TerminalRefundQueryFilter, TipSettings, InventoryChange, InventoryPhysicalCount, InventoryAdjustment, InventoryTransfer};
3use crate::objects::enums::{InventoryChangeType, OrderServiceChargeCalculationPhase, SearchOrdersSortField, SortOrder, TerminalCheckoutStatus};
4
5impl Validate for SearchOrdersQuery {
9 fn validate(self) -> Result<Self, ValidationError> {
10 Ok(self)
11 }
12}
13
14impl<T: ParentBuilder> Builder<SearchOrdersQuery, T> {
15 pub fn filter(mut self, filter: SearchOrdersFilter) -> Self {
16 self.body.filter = Some(filter);
17
18 self
19 }
20
21 pub fn sort_ascending(mut self) -> Self {
22 match self.body.sort.as_mut() {
23 Some(sort) => sort.sort_order= Some(SortOrder::Asc),
24 None => self.body.sort = Some(SearchOrdersSort {
25 sort_field: Some(SearchOrdersSortField::CreatedAt),
26 sort_order: Some(SortOrder::Asc),
27 })
28 }
29
30 self
31 }
32
33 pub fn sort_descending(mut self) -> Self {
34 match self.body.sort.as_mut() {
35 Some(sort) => sort.sort_order= Some(SortOrder::Desc),
36 None => self.body.sort = Some(SearchOrdersSort {
37 sort_field: Some(SearchOrdersSortField::CreatedAt),
38 sort_order: Some(SortOrder::Desc),
39 })
40 }
41
42 self
43 }
44
45 pub fn sort_field(mut self, sort_field: SearchOrdersSortField) -> Self {
46 match self.body.sort.as_mut() {
47 Some(sort) => sort.sort_field = Some(sort_field),
48 None => self.body.sort = Some(SearchOrdersSort {
49 sort_field: Some(sort_field),
50 sort_order: None,
51 })
52 }
53
54 self
55 }
56}
57impl Validate for DeviceCheckoutOptions {
128 fn validate(self) -> Result<Self, ValidationError> where Self: Sized {
129 if self.device_id.is_some() {
130 Ok(self)
131 } else {
132 Err(ValidationError)
133 }
134 }
135}
136
137impl<T: ParentBuilder> Builder<DeviceCheckoutOptions, T> {
138 pub fn device_id(mut self, device_id: String) -> Self {
139 self.body.device_id = Some(device_id);
140
141 self
142 }
143
144 pub fn collect_signature(mut self) -> Self {
145 self.body.collect_signature = Some(true);
146
147 self
148 }
149
150 pub fn show_itemized_cart(mut self) -> Self {
151 self.body.show_itemized_cart = Some(true);
152
153 self
154 }
155
156 pub fn skip_receipt_screen(mut self) -> Self {
157 self.body.skip_receipt_screen = Some(true);
158
159 self
160 }
161
162 pub fn tip_settings(mut self, tip_settings: TipSettings) -> Self {
163 self.body.tip_settings = Some(tip_settings);
164
165 self
166 }
167}
168
169impl Validate for TerminalCheckoutQuery {
173 fn validate(self) -> Result<Self, ValidationError> where Self: Sized {
174 Ok(self)
175 }
176}
177
178impl<T: ParentBuilder> Builder<TerminalCheckoutQuery, T> {
179 pub fn sort_ascending(mut self) -> Self {
180 self.body.sort = Some(TerminalCheckoutQuerySort { sort_order: Some(SortOrder::Asc) });
181
182 self
183 }
184
185 pub fn sort_descending(mut self) -> Self {
186 self.body.sort = Some(TerminalCheckoutQuerySort { sort_order: Some(SortOrder::Desc) });
187
188 self
189 }
190
191 pub fn created_at(mut self, created_at: TimeRange) -> Self {
192 if let Some(filter) = self.body.filter.as_mut() {
193 filter.created_at = Some(created_at);
194 } else {
195 self.body.filter = Some(TerminalCheckoutQueryFilter {
196 created_at: Some(created_at),
197 device_id: None,
198 status: None
199 })
200 };
201
202 self
203 }
204
205 pub fn device_id(mut self, device_id: String) -> Self {
206 if let Some(filter) = self.body.filter.as_mut() {
207 filter.device_id = Some(device_id);
208 } else {
209 self.body.filter = Some(TerminalCheckoutQueryFilter {
210 created_at: None,
211 device_id: Some(device_id),
212 status: None
213 })
214 };
215
216 self
217 }
218
219 pub fn status(mut self, status: TerminalCheckoutStatus) -> Self {
220 if let Some(filter) = self.body.filter.as_mut() {
221 filter.status = Some(status);
222 } else {
223 self.body.filter = Some(TerminalCheckoutQueryFilter {
224 created_at: None,
225 device_id: None,
226 status: Some(status)
227 })
228 };
229
230 self
231 }
232}
233
234impl Validate for TerminalRefundQuery {
238 fn validate(self) -> Result<Self, ValidationError> where Self: Sized {
239 Ok(self)
240 }
241}
242
243impl<T: ParentBuilder> Builder<TerminalRefundQuery, T> {
244 pub fn created_at(mut self, created_at: TimeRange) -> Self {
245 if let Some(filter) = self.body.filter.as_mut() {
246 filter.created_at = Some(created_at)
247 } else {
248 self.body.filter = Some(TerminalRefundQueryFilter {
249 created_at: Some(created_at),
250 device_id: None,
251 status: None
252 })
253 }
254
255 self
256 }
257
258 pub fn device_id(mut self, device_id: String) -> Self {
259 if let Some(filter) = self.body.filter.as_mut() {
260 filter.device_id = Some(device_id)
261 } else {
262 self.body.filter = Some(TerminalRefundQueryFilter {
263 created_at: None,
264 device_id: Some(device_id),
265 status: None
266 })
267 }
268
269 self
270 }
271
272 pub fn pending(mut self) -> Self {
273 if let Some(filter) = self.body.filter.as_mut() {
274 filter.status = Some(TerminalCheckoutStatus::Pending)
275 } else {
276 self.body.filter = Some(TerminalRefundQueryFilter {
277 created_at: None,
278 device_id: None,
279 status: Some(TerminalCheckoutStatus::Pending)
280 })
281 }
282
283 self
284 }
285
286 pub fn in_progress(mut self) -> Self {
287 if let Some(filter) = self.body.filter.as_mut() {
288 filter.status = Some(TerminalCheckoutStatus::InProgress)
289 } else {
290 self.body.filter = Some(TerminalRefundQueryFilter {
291 created_at: None,
292 device_id: None,
293 status: Some(TerminalCheckoutStatus::InProgress)
294 })
295 }
296
297 self
298 }
299
300 pub fn cancel_requested(mut self) -> Self {
301 if let Some(filter) = self.body.filter.as_mut() {
302 filter.status = Some(TerminalCheckoutStatus::CancelRequested)
303 } else {
304 self.body.filter = Some(TerminalRefundQueryFilter {
305 created_at: None,
306 device_id: None,
307 status: Some(TerminalCheckoutStatus::CancelRequested)
308 })
309 }
310
311 self
312 }
313
314 pub fn canceled(mut self) -> Self {
315 if let Some(filter) = self.body.filter.as_mut() {
316 filter.status = Some(TerminalCheckoutStatus::Canceled)
317 } else {
318 self.body.filter = Some(TerminalRefundQueryFilter {
319 created_at: None,
320 device_id: None,
321 status: Some(TerminalCheckoutStatus::Canceled)
322 })
323 }
324
325 self
326 }
327
328 pub fn completed(mut self) -> Self {
329 if let Some(filter) = self.body.filter.as_mut() {
330 filter.status = Some(TerminalCheckoutStatus::Completed)
331 } else {
332 self.body.filter = Some(TerminalRefundQueryFilter {
333 created_at: None,
334 device_id: None,
335 status: Some(TerminalCheckoutStatus::Completed)
336 })
337 }
338
339 self
340 }
341
342 pub fn sort_ascending(mut self) -> Self {
343 self.body.sort = Some(TerminalCheckoutQuerySort{ sort_order: Some(SortOrder::Asc) });
344
345 self
346 }
347
348 pub fn sort_descending(mut self) -> Self {
349 self.body.sort = Some(TerminalCheckoutQuerySort{ sort_order: Some(SortOrder::Desc) });
350
351 self
352 }
353}
354
355impl Validate for InventoryChange {
359 fn validate(self) -> Result<Self, ValidationError> where Self: Sized {
360 Ok(self)
361 }
362}
363
364impl<T: ParentBuilder> Builder<InventoryChange, T> {
365 pub fn change_type(mut self, change_type: InventoryChangeType) -> Self {
366 self.body.inventory_change_type = change_type;
367
368 self
369 }
370
371 pub fn physical_count(mut self, physical_count: InventoryPhysicalCount) -> Self {
372 self.body.physical_count = Some(physical_count);
373
374 self
375 }
376
377 pub fn adjustment(mut self, adjustment: InventoryAdjustment) -> Self {
378 self.body.adjustment = Some(adjustment);
379
380 self
381 }
382
383 pub fn transfer(mut self, transfer: InventoryTransfer) -> Self {
384 self.body.transfer = Some(transfer);
385
386 self
387 }
388}