use serde::{Deserialize, Serialize};
use super::common::ListEnvelope;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Customer {
pub id: String,
pub is_private: bool,
pub customer_name: String,
#[serde(default)]
pub address_street: Option<String>,
#[serde(default)]
pub address_postal_code: Option<String>,
#[serde(default)]
pub address_city: Option<String>,
#[serde(default)]
pub address_country_code: Option<String>,
#[serde(default)]
pub email: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct UpsertCustomerRequest {
pub is_private: bool,
pub customer_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_street: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_postal_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_city: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address_country_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attn: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cc_emails: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub payment_term: Option<u32>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct ListCustomersQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<u32>,
}
pub type ListCustomersResponse = ListEnvelope<Customer>;