Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Permisos al validar una factura en script de importación

Discusión sobre la creación de nuevos modulos
dcases
Novato
Mensajes: 3
Registrado: Sab, 18/07/2020, 13:42

Permisos al validar una factura en script de importación

Mensaje por dcases »

Hola!
Estoy creando un script para pasar los datos del programa de facturación que utilizamos ahora a dolibarr. Para ello en lugar de atacar directamente a la bbdd, por aquello de no saber bien como está organizada, he preferido utilizar las clases básicas de dolibarr.

La versión de dolibarr que estoy utilizando es la 16.0.0

La idea es hacer la importación en tres fases, primero pasar los terceros, luego pasar las facturas y la tercera parte pasar las ordenes de facturación periódicas, creando a la vez contratos y proyectos para cada uno de los servicios que tenemos activos con clientes.

La primera parte, la de los terceros ha sido fácil con la clase Societe y en apenas unos segundos me pasa las 200 fichas de clientes, pero la de crear facturas a través de la clase Facture me está dando problemas al validar porque me indica que el usuario carece de permisos. Los pasos que he seguido son los siguientes:

- Cargo los datos de las facturas antiguas en un array
- Creo un objeto con la clase User .He intentado con el usuario superadministrador, con todos los permisos y con otro usuario administrador, igualmente con todos los permisos activados. Crear el objeto no da errores y de hecho, carga los datos de la ficha de usuario (salvo los datos de permisos parece ser)
- Luego para cada factura, creo un objeto Facture al que le pongo los datos de la sociedad, previamente cargada, la fecha, el tipo de factura Facture::TYPE_STANDART o Facture::TYPE_REPLACEMENT, según corresponda a una normal o rectificativa y finalmente
- Llamo a la función 'create($user)' y se me crea la factura borrador,
- Añado entonces las lineas de la factura con la función addline( $datos_linea')
- Finalmente trato de utilizar la función 'validate($user,$factura['NUM_FAC'])

Es en este ultimo paso donde me atasco, hasta entonces se me crea la factura en formato borrador y se añaden bien las lineas de la factura, pero no me las valida y me da un error de permisos de usuario desde el archivo facture.class.php, en la linea que pone lo siguiente:

Código: Seleccionar todo

if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->facture->creer))
	|| (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->facture->invoice_advance->validate))) {
			$this->error = 'Permission denied';
			dol_syslog(get_class($this)."::validate ".$this->error.' MAIN_USE_ADVANCED_PERMS='.$conf->global->MAIN_USE_ADVANCED_PERMS, LOG_ERR);
			return -1;
		}


Al parecer $user->rights está en blanco.

¿Alguna idea de porque falla eso?

dcases
Novato
Mensajes: 3
Registrado: Sab, 18/07/2020, 13:42

Mensaje por dcases »

Me auto respondo :D

Ya he encontrado el problema, al parecer, la clase User, al realizar un fetch no carga los objetos de los permisos, hay que llamar a la función getrights() para que los cargue.