pub struct ProductVariation {Show 39 fields
pub id: i32,
pub date_created: NaiveDateTime,
pub date_created_gmt: NaiveDateTime,
pub date_modified: NaiveDateTime,
pub date_modified_gmt: NaiveDateTime,
pub description: String,
pub permalink: String,
pub sku: String,
pub price: String,
pub regular_price: String,
pub sale_price: String,
pub date_on_sale_from: Option<NaiveDateTime>,
pub date_on_sale_from_gmt: Option<NaiveDateTime>,
pub date_on_sale_to: Option<NaiveDateTime>,
pub date_on_sale_to_gmt: Option<NaiveDateTime>,
pub on_sale: bool,
pub status: ProductStatus,
pub purchasable: bool,
pub is_virtual: bool,
pub downloadable: bool,
pub downloads: Vec<Download>,
pub download_limit: i32,
pub download_expiry: i32,
pub tax_status: TaxStatus,
pub tax_class: String,
pub manage_stock: ManageStock,
pub stock_quantity: Option<i32>,
pub stock_status: StockStatus,
pub backorders: BackordersStatus,
pub backorders_allowed: bool,
pub backordered: bool,
pub weight: String,
pub dimensions: Dimensions,
pub shipping_class: String,
pub shipping_class_id: i32,
pub image: Option<ProductImage>,
pub attributes: Vec<ProductDefaultAttribute>,
pub menu_order: i32,
pub meta_data: Vec<MetaData>,
}
Fields§
§id: i32
Unique identifier for the resource.
date_created: NaiveDateTime
The date the variation was created, in the site’s timezone.
date_created_gmt: NaiveDateTime
The date the variation was created, as GMT.
date_modified: NaiveDateTime
The date the variation was last modified, in the site’s timezone.
date_modified_gmt: NaiveDateTime
The date the variation was last modified, as GMT.
description: String
Variation description.
permalink: String
Variation URL.
sku: String
Unique identifier.
price: String
Current variation price.
regular_price: String
Variation regular price.
sale_price: String
Variation sale price.
date_on_sale_from: Option<NaiveDateTime>
Start date of sale price, in the site’s timezone.
date_on_sale_from_gmt: Option<NaiveDateTime>
Start date of sale price, as GMT.
date_on_sale_to: Option<NaiveDateTime>
End date of sale price, in the site’s timezone.
date_on_sale_to_gmt: Option<NaiveDateTime>
End date of sale price, as GMT.
on_sale: bool
Shows if the variation is on sale. READ-ONLY
status: ProductStatus
Variation status. Options: draft, pending, private and publish. Default is publish.
purchasable: bool
Shows if the variation can be bought.
is_virtual: bool
If the variation is virtual. Default is false.
downloadable: bool
If the variation is downloadable. Default is false.
downloads: Vec<Download>
List of downloadable files.
download_limit: i32
Number of times downloadable files can be downloaded after purchase. Default is -1.
download_expiry: i32
Number of days until access to downloadable files expires. Default is -1.
tax_status: TaxStatus
Tax status. Options: taxable, shipping and none. Default is taxable.
tax_class: String
Tax class.
manage_stock: ManageStock
Stock management at variation level. Default is false.
stock_quantity: Option<i32>
Stock quantity.
stock_status: StockStatus
Controls the stock status of the product. Options: instock, outofstock, onbackorder. Default is instock.
backorders: BackordersStatus
If managing stock, this controls if backorders are allowed. Options: no, notify and yes. Default is no.
backorders_allowed: bool
Shows if backorders are allowed.
backordered: bool
Shows if the variation is on backordered.
weight: String
Variation weight.
dimensions: Dimensions
Variation dimensions. See Product variation - Dimensions properties
shipping_class: String
Shipping class slug.
shipping_class_id: i32
Shipping class ID.
image: Option<ProductImage>
Variation image data.
attributes: Vec<ProductDefaultAttribute>
List of attributes.
Menu order, used to custom sort products.
meta_data: Vec<MetaData>
Meta data.
Implementations§
Source§impl ProductVariation
impl ProductVariation
Sourcepub fn builder() -> ProductVariationModifyBuilder
pub fn builder() -> ProductVariationModifyBuilder
Examples found in repository?
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
async fn main() -> Result<()> {
tracing_subscriber::fmt::init();
let config = Config::new("woo.toml")?;
let client = ApiClient::new(&config)?;
let products = client.list_all::<Product>().await?;
let random_variable_id = products
.iter()
.find(|p| !p.variations.is_empty())
.map(|p| p.id)
.unwrap_or_default();
let variations = client
.list_all_subentities::<ProductVariation>(random_variable_id)
.await?;
info!(
"Got {} variations for product with id: {random_variable_id}",
variations.len()
);
let retrieved_variation: ProductVariation = client
.retrieve_subentity(
random_variable_id,
variations.first().map(|v| v.id).unwrap_or_default(),
)
.await?;
info!("Retrieved variation has sku: {}", retrieved_variation.sku);
let attribute = Attribute::builder()
.name("Test Attribute")
.option("Best")
.option("Test")
.variation()
.visible()
.build();
let new_variable_product = Product::builder()
.name("Test Product For Example")
.product_type(ProductType::Variable)
.featured()
.short_description("The most professional description")
.sku("product for test 42")
.regular_price("6969")
.manage_stock()
.stock_quantity(42)
.weight("50")
.dimensions("4", "3", "2")
.shipping_class("large")
.images("https://cs14.pikabu.ru/post_img/2021/06/27/7/1624794514137159585.jpg")
.attribute(attribute)
.build();
let created: Product = client.create(new_variable_product).await?;
info!("Create product {} with id: {}", created.name, created.id);
let variation = ProductVariation::builder()
.sku(format!("{} Best", created.sku))
.regular_price("6969")
.manage_stock()
.stock_quantity(96)
.weight("52")
.dimensions("5", "4", "3")
.attribute(None, "Test Attribute", "Best")
.build();
let batch_create_variation = vec![variation.clone()];
let created_variation: ProductVariation =
client.create_subentity(created.id, variation).await?;
info!(
"Variation {} created with price: {}",
created_variation.sku, created_variation.price
);
let update = ProductVariation::builder().regular_price("7000").build();
let updated_variation: ProductVariation = client
.update_subentity(created.id, created_variation.id, update)
.await?;
info!(
"Variation {} updated with price: {}",
updated_variation.sku, updated_variation.price
);
let deleted_variation: ProductVariation = client
.delete_subentity(created.id, updated_variation.id)
.await?;
info!("Variation {} deleted", deleted_variation.sku);
let batch_created_variation: Vec<ProductVariation> = client
.batch_create_subentity(created.id, batch_create_variation)
.await?;
let bcv_id = batch_created_variation
.first()
.map(|v| v.id)
.unwrap_or_default();
let batch_update_variation = vec![ProductVariation::builder()
.id(bcv_id)
.regular_price("777")
.build()];
let _batch_updated_variation: Vec<ProductVariation> = client
.batch_update_subentity(created.id, batch_update_variation)
.await?;
let _batch_deleted_variation: Vec<ProductVariation> = client
.batch_delete_subentity(created.id, vec![bcv_id])
.await?;
let deleted: Product = client.delete(created.id).await?;
info!("Product {} deleted", deleted.name);
Ok(())
}
Trait Implementations§
Source§impl Clone for ProductVariation
impl Clone for ProductVariation
Source§fn clone(&self) -> ProductVariation
fn clone(&self) -> ProductVariation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more