Soporte » Comunidad » Tu WordPress » recalcular precio producto

  • Resuelto vdwitoszek

    (@vdwitoszek)


    Hola

    Tengo modificado el precion de los productos con el siguiente codigo :

    add_action( ‘woocommerce_admin_order_totals_after_discount’, ‘vp_add_sub_total’, 10 );
    function vp_add_sub_total( $order_id )
    {
    $order = wc_get_order( $order_id );
    ?>
    : get_subtotal() + $order->get_shipping_total(), array( ‘currency’ => $order->get_currency() ) );?>
    <?php
    }

    Al ser una peticion de presupuesto suma el costo de envio al producto , se oculta lo que no es necesario . Asi de esta forma no hay cambios grandes en woocommerce.

    Ahora se me plantea de como hacer lo mismo con las plantillas de email con woocommerce. En la plantilla de email ya he podido quitar el envio cuando se envia el presupuesto al cliente. ¿ Como puedo quitar el precio que aparece en el email, y cambiarlo por la suma de coste de envio mas coste del producto? Woocomerce lo suma en el subtotal. Se me ocurre cambiar el precio del producto por el subtotal , pero ¿ como puedo hacerlo?

    • Este debate fue modificado hace 1 mes, 1 semana por vdwitoszek.

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Iniciador del debate vdwitoszek

    (@vdwitoszek)

    Hola

    He puesto este codigo para resolver lo que pido en la plantilla del email en woocomerce:

    <td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>; vertical-align:middle; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;">
            <?php echo wp_kses_post( $order->get_formatted_line_subtotal( $item ) ); ?>
      <?php echo wp_kses_post( $order->get_formatted_line_subtotal( $item, $order->get_subtotal() + $order->get_shipping_total(), array( 'currency' => $order->get_currency() )) ); ?>
        </td>
    </tr>

    Este codigo no funcion acomo necesito : el precio del producto aparece como precio + iva y no precio + coste de envio .

    • Esta respuesta fue modificada hace 1 mes, 1 semana por vdwitoszek.
    Yordan Soares

    (@yordansoares)

    Hola, @vdwitoszek:

    Tu segundo mensaje me hace pensar que estás sobrescribiendo la plantilla de correo electrónico de WooCommerce, ¿es correcto?

    Si lo es, creo que lo mejor sería que trabajes usando ganchos de filtro en su lugar, por ejemplo woocommerce_order_formatted_line_subtotal, filtrando los datos, del mismo modo que lo hice en una consulta parecida que hiciste hace unos días (aquí).

    Dicho esto, creo que el problema que estás teniendo en este punto es que quieres añadir el precio del envío a los productos, pero estos no almacenan este valor, sino que se añade a los datos del pedido.

    Para lograr lo que quieres, deberías hacer una consulta del monto del envío, dividirlo su valor entre los artículos del pedido y luego sumar esa fracción al subtotal de cada producto para que la suma de los subtotales de las líneas de productos coincida con el subtotal del pedido.

    Iniciador del debate vdwitoszek

    (@vdwitoszek)

    Hola @yordansoares

    Se que no es el mejor codigo pero he podido realizarlo de la siguiente manera:

        <td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>; vertical-align:middle; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;">
                  <?php echo wp_kses_post( $order->get_subtotal() + $order->get_shipping_total(), array( 'currency' => $order->get_currency() ) ); ?>
        </td>

    Esto lo implemente en email-order-items ( linea 74 ) y funciona casi perfectamente. Lo que no me pone es el simbolo del euro , ya que no esta realizado tal como lo dices. En cuanto al calculo , no es necesario calcularlo ya que solo admito un producto por carrito, si bien seria mejor realizarlo como lo dices.

    Yordan Soares

    (@yordansoares)

    Lo que no me pone es el simbolo del euro […]

    Pues esto es muy fácil de resolver con la función wc_price().

    En tu caso, deberías cambiar esta línea:

    <?php echo wp_kses_post( $order->get_subtotal() + $order->get_shipping_total(), array( 'currency' => $order->get_currency() ) ); ?>

    …por esta:

    <?php echo wc_price( $order->get_subtotal() + $order->get_shipping_total() ); ?>

    En cuanto al calculo , no es necesario calcularlo ya que solo admito un producto por carrito, si bien seria mejor realizarlo como lo dices.

    En ese caso, ciertamente no sería necesario que siguieras mi recomendación, así que te ahorrarías ese paso 😉

    Iniciador del debate vdwitoszek

    (@vdwitoszek)

    Ok gracias

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Debes estar registrado para responder a este debate.