diff --git a/functions-discount-rs/src/cart_delivery_options_discounts_generate_run.rs b/functions-discount-rs/src/cart_delivery_options_discounts_generate_run.rs index 8fff6a2a..2f26dbe2 100644 --- a/functions-discount-rs/src/cart_delivery_options_discounts_generate_run.rs +++ b/functions-discount-rs/src/cart_delivery_options_discounts_generate_run.rs @@ -1,14 +1,3 @@ -use crate::schema::CartDeliveryOptionsDiscountsGenerateRunResult; -use crate::schema::DeliveryDiscountCandidate; -use crate::schema::DeliveryDiscountCandidateTarget; -use crate::schema::DeliveryDiscountCandidateValue; -use crate::schema::DeliveryDiscountSelectionStrategy; -use crate::schema::DeliveryDiscountsAddOperation; -use crate::schema::DeliveryGroupTarget; -use crate::schema::DeliveryOperation; -use crate::schema::DiscountClass; -use crate::schema::Percentage; - use super::schema; use shopify_function::prelude::*; use shopify_function::Result; @@ -16,14 +5,14 @@ use shopify_function::Result; #[shopify_function] fn cart_delivery_options_discounts_generate_run( input: schema::cart_delivery_options_discounts_generate_run::Input, -) -> Result { +) -> Result { let has_shipping_discount_class = input .discount() .discount_classes() - .contains(&DiscountClass::Shipping); + .contains(&schema::DiscountClass::Shipping); if !has_shipping_discount_class { - return Ok(CartDeliveryOptionsDiscountsGenerateRunResult { operations: vec![] }); + return Ok(schema::CartDeliveryOptionsDiscountsGenerateRunResult { operations: vec![] }); } let first_delivery_group = input @@ -32,17 +21,17 @@ fn cart_delivery_options_discounts_generate_run( .first() .ok_or("No delivery groups found")?; - Ok(CartDeliveryOptionsDiscountsGenerateRunResult { - operations: vec![DeliveryOperation::DeliveryDiscountsAdd( - DeliveryDiscountsAddOperation { - selection_strategy: DeliveryDiscountSelectionStrategy::All, - candidates: vec![DeliveryDiscountCandidate { - targets: vec![DeliveryDiscountCandidateTarget::DeliveryGroup( - DeliveryGroupTarget { + Ok(schema::CartDeliveryOptionsDiscountsGenerateRunResult { + operations: vec![schema::DeliveryOperation::DeliveryDiscountsAdd( + schema::DeliveryDiscountsAddOperation { + selection_strategy: schema::DeliveryDiscountSelectionStrategy::All, + candidates: vec![schema::DeliveryDiscountCandidate { + targets: vec![schema::DeliveryDiscountCandidateTarget::DeliveryGroup( + schema::DeliveryGroupTarget { id: first_delivery_group.id().clone(), }, )], - value: DeliveryDiscountCandidateValue::Percentage(Percentage { + value: schema::DeliveryDiscountCandidateValue::Percentage(schema::Percentage { value: Decimal(100.0), }), message: Some("FREE DELIVERY".to_string()), diff --git a/functions-discount-rs/src/cart_lines_discounts_generate_run.rs b/functions-discount-rs/src/cart_lines_discounts_generate_run.rs index 877d1c49..a311d9aa 100644 --- a/functions-discount-rs/src/cart_lines_discounts_generate_run.rs +++ b/functions-discount-rs/src/cart_lines_discounts_generate_run.rs @@ -1,20 +1,3 @@ -use crate::schema::CartLineTarget; -use crate::schema::CartLinesDiscountsGenerateRunResult; -use crate::schema::CartOperation; -use crate::schema::DiscountClass; -use crate::schema::OrderDiscountCandidate; -use crate::schema::OrderDiscountCandidateTarget; -use crate::schema::OrderDiscountCandidateValue; -use crate::schema::OrderDiscountSelectionStrategy; -use crate::schema::OrderDiscountsAddOperation; -use crate::schema::OrderSubtotalTarget; -use crate::schema::Percentage; -use crate::schema::ProductDiscountCandidate; -use crate::schema::ProductDiscountCandidateTarget; -use crate::schema::ProductDiscountCandidateValue; -use crate::schema::ProductDiscountSelectionStrategy; -use crate::schema::ProductDiscountsAddOperation; - use super::schema; use shopify_function::prelude::*; use shopify_function::Result; @@ -22,7 +5,7 @@ use shopify_function::Result; #[shopify_function] fn cart_lines_discounts_generate_run( input: schema::cart_lines_discounts_generate_run::Input, -) -> Result { +) -> Result { let max_cart_line = input .cart() .lines() @@ -39,31 +22,31 @@ fn cart_lines_discounts_generate_run( let has_order_discount_class = input .discount() .discount_classes() - .contains(&DiscountClass::Order); + .contains(&schema::DiscountClass::Order); let has_product_discount_class = input .discount() .discount_classes() - .contains(&DiscountClass::Product); + .contains(&schema::DiscountClass::Product); if !has_order_discount_class && !has_product_discount_class { - return Ok(CartLinesDiscountsGenerateRunResult { operations: vec![] }); + return Ok(schema::CartLinesDiscountsGenerateRunResult { operations: vec![] }); } let mut operations = vec![]; // Check if the discount has the ORDER class if has_order_discount_class { - operations.push(CartOperation::OrderDiscountsAdd( - OrderDiscountsAddOperation { - selection_strategy: OrderDiscountSelectionStrategy::First, - candidates: vec![OrderDiscountCandidate { - targets: vec![OrderDiscountCandidateTarget::OrderSubtotal( - OrderSubtotalTarget { + operations.push(schema::CartOperation::OrderDiscountsAdd( + schema::OrderDiscountsAddOperation { + selection_strategy: schema::OrderDiscountSelectionStrategy::First, + candidates: vec![schema::OrderDiscountCandidate { + targets: vec![schema::OrderDiscountCandidateTarget::OrderSubtotal( + schema::OrderSubtotalTarget { excluded_cart_line_ids: vec![], }, )], message: Some("10% OFF ORDER".to_string()), - value: OrderDiscountCandidateValue::Percentage(Percentage { + value: schema::OrderDiscountCandidateValue::Percentage(schema::Percentage { value: Decimal(10.0), }), conditions: None, @@ -75,16 +58,18 @@ fn cart_lines_discounts_generate_run( // Check if the discount has the PRODUCT class if has_product_discount_class { - operations.push(CartOperation::ProductDiscountsAdd( - ProductDiscountsAddOperation { - selection_strategy: ProductDiscountSelectionStrategy::First, - candidates: vec![ProductDiscountCandidate { - targets: vec![ProductDiscountCandidateTarget::CartLine(CartLineTarget { - id: max_cart_line.id().clone(), - quantity: None, - })], + operations.push(schema::CartOperation::ProductDiscountsAdd( + schema::ProductDiscountsAddOperation { + selection_strategy: schema::ProductDiscountSelectionStrategy::First, + candidates: vec![schema::ProductDiscountCandidate { + targets: vec![schema::ProductDiscountCandidateTarget::CartLine( + schema::CartLineTarget { + id: max_cart_line.id().clone(), + quantity: None, + }, + )], message: Some("20% OFF PRODUCT".to_string()), - value: ProductDiscountCandidateValue::Percentage(Percentage { + value: schema::ProductDiscountCandidateValue::Percentage(schema::Percentage { value: Decimal(20.0), }), associated_discount_code: None, @@ -93,5 +78,5 @@ fn cart_lines_discounts_generate_run( )); } - Ok(CartLinesDiscountsGenerateRunResult { operations }) + Ok(schema::CartLinesDiscountsGenerateRunResult { operations }) }