osdm-sys 0.1.0-alpha.3

Specifications for the OSDM API standard. The OSDM specification supports two modes of operation: Retailer Mode and Distributor Mode. The API works identically in both modes, except that in distributor mode the API also returns fare information. The following resources are key to get started: - [Processes](https://osdm.io/spec/processes/) - [Models](https://osdm.io/spec/models/) - [Getting started](https://osdm.io/spec/getting-started/)
Documentation
/*
 * UIC 90918-10 - OSDM
 *
 * Specifications for the OSDM API standard. The OSDM specification supports two modes of operation: Retailer Mode and Distributor Mode. The API works identically in both modes, except that in distributor mode the API also returns fare information.  The following resources are key to get started:    -  [Processes](https://osdm.io/spec/processes/)   -  [Models](https://osdm.io/spec/models/)   -  [Getting started](https://osdm.io/spec/getting-started/) 
 *
 * The version of the OpenAPI document: 3.7.0
 * Contact: osdm@uic.org
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// Tip : Tips for staff can be included e.g. for taxi drivers. The tip is part of the payment in a post payment scenario. 
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct Tip {
    #[serde(rename = "id")]
    pub id: String,
    /// A human-readable description of the tip. 
    #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
    pub summary: Option<String>,
    #[serde(rename = "bookingPartRef", skip_serializing_if = "Option::is_none")]
    pub booking_part_ref: Option<Box<models::BookingPartReference>>,
    #[serde(rename = "price")]
    pub price: Box<models::Price>,
    /// reference to the booking in the downstream distributor system 
    #[serde(rename = "distributorBookingRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub distributor_booking_ref: Option<Option<String>>,
    #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
    pub accounting_ref: Option<Box<models::AccountingRef>>,
}

impl Tip {
    /// Tips for staff can be included e.g. for taxi drivers. The tip is part of the payment in a post payment scenario. 
    pub fn new(id: String, price: models::Price) -> Tip {
        Tip {
            id,
            summary: None,
            booking_part_ref: None,
            price: Box::new(price),
            distributor_booking_ref: None,
            accounting_ref: None,
        }
    }
}