cupones - Woocommerce: crea un nuevo pedido usando wc_create_order pero los descuentos no funcionan
descuentos en woocommerce (1)
Para lograrlo, deberá calcular el descuento en cada producto que agrega a la orden programáticamente, pasándolo como parámetro adicional. Ver ejemplo actualizado:
$order = wc_create_order();
$product_to_add = get_product( $pid );
$sale_price = $product_to_add->get_price();
// Here we calculate the final price with the discount
$final_price = round($sale_price * ((100-$discount[''amount'']) / 100), 2);
// Create the price params that will be passed with add_product(), if you have taxes you will need to calculate them here too
$price_params = array( ''totals'' => array( ''subtotal'' => $sale_price, ''total'' => $final_price ) );
$order->add_product( get_product( $pid ), $item[''quantity''], $price_params ); // pid 8 & qty 1
$order->set_address( $address_billing, ''billing'' );
$order->set_address( $address_shipping, ''shipping'' );
$order->add_coupon( $discount[''code''], ($discount[''amount'']/100) ); // not pennies (use dollars amount)
$order->set_total( ($discount[''amount'']/100) , ''order_discount''); // not pennies (use dollar amount)
$order->set_payment_method($this);
$rate = new WC_Shipping_Rate( $response_body[''shippingMethodCode''] , $ship_method_title, ($response_body[''shippingCost'']/100), array(), $response_body[''shippingMethodCode''] );
$order->add_shipping( $rate );enter code here
$order->calculate_totals();
$return_url = $this->get_return_url( $order );
No se pueden obtener cupones para aplicar el descuento a un pedido. (programáticamente creando un nuevo orden)
Aquí está el código:
$order = wc_create_order();
$order->add_product( get_product( $pid ), $item[''quantity''] ); // pid 8 & qty 1
$order->set_address( $address_billing, ''billing'' );
$order->set_address( $address_shipping, ''shipping'' );
$order->add_coupon( $discount[''code''], ($discount[''amount'']/100) ); // not pennies (use dollars amount)
$order->set_total( ($discount[''amount'']/100) , ''order_discount''); // not pennies (use dollar amount)
$order->set_payment_method($this);
$rate = new WC_Shipping_Rate( $response_body[''shippingMethodCode''] , $ship_method_title, ($response_body[''shippingCost'']/100), array(), $response_body[''shippingMethodCode''] );
$order->add_shipping( $rate );
$order->calculate_totals();
$return_url = $this->get_return_url( $order );
El pedido se crea en WooCommerce y todo se ve bien, excepto que el código de cupón aplicado no refleja el monto del descuento en la página de agradecimiento de la URL de devolución, y no en el administrador de wp al ver el pedido de WooCommerce, y no en el Nuevo correo electrónico de pedido del cliente que se envía ...
Muestra el código de cupón en wp-admin pero la línea de descuento todavía muestra $ 0 y el total no muestra ninguna cantidad restada.
Alguien sabe lo que se está haciendo mal aquí? estado en esto por un par de semanas y parece que no puede resolverlo.