-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmulticompany_external_module.txt
More file actions
144 lines (120 loc) · 7.68 KB
/
Copy pathmulticompany_external_module.txt
File metadata and controls
144 lines (120 loc) · 7.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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
)
)
),
ajout d'un dictionnaire externe :
'c_my_dictionary' => array( // Valeur utilisée dans getEntity()
'type' => 'dictionary', // dictionary : personnalisation d'un dictionnaire par entité
'icon' => 'file-pdf-o', // Font Awesome icon
'transkey' => 'MyTranslateKey', // Description du dictionnaire
'tooltip' => 'MyToolTipTranslateKey', // Message Tooltip (ne pas mettre cette clé si pas de tooltip)
'lang' => 'langfile@mymodule', // Fichier de langue contenant les traductions
'filepath' => '/mymodule/sql/init/llx_c_my_dictionary.sql' // Chemin où se trouve le fichier sql des données du dictionnaire
),
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',
......
......
),
'dictionary' => array( // section des dictionnaires
'c_myfirst_dictionary' => array( // Valeur utilisée dans getEntity()
'type' => 'dictionary',
......
......
),
'c_mysecond_dictionary' => array( // Valeur utilisée dans getEntity()
'type' => 'dictionary',
......
......
),
)
)
)
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);