ART PROJECT GROUP:
C/ Álvaro Mutis, 1. 4º G. C.P: 29651. Mijas. Málaga. España.
Teléfono: +34 665 058 218.

¿Cómo añadir un campo NIF o CIF con validación a WooCommerce 2.4?

  • WooCommerce - Blog

¿Cómo añadir un campo NIF o CIF con validación a WooCommerce 2.4?

Tras la última actualización de ¿Cómo añadir un campo NIF o CIF a WooCommerce 2.1?, código publicado inicialmente en ¿Cómo añadir un campo NIF o CIF a WooCommerce 2.0?, no habíamos tenido que realizar ningún tipo de modificación sobre el mismo hasta que se ha publicado WooCommerce 2.4 y hemos detectado, gracias al aviso de uno de nuestros lectores, un fallo en el orden de los campos que se muestran en el formulario de la página de finalización de la compra.

Tras algunas pruebas, ya hemos dado con la configuración correcta, así que procedemos a publicar el código PHP íntegro que necesitas para que todo vuelva a la normalidad. En esta ocasión le hemos añadido directamente la validación del campo NIF/CIF, que publicamos en Validando el campo NIF o CIF en WooCommerce y que permite la validación de cualquier tipo de número NIF, CIF o NIE. Recuerda que este código PHP debe ser añadido al archivo functions.php del tema hijo o padre que estés utilizando:

//Arreglamos la dirección predeterminada
function campos_de_direccion( $campos ) {
    $campos['nif'] = array( 
        'label' => __( '<abbr title="Código de Identificación Fiscal" lang="es">CIF</abbr>/<abbr title="Número de Identificación Fiscal" lang="es">NIF</abbr>', 'woocommerce' ),
        'placeholder' => _x( 'Introduzca el CIF/NIF', 'placeholder', 'woocommerce' ),
        'required' => false,
        'class' =>array( 'form-row-last' ),
        'clear' => true,
	);
    $campos['email'] =array( 
        'label' => __( 'Email Address', 'woocommerce' ),
        'required' => true,
        'class' =>array( 'form-row-last' ),
        'validate' =>array( 'email' ),
        'clear' => true,
	);
    $campos['phone'] =array( 
        'label' => __( 'Phone', 'woocommerce' ),
        'required' => true,
        'class' =>array( 'form-row-first' ),
	);

    $campos['company']['class'][0] = 'form-row-first';
    $campos['city']['class'][0] = 'form-row-first';
    $campos['state']['class'][0] = 'form-row-last update_totals_on_change';
    $campos['postcode']['class'][0] .= ' update_totals_on_change';

    //Reordenamos los campos
    $campos_nuevos['country'] = $campos['country'];
    $campos_nuevos['first_name'] = $campos['first_name'];
    $campos_nuevos['last_name'] = $campos['last_name'];
    $campos_nuevos['company'] = $campos['company'];
    $campos_nuevos['nif'] = $campos['nif'];
    $campos_nuevos['address_1'] = $campos['address_1'];
    $campos_nuevos['address_2'] = $campos['address_2'];
    $campos_nuevos['postcode'] = $campos['postcode'];
    $campos_nuevos['city'] = $campos['city'];
    $campos_nuevos['state'] = $campos['state'];
    if ( isset( $campos['email'] ) ) {
		$campos_nuevos['email'] = $campos['email'];
	}
    if ( isset( $campos['phone'] ) ) {
		$campos_nuevos['phone']['required'] = true;
		$campos_nuevos['phone'] = $campos['phone'];
    }
	
    return $campos_nuevos;
}
add_filter( 'woocommerce_default_address_fields' , 'campos_de_direccion' );

//Nueva función para hacer compatible el código con WooCommerce 2.1
function dame_campo_personalizado( $campo, $pedido ) {
    $valor = get_post_meta( $pedido, $campo, false );
	if ( isset( $valor[0] ) ){
		return $valor[0];
	}
	return NULL;
}

//Añadimos el NIF y el teléfono a la dirección de facturación y envío
function anade_campo_nif_direccion_facturacion( $campos, $pedido ) {
    $campos['nif'] = dame_campo_personalizado( '_billing_nif', $pedido->id );
    $campos['phone'] = dame_campo_personalizado( '_billing_phone', $pedido->id );
	
	return $campos;
}
add_filter( 'woocommerce_order_formatted_billing_address','anade_campo_nif_direccion_facturacion', 1, 2 );

function anade_campo_nif_direccion_envio( $campos, $pedido ) {
    $campos['nif'] = dame_campo_personalizado( '_shipping_nif', $pedido->id );
    $campos['phone'] = dame_campo_personalizado( '_shipping_phone', $pedido->id );
	
	return $campos;
}
add_filter( 'woocommerce_order_formatted_shipping_address','anade_campo_nif_direccion_envio', 1, 2 );

function formato_direccion_de_facturacion( $campos, $argumentos ) {
    $campos['{nif}'] = $argumentos['nif'];
    $campos['{nif_upper}'] =strtoupper( $argumentos['nif'] );
    $campos['{phone}'] = $argumentos['phone'];
    $campos['{phone_upper}'] =strtoupper( $argumentos['phone'] );
	
	return $campos;
}
add_filter( 'woocommerce_formatted_address_replacements','formato_direccion_de_facturacion', 1, 2 );

//Reordenamos los campos de la dirección predeterminada
function formato_direccion_localizacion( $campos ) {
    $campos['default'] = "{name}n{company}n{nif}n{address_1}n{address_2}n{city}n{state}n{postcode}n{country}n{phone}";
    $campos['ES'] = "{name}n{company}n{nif}n{address_1}n{address_2}n{postcode} {city}n{state}n{country}n{phone}";
	
	return $campos;
}
add_filter( 'woocommerce_localisation_address_formats','formato_direccion_localizacion' );

//Arreglamos el formulario de envío
function formulario_de_envio( $campos ) {
    $campos['shipping_email'] =array( 
        'label' => __( 'Email Address', 'woocommerce' ),
        'required' => false,
        'class' =>array( 'form-row-first' ),
        'validate' =>array( 'email' ),
	);
    $campos['shipping_phone'] =array( 
        'label' => __( 'Phone', 'woocommerce' ),
        'required' => true,
        'class' =>array( 'form-row-last' ),
        'clear' => true,
	);
    $campos['shipping_postcode'] =array( 
        'label' => __( 'Postcode / Zip', 'woocommerce' ),
        'placeholder' => __( 'Postcode / Zip', 'woocommerce' ),
        'required' => true,
        'class' =>array( 'form-row-wide', 'address-field' ),
        'clear' => true,
        'custom_attributes' =>array( 
            'autocomplete' => 'no'
        )
	);
	 
	return $campos;
}
add_filter( 'woocommerce_shipping_fields' , 'formulario_de_envio' );

//Arreglamos el formulario de cobro
function formulario_de_cobro( $campos ) {
	$campos['billing_postcode'] =array( 
        'label' => __( 'Postcode / Zip', 'woocommerce' ),
        'placeholder' => __( 'Postcode / Zip', 'woocommerce' ),
        'required' => true,
        'class' => array( 'form-row-wide', 'address-field' ),
        'clear' => true,
        'custom_attributes' => array( 
            'autocomplete' => 'no'
        )
	);
	
	return $campos;
}
add_filter( 'woocommerce_billing_fields' , 'formulario_de_cobro' );

//Añade el campo CIF/NIF a usuarios
function anade_campos_administracion_usuarios( $campos ) {
    $campos['billing']['fields']['billing_nif'] = array( 
            'label' => __( 'CIF/NIF', 'woocommerce' ),
            'description' => ''
	);

    $campos['shipping']['fields']['shipping_nif'] = array( 
            'label' => __( 'CIF/NIF', 'woocommerce' ),
            'description' => ''
	);
    $campos['shipping']['fields']['shipping_email'] = array( 
            'label' => __( 'Email', 'woocommerce' ),
            'description' => '',
       		'class' =>array( 'form-row-last' ),
	);
	$campos['shipping']['fields']['shipping_phone'] = array( 
            'label' => __( 'Telephone', 'woocommerce' ),
            'description' => '',
	        'class' =>array( 'form-row-first' ),
	);

    //Reordenamos los campos
    $campos_nuevos['billing']['title'] = $campos['billing']['title'];
    $campos_nuevos['billing']['fields']['billing_first_name'] = $campos['billing']['fields']['billing_first_name'];
    $campos_nuevos['billing']['fields']['billing_last_name'] = $campos['billing']['fields']['billing_last_name'];
    $campos_nuevos['billing']['fields']['billing_company'] = $campos['billing']['fields']['billing_company'];
    $campos_nuevos['billing']['fields']['billing_nif'] = $campos['billing']['fields']['billing_nif'];
    $campos_nuevos['billing']['fields']['billing_address_1'] = $campos['billing']['fields']['billing_address_1'];
    $campos_nuevos['billing']['fields']['billing_address_2'] = $campos['billing']['fields']['billing_address_2'];
    $campos_nuevos['billing']['fields']['billing_postcode'] = $campos['billing']['fields']['billing_postcode'];
    $campos_nuevos['billing']['fields']['billing_city'] = $campos['billing']['fields']['billing_city'];
    $campos_nuevos['billing']['fields']['billing_state'] = $campos['billing']['fields']['billing_state'];
    $campos_nuevos['billing']['fields']['billing_country'] = $campos['billing']['fields']['billing_country'];
    $campos_nuevos['billing']['fields']['billing_phone'] = $campos['billing']['fields']['billing_phone'];
    $campos_nuevos['billing']['fields']['billing_email'] = $campos['billing']['fields']['billing_email'];

    $campos_nuevos['shipping']['title'] = $campos['shipping']['title'];
    $campos_nuevos['shipping']['fields']['shipping_first_name'] = $campos['shipping']['fields']['shipping_first_name'];
    $campos_nuevos['shipping']['fields']['shipping_last_name'] = $campos['shipping']['fields']['shipping_last_name'];
    $campos_nuevos['shipping']['fields']['shipping_company'] = $campos['shipping']['fields']['shipping_company'];
    $campos_nuevos['shipping']['fields']['shipping_nif'] = $campos['shipping']['fields']['shipping_nif'];
    $campos_nuevos['shipping']['fields']['shipping_address_1'] = $campos['shipping']['fields']['shipping_address_1'];
    $campos_nuevos['shipping']['fields']['shipping_address_2'] = $campos['shipping']['fields']['shipping_address_2'];
    $campos_nuevos['shipping']['fields']['shipping_postcode'] = $campos['shipping']['fields']['shipping_postcode'];
    $campos_nuevos['shipping']['fields']['shipping_city'] = $campos['shipping']['fields']['shipping_city'];
    $campos_nuevos['shipping']['fields']['shipping_state'] = $campos['shipping']['fields']['shipping_state'];
    $campos_nuevos['shipping']['fields']['shipping_country'] = $campos['shipping']['fields']['shipping_country'];
    $campos_nuevos['shipping']['fields']['shipping_phone'] = $campos['shipping']['fields']['shipping_phone'];
    $campos_nuevos['shipping']['fields']['shipping_email'] = $campos['shipping']['fields']['shipping_email'];

    $campos_nuevos = apply_filters( 'wcbcf_customer_meta_fields', $campos_nuevos );
	
	return $campos_nuevos;
}
add_filter( 'woocommerce_customer_meta_fields', 'anade_campos_administracion_usuarios' );

//Añadimos el NIF a la dirección de facturación y envío
function anade_campo_nif_usuario_direccion_facturacion( $campos, $usuario ) {
    $campos['nif'] = get_user_meta( $usuario, 'billing_nif', true );
    $campos['phone'] = get_user_meta( $usuario, 'billing_phone', true );return $campos;
}
add_filter( 'woocommerce_user_column_billing_address','anade_campo_nif_usuario_direccion_facturacion', 1, 2 );

function anade_campo_nif_usuario_direccion_envio( $campos, $usuario ) {
    $campos['nif'] = get_user_meta( $usuario, 'shipping_nif', true );
    $campos['phone'] = get_user_meta( $usuario, 'shipping_phone', true );return $campos;
}
add_filter( 'woocommerce_user_column_shipping_address','anade_campo_nif_usuario_direccion_envio', 1, 2 );

//Añade el campo NIF a Editar mi dirección
function anade_campo_nif_editar_direccion( $campos, $usuario, $nombre ) {
    $campos['nif'] = get_user_meta( $usuario, $nombre . '_nif', true );
    $campos['phone'] = get_user_meta( $usuario, $nombre . '_phone', true );

    //Ordena los campos
    $campos_nuevos['first_name'] = $campos['first_name'];
    $campos_nuevos['last_name'] = $campos['last_name'];
    $campos_nuevos['company'] = $campos['company'];
    $campos_nuevos['nif'] = $campos['nif'];
    $campos_nuevos['address_1'] = $campos['address_1'];
    $campos_nuevos['address_2'] = $campos['address_2'];
    $campos_nuevos['postcode'] = $campos['postcode'];
    $campos_nuevos['city'] = $campos['city'];
    $campos_nuevos['state'] = $campos['state'];
    $campos_nuevos['country'] = $campos['country'];
    $campos_nuevos['phone'] = $campos['phone'];
	
	return $campos_nuevos;
}
add_filter( 'woocommerce_my_account_my_address_formatted_address', 'anade_campo_nif_editar_direccion', 10, 3 );

//Añade el campo NIF a Detalles del pedido
function anade_campo_nif_editar_direccion_pedido( $campos ) {
    $campos['nif'] = array( 
        'label' => __( 'CIF/NIF', 'woocommerce' ),
        'show'  => false
    );
    $campos['phone'] = array( 
        'label' => __( 'Telephone', 'woocommerce' ),
        'show'  => false
    );

    //Ordena los campos
    $campos_nuevos['first_name'] = $campos['first_name'];
    $campos_nuevos['last_name'] = $campos['last_name'];
    $campos_nuevos['company'] = $campos['company'];
    $campos_nuevos['nif'] = $campos['nif'];
    $campos_nuevos['address_1'] = $campos['address_1'];
    $campos_nuevos['address_2'] = $campos['address_2'];
    $campos_nuevos['postcode'] = $campos['postcode'];
    $campos_nuevos['city'] = $campos['city'];
    $campos_nuevos['state'] = $campos['state'];
    $campos_nuevos['country'] = $campos['country'];
    $campos_nuevos['phone'] = $campos['phone'];

    return $campos_nuevos;
}
add_filter( 'woocommerce_admin_billing_fields', 'anade_campo_nif_editar_direccion_pedido' );
add_filter( 'woocommerce_admin_shipping_fields', 'anade_campo_nif_editar_direccion_pedido' );

function carga_hoja_de_estilo_editar_direccion_pedido() {
    echo '</pre>
<style type="text/css"><!-- #order_data .order_data_column ._billing_company_field, #order_data .order_data_column ._shipping_company_field { float: left; margin: 9px 0 0; padding: 0; width: 48%; } #order_data .order_data_column ._billing_nif_field, #order_data .order_data_column ._shipping_nif_field { float: right; margin: 9px 0 0; padding: 0; width: 48%; } --></style>
<pre>';
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'carga_hoja_de_estilo_editar_direccion_pedido' );

//Validando el campo NIF/CIF
function validando_campo() {
	$falso = true;

    if ( isset( $_POST['billing_nif'] ) && strlen( $_POST['billing_nif'] ) == 9 ) {
		$nif = strtoupper( $_POST['billing_nif'] );

		for ( $i = 0; $i < 9; $i ++ ) {
			$num[$i] = substr( $nif, $i, 1 );
		}

		if ( !preg_match( '/((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)/', $nif ) ) { //No tiene formato válido
			$falso = true;
		}

		if ( preg_match( '/(^[0-9]{8}[A-Z]{1}$)/', $nif ) ) {
			if ( $num[8] == substr( 'TRWAGMYFPDXBNJZSQVHLCKE', substr( $nif, 0, 8 ) % 23, 1 ) ) { //NIF válido
				$falso = false;
			}
		}

		$suma = $num[2] + $num[4] + $num[6];
		for ( $i = 1; $i < 8; $i += 2 ) {
			$suma += substr( ( 2 * $num[$i] ), 0, 1 ) + substr( ( 2 * $num[$i] ), 1, 1 );
		}
		$n = 10 - substr( $suma, strlen( $suma ) - 1, 1 );

		if ( preg_match( '/^[KLM]{1}/', $nif ) ) { //NIF especial válido
			if ( $num[8] == chr( 64 + $n ) ) {
				$falso = false;
			}
		}

		if ( preg_match( '/^[ABCDEFGHJNPQRSUVW]{1}/', $nif ) && isset ( $num[8] ) ) {
			echo $num[8] ." == ".chr( 64 + $n )." - " . substr( $n, strlen( $n ) - 1, 1 );
			if ( $num[8] == chr( 64 + $n ) || $num[8] == substr( $n, strlen( $n ) - 1, 1 ) ) { //CIF válido
				$falso = false;
			}
		}

		if ( preg_match( '/^[T]{1}/', $nif ) ) {
			if ( $num[8] == preg_match( '/^[T]{1}[A-Z0-9]{8}$/', $nif ) ) { //NIE válido (T)
				$falso = false;
			}
		}

		if ( preg_match( '/^[XYZ]{1}/', $nif ) ) { //NIE válido (XYZ)
			if ( $num[8] == substr( 'TRWAGMYFPDXBNJZSQVHLCKE', substr( str_replace( array( 'X','Y','Z' ), array( '0','1','2' ), $nif ), 0, 8 ) % 23, 1 ) ) {
				$falso = false;
			}
		}
	}

	if ( $falso ) {
		if ( empty( $_POST['billing_nif'] ) ) {
			add_action( 'woocommerce_checkout_process', 'validando_campo' );

		} else {
			wc_add_notice( __( 'Por favor, introduzca un NIF/CIF válido.' ), 'error' );
		}
	}
}
add_action( 'woocommerce_checkout_process', 'validando_campo' );

Como siempre esperamos que este nuevo código os resulte útil y quedamos a la espera de vuestros comentarios, aportes y sugerencias.

Actualización: Hemos solucionado varios errores que hemos detectado en el código publicado originalmente.

2017-03-27T18:08:40+00:00 miércoles, 26 de agosto de 2015|Categorías: Art Project Group|Etiquetas: , , , , , , |22 comentarios

22 Comentarios

  1. Sergio domingo, 30 de agosto de 2015 en 3:08- Responder

    Muchas gracias por el código, lo he usado para las versiones anteriores de WP y me está siendo de gran ayuda. Ahora con la versión 2.4 me encontré con algunos problemas y llegué aquí. Aún con este nuevo código me los estoy encontrando, como por ejemplo un orden diferente de los campos en la dirección de facturación y envío, junto con algunos problemas de formato en el apartado de edición de la dirección de envío en el apartado “Mi cuenta” (aparecen los campos de email y teléfono fuera de sitio).
    Ya que hemos añadido la posibilidad de tener teléfono y email de envío diferentes de los de facturación, estaría bien poder ver estos datos en la edición del pedido (apartado del administrador de la tienda), así como en el mail de nuevo pedido. Con este código solo aparece el teléfono, no el email.

  2. Carlos miércoles, 23 de septiembre de 2015 en 17:43- Responder

    Muchas gracias por vuestros excelentes códigos. He ido a aplicar esta nueva actualización en un woocommerce de pruebas que estoy haciendo pero me muestra la pantalla blanca del admin cuando subo el archivo functions. Podéis darme alguna sugerencia de como solucionarlo. Muchísimas gracias y seguid así.

    • Art Project Group miércoles, 23 de septiembre de 2015 en 19:48- Responder

      Si te devuelve pantallazo en blanco al subir el archivo functions.php, obviamente tienes algún fallo en ese archivo. ¡Revísalo!

      Un saludo.

  3. ntr miércoles, 7 de octubre de 2015 en 12:32- Responder

    Hol y gracias por el codigo.
    Una prunta!.
    ¿se puede hacer para que el DNI/CIF no sea obligatorio, pero en caso de que se rellene se valide para que quede bien puesto?

    Eso me pasa en mi web, tengo clientes que no quieren dar el DNI, pero otros que si quieren factura a su nombre y necesito que lo pongan bien.
    No quiero que el dni sea obligatorio, pero necesito que en caso de que se rellene, sea un dato real.

    Gracias.

    • Art Project Group miércoles, 7 de octubre de 2015 en 12:35- Responder

      Se puede hacer sin problema. Sólo hay que cambiar el atributo required a false.

      Un saludo.

      • ntr jueves, 8 de octubre de 2015 en 17:37- Responder

        Hola, y gracias por responder.

        El valor esta en false, pero el que no se ponga dni da mensaje como que no es un numero válido.

        Creo que el problema es que la validación de dni entra en conflicto con que no sea obligatorio, ya que todo lo que no sea un dni verdadero ( caso del 0 o un valor vacio) es considerado como falso.

        Lo que no se es como hacer para que la validacion no cuente el 0 o el valor null, o que esos valores sean considerados DNI autenticos.

        Gracias

      • ntr viernes, 9 de octubre de 2015 en 13:28- Responder

        ya lo he arreglado un poco, dentro de la comprobacion del DNI, en la respuesta de falso he puesto esto:
        if(empty($_POST[‘billing_nif’])){
        add_action( ‘woocommerce_checkout_process’, ‘validando_campo’ );

        Quedando asi:

        if ( $falso ) {

        if(empty($_POST['billing_nif'])){
        add_action( 'woocommerce_checkout_process', 'validando_campo' );

        }

        else{
        wc_add_notice( __( 'Por favor, introduzca un NIF/CIF valido.' ), 'error' );
        } }

        De esta forma, antes de dar un error comprueba que el campo no este vacio, si esta vacio te da un ok y si no te da el mensaje de error.

        Pero aun asi falla otra cosa que no me habia fijado.

        Resuta que si pones en dni ksifjrhy o algo que tenga menos de 9 letras, te lo da como DNI VALIDO ¿?.

        Asi que si en dni pongo :
        abcefgh–> DNI OK (menos de 9 caracteres)
        abc3–> DNI FALSO tiene menos de 9 caracteres pero contiene un numero
        abcdefghijkl–> DNI FALSO
        “VACIO”–> DNI OK

        Parece que este es una tonteria, pero hay muchos clientes que en el campo dni ponen “no tengo” o no quiero factura, o que ponen la palabra “iva” o “no”.

        • Art Project Group viernes, 9 de octubre de 2015 en 14:00- Responder

          Efectivamente hay un pequeño fallo.

          Añadimos tu pequeña mejora y publicamos el nuevo código con el control necesario para evitar esa trampa.

          Muchas gracias por tu aviso.

          Un saludo.

        • Art Project Group viernes, 9 de octubre de 2015 en 14:15- Responder

          Actualizado.

          Un saludo.

          • ntr viernes, 9 de octubre de 2015 en 16:53

            ok, funciona a la mil maravillas.

  4. Jorge domingo, 11 de octubre de 2015 en 19:28- Responder

    Hola,
    uso vuestro plugin “APG Weight and Postcode/State/Country Shipping” para configurar los gastos de envío, y me funciona a las mil maravillas. Os felicito.
    Ahora quisiera añadir las funcionalidades que explicáis en este post. Tras pegar el código en el archivo functions.php de mi tema, aparecen los campos correctamente pero, tal como comentaba Sergio más arriba, el formato se desconfigura. Os muestro unas capturas de pantalla para que veáis cómo queda.

    En el apartado Dirección de facturación de la Caja, queda así:
    https://dl.dropboxusercontent.com/u/27366018/caja1.jpg
    Me gustaría que el CIF/NIF quedara a la derecha del Nombre de la empresa y que el Correo electrónico quedara junto al Teléfono.

    Y en el apartado Dirección de envío de la Caja, queda así:
    https://dl.dropboxusercontent.com/u/27366018/caja2.jpg
    Como podéis ver, las cajas de Correo electrónico y Teléfono quedan abajo y “descolgadas”. Me gustaría que aparecieran debajo de las cajas de texto Nombre de la empresa-NIF/CIF, y que el formato fuese el mismo.

    En la zona de edición del usuario de la Dirección de facturación, queda así:
    https://dl.dropboxusercontent.com/u/27366018/factur.jpg
    Al igual que comentaba anteriormente, me gustaría que el CIF/NIF quedara a la derecha del Nombre de la empresa y que el Correo electrónico quedara junto al Teléfono. Además, el botón de Guardar cambios está “descolgado”; debería quedar abajo a la izquierda.

    En la zona de edición del usuario de la Dirección de envío, queda así:
    https://dl.dropboxusercontent.com/u/27366018/envio.jpg
    Tal como comentaba antes, las cajas de Correo electrónico y Teléfono quedan abajo y “descolgadas”. Me gustaría que aparecieran debajo de las cajas de texto Nombre de la empresa-NIF/CIF, y que el formato fuese el mismo. Aqui el botón de Guardar cambios aparece bien posicionado.

    ¿Tenéis alguna solución para esto?
    Muchas gracias.

    • Art Project Group domingo, 11 de octubre de 2015 en 19:38- Responder

      Hola Jorge.

      Efectivamente en algunas instalaciones quedan desubicados algunos campos. La única solución que te podemos dar para solucionar tu problema es nuestra Consultoría técnica.

      Un saludo.

  5. Sixto Cabañas lunes, 26 de octubre de 2015 en 11:29- Responder

    A la hora de validar el CIF/NIF cuando se trata de un DNI no da problemas pero cuando introduzco un CIF con su letra delante se produce el siguiente mensaje “SyntaxError: Unexpected token =” se os ocurre cual puede ser el problema. Se puede eliminar el proceso de validación, como mal menor?

    Gracias y saludos,

    • Art Project Group lunes, 26 de octubre de 2015 en 11:31- Responder

      ¿Puedes mandarnos por correo el CIF que estás probando para hacer algunas pruebas?

      Un saludo.

    • Art Project Group lunes, 26 de octubre de 2015 en 13:31- Responder

      Hola Sixto.

      Hemos probado los dos CIF que nos has enviado y nos funciona sin ningún tipo de problema, por lo seguramente el error no te lo está generando nuestro código.

      Un saludo.

  6. Alfonso jueves, 19 de noviembre de 2015 en 22:02- Responder

    Muchas gracias por el código, me ha venido genial la verificación del DNI.

    Gracias

  7. goyo martes, 24 de noviembre de 2015 en 12:25- Responder

    tambien tengo problemas con campo nif sale esto SyntaxError: Unexpected token = cuando quiero acabar la compra. tengo la ultima version de wordpress 4.3.1 y la ultima version de woocommerce 2.4.10

    • Art Project Group martes, 24 de noviembre de 2015 en 14:23- Responder

      En principio ese error no tiene nada que ver con el código aquí publicado.

      Un saludo.

  8. ABermo jueves, 10 de diciembre de 2015 en 11:04- Responder

    Hola. Utilizo el plugin de “WooCommerce PDF Invoices & Packing Slips” para generar las facturas / albaranes en PDF. Con vuestro código implementado ocurre que el campo de teléfono de cliente lo imprime dos veces en las facturas/albaranes. Es decir lo repite al final de los datos de cliente, en el encabezado de esta, poniéndolo en dos filas consecutivas ¿Alguna idea?

    gracias!

    • Art Project Group jueves, 10 de diciembre de 2015 en 11:09- Responder

      Algo has hecho mal ya que nosotros también utilizamos ese plugin y nos muestra todos los datos de cliente correctamente.

      Un saludo.

  9. ABermo jueves, 10 de diciembre de 2015 en 12:36- Responder

    Goyo, eso se debe a que en la comprobación del NIF/CIF, dentro de la función validando_campo() está esta línea:
    echo $num[8] .” == “.chr( 64 + $n ).” – ” . substr( $n, strlen( $n ) – 1, 1 );
    eliminala o coméntala con “//” antes. Ha debido quedarse ahí accidentalmente.

    • danilinked jueves, 6 de octubre de 2016 en 18:19- Responder

      Gracias por la ayuda.

      Para todos aquellos que les surja el problema “SyntaxError: Unexpected token =” yo lo he solucionado como dice ABermo y añadiendo el return true; else $false=false; ya que al poner el CIF (X00000000) me daba este error, Espero que a alguien le sirva y gracias por este post, Me ha ayudado mucho 😉

      if ( preg_match( ‘/^[ABCDEFGHJNPQRSUVW]{1}/’, $nif ) && isset ( $num[8] ) ) {
      //echo $num[8] .” == “.chr( 64 + $n ).” – ” . substr( $n, strlen( $n ) – 1, 1 );
      if ($num[8] == chr(64 + $n) || $num[8] == substr($n, strlen($n) – 1, 1)) { //CIF válido
      return true;
      }
      else
      {
      $falso = false;
      }
      }

Deje un comentario

Comparte esto con un amigo