Difference between revisions of "MultiEntity dev"
Jump to navigation
Jump to search
Eric.seigne (talk | contribs) (multi entity pour développeurs) Tag: 2017 source edit |
Eric.seigne (talk | contribs) (doc de régis) |
||
Line 1: | Line 1: | ||
− | == Tips Tricks and Hacks about MultiEntity module == | + | ==Tips Tricks and Hacks about MultiEntity module== |
+ | |||
+ | Permettre à un module externe d'ajouter son option de partage dans l'onglet options du module | ||
+ | |||
+ | valeur par défaut si une clé n'est pas définie : | ||
+ | |||
+ | * enable : valeur par défaut : ! empty($conf->mymodule->enabled) | ||
+ | * display : valeur par défaut : ! empty($conf->global->MULTICOMPANY_SHARINGS_ENABLED) | ||
+ | * tooltip : pas d'aide au format tooltip | ||
+ | * input : pas d'interaction avec d'autres boutons on/off | ||
+ | |||
+ | partage parent, exemple : | ||
+ | 'member' => array( // Valeur utilisée dans getEntity() | ||
+ | 'type' => 'element', // element: partage d'éléments principaux (thirdparty, product, member, etc...) | ||
+ | 'icon' => 'address-card', // Font Awesome icon | ||
+ | 'lang' => 'langfile@mymodule' // Fichier de langue contenant les traductions | ||
+ | 'tooltip' => 'MyToolTipTranslateKey', // Message Tooltip (ne pas mettre cette clé si pas de tooltip) | ||
+ | 'input' => array( // input : Paramétrage de la réaction du bouton on/off | ||
+ | 'global' => array( // global : réaction lorsqu'on désactive l'option de partage global | ||
+ | 'showhide' => true, // showhide : afficher/cacher le bloc de partage lors de l'activation/désactivation du partage global | ||
+ | 'hide' => true, // hide : cache le bloc de partage lors de la désactivation du partage global | ||
+ | 'del' => true // del : suppression de la constante du partage lors de la désactivation du partage global | ||
+ | ) | ||
+ | ) | ||
+ | ), | ||
+ | partage qui dépend d'un partage parent, exemple : | ||
+ | 'productprice' => array( // Valeur utilisée dans getEntity() | ||
+ | 'type' => 'element', // element: partage d'éléments principaux (thirdparty, product, member, etc...) | ||
+ | 'icon' => 'money', // Font Awesome icon | ||
+ | 'lang' => 'langfile@mymodule' // Fichier de langue contenant les traductions | ||
+ | 'tooltip' => 'ProductPriceSharingInfo', // Message Tooltip (ne pas mettre cette clé si pas de tooltip) | ||
+ | 'enable' => '(! empty($conf->product->enabled) || ! empty($conf->service->enabled))', // Conditions d'activation du partage | ||
+ | 'display' => '! empty($conf->global->MULTICOMPANY_PRODUCT_SHARING_ENABLED)', // L'affichage de ce bloc de partage dépend de l'activation d'un partage parent | ||
+ | 'input' => array( // input : Paramétrage de la réaction du bouton on/off | ||
+ | 'global' => array( // global : réaction lorsqu'on désactive l'option de partage global | ||
+ | 'hide' => true, // hide : cache le bloc de partage lors de la désactivation du partage global | ||
+ | 'del' => true // del : supprime la constante du partage lors de la désactivation du partage global | ||
+ | ), | ||
+ | 'product' => array( // product (nom du module parent) : réaction lorsqu'on désactive le partage parent (ici le partage des produits/services) | ||
+ | 'showhide' => true, // showhide : afficher/cacher le bloc de partage lors de l'activation/désactivation du partage parent | ||
+ | 'del' => true // del : suppression de la constante du partage lors de la désactivation du partage parent | ||
+ | ) | ||
+ | ) | ||
+ | 'disable' => true // disable : désactive ce bloc de partage si en cours de développement | ||
+ | ), | ||
+ | partage des objets qui dépendent d'un partage principal, exemple : | ||
+ | 'proposal' => array( // Valeur utilisée dans getEntity() | ||
+ | 'type' => 'object', // object : partage d'objets (propal, commande, facture, numéro de facture, etc...) | ||
+ | 'icon' => 'file-pdf-o', // Font Awesome icon | ||
+ | 'lang' => 'langfile@mymodule' // Fichier de langue contenant les traductions | ||
+ | 'tooltip' => 'MyToolTipTranslateKey', // Message Tooltip (ne pas mettre cette clé si pas de tooltip) | ||
+ | 'mandatory' => 'thirdparty', // partage principal obligatoire | ||
+ | 'enable' => '(! empty($conf->propal->enabled) && ! empty($conf->societe->enabled))', // Conditions d'activation du partage | ||
+ | 'display' => '! empty($conf->global->MULTICOMPANY_THIRDPARTY_SHARING_ENABLED)', // L'affichage de ce bloc de partage dépend de l'activation d'un partage principal | ||
+ | 'input' => array( // input : Paramétrage de la réaction du bouton on/off | ||
+ | 'global' => array( // global : réaction lorsqu'on désactive l'option de partage global | ||
+ | 'hide' => true, // hide : cache le bloc de partage lors de la désactivation du partage global | ||
+ | 'del' => true // del : suppression de la constante du partage lors de la désactivation du partage global | ||
+ | ), | ||
+ | 'thirdparty' => array( // thirdparty (nom du module principal) : réaction lorsqu'on désactive le partage principal (ici le partage des tiers) | ||
+ | 'showhide' => true, // showhide : afficher/cacher le bloc de partage lors de l'activation/désactivation du partage principal | ||
+ | 'hide' => true, // hide : cache le bloc de partage lors de la désactivation du partage principal | ||
+ | 'del' => true // del : supprime la constante du partage lors de la désactivation du partage principal | ||
+ | ) | ||
+ | ) | ||
+ | ), | ||
+ | exemple de tableau pour votre module : | ||
+ | $params = array( | ||
+ | 'nameofyourmodule' => array( // nom informatif du module externe qui apporte ses paramètres | ||
+ | 'sharingelements' => array( // section des paramètres 'element' et 'object' | ||
+ | 'elementsharename' => array( // Valeur utilisée dans getEntity() | ||
+ | 'type' => 'element', | ||
+ | ...... | ||
+ | ...... | ||
+ | ), | ||
+ | 'objectsharename' => array( // Valeur utilisée dans getEntity() | ||
+ | 'type' => 'object', | ||
+ | ...... | ||
+ | ...... | ||
+ | ) | ||
+ | ), | ||
+ | 'sharingmodulename' => array( // correspondance des noms de modules pour le lien parent ou compatibilité (ex: 'productsupplierprice' => 'product') | ||
+ | 'myshare' => 'mymodule', | ||
+ | ...... | ||
+ | ...... | ||
+ | ), | ||
+ | 'addzero' => array( // défini si un partage ajoute le 0 (toute les entités) à l'entité courante ex: "entity IN (0, id entite courante)" | ||
+ | 'mymoduleshare1', // Valeur utilisée dans getEntity() | ||
+ | 'mymoduleshare2', | ||
+ | ...... | ||
+ | ...... | ||
+ | ) | ||
+ | ) | ||
+ | ) | ||
+ | ajouter ceci à l'activation de votre module : | ||
+ | $externalmodule = json_decode($conf->global->MULTICOMPANY_EXTERNAL_MODULES_SHARING, true); | ||
+ | $externalmodule = array_merge($externalmodule, $params); | ||
+ | $jsonformat = json_encode($externalmodule); | ||
+ | dolibarr_set_const($this->db, "MULTICOMPANY_EXTERNAL_MODULES_SHARING", $externalmodule); | ||
+ | et ceci à la désactivation de votre module : | ||
+ | $externalmodule = json_decode($conf->global->MULTICOMPANY_EXTERNAL_MODULES_SHARING, true); | ||
+ | unset($externalmodule['nameofyourmodule']); // nom informatif du module externe qui apporte ses paramètres | ||
+ | $jsonformat = json_encode($externalmodule); | ||
+ | dolibarr_set_const($this->db, "MULTICOMPANY_EXTERNAL_MODULES_SHARING", $externalmodule); | ||
Sources: | Sources: | ||
− | * https://www.dolibarr.fr/forum/t/multicompany-for-ever-or-not/42084/13 | + | |
+ | *https://www.dolibarr.fr/forum/t/multicompany-for-ever-or-not/42084/13 |
Revision as of 08:52, 16 June 2023
Tips Tricks and Hacks about MultiEntity module
Permettre à un module externe d'ajouter son option de partage dans l'onglet options du module
valeur par défaut si une clé n'est pas définie :
- enable : valeur par défaut : ! empty($conf->mymodule->enabled)
- display : valeur par défaut : ! empty($conf->global->MULTICOMPANY_SHARINGS_ENABLED)
- tooltip : pas d'aide au format tooltip
- input : pas d'interaction avec d'autres boutons on/off
partage parent, exemple :
'member' => array( // Valeur utilisée dans getEntity() 'type' => 'element', // element: partage d'éléments principaux (thirdparty, product, member, etc...) 'icon' => 'address-card', // Font Awesome icon 'lang' => 'langfile@mymodule' // Fichier de langue contenant les traductions 'tooltip' => 'MyToolTipTranslateKey', // Message Tooltip (ne pas mettre cette clé si pas de tooltip) 'input' => array( // input : Paramétrage de la réaction du bouton on/off 'global' => array( // global : réaction lorsqu'on désactive l'option de partage global 'showhide' => true, // showhide : afficher/cacher le bloc de partage lors de l'activation/désactivation du partage global 'hide' => true, // hide : cache le bloc de partage lors de la désactivation du partage global 'del' => true // del : suppression de la constante du partage lors de la désactivation du partage global ) ) ),
partage qui dépend d'un partage parent, exemple :
'productprice' => array( // Valeur utilisée dans getEntity() 'type' => 'element', // element: partage d'éléments principaux (thirdparty, product, member, etc...) 'icon' => 'money', // Font Awesome icon 'lang' => 'langfile@mymodule' // Fichier de langue contenant les traductions 'tooltip' => 'ProductPriceSharingInfo', // Message Tooltip (ne pas mettre cette clé si pas de tooltip) 'enable' => '(! empty($conf->product->enabled) || ! empty($conf->service->enabled))', // Conditions d'activation du partage 'display' => '! empty($conf->global->MULTICOMPANY_PRODUCT_SHARING_ENABLED)', // L'affichage de ce bloc de partage dépend de l'activation d'un partage parent 'input' => array( // input : Paramétrage de la réaction du bouton on/off 'global' => array( // global : réaction lorsqu'on désactive l'option de partage global 'hide' => true, // hide : cache le bloc de partage lors de la désactivation du partage global 'del' => true // del : supprime la constante du partage lors de la désactivation du partage global ), 'product' => array( // product (nom du module parent) : réaction lorsqu'on désactive le partage parent (ici le partage des produits/services) 'showhide' => true, // showhide : afficher/cacher le bloc de partage lors de l'activation/désactivation du partage parent 'del' => true // del : suppression de la constante du partage lors de la désactivation du partage parent ) ) 'disable' => true // disable : désactive ce bloc de partage si en cours de développement ),
partage des objets qui dépendent d'un partage principal, exemple :
'proposal' => array( // Valeur utilisée dans getEntity() 'type' => 'object', // object : partage d'objets (propal, commande, facture, numéro de facture, etc...) 'icon' => 'file-pdf-o', // Font Awesome icon 'lang' => 'langfile@mymodule' // Fichier de langue contenant les traductions 'tooltip' => 'MyToolTipTranslateKey', // Message Tooltip (ne pas mettre cette clé si pas de tooltip) 'mandatory' => 'thirdparty', // partage principal obligatoire 'enable' => '(! empty($conf->propal->enabled) && ! empty($conf->societe->enabled))', // Conditions d'activation du partage 'display' => '! empty($conf->global->MULTICOMPANY_THIRDPARTY_SHARING_ENABLED)', // L'affichage de ce bloc de partage dépend de l'activation d'un partage principal 'input' => array( // input : Paramétrage de la réaction du bouton on/off 'global' => array( // global : réaction lorsqu'on désactive l'option de partage global 'hide' => true, // hide : cache le bloc de partage lors de la désactivation du partage global 'del' => true // del : suppression de la constante du partage lors de la désactivation du partage global ), 'thirdparty' => array( // thirdparty (nom du module principal) : réaction lorsqu'on désactive le partage principal (ici le partage des tiers) 'showhide' => true, // showhide : afficher/cacher le bloc de partage lors de l'activation/désactivation du partage principal 'hide' => true, // hide : cache le bloc de partage lors de la désactivation du partage principal 'del' => true // del : supprime la constante du partage lors de la désactivation du partage principal ) ) ),
exemple de tableau pour votre module :
$params = array( 'nameofyourmodule' => array( // nom informatif du module externe qui apporte ses paramètres 'sharingelements' => array( // section des paramètres 'element' et 'object' 'elementsharename' => array( // Valeur utilisée dans getEntity() 'type' => 'element', ...... ...... ), 'objectsharename' => array( // Valeur utilisée dans getEntity() 'type' => 'object', ...... ...... ) ), 'sharingmodulename' => array( // correspondance des noms de modules pour le lien parent ou compatibilité (ex: 'productsupplierprice' => 'product') 'myshare' => 'mymodule', ...... ...... ), 'addzero' => array( // défini si un partage ajoute le 0 (toute les entités) à l'entité courante ex: "entity IN (0, id entite courante)" 'mymoduleshare1', // Valeur utilisée dans getEntity() 'mymoduleshare2', ...... ...... ) ) )
ajouter ceci à l'activation de votre module :
$externalmodule = json_decode($conf->global->MULTICOMPANY_EXTERNAL_MODULES_SHARING, true); $externalmodule = array_merge($externalmodule, $params); $jsonformat = json_encode($externalmodule); dolibarr_set_const($this->db, "MULTICOMPANY_EXTERNAL_MODULES_SHARING", $externalmodule);
et ceci à la désactivation de votre module :
$externalmodule = json_decode($conf->global->MULTICOMPANY_EXTERNAL_MODULES_SHARING, true); unset($externalmodule['nameofyourmodule']); // nom informatif du module externe qui apporte ses paramètres $jsonformat = json_encode($externalmodule); dolibarr_set_const($this->db, "MULTICOMPANY_EXTERNAL_MODULES_SHARING", $externalmodule);
Sources: