✅ Cómo Crear Facturas Automáticas en Woocommerce Correctamente

La automatización de procesos es una pieza clave para el éxito de cualquier tienda en línea, y más aún cuando se trata de cumplir con las normativas fiscales de manera eficiente y transparente. En este contexto, el plugin WooCommerce PDF Invoices & Packing Slips se convierte en una herramienta fundamental para la generación automática de facturas, pero su personalización puede llevar este proceso al siguiente nivel.

pdf invoices woocommerce

Primero, necesitamos instalar el plugin WooCommerce PDF Invoices & Packing Slips, una herramienta muy popular y con una configuración extremadamente sencilla. Una vez que el plugin está instalado y activado, comenzará a generar facturas automáticamente para cada pedido realizado en la tienda. Estas facturas estarán disponibles para que los usuarios las descarguen directamente desde sus cuentas, lo que mejora considerablemente la experiencia del cliente.

El plugin funciona de manera eficiente y es ideal para gestionar facturas básicas. Sin embargo, para ciertas funcionalidades avanzadas, como el diseño personalizado o la compatibilidad con normativas fiscales más estrictas, es necesario adquirir la versión Pro. Además, las facturas generadas automáticamente en la versión gratuita no son completamente legales según la normativa fiscal, ya que no incluyen datos obligatorios como el NIF de la tienda o el DNI/NIF del cliente, entre otros detalles esenciales.

Por este motivo, utilizaremos código personalizado para solucionar estas limitaciones y garantizar que las facturas generadas cumplan con todos los requisitos legales. De esta manera, podremos ofrecer a los clientes documentos válidos para su uso fiscal y asegurar el cumplimiento normativo de la tienda sin depender de la versión Pro del plugin.

Exploraremos cómo un conjunto de funciones permite agregar un campo personalizado para el DNI/NIF, incorporar información fiscal completa de la tienda y asegurar que todas las facturas generadas sean completamente automáticas y cumplan con los requisitos legales.

campo dni checkout woocommerce

Con esta solución, se automatiza todo el proceso de facturación al incluir la información fiscal completa de la tienda y los datos del cliente, incluyendo su DNI/NIF, en un sistema de facturación automática y secuencial, con numeración progresiva que avanza de manera ordenada (1, 2, 3, etc.). Esto permite que las facturas generadas sean válidas para que los clientes las utilicen como gastos deducibles, si procede. Además, la tienda solo necesita registrar estas facturas en la plataforma fiscal que utilice o descargarlas directamente desde el pedido para proporcionarlas fácilmente al gestor contable, simplificando así la administración y el cumplimiento fiscal.

factura pdf woocommerce

El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.

// Agregar los datos de la tienda a la factura
add_action('wpo_wcpdf_after_shop_name', function($template_type, $order) {
    if ($template_type == 'invoice') {
        $store_name = 'Tienda de Gadgets S.L';
        $store_address = 'Calle Los Olivos 12';
        $store_city = 'Málaga';
        $store_postcode = '85674';
        $store_phone = '+34 654 567 654';
        $store_email = 'info@tiendadegadgets.com';
        $store_nif = 'B12345678';

        echo '<p style="font-size: 12px; margin-top: 10px;">';
        echo 'Nombre: ' . esc_html($store_name) . '<br>';
        echo 'Dirección: ' . esc_html($store_address) . ', ' . esc_html($store_city) . ' ' . esc_html($store_postcode) . '<br>';
        if ($store_phone) {
            echo 'Teléfono: ' . esc_html($store_phone) . '<br>';
        }
        if ($store_email) {
            echo 'Email: ' . esc_html($store_email) . '<br>';
        }
        echo 'NIF: ' . esc_html($store_nif) . '<br>';
        echo '</p>';
    }
}, 10, 2);

// Agregar el campo DNI al formulario de finalizar compra
add_filter('woocommerce_checkout_fields', function($fields) {
    $fields['billing']['billing_dni'] = array(
        'type'        => 'text',
        'label'       => 'DNI/NIF',
        'required'    => true,
        'class'       => array('form-row-wide'),
        'priority'    => 25,
    );
    return $fields;
});

// Guardar el campo DNI en los datos del pedido
add_action('woocommerce_checkout_update_order_meta', function($order_id) {
    if (!empty($_POST['billing_dni'])) {
        update_post_meta($order_id, '_billing_dni', sanitize_text_field($_POST['billing_dni']));
    }
});

// Mostrar el DNI en el backend en los detalles del pedido
add_action('woocommerce_admin_order_data_after_billing_address', function($order) {
    $dni = get_post_meta($order->get_id(), '_billing_dni', true);
    if ($dni) {
        echo '<p><strong>DNI/NIF:</strong> ' . esc_html($dni) . '</p>';
    }
});

// Agregar el campo DNI/NIF a la sección de facturación en Mi Cuenta
add_filter('woocommerce_billing_fields', function($fields) {
    $fields['billing_dni'] = array(
        'type'        => 'text',
        'label'       => 'DNI/NIF',
        'required'    => true,
        'class'       => array('form-row-wide'),
        'priority'    => 110,
    );
    return $fields;
});

// Guardar el DNI/NIF desde la sección Mi Cuenta
add_action('woocommerce_customer_save_address', function($user_id, $load_address) {
    if ($load_address === 'billing' && isset($_POST['billing_dni'])) {
        $dni = sanitize_text_field($_POST['billing_dni']);
        update_user_meta($user_id, 'billing_dni', $dni);
    }
}, 10, 2);

// Mostrar el DNI en la sección Mi Cuenta
add_filter('woocommerce_my_account_my_address_formatted_address', function($address, $customer_id, $address_type) {
    if ($address_type === 'billing') {
        $dni = get_user_meta($customer_id, 'billing_dni', true);
        if ($dni) {
            $address['dni'] = 'DNI/NIF: ' . $dni;
        }
    }
    return $address;
}, 10, 3);

// Mostrar el DNI en la factura PDF
add_action('wpo_wcpdf_after_billing_address', function($template_type, $order) {
    if ($template_type === 'invoice' && is_object($order) && method_exists($order, 'get_id')) {
        $dni = get_post_meta($order->get_id(), '_billing_dni', true);
        if (!empty($dni)) {
            echo '<p style="font-size: 12px; margin: 0;">';
            echo '<strong>DNI/NIF:</strong> ' . esc_html($dni) . '<br>';
            echo '</p>';
        }
    }
}, 10, 2);

// Quitar el método de pago del PDF
add_filter('wpo_wcpdf_payment_method', function($payment_method, $order) {
    return ''; // Devuelve un string vacío para ocultar el método de pago
}, 10, 2);

Lenguaje del código: PHP (php)

Entendiendo el Código

1. Incorporar Datos Fiscales de la Tienda a la Factura

  • Función: Añade los datos fiscales obligatorios de la tienda (nombre, dirección, ciudad, código postal, teléfono, correo electrónico, y NIF) a las facturas generadas.
  • Cómo funciona: Utiliza el hook wpo_wcpdf_after_shop_name para insertar estos datos de forma estructurada en el PDF de la factura. Esto asegura que la factura cumpla con las normativas legales de emisión, proporcionando al cliente información clara y válida para fines fiscales.

2. Añadir Campo DNI/NIF en el Proceso de Compra

  • Función: Agrega un campo obligatorio para que el cliente ingrese su DNI/NIF durante el checkout.
  • Cómo funciona: Utiliza el filtro woocommerce_checkout_fields para incluir un nuevo campo de texto en la sección de facturación. Este dato se valida como obligatorio para garantizar su recopilación.

3. Almacenar el DNI/NIF en los Datos del Pedido

  • Función: Guarda el DNI/NIF proporcionado por el cliente como parte de los metadatos del pedido.
  • Cómo funciona: Mediante el hook woocommerce_checkout_update_order_meta, el DNI/NIF se almacena en los metadatos del pedido en la base de datos. Esto asegura que la información esté disponible para integrarse en la factura y otros documentos relacionados.

4. Mostrar el DNI/NIF en el Backend de WooCommerce

  • Función: Permite al administrador de la tienda ver el DNI/NIF del cliente en los detalles del pedido desde el panel de administración.
  • Cómo funciona: Utiliza el hook woocommerce_admin_order_data_after_billing_address para mostrar el DNI/NIF como parte de la información de facturación asociada al pedido.

5. Gestionar el DNI/NIF desde la Cuenta del Cliente

  • Función: Integra el campo DNI/NIF en la sección «Mi Cuenta», permitiendo al cliente agregar o actualizar su información desde su perfil.
  • Cómo funciona:
    • El filtro woocommerce_billing_fields añade el campo DNI/NIF en la sección de facturación del cliente.
    • El hook woocommerce_customer_save_address guarda los cambios realizados por el cliente en su perfil.
    • El filtro woocommerce_my_account_my_address_formatted_address asegura que el DNI/NIF aparezca junto a la dirección de facturación en la vista del cliente.

6. Incluir el DNI/NIF en la Factura PDF

  • Función: Añade el DNI/NIF del cliente automáticamente en la factura PDF generada por el plugin.
  • Cómo funciona: Utiliza el hook wpo_wcpdf_after_billing_address para insertar el DNI/NIF debajo de la dirección de facturación, asegurando que este dato crucial esté visible en la factura.

7. Eliminar el Método de Pago del PDF

  • Función: Simplifica el diseño de la factura al ocultar el método de pago.
  • Cómo funciona: Utiliza el filtro wpo_wcpdf_payment_method para devolver un string vacío, eliminando así la información sobre el método de pago del PDF. Esto puede ser útil si el método de pago no es relevante para fines fiscales.

En conclusión, la personalización de tu sistema de facturación en WooCommerce puede marcar la diferencia entre un proceso básico y uno completamente automatizado, legal y optimizado. Este plugin junto al código personalizado te permite gestionar facturas secuenciales y fiscalmente válidas, integrando toda la información requerida tanto de tu tienda como de tus clientes. Esto no solo asegura el cumplimiento normativo, sino que también mejora significativamente la experiencia del cliente y simplifica tu administración.

Si necesitas ayuda para implementar este código, personalizar tu tienda o realizar adaptaciones específicas, puedo ayudarte. Soy especialista en soluciones personalizadas para WooCommerce. Contáctame por WhatsApp para discutir tus necesidades y trabajar juntos en tu proyecto.

Nos vemos en el siguiente tutorial.

Un saludo.

5/5 - (3 votos)
Compartir Artículo

Un comentario

  1. Fran Salas Master WP 1 año atrás

    Deja tus opiniones o dudas en los comentarios.

¿Tienes una duda o sugerencia sobre este artículo?

Puedes dejar un comentario de forma anónima, sin necesidad de registrarte ni proporcionar ningún dato personal. Tu mensaje se publicará como “Usuario Anónimo No Premium”, un perfil que agrupa a todos los visitantes no registrados.

Importante: para evitar el spam automático, todos los comentarios anónimos deben comenzar con el símbolo #. Ejemplo: # Tengo una duda sobre los shortcodes personalizados...

Este espacio está destinado exclusivamente a preguntas concretas, dudas o sugerencias relacionadas con el contenido del artículo. Por respeto a los demás lectores, no se publicarán temas sin relación.

Privacidad y normas:
  • No tienes que agregar tu nombre, correo ni ningún otro dato identificativo.
  • No se permiten enlaces en comentarios anónimos.
  • No se permiten símbolos especiales como < o > (menor y mayor que), ya que se consideran intentos de insertar código y serán bloqueados.
  • Todos los comentarios anónimos pasan por revisión antes de ser publicados y solo se aprobarán si aportan valor al contenido del artículo.
¿Quieres comentar con tu nombre y que tu mensaje se publique al instante? Inicia sesión o regístrate.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

0%