• Resolved goviwebs

    (@goviwebs)


    Hola, tengo metido un código para captar en checkout el NIF del cliente. En el pedido se guarda perfecto pero no se muestra en la factura. ?Qué código debo poner?

    /*
    * A?ADIR CAMPO NIF/CIF EN EL FORMULARIO DE PAGO
    */
    function woo_custom_field_checkout($checkout) {
    echo '<div id="additional_checkout_field">';
    woocommerce_form_field( 'nif', array( // Identificador del campo
    'type' => 'text',
    'class' => array('my-field-class form-row-wide'),
    'required' => true, // ?El campo es obligatorio 'true' o 'false'?
    'label' => __('NIF / CIF'), // Nombre del campo
    'placeholder' => __('Ej: 12345678X'), // Texto de apoyo que se muestra dentro del campo
    ), $checkout->get_value( 'nif' )); // Identificador del campo
    echo '</div>';
    }
    add_action( 'woocommerce_after_checkout_billing_form', 'woo_custom_field_checkout' );
    /*
    * INCLUYE NIF/CIF EN LOS DETALLES DEL PEDIDO CON EL NUEVO CAMPO
    */
    function woo_custom_field_checkout_update_order($order_id) {
    if ( ! empty( $_POST['nif'] ) ) {
    update_post_meta( $order_id, 'NIF', sanitize_text_field( $_POST['nif'] ) );
    }
    }
    add_action( 'woocommerce_checkout_update_order_meta', 'woo_custom_field_checkout_update_order' );
    /*
    * MUESTRA EL VALOR DEL CAMPO NIF/CIF LA PáGINA DE MODIFICACIóN DEL PEDIDO
    */
    function woo_custom_field_checkout_edit_order($order){
    echo '<p><strong>'.__('NIF').':</strong> ' . get_post_meta( $order->id, 'NIF', true ) . '</p>';
    }
    add_action( 'woocommerce_admin_order_data_after_billing_address', 'woo_custom_field_checkout_edit_order', 10, 1 );
    /*
    * INCLUYE EL CAMPO NIF/CIF EN EL CORREO ELECTRóNICO DE AVISO A TU CLIENTE
    */
    function woo_custom_field_checkout_email($keys) {
    $keys[] = 'NIF';
    return $keys;
    }
    add_filter('woocommerce_email_order_meta_keys', 'woo_custom_field_checkout_email');

    The page I need help with: [log in to see the link]

Viewing 15 replies - 1 through 15 (of 19 total)
  • Plugin Contributor Yordan Soares

    (@yordansoares)

    Hola, @goviwebs:

    El siguiente fragmento de código, que acabo de escribir para ti, debería mostrar el NIF en la factura, siempre y cuando se haya establecido para su pedido correspondiente:

    /**
    * PDF Invoices & Packing Slips for WooCommerce:
    * Incluir NIF en los documentos PDF
    */
    add_filter( 'wpo_wcpdf_after_billing_address', function( $document_type, $order ) {
    $nif_meta_key = 'nif';
    $nif = $order->get_meta( $nif_meta_key ) ? $order->get_meta( $nif_meta_key ) : $order->get_meta( "_{$nif_meta_key}" );
    if ( $nif ) {
    printf( '<p>NIF: %s</p>', $nif );
    }
    }, 10, 2 );

    ?Hazme saber si necesitas más ayuda!

    Thread Starter goviwebs

    (@goviwebs)

    Hello, thank you for your reply. Should I put the code you send me after the code I gave you?

    Plugin Contributor Yordan Soares

    (@yordansoares)

    Hola, @goviwebs:

    Puedes colocarlo en el mismo lugar donde pusiste el código que compartiste en tu primer mensaje. Si no has trabajado antes con fragmentos de código (acciones y filtros) o el archivo functions.php, lee esta guía: Cómo utilizar frag?m?entos de código (en inglés).

    P.D.: Ten en cuenta que en la empresa hablamos espa?ol también, así que no dudes en escribir en tu idioma, siempre que quieras ??

    Thread Starter goviwebs

    (@goviwebs)

    Genial si habláis espa?ol!!! Más cómodo para la comunidad. Voy a crear otro fragmento de código independiente y así hay menos lio… espero que funcione. Un saludo!

    Thread Starter goviwebs

    (@goviwebs)

    Una pregunta más, ese código aplicará a los pedidos antiguos o solo a los nuevos?

    Plugin Contributor Yordan Soares

    (@yordansoares)

    El código también es retroactivo, así que funcionará tanto en pedidos nuevos como en los anteriores, siempre y cuando, no estés usando la extensión Professional y tengas marcada la opción ?Mantener el PDF en el servidor?. En este último caso, solo funcionaría en pedidos nuevos.

    Thread Starter goviwebs

    (@goviwebs)

    Hola, abrí este hilo hace tiempo e implemente el código que me diste pero el NIF sigue sin aparecer en el albaran. Después de a?adir el código que me diste, quedo todo así::

    /*

    • A?ADIR CAMPO NIF/CIF EN EL FORMULARIO DE PAGO
      / function woo_custom_field_checkout($checkout) { echo ”; woocommerce_form_field( ‘nif’, array( // Identificador del campo ‘type’ => ‘text’, ‘class’ => array(‘my-field-class form-row-wide’), ‘required’ => true, // ?El campo es obligatorio ‘true’ o ‘false’? ‘label’ => (‘NIF / CIF’), // Nombre del campo ‘placeholder’ => (‘Ej: 12345678X’), // Texto de apoyo que se muestra dentro del campo ), $checkout->get_value( ‘nif’ )); // Identificador del campo echo ”; } add_action( ‘woocommerce_after_checkout_billing_form’, ‘woo_custom_field_checkout’ ); /
    • INCLUYE NIF/CIF EN LOS DETALLES DEL PEDIDO CON EL NUEVO CAMPO
      / function woo_custom_field_checkout_update_order($order_id) { if ( ! empty( $_POST[‘nif’] ) ) { update_post_meta( $order_id, ‘NIF’, sanitize_text_field( $_POST[‘nif’] ) ); } } add_action( ‘woocommerce_checkout_update_order_meta’, ‘woo_custom_field_checkout_update_order’ ); /
    • MUESTRA EL VALOR DEL CAMPO NIF/CIF LA PáGINA DE MODIFICACIóN DEL PEDIDO
      / function woo_custom_field_checkout_edit_order($order){ echo ‘‘.__(‘NIF’).’: ‘ . get_post_meta( $order->id, ‘NIF’, true ) . ”; } add_action( ‘woocommerce_admin_order_data_after_billing_address’, ‘woo_custom_field_checkout_edit_order’, 10, 1 ); /
    • INCLUYE EL CAMPO NIF/CIF EN EL CORREO ELECTRóNICO DE AVISO A TU CLIENTE
      */
      function woo_custom_field_checkout_email($keys) {
      $keys[] = ‘NIF’;
      return $keys;
      }
      add_filter(‘woocommerce_email_order_meta_keys’, ‘woo_custom_field_checkout_email’);

    /**

    • PDF Invoices & Packing Slips for WooCommerce:
    • Incluir NIF en los documentos PDF
      */
      add_filter( ‘wpo_wcpdf_after_billing_address’, function( $document_type, $order ) {
      $nif_meta_key = ‘nif’;
      $nif = $order->get_meta( $nif_meta_key ) ? $order->get_meta( $nif_meta_key ) : $order->get_meta( “_{$nif_meta_key}” );
      if ( $nif ) {
      printf( ‘NIF: %s’, $nif );
      }
      }, 10, 2 );
    Plugin Contributor Yordan Soares

    (@yordansoares)

    Hola, @goviwebs:

    Perdona por no haberte respondido antes, pero había perdido de vista esta conversación, hasta hoy.

    Volviendo a tu pregunta, ten en cuenta que el código que te escribí más arriba muestra el NIF en la dirección de facturación, no en la de envío, que es la que usa por defecto el albarán de entrega.

    Dicho esto, he reescrito el código para mostrar el número NIF en ambas direcciones:

    /**
    * PDF Invoices & Packing Slips for WooCommerce:
    * Incluir NIF en los documentos PDF, tanto en la dirección de facturación, como en la de envío
    */
    add_filter( 'wpo_wcpdf_after_billing_address', 'wpo_wcpdf_display_nif_number', 10, 2 );
    add_filter( 'wpo_wcpdf_after_shipping_address', 'wpo_wcpdf_display_nif_number', 10, 2 );
    function wpo_wcpdf_display_nif_number( $document_type, $order ) {
    $nif_meta_key = 'nif'; // Establece la clave meta del campo aquí
    $nif = $order->get_meta( $nif_meta_key ) ?: $order->get_meta( "_{$nif_meta_key}" );
    if ( $nif ) {
    printf( '<div>NIF: %s</div>', $nif );
    }
    }

    Espero que te sirva ??

    Thread Starter goviwebs

    (@goviwebs)

    hola, gracias por responder… pues he metido el código al que ya tenía quedando así, he generado el albaran y pedido de nuevo y sigue sin aparecer el DNI… Puede mandarte el archivo generado por privado si quieres, el codigo queda así:

    /*

    • A?ADIR CAMPO NIF/CIF EN EL FORMULARIO DE PAGO
      / function woo_custom_field_checkout($checkout) { echo ”; woocommerce_form_field( ‘nif’, array( // Identificador del campo ‘type’ => ‘text’, ‘class’ => array(‘my-field-class form-row-wide’), ‘required’ => true, // ?El campo es obligatorio ‘true’ o ‘false’? ‘label’ => (‘NIF / CIF’), // Nombre del campo ‘placeholder’ => (‘Ej: 12345678X’), // Texto de apoyo que se muestra dentro del campo ), $checkout->get_value( ‘nif’ )); // Identificador del campo echo ”; } add_action( ‘woocommerce_after_checkout_billing_form’, ‘woo_custom_field_checkout’ ); /
    • INCLUYE NIF/CIF EN LOS DETALLES DEL PEDIDO CON EL NUEVO CAMPO
      / function woo_custom_field_checkout_update_order($order_id) { if ( ! empty( $_POST[‘nif’] ) ) { update_post_meta( $order_id, ‘NIF’, sanitize_text_field( $_POST[‘nif’] ) ); } } add_action( ‘woocommerce_checkout_update_order_meta’, ‘woo_custom_field_checkout_update_order’ ); /
    • MUESTRA EL VALOR DEL CAMPO NIF/CIF LA PáGINA DE MODIFICACIóN DEL PEDIDO
      / function woo_custom_field_checkout_edit_order($order){ echo ‘‘.__(‘NIF’).’: ‘ . get_post_meta( $order->id, ‘NIF’, true ) . ”; } add_action( ‘woocommerce_admin_order_data_after_billing_address’, ‘woo_custom_field_checkout_edit_order’, 10, 1 ); /
    • INCLUYE EL CAMPO NIF/CIF EN EL CORREO ELECTRóNICO DE AVISO A TU CLIENTE
      */
      function woo_custom_field_checkout_email($keys) {
      $keys[] = ‘NIF’;
      return $keys;
      }
      add_filter(‘woocommerce_email_order_meta_keys’, ‘woo_custom_field_checkout_email’);

    /**

    • PDF Invoices & Packing Slips for WooCommerce:
    • Incluir NIF en los documentos PDF, tanto en la dirección de facturación, como en la de envío
      */
      add_filter( ‘wpo_wcpdf_after_billing_address’, ‘wpo_wcpdf_display_nif_number’, 10, 2 );
      add_filter( ‘wpo_wcpdf_after_shipping_address’, ‘wpo_wcpdf_display_nif_number’, 10, 2 );
      function wpo_wcpdf_display_nif_number( $document_type, $order ) {
      $nif_meta_key = ‘nif’; // Establece la clave meta del campo aquí
      $nif = $order->get_meta( $nif_meta_key ) ?: $order->get_meta( “_{$nif_meta_key}” );
      if ( $nif ) {
      printf( ‘NIF: %s’, $nif );
      }
      }
    Plugin Contributor Yordan Soares

    (@yordansoares)

    Qué raro. Yo he probado el código y funciona perfectamente.

    Te dejo un par de preguntas para intentar entender qué puede estar pasando:

    1. ?Revisaste que el número de NIF estuviera almacenado en el pedido?
    2. ?Podrías decirme dónde estás colocando los fragmentos de código (p. ej. el archivo functions.php de tu tema hijo, usando el plugin Code Snippets, etc.)?
    Thread Starter goviwebs

    (@goviwebs)

    Hola, utilizo el plugin code snippet, y si, está almacenado, veré si funciona en nuevos pedidos que entren. Imagino que este código vale tanto para albaranes como para pedidos, no?

    No sé como poner aquí capturas para ense?arte que está metido el código por code snippets

    Thread Starter goviwebs

    (@goviwebs)

    Si algún modo de hablar un poco más privado me dices y lo hacemos para darte más datos, incluso acceso

    Plugin Contributor Yordan Soares

    (@yordansoares)

    Ten en cuenta que el plugin?Code Snippets?tiene dos botones para guardar en la vista de edición:??Save?Changes and Activate??y??Save?Changes?; debe hacer clic en el primer botón:

    Thread Starter goviwebs

    (@goviwebs)

    Hola, sí, el código que me has pasado está en un snipett solo para ese código y esta activo. Si esto no fuera público te pasaba capturas

    Plugin Contributor Yordan Soares

    (@yordansoares)

    Gracias por confirmar eso, @goviwebs:

    ?Puedes asegurarte de que el NIF esté presente en el pedido y revisar la clave meta con la que se está guardando? Si el campo está oculto, puedes instalar Store Toolkit, un plugin que muestra todos los datos ocultos en una tabla al final del pedido.

Viewing 15 replies - 1 through 15 (of 19 total)
  • You must be logged in to reply to this topic.