Hi, the following Shopify app extension is not working:
use shopify_function::prelude::*;
use shopify_function::Result;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all(deserialize = "camelCase"))]
struct Configuration {}
#[shopify_function_target(query_path = "src/run.graphql", schema_path = "schema.graphql")]
fn run(input: input::ResponseData) -> Result<output::FunctionRunResult> {
eprintln!("Is getting into the cart line discount");
let precio_unitario = 15.0; // Precio unitario del producto
let productos_en_promocion = 4; // Lleva 4 productos
let productos_a_pagar = 3; // Paga 3 productos
// Obtener la cantidad total de productos en el carrito
let cantidad_total = input.cart.lines.iter()
.filter(|line| line.cost.amount_per_quantity.amount == shopify_function::prelude::Decimal(precio_unitario))
.fold(0, |acc, line| acc + line.quantity);
let grupos_completos = cantidad_total / productos_en_promocion;
let productos_restantes = cantidad_total % productos_en_promocion;
// Calcular el precio total con la promoción
let precio_total = (grupos_completos as f64 * productos_a_pagar as f64 * precio_unitario) + (productos_restantes as f64 * precio_unitario);
// Calcular el descuento aplicado
let precio_original = cantidad_total as f64 * precio_unitario;
let descuento = Decimal::from(precio_original - precio_total);
if precio_original > precio_total {
eprintln!("Is getting into the target one");
Ok(output::FunctionRunResult {
discounts: vec![output::Discount {
message: Some("Special Promo: Pay 3 and take 4!".to_string()),
value: run::run::output::Value::FixedAmount (output::FixedAmount {
amount: descuento,
}),
conditions: None,
targets: vec![output::Target::OrderSubtotal(
crate::run::run::output::OrderSubtotalTarget {
excluded_variant_ids: vec![],
}
)],
}],
discount_application_strategy: output::DiscountApplicationStrategy::FIRST,
})
} else {
Ok(output::FunctionRunResult {
discounts: vec![],
discount_application_strategy: output::DiscountApplicationStrategy::FIRST,
})
}
}
that’s my run.rs and here’s my
run.graphql
query Input {
cart {
lines {
id
quantity
cost {
amountPerQuantity {
amount
currencyCode
}
}
}
}
}
main.rs
use std::process;
pub mod run;
fn main() {
eprintln!("Please invoke a named export.");
process::exit(1);
}
I’m able to install the function extension into my local dev store. Still, it’s just not logging anything, or working at all, is a pay 3 take 4 function on products costing 15$ but is just not working at all, it doesn’t show anything on logs, and I can’t see what the issue is is because isn’t giving me any log/error.