En nuestros proyectos cada vez que se realiza una compra el sistema permite capturar el NIT del comprador en el mismo formulario de registro de la compra. Los valores que el usuario puede registrar son:
Consumidor Final (texto, también como CF o C/F)
Número de identificación tributaria (números y texto mayores a 6 dígitos)
Número CUI (números en una cadena superior a las 12 dígitos)
Teniendo en cuenta que la ley del IVA en Guatemala, indica que compras mayores a Q. 2,500.00 no es posible facturar como Consumidor Final o CF, desarrollamos un función simple, que realiza varias validaciones.
De pendiendo el monto de la compra valida:
1. si puede o no usar el texto: Consumidor Final o CF
2. Si el valor ingresado es NIT o CUI.
A continuación comparto la función.
/* ** FUNCION VALIDAR_NIT_SEGUN_MONTO
* PROVISTO POR MAYNOR MIJANGOS
* SOLUTIONSMAKERS.APP
* VALIDACION DE NIT
*
*/
add_action('woocommerce_checkout_process', 'validar_nit_segun_monto');
function validar_nit_segun_monto() {
$total_carrito = WC()->cart->total;
$nit = isset($_POST['billing_nif']) ? sanitize_text_field($_POST['billing_nif']) : '';
if ($total_carrito > 2500 && !empty($nit)) {
$terminos_prohibidos = array('consumidor final', 'cf', 'c/f', 'Consumidor Final', 'c f');
$nit_lower = strtolower(trim($nit));
// Validar términos prohibidos
if (in_array($nit_lower, $terminos_prohibidos)) {
wc_add_notice(__('No se permiten los términos "Consumidor Final", "CF" o "C/F" en el NIT para compras mayores a Q2,500.00'), 'error');
}
// Validar formato alfanumérico con mínimo 7 caracteres
if (!preg_match('/^[A-Za-z0-9]{7,}$/', $nit)) {
wc_add_notice(__('El NIT debe tener mínimo 7 caracteres alfanuméricos (sin espacios ni símbolos) para montos superiores a Q2,500.00'), 'error');
}
}
}
add_filter('woocommerce_billing_fields', 'nit_obligatorio_segun_monto');
function nit_obligatorio_segun_monto($fields) {
if (WC()->cart->total > 2500) {
$fields['billing_nif']['required'] = true;
$fields['billing_nif']['label'] = 'NIT o DPI (Requerido para compras mayores a Q2,500.00)';
}
return $fields;
}
Este código es necesario agregarlo al final del archivo functions.php que se ubica en la carpeta: /public_html/wp-includes/functions.php

