Elegir para qué categorías de producto enviará factura WooCommerce PDF Invoices & Packing Slips

Si hay un plugin gratuito que prácticamente todo usuario de WooCommerce utiliza para crear y enviar facturas y albaranes de entrega es WooCommerce PDF Invoices & Packing Slips.

Sin tener que pagar por la versión premium del plugin sirve para la mayoría de las necesidades de facturación de cualquier Ecommerce, por eso es tan popular.

Pero hay algo que no se puede hacer por defecto, y es decidir para qué categorías de producto se enviará factura en PDF y para cuáles no, no existe ningún ajuste para configurar esto.

Sería algo muy útil, pues en un mismo Ecommerce no siempre todos los productos son susceptibles de creación y envío de factura.

Afortunadamente es fácil definir para qué categorías se generarán facturas y para cuáles no, creando una función que aplique filtros según la categoría.

Sería algo así:

//Filtrar para qué categorías se crean facturas PDF
add_filter( 'wpo_wcpdf_custom_attachment_condition', 'wpo_wcpdf_disable_based_on_product_categories', 100, 4 );
function wpo_wcpdf_disable_based_on_product_categories( $condition, $order, $status, $template_type ) {
    // aplicamos la comprobación solo a las facturas
    if ($template_type != 'invoice') {
        return $condition;
    }
    // aquí ponemos para qué categorías se crearán facturas
    $invoice_cats = array('Cursos','Consultoría');
    $items = $order->get_items();
    $order_cats = array();
    foreach ($items as $item_id => $item) {
        // obtenemos las categorías por producto
        $product = $order->get_product_from_item( $item );
        if ($product) {
            $terms = get_the_terms( $product->get_id(), 'product_cat' );
            if (empty($terms)) {
                continue;
            } else {
                foreach ($terms as $key => $term) {
                    $order_cats[$term->term_id] = $term->name;
                }
            }
        }
    }
    // array de coincidencia de la categoría
    $cat_matches = array_intersect($invoice_cats, $order_cats);
    if ( count($cat_matches) > 0 ) {
        // si coinciden 1 o más se adjunta factura
        return $condition;
    } else {
        return false;
    }
}

Solo tienes que personalizar en el código anterior la línea del array $invoice_cats poniendo los nombres de las categorías para las que se debería enviar factura.

Luego puedes subir tu código a tu plugin de personalizaciones o crear un plugin solo para esto.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(2 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

8 comentarios en “Elegir para qué categorías de producto enviará factura WooCommerce PDF Invoices & Packing Slips”

    1. El de Yith es más completo, e incluye facturas rectificativas, algo que no incluye ningún otro plugin de facturas PDF y en España es imprescindible.

  1. Hola,

    ¿Es posible enviar diferentes formatos de factura en función de la categoría?

    P.e: Para Categoría 1 envio una factura con el logo y el pié de proveedor 1. Para Categoría 2 pues logo y pié del proveedor 2 más un texto específico de esta categoría.

    Saludos,

  2. Hola Fernando, una pregunta, he subido este código pero entiendo que en el listado de pedidos de Woocommerce que no tengan las categorías para facturas no aparece el icono de facturación no? y si aparece a las categorías que necesitan factura. Es que me aparece el icono de factura en todas las categorias y solo puse una para facturar. Gracias por compartir tus conocimientos!!!

    1. En realidad no tiene que ver el icono, porque aparece tanto si se genera factura como si no, la diferencia es si está creada o tienes que hacer clic en el icono para crearla (se diferencian en que el icono es distinto).

      Si en la columna de número de factura no hay nada donde no debe haberlo, y no se crean facturas para las categorías que no deben es que está funcionando bien.

Deja un comentario

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

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba Ir al contenido