pipedrive_rs/models/
add_deal_product_request.rs1#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
15pub struct AddDealProductRequest {
16 #[serde(rename = "product_id")]
18 pub product_id: i32,
19 #[serde(rename = "item_price")]
21 pub item_price: f32,
22 #[serde(rename = "quantity")]
24 pub quantity: i32,
25 #[serde(rename = "discount", skip_serializing_if = "Option::is_none")]
27 pub discount: Option<f32>,
28 #[serde(rename = "discount_type", skip_serializing_if = "Option::is_none")]
30 pub discount_type: Option<DiscountType>,
31 #[serde(rename = "duration", skip_serializing_if = "Option::is_none")]
33 pub duration: Option<f32>,
34 #[serde(rename = "duration_unit", skip_serializing_if = "Option::is_none")]
35 pub duration_unit: Option<DurationUnit>,
36 #[serde(rename = "product_variation_id", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
38 pub product_variation_id: Option<Option<i32>>,
39 #[serde(rename = "comments", skip_serializing_if = "Option::is_none")]
41 pub comments: Option<String>,
42 #[serde(rename = "tax", skip_serializing_if = "Option::is_none")]
44 pub tax: Option<f32>,
45 #[serde(rename = "tax_method", skip_serializing_if = "Option::is_none")]
47 pub tax_method: Option<TaxMethod>,
48 #[serde(rename = "enabled_flag", skip_serializing_if = "Option::is_none")]
50 pub enabled_flag: Option<bool>,
51}
52
53impl AddDealProductRequest {
54 pub fn new(product_id: i32, item_price: f32, quantity: i32) -> AddDealProductRequest {
55 AddDealProductRequest {
56 product_id,
57 item_price,
58 quantity,
59 discount: None,
60 discount_type: None,
61 duration: None,
62 duration_unit: None,
63 product_variation_id: None,
64 comments: None,
65 tax: None,
66 tax_method: None,
67 enabled_flag: None,
68 }
69 }
70}
71
72#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
74pub enum DiscountType {
75 #[serde(rename = "percentage")]
76 Percentage,
77 #[serde(rename = "amount")]
78 Amount,
79}
80
81impl Default for DiscountType {
82 fn default() -> DiscountType {
83 Self::Percentage
84 }
85}
86#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
88pub enum DurationUnit {
89 #[serde(rename = "hourly")]
90 Hourly,
91 #[serde(rename = "daily")]
92 Daily,
93 #[serde(rename = "weekly")]
94 Weekly,
95 #[serde(rename = "monthly")]
96 Monthly,
97 #[serde(rename = "yearly")]
98 Yearly,
99}
100
101impl Default for DurationUnit {
102 fn default() -> DurationUnit {
103 Self::Hourly
104 }
105}
106#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
108pub enum TaxMethod {
109 #[serde(rename = "exclusive")]
110 Exclusive,
111 #[serde(rename = "inclusive")]
112 Inclusive,
113 #[serde(rename = "none")]
114 None,
115}
116
117impl Default for TaxMethod {
118 fn default() -> TaxMethod {
119 Self::Exclusive
120 }
121}
122