Bienvenido a los foros %s

Foro comunidad hispana Dolibarr

Identificarse Registrarse

Tablas nuevas en dolibarr 3.7

Cuestiones sobre cómo utilizar Dolibarr, ayudas sobre las funcionalidades o cualquier cuestión que no está relacionada con un error.
Avatar de Usuario
loky
Novato
Mensajes: 14
Registrado: Lun, 20/04/2015, 19:20

Tablas nuevas en dolibarr 3.7

Mensaje por loky »

buen tardes amigos del foro dolibarr tengo unas preguntitas, no tengo bien claro algunos puntos.

llx_actioncomm_resources : ¿ Es una tabla nueva que estoy revisando ? no aparece en http://wiki.dolibarr.org/index.php/Category:Table_SQL
¿ para que sirve?
algo mas la tabla llx_actioncomm segun http://wiki.dolibarr.org/index.php/Table_llx_actioncomm
es lista de acciones comerciales a mi me parece de auditoria

otros punto
Cuando se crea o modifica un tercero veo en el log que siempre me sale un llamado de estos componentes:
  • interface_20_modPaypal_PaypalWorkflow.class.php
    interface_50_modLdap_Ldapsynchro.class.php
    interface_50_modMailmanspip_Mailmanspipsynchro.class.php
    interface_50_modNotification_Notification.class.php
    interface_20_all_Logevents.class.php
    interface_20_modWorkflow_WorkflowManager.class.php
    interface_50_modAgenda_ActionsAuto.class.php
que por ahora no hacen nada y asumo que es así por que no tengo activo los respectivos módulos complementarios en la configuración de módulos dolibarr

¿ pero que es lo que hacen estos componentes exactamente alguien lo sabe?
¿ que pasa si los activo y no tengo nada con ldap o paypal u otro ?

gracias :roll: :roll:
loky from Perú
La solución mas simple tiende a ser la mejor

Avatar de Usuario
aduart
Yoda
Mensajes: 1082
Registrado: Mié, 06/06/2012, 19:37

Mensaje por aduart »

Asumo que se trata del tema de los trigger.
Para interiorizarte seguramente puedes revisar el código, es libre y gratuito.

Saludos,
Eduardo.

Avatar de Usuario
loky
Novato
Mensajes: 14
Registrado: Lun, 20/04/2015, 19:20

Mensaje por loky »

bueno chikos comento algunas averiguaciones que hice acercar de la creación de terceros

cuando realizamos la creación de un nuevo tercero en el componente soc.php
lo primero que hace es insertar en la tabla prefijo_societe
un tercero con datos minimos.

Código: Seleccionar todo

$sql = "INSERT INTO ".MAIN_DB_PREFIX."societe (nom, entity, datec, fk_user_creat, canvas, status, ref_int, ref_ext, fk_stcomm, import_key)";
            $sql.= " VALUES ('".$this->db->escape($this->name)."', ".$conf->entity.", '".$this->db->idate($now)."'";
            $sql.= ", ".(! empty($user->id) ? "'".$user->id."'":"null");
            $sql.= ", ".(! empty($this->canvas) ? "'".$this->canvas."'":"null");
            $sql.= ", ".$this->status;
            $sql.= ", ".(! empty($this->ref_int) ? "'".$this->ref_int."'":"null");
            $sql.= ", ".(! empty($this->ref_ext) ? "'".$this->ref_ext."'":"null");
            $sql.= ", 0";
            $sql.= ", ".(! empty($this->import_key) ? "'".$this->import_key."'":"null").")";
y si todo a ido de maravilla coge el id de creación y procede a hacer un update sobre la misma tabla con este id creado.
En la operación de update es donde realiza la inserción de la mayoría de los datos enviados o los datos por defaault en el caso de no
haberlos ingresados.

yo estaba preguntándome ¿ por que primero hace un insert con datos mínimos y luego hace un update con los demás datos ?
despues de razonar un poco creo que lo hace por un tema de concurrencia.

" a mi parecer lo hace de esta manera por que php no hace uso eficiente de hilos imagínense la concurrencia
si hay muchas personas intentando hacer la misma operación es simple se duplicarían los id, tons lo mas
fácil es insertar un tercero con datos mínimos y luego actualizarlo con los demás datos que necesita de esta manera se asegura que no les
devuelvan un mismo id para dos métodos insert iniciales".
por favor uno con mas conocimiento una aclaración


siguiendo con el flujo luego verifica la representación comercial y si tiene la inserta y si todo va caminando correctamente todavía los que hace es llamar
a los tan famosos tiggers

¿ pero en verdad qe hacen estos famosos tiggers son tan importantes ?

$this->call_trigger('COMPANY_CREATE',$user);

mmm sigamos revisando : )

da acceso a la interfaces a la bd al inicializarlas con la conexión a la bd
y llama a un metodo run_triggers de la misma interface, realiza las validaciones que necesita

aca note algo interesante
$dirtriggers=array_merge(array('/core/triggers'),$conf->modules_parts['triggers']);

por que hacer una validación donde mande el harcored y no el de la configuración " bueno como esta en evolución el Erp no problem"

seguimos chekando y vemos que llama a todos los componentes que están en /core/triggers
hace un filtro para quitar de la lista a algunos de ellos que no cumplan la condición
preg_match('/^interface_([0-9]+)_([^_]+)_(.+)\.class\.php$/i',$file,$reg)
es decir que siempre debe de tener números y siempre debe de tener .class.php en el nombre del componente
con esto no libramos de varios componentes que están ahí por convención e internacionalización (readme , index, etc)

verificamos que el componente nos se haya ejecutado ya in_array($modName,$modules)

y como las cosas siguen yendo de maravilla y como alf dice no hay problema willy

incluimos el componente de los módulos así no esteen activos
include_once $newdir.'/'.$file;

pero y si tenemos algún modulo que todavía esta en demo como nos libramos de el ¿ (preg_match('/NORUN$/i',$file)) continue; ?

seguimos adelante y verificamos si es un tigger que se aplica a todos los módulos o es a algún modulo especifico
y como nos damos cuenta si pertenece pues fácil una parte de su nombre tiene el prefijo all (interface_20_all_Logevents.class)
por cierto (interface_20_all_Logevents.class solo registra las acciones y/o eventos que realizamos con el usuario mmm auditoria)

¿ y como hace para que nos aparezca los módulos desabilitados ?

Código: Seleccionar todo

$constparam='MAIN_MODULE_'.strtoupper($module); 
lo unico que hace es verificar si el atributo $conf->global->$constparam estea definido pero

Código: Seleccionar todo

 ( if (empty($conf->global->$constparam)) $qualified=false; )
me parece que siempre va a ser cierto para este modulo por lo tanto

Código: Seleccionar todo

dol_syslog(get_class($this)."::run_triggers action=".$action." Triggers for file '".$file."' need module to be enabled", LOG_DEBUG);
que lo único que no dice es que esta interfaces no esta habilitada simple no, esto lo hace por cada uno de los tiggers existentes en
el modulo core/tiggers/ como todos los tiggers ahi existentes implementan la interfaz DolibarrTriggers entonces se les hace fácil
ejecutar el mismo metodo runTrigger y esa es la razón por que aparecen tantas trazas en el log que me decía modulo no habilitado.

¿ Queda pendiente hacer la verificacion cuando el modulo estea habilitado y no tengamos ldap activo? (¿ Que pasara?)
¿ Queda pendiente hacer la verificación cuando el modulo estea habilitado y tengamos ldap para esto tendría que instalarme openldap ? (¿ Que pasara?)


si alguno ya ha revisado mas a fondo agradecer comentar o poner sus experiencias aprendemos mas rápido no creen . :D :D :) :) :roll:
loky from Perú
La solución mas simple tiende a ser la mejor