Woocommerce actualiza los precios contra reembolso
-
Hola, tengo un problema. Cuando configuro woocommerce los pagos contra reembolso. No actualiza los precios que le defino en mi pluguin personalizado. os dejo el codigo por si alguien me puede ayudar.
?php class Softomark_Plugin_WooCommerce_Handler { public function __construct() { add_action('wp_enqueue_scripts', [$this, 'softomark_enqueue_scripts']); add_filter('woocommerce_settings_api_form_fields_cod', [$this, 'add_cod_custom_settings']); add_action('woocommerce_cart_calculate_fees', [$this, 'softomark_apply_cod_fees'], 20); add_filter('parse_query', [$this, 'dl_filtrar_pedidos_pago']); add_action('restrict_manage_posts', [$this, 'dl_anadir_filtro_forma_pago_pedidos']); } public function softomark_enqueue_scripts() { if (is_checkout()) { wp_enqueue_script( 'softomark-update-cart', plugin_dir_url(__FILE__) . 'update-cart.js', array('jquery'), '1.0.0', true ); } } public function add_cod_custom_settings($form_fields) { $form_fields['cod_fixed_fee'] = array( 'title' => __('Tarifa fija', 'softomark-plugin-base'), 'type' => 'number', 'description' => __('Tarifa fija que se añadirá al total del pedido.', 'softomark-plugin-base'), 'default' => 0, 'desc_tip' => true, ); $form_fields['cod_percentage_fee'] = array( 'title' => __('Porcentaje de la venta', 'softomark-plugin-base'), 'type' => 'number', 'description' => __('Porcentaje que se añadirá basado en el total del pedido.', 'softomark-plugin-base'), 'default' => 0, 'desc_tip' => true, 'custom_attributes' => array( 'step' => '0.1', 'min' => '0', ) ); return $form_fields; } public function softomark_apply_cod_fees($cart) { if (is_admin() && !defined('DOING_AJAX')) return; if (did_action('woocommerce_cart_calculate_fees') >= 2) return; // Evitar la recursión $payment_gateways = WC()->payment_gateways->payment_gateways(); if (WC()->session->get('chosen_payment_method') == 'cod') { $cod_fixed_fee = $payment_gateways['cod']->settings['cod_fixed_fee']; $cod_percentage_fee = $payment_gateways['cod']->settings['cod_percentage_fee']; $fee = $cod_fixed_fee + ($cart->cart_contents_total * $cod_percentage_fee / 100); $cart->add_fee(__('Tarifa de contra reembolso', 'softomark-plugin-base'), $fee); WC()->shipping->reset_shipping(); } } public function dl_anadir_filtro_forma_pago_pedidos() { global $typenow; if ('shop_order' !== $typenow) { return; } $methods = WC()->payment_gateways->payment_gateways(); echo '<select name="payment_method" id="dropdown_payment_method"> <option value="">' . __('Todos los métodos de pago', 'text_domain') . '</option>'; foreach ($methods as $method) { if ('yes' === $method->enabled) { echo '<option value="' . esc_attr($method->id) . '">' . esc_html($method->get_title()) . '</option>'; } } echo '</select>'; } public function dl_filtrar_pedidos_pago($query) { global $pagenow, $typenow; if ('edit.php' !== $pagenow || 'shop_order' !== $typenow || !isset($_GET['payment_method']) || empty($_GET['payment_method'])) { return; } $payment_method = sanitize_text_field($_GET['payment_method']); $query->set('meta_query', array( array( 'key' => '_payment_method', 'value' => $payment_method, ), )); } }
document.addEventListener('DOMContentLoaded', function() { var checkoutForm = document.querySelector('form.checkout'); if (checkoutForm) { checkoutForm.addEventListener('change', function(event) { if (event.target.name === 'payment_method') { // Disparar el evento 'update_checkout' utilizando jQuery jQuery('body').trigger('update_checkout'); } }); } });
La página con la que necesito ayuda: [accede para ver el enlace]
Viendo 1 respuesta (de un total de 1)
Viendo 1 respuesta (de un total de 1)
- El debate ‘Woocommerce actualiza los precios contra reembolso’ está cerrado a nuevas respuestas.