1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
//! Model struct for OrderFulfillment type
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use super::{
enums::{
OrderFulfillmentFulfillmentLineItemApplication, OrderFulfillmentState, OrderFulfillmentType,
},
OrderFulfillmentFulfillmentEntry, OrderFulfillmentPickupDetails,
OrderFulfillmentShipmentDetails,
};
/// This is a model struct for OrderFulfillment type.
///
/// Contains details about how to fulfill this order.
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct OrderFulfillment {
/// A unique ID that identifies the fulfillment only within this order.
pub uid: Option<String>,
/// The type of the fulfillment.
pub r#type: Option<OrderFulfillmentType>,
/// The state of the fulfillment.
pub state: Option<OrderFulfillmentState>,
/// Describes what order line items this fulfillment applies to. It can be ALL or ENTRY_LIST
/// with a supplied list of fulfillment entries.
pub line_item_application: Option<OrderFulfillmentFulfillmentLineItemApplication>,
/// A list of entries pertaining to the fulfillment of an order. Each entry must reference a
/// valid uid for an order line item in the line_item_uid field, as well as a quantity to
/// fulfill.
///
/// Multiple entries can reference the same line item uid, as long as the total quantity among
/// all fulfillment entries referencing a single line item does not exceed the quantity of the
/// order's line item itself.
///
/// An order cannot be marked as COMPLETED before all fulfillments are COMPLETED, CANCELED, or
/// FAILED. Fulfillments can be created and completed independently before order completion.
pub entries: Option<Vec<OrderFulfillmentFulfillmentEntry>>,
/// Application-defined data attached to this fulfillment. Metadata fields are intended to store
/// descriptive references or associations with an entity in another system or store brief
/// information about the object. Square does not process this field; it only stores and returns
/// it in relevant API calls. Do not use metadata to store any sensitive information (such as
/// personally identifiable information or card details).
///
/// Keys written by applications must be 60 characters or less and must be in the character set
/// [a-zA-Z0-9_-]. Entries can also include metadata generated by Square. These keys are
/// prefixed with a namespace, separated from the key with a ':' character.
///
/// Values have a maximum length of 255 characters.
///
/// An application can have up to 10 entries per metadata field.
///
/// Entries written by applications are private and can only be read or modified by the same
/// application.
///
/// For more information, see
/// [Metadata](https://developer.squareup.com/docs/build-basics/metadata).
pub metadata: Option<HashMap<String, String>>,
/// Contains details for a pickup fulfillment. These details are required when the fulfillment
/// type is PICKUP.
pub pickup_details: Option<OrderFulfillmentPickupDetails>,
/// Contains details for a shipment fulfillment. These details are required when the fulfillment
/// type is SHIPMENT.
///
/// A shipment fulfillment's relationship to fulfillment state: PROPOSED: A shipment is
/// requested. RESERVED: Fulfillment accepted. Shipment processing. PREPARED: Shipment packaged.
/// Shipping label created. COMPLETED: Package has been shipped. CANCELED: Shipment has been
/// canceled. FAILED: Shipment has failed.
pub shipment_details: Option<OrderFulfillmentShipmentDetails>,
}