Merge branch 'develop' into patch-3

This commit is contained in:
Laurent Destailleur 2021-03-21 21:02:53 +01:00 committed by GitHub
commit 17e5605430
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
165 changed files with 802 additions and 2096 deletions

View File

@ -1,68 +1,6 @@
# HOW TO BUILD
Take a look at the dolibarr wiki page of Zapier module:
## ENABLE MODULE ZAPIER ON DOLIBARR
This should also enable the module API (required for authentication by Zapier service and to execute action in Dolibarr by Zapier).
Create the Dolibarr login that will be used by Zapier to call APIs. Give the login the permissions on the action you plan to automate.
## CREATE A ZAPIER DEVELOPPER ACCOUNT
At first, you need to have a Zapier developper acoount, create it here [Zapier Platform](https://developer.zapier.com/)
## INSTALL ZAPIER COMMAND LINE TOOLS WITH LINK TO ZAPIER ONLINE ACCOUNT
### Install Node.js
An easy option to get set up with Node.js is to visit [https://nodejs.org/en/download/](https://nodejs.org/en/download/) and download the official installer for your OS. If you're installing with a package manager it's even easier.
After installation, confirm that Node.js is ready to use:
`node --version`
### Install the Zapier CLI
Next let's install the Zapier CLI tools. The CLI will allow you to build your app, deploy it to the Zapier platform, do local testing, manage users and testers, view remote logs, collaborate with your team, and more:
`cd dev/examples/zapier`
`npm install -g zapier-platform-cli` to install the CLI globally
`zapier --version` to return version of the CLI
### Run Zapier Login
Let's configure authentication between your dev environment and the Zapier platform. You'll use the email address and password you use to log in to the Zapier application.
`zapier login`
This command will set up a .zapierrc file in your home directory.
### Install the Project
In zapier example directory, run:
`cd dev/examples/zapier`
`npm install`
### Deploying your App
Let's deploy it! When you're ready to try your code out on the Zapier platform use the push command. Only you will be able to see the app until you invite testers.
`zapier register` (the first time, choose name for example "Dolibarr")
`zapier push`
After a push, the Application, with the name you defined during the register step, is available when creating a Zap.
You will find original tutorial here : [https://zapier.com/developer/start/introduction](https://zapier.com/developer/start/introduction)
### Create a Zap
Create a ZAP that use the application you registered.
For authentication, you must enter the login / pass of account used by Zapier to call APIs.
https://wiki.dolibarr.org/index.php?title=Module_Zapier

View File

@ -24,7 +24,7 @@
*/
/**
* \file htdocs/adherents/admin/adherent.php
* \file htdocs/adherents/admin/member_emails.php
* \ingroup member
* \brief Page to setup the module Foundation
*/
@ -55,6 +55,7 @@ $constantes = array(
'ADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION' =>'emailtemplate:member', /* old was ADHERENT_MAIL_VALID */
'ADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION' =>'emailtemplate:member', /* old was ADHERENT_MAIL_COTIS */
'ADHERENT_EMAIL_TEMPLATE_CANCELATION' =>'emailtemplate:member', /* old was ADHERENT_MAIL_RESIL */
'ADHERENT_EMAIL_TEMPLATE_EXCLUSION' =>'emailtemplate:member',
'ADHERENT_MAIL_FROM'=>'string',
'ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT'=>'string',
'ADHERENT_AUTOREGISTER_NOTIF_MAIL'=>'html',
@ -69,9 +70,24 @@ $constantes = array(
//
if ($action == 'updateall') {
$db->begin();
$res1 = $res2 = $res3 = $res4 = $res5 = $res6 = 0;
$res1 = dolibarr_set_const($db, 'XXXX', GETPOST('ADHERENT_LOGIN_NOT_REQUIRED', 'alpha'), 'chaine', 0, '', $conf->entity);
if ($res1 < 0 || $res2 < 0 || $res3 < 0 || $res4 < 0 || $res5 < 0 || $res6 < 0) {
$res = 0;
foreach ($constantes as $constname => $value) {
$constvalue = (GETPOSTISSET('constvalue_'.$constname) ? GETPOST('constvalue_'.$constname, 'alphanohtml') : GETPOST('constvalue'));
$consttype = (GETPOSTISSET('consttype_'.$constname) ? GETPOST('consttype_'.$constname, 'alphanohtml') : GETPOST('consttype'));
$constnote = (GETPOSTISSET('constnote_'.$constname) ? GETPOST('constnote_'.$constname, 'restricthtml') : GETPOST('constnote'));
$typetouse = empty($oldtypetonewone[$consttype]) ? $consttype : $oldtypetonewone[$consttype];
$constvalue = preg_replace('/:member$/', '', $constvalue);
$res = dolibarr_set_const($db, $constname, $constvalue, $consttype, 0, $constnote, $conf->entity);
if ($res <= 0) {
$error++;
$action = 'list';
}
}
if ($error > 0) {
setEventMessages('ErrorFailedToSaveDate', null, 'errors');
$db->rollback();
} else {
@ -126,19 +142,19 @@ $head = member_admin_prepare_head();
print dol_get_fiche_head($head, 'emails', $langs->trans("Members"), -1, 'user');
// TODO Use global form
//print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
//print '<input type="hidden" name="token" value="'.newToken().'">';
//print '<input type="hidden" name="action" value="updateall">';
print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">';
print '<input type="hidden" name="token" value="'.newToken().'">';
print '<input type="hidden" name="action" value="updateall">';
$helptext = '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'<br>';
$helptext .= '__DOL_MAIN_URL_ROOT__, __ID__, __FIRSTNAME__, __LASTNAME__, __FULLNAME__, __LOGIN__, __PASSWORD__, ';
$helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL__, __BIRTH__, __PHOTO__, __TYPE__, ';
//$helptext.='__YEAR__, __MONTH__, __DAY__'; // Not supported
form_constantes($constantes, 0, $helptext);
form_constantes($constantes, 3, $helptext);
//print '<div class="center"><input type="submit" class="button" value="'.$langs->trans("Update").'" name="update"></div>';
//print '</form>';
print '<div class="center"><input type="submit" class="button" value="'.$langs->trans("Update").'" name="update"></div>';
print '</form>';
print dol_get_fiche_end();

View File

@ -19,7 +19,7 @@
*/
/**
* \file htdocs/adherents/admin/adherent_extrafields.php
* \file htdocs/adherents/admin/member_extrafields.php
* \ingroup member
* \brief Page to setup extra fields of members
*/

View File

@ -22,7 +22,7 @@
*/
/**
* \file htdocs/adherents/admin/adherent_type_extrafields.php
* \file htdocs/adherents/admin/member_type_extrafields.php
* \ingroup member
* \brief Page to setup extra fields of members
*/

View File

@ -178,7 +178,7 @@ if (!empty($conf->global->MEMBER_ENABLE_PUBLIC)) {
print '</td><td class="right">';
$listofval = array();
$listofval += $adht->liste_array();
$forcetype = $conf->global->MEMBER_NEWFORM_FORCETYPE ?: -1;
$forcetype = empty($conf->global->MEMBER_NEWFORM_FORCETYPE) ? -1 : $conf->global->MEMBER_NEWFORM_FORCETYPE;
print $form->selectarray("MEMBER_NEWFORM_FORCETYPE", $listofval, $forcetype, count($listofval) > 1 ? 1 : 0);
print "</td></tr>\n";
@ -232,7 +232,7 @@ if (!empty($conf->global->MEMBER_ENABLE_PUBLIC)) {
print '<br>';
//print $langs->trans('FollowingLinksArePublic').'<br>';
print img_picto('', 'globe').' '.$langs->trans('BlankSubscriptionForm').':<br>';
if ($conf->multicompany->enabled) {
if (!empty($conf->multicompany->enabled)) {
$entity_qr = '?entity='.$conf->entity;
} else {
$entity_qr = '';

View File

@ -655,7 +655,7 @@ if (empty($reshook)) {
$action = '';
}
if ($user->rights->adherent->supprimer && $action == 'confirm_resign') {
if ($user->rights->adherent->supprimer && $action == 'confirm_resiliate') {
$error = 0;
if ($confirm == 'yes') {
@ -726,6 +726,77 @@ if (empty($reshook)) {
}
}
if ($user->rights->adherent->supprimer && $action == 'confirm_exclude') {
$error = 0;
if ($confirm == 'yes') {
$adht = new AdherentType($db);
$adht->fetch($object->typeid);
$result = $object->exclude($user);
if ($result >= 0 && !count($object->errors)) {
if ($object->email && GETPOST("send_mail")) {
$subject = '';
$msg = '';
// Send subscription email
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
$formmail = new FormMail($db);
// Set output language
$outputlangs = new Translate('', $conf);
$outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
// Load traductions files required by page
$outputlangs->loadLangs(array("main", "members"));
// Get email content from template
$arraydefaultmessage = null;
$labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_EXCLUSION;
if (!empty($labeltouse)) {
$arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse);
}
if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
$subject = $arraydefaultmessage->topic;
$msg = $arraydefaultmessage->content;
}
if (empty($labeltouse) || (int) $labeltouse === -1) {
//fallback on the old configuration.
setEventMessages('WarningMandatorySetupNotComplete', null, 'errors');
$error++;
} else {
$substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object);
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
$texttosend = make_substitutions(dol_concatdesc($msg, $adht->getMailOnExclude()), $substitutionarray, $outputlangs);
$moreinheader = 'X-Dolibarr-Info: send_an_email by adherents/card.php'."\r\n";
$result = $object->send_an_email($texttosend, $subjecttosend, array(), array(), array(), "", "", 0, -1, '', $moreinheader);
if ($result < 0) {
$error++;
setEventMessages($object->error, $object->errors, 'errors');
}
}
}
} else {
$error++;
if ($object->error) {
setEventMessages($object->error, $object->errors, 'errors');
} else {
setEventMessages($object->error, $object->errors, 'errors');
}
$action = '';
}
}
if (!empty($backtopage) && !$error) {
header("Location: ".$backtopage);
exit;
}
}
// SPIP Management
if ($user->rights->adherent->supprimer && $action == 'confirm_del_spip' && $confirm == 'yes') {
if (!count($object->errors)) {
@ -1434,8 +1505,8 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
print $form->formconfirm("card.php?rowid=".$id, $langs->trans("ValidateMember"), $langs->trans("ConfirmValidateMember"), "confirm_valid", $formquestion, 'yes', 1, 220);
}
// Confirm terminate
if ($action == 'resign') {
// Confirm resiliate
if ($action == 'resiliate') {
$langs->load("mails");
$adht = new AdherentType($db);
@ -1491,7 +1562,67 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
if ($backtopage) {
$formquestion[] = array('type' => 'hidden', 'name' => 'backtopage', 'value' => ($backtopage != '1' ? $backtopage : $_SERVER["HTTP_REFERER"]));
}
print $form->formconfirm("card.php?rowid=".$id, $langs->trans("ResiliateMember"), $langs->trans("ConfirmResiliateMember"), "confirm_resign", $formquestion, 'no', 1, 240);
print $form->formconfirm("card.php?rowid=".$id, $langs->trans("ResiliateMember"), $langs->trans("ConfirmResiliateMember"), "confirm_resiliate", $formquestion, 'no', 1, 240);
}
// Confirm exclude
if ($action == 'exclude') {
$langs->load("mails");
$adht = new AdherentType($db);
$adht->fetch($object->typeid);
$subject = '';
$msg = '';
// Send subscription email
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
$formmail = new FormMail($db);
// Set output language
$outputlangs = new Translate('', $conf);
$outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
// Load traductions files required by page
$outputlangs->loadLangs(array("main", "members"));
// Get email content from template
$arraydefaultmessage = null;
$labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_EXCLUSION;
if (!empty($labeltouse)) {
$arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse);
}
if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
$subject = $arraydefaultmessage->topic;
$msg = $arraydefaultmessage->content;
}
$substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object);
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
$texttosend = make_substitutions(dol_concatdesc($msg, $adht->getMailOnExclude()), $substitutionarray, $outputlangs);
$tmp = $langs->trans("SendingAnEMailToMember");
$tmp .= '<br>('.$langs->trans("MailFrom").': <b>'.$conf->global->ADHERENT_MAIL_FROM.'</b>, ';
$tmp .= $langs->trans("MailRecipient").': <b>'.$object->email.'</b>)';
$helpcontent = '';
$helpcontent .= '<b>'.$langs->trans("MailFrom").'</b>: '.$conf->global->ADHERENT_MAIL_FROM.'<br>'."\n";
$helpcontent .= '<b>'.$langs->trans("MailRecipient").'</b>: '.$object->email.'<br>'."\n";
$helpcontent .= '<b>'.$langs->trans("Subject").'</b>:<br>'."\n";
$helpcontent .= $subjecttosend."\n";
$helpcontent .= "<br>";
$helpcontent .= '<b>'.$langs->trans("Content").'</b>:<br>';
$helpcontent .= dol_htmlentitiesbr($texttosend)."\n";
$label = $form->textwithpicto($tmp, $helpcontent, 1, 'help');
// Create an array
$formquestion = array();
if ($object->email) {
$formquestion[] = array('type' => 'checkbox', 'name' => 'send_mail', 'label' => $label, 'value' => (!empty($conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL) ? 'true' : 'false'));
}
if ($backtopage) {
$formquestion[] = array('type' => 'hidden', 'name' => 'backtopage', 'value' => ($backtopage != '1' ? $backtopage : $_SERVER["HTTP_REFERER"]));
}
print $form->formconfirm("card.php?rowid=".$id, $langs->trans("ExcludeMember"), $langs->trans("ConfirmExcludeMember"), "confirm_exclude", $formquestion, 'no', 1, 240);
}
// Confirm remove member
@ -1584,12 +1715,12 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
} elseif (!$adht->subscription) {
print $langs->trans("SubscriptionNotRecorded");
if ($object->statut > 0) {
print " ".img_warning($langs->trans("Late")); // displays delay Pictogram only if not a draft and not terminated
print " ".img_warning($langs->trans("Late")); // displays delay Pictogram only if not a draft, not excluded and not resiliated
}
} else {
print $langs->trans("SubscriptionNotReceived");
if ($object->statut > 0) {
print " ".img_warning($langs->trans("Late")); // displays delay Pictogram only if not a draft and not terminated
print " ".img_warning($langs->trans("Late")); // displays delay Pictogram only if not a draft, not excluded and not resiliated
}
}
}
@ -1740,7 +1871,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
}
// Reactivate
if ($object->statut == 0) {
if ($object->statut == 0 || $object->statut == -2) {
if ($user->rights->adherent->creer) {
print '<div class="inline-block divButAction"><a class="butAction" href="card.php?rowid='.$id.'&action=valid">'.$langs->trans("Reenable")."</a></div>\n";
} else {
@ -1748,15 +1879,24 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
}
}
// Terminate
// Resiliate
if ($object->statut >= 1) {
if ($user->rights->adherent->supprimer) {
print '<div class="inline-block divButAction"><a class="butAction" href="card.php?rowid='.$id.'&action=resign">'.$langs->trans("Resiliate")."</a></div>\n";
print '<div class="inline-block divButAction"><a class="butAction" href="card.php?rowid='.$id.'&action=resiliate">'.$langs->trans("Resiliate")."</a></div>\n";
} else {
print '<div class="inline-block divButAction"><font class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans("Resiliate")."</font></div>";
}
}
// Exclude
if ($object->statut >= 1) {
if ($user->rights->adherent->supprimer) {
print '<div class="inline-block divButAction"><a class="butAction" href="card.php?rowid='.$id.'&action=exclude">'.$langs->trans("Exclude")."</a></div>\n";
} else {
print '<div class="inline-block divButAction"><font class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans("Exclude")."</font></div>";
}
}
// Create third party
if (!empty($conf->societe->enabled) && !$object->socid) {
if ($user->rights->societe->creer) {

View File

@ -206,7 +206,7 @@ class Adherent extends CommonObject
public $public;
// -1:brouillon, 0:resilie, >=1:valide,paye
// -2:exclu, -1:brouillon, 0:resilie, >=1:valide,paye
// def in common object
//public $status;
@ -326,7 +326,7 @@ class Adherent extends CommonObject
'fk_user_valid' => array('type' => 'integer:User:user/class/user.class.php', 'label' => 'UserValidation', 'enabled' => 1, 'visible' => -1, 'position' => 190),
'canvas' => array('type' => 'varchar(32)', 'label' => 'Canvas', 'enabled' => 1, 'visible' => -1, 'position' => 195),
'statut' => array('type' => 'smallint(6)', 'label' => 'Statut', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 500,
'arrayofkeyval' => array(0 => 'Draft', 1 => 'Validated', -1 => 'MemberStatusResiliatedShort')),
'arrayofkeyval' => array(0 => 'Draft', 1 => 'Validated', -1 => 'MemberStatusResiliatedShort', -2 => 'MemberStatusExcludedShort')),
'model_pdf' => array('type' => 'varchar(255)', 'label' => 'Model pdf', 'enabled' => 1, 'visible' => 0, 'position' => 800),
'import_key' => array('type' => 'varchar(14)', 'label' => 'ImportId', 'enabled' => 1, 'visible' => -2, 'position' => 805)
);
@ -1917,6 +1917,55 @@ class Adherent extends CommonObject
}
}
/**
* Functiun to exlude (set adherent.status to -2) a member
* TODO
* A private note should be added to know why the member has been excluded
* For historical purpose it add an "extra-subscription" type excluded
*
* @param User $user User making change
* @return int <0 if KO, >0 if OK
*/
public function exclude($user)
{
global $langs, $conf;
$error = 0;
// Check parameters
if ($this->statut == 0) {
dol_syslog(get_class($this)."::resiliate statut of member does not allow this", LOG_WARNING);
return 0;
}
$this->db->begin();
$sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET";
$sql .= " statut = -2";
$sql .= ", fk_user_valid=".$user->id;
$sql .= " WHERE rowid = ".$this->id;
$result = $this->db->query($sql);
if ($result) {
$this->statut = 0;
// Call trigger
$result = $this->call_trigger('MEMBER_EXCLUDE', $user);
if ($result < 0) {
$error++;
$this->db->rollback();
return -1;
}
// End call triggers
$this->db->commit();
return 1;
} else {
$this->error = $this->db->error();
$this->db->rollback();
return -1;
}
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
@ -2173,7 +2222,7 @@ class Adherent extends CommonObject
}
/**
* Retourne le libelle du statut d'un adherent (brouillon, valide, resilie)
* Retourne le libelle du statut d'un adherent (brouillon, valide, resilie, exclu)
*
* @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
* @return string Label
@ -2229,6 +2278,10 @@ class Adherent extends CommonObject
$statusType = 'status6';
$labelStatus = $langs->trans("MemberStatusResiliated");
$labelStatusShort = $langs->trans("MemberStatusResiliatedShort");
} elseif ($status == -2) {
$statusType = 'status8';
$labelStatus = $langs->trans("MemberStatusExcluded");
$labelStatusShort = $langs->trans("MemberStatusExcludedShort");
}
return dolGetStatus($labelStatus, $labelStatusShort, '', $statusType, $mode);

View File

@ -103,6 +103,9 @@ class AdherentType extends CommonObject
/** @var string Email sent after resiliation */
public $mail_resiliate = '';
/** @var string Email sent after exclude */
public $mail_exclude = '';
/** @var array Array of members */
public $members = array();
@ -820,4 +823,19 @@ class AdherentType extends CommonObject
return '';
}
/**
* getMailOnExclude
*
* @return string Return mail model content of type or empty
*/
public function getMailOnExclude()
{
// NOTE mail_exclude not defined so never used
if (!empty($this->mail_exclude) && trim(dol_htmlentitiesbr_decode($this->mail_exclude))) { // Property not yet defined
return $this->mail_exclude;
}
return '';
}
}

View File

@ -329,7 +329,7 @@ class Members extends DolibarrApi
continue;
}
// Process the status separately because it must be updated using
// the validate() and resiliate() methods of the class Adherent.
// the validate(), resiliate() and exclude() methods of the class Adherent.
if ($field == 'statut') {
if ($value == '0') {
$result = $member->resiliate(DolibarrApiAccess::$user);
@ -341,6 +341,11 @@ class Members extends DolibarrApi
if ($result < 0) {
throw new RestException(500, 'Error when validating member: '.$member->error);
}
} elseif ($value == '-2') {
$result = $member->exclude(DolibarrApiAccess::$user);
if ($result < 0) {
throw new RestException(500, 'Error when excluding member: '.$member->error);
}
}
} else {
$member->$field = $value;

View File

@ -194,7 +194,7 @@ class MembersTypes extends DolibarrApi
continue;
}
// Process the status separately because it must be updated using
// the validate() and resiliate() methods of the class AdherentType.
// the validate(), resiliate() and exclude() methods of the class AdherentType.
$membertype->$field = $value;
}

View File

@ -82,6 +82,7 @@ print load_fiche_titre($langs->trans("MembersArea"), $resultboxes['selectboxlist
$MembersValidated = array();
$MembersToValidate = array();
$MembersUpToDate = array();
$MembersExcluded = array();
$MembersResiliated = array();
$AdherentType = array();
@ -116,6 +117,9 @@ if ($result) {
if ($objp->statut == 1) {
$MembersValidated[$objp->rowid] = $objp->somme;
}
if ($objp->statut == -2) {
$MembersExcluded[$objp->rowid] = $objp->somme;
}
if ($objp->statut == 0) {
$MembersResiliated[$objp->rowid] = $objp->somme;
}
@ -195,9 +199,10 @@ if ($conf->use_javascript_ajax) {
$SumToValidate = 0;
$SumValidated = 0;
$SumUpToDate = 0;
$SumResiliated = 0;
$SumExcluded = 0;
$total = 0;
$dataval = array();
$i = 0;
@ -205,17 +210,21 @@ if ($conf->use_javascript_ajax) {
$dataval['draft'][] = array($i, isset($MembersToValidate[$key]) ? $MembersToValidate[$key] : 0);
$dataval['notuptodate'][] = array($i, isset($MembersValidated[$key]) ? $MembersValidated[$key] - (isset($MembersUpToDate[$key]) ? $MembersUpToDate[$key] : 0) : 0);
$dataval['uptodate'][] = array($i, isset($MembersUpToDate[$key]) ? $MembersUpToDate[$key] : 0);
$dataval['excluded'][] = array($i, isset($MembersExcluded[$key]) ? $MembersExcluded[$key] : 0);
$dataval['resiliated'][] = array($i, isset($MembersResiliated[$key]) ? $MembersResiliated[$key] : 0);
$SumToValidate += isset($MembersToValidate[$key]) ? $MembersToValidate[$key] : 0;
$SumValidated += isset($MembersValidated[$key]) ? $MembersValidated[$key] - (isset($MembersUpToDate[$key]) ? $MembersUpToDate[$key] : 0) : 0;
$SumUpToDate += isset($MembersUpToDate[$key]) ? $MembersUpToDate[$key] : 0;
$SumExcluded += isset($MembersExcluded[$key]) ? $MembersExcluded [$key] : 0;
$SumResiliated += isset($MembersResiliated[$key]) ? $MembersResiliated[$key] : 0;
$i++;
}
$total = $SumToValidate + $SumValidated + $SumUpToDate + $SumResiliated;
$total = $SumToValidate + $SumValidated + $SumUpToDate + $SumExcluded + $SumResiliated;
$dataseries = array();
$dataseries[] = array($langs->transnoentitiesnoconv("OutOfDate"), round($SumValidated));
$dataseries[] = array($langs->transnoentitiesnoconv("UpToDate"), round($SumUpToDate));
$dataseries[] = array($langs->transnoentitiesnoconv("MembersStatusExcluded"), round($SumExcluded));
$dataseries[] = array($langs->transnoentitiesnoconv("MembersStatusResiliated"), round($SumResiliated));
$dataseries[] = array($langs->transnoentitiesnoconv("MembersStatusToValid"), round($SumToValidate));
@ -224,7 +233,7 @@ if ($conf->use_javascript_ajax) {
include_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
$dolgraph = new DolGraph();
$dolgraph->SetData($dataseries);
$dolgraph->SetDataColor(array($badgeStatus1, $badgeStatus4, $badgeStatus6, '-'.$badgeStatus0));
$dolgraph->SetDataColor(array($badgeStatus1, $badgeStatus4, $badgeStatus8, $badgeStatus6, '-'.$badgeStatus0));
$dolgraph->setShowLegend(2);
$dolgraph->setShowPercent(1);
$dolgraph->SetType(array('pie'));
@ -234,7 +243,7 @@ if ($conf->use_javascript_ajax) {
$boxgraph .= '</td></tr>';
$boxgraph .= '<tr class="liste_total"><td>'.$langs->trans("Total").'</td><td class="right">';
$boxgraph .= $SumToValidate + $SumValidated + $SumUpToDate + $SumResiliated;
$boxgraph .= $SumToValidate + $SumValidated + $SumUpToDate + $SumExcluded + $SumResiliated;
$boxgraph .= '</td></tr>';
$boxgraph .= '</table>';
$boxgraph .= '</div>';

View File

@ -76,7 +76,7 @@ if ($statut != '') {
$sall = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'));
if ($search_status < -1) {
if ($search_status < -2) {
$search_status = '';
}
@ -452,6 +452,9 @@ if (GETPOSTISSET("search_status")) {
if ($search_status == '0') {
$titre = $langs->trans("MembersListResiliated");
}
if ($search_status == '-2') {
$titre = $langs->trans("MembersListExcluded");
}
} elseif ($action == 'search') {
$titre = $langs->trans("MembersListQualified");
}
@ -750,9 +753,10 @@ if (!empty($arrayfields['d.statut']['checked'])) {
$liststatus = array(
'-1'=>$langs->trans("Draft"),
'1'=>$langs->trans("Validated"),
'0'=>$langs->trans("Resiliated")
'0'=>$langs->trans("Resiliated"),
'-2'=>$langs->trans("Excluded")
);
print $form->selectarray('search_status', $liststatus, $search_status, -2);
print $form->selectarray('search_status', $liststatus, $search_status, -3);
print '</td>';
}
// Action column

View File

@ -645,7 +645,7 @@ if ($rowid > 0) {
* Action bar
*/
// Button to create a new subscription if member no draft neither resiliated
// Button to create a new subscription if member no draft (-1) neither resiliated (0) neither excluded (-2)
if ($user->rights->adherent->cotisation->creer) {
if ($action != 'addsubscription' && $action != 'create_thirdparty') {
print '<div class="tabsAction">';

View File

@ -566,6 +566,8 @@ if ($rowid > 0) {
$titre = $langs->trans("MembersListNotUpToDate");
} elseif ($status == '0') {
$titre = $langs->trans("MembersListResiliated");
} elseif ($status == '-2') {
$titre = $langs->trans("MembersListExcluded");
}
} elseif ($action == 'search') {
$titre = $langs->trans("MembersListQualified");

View File

@ -92,7 +92,7 @@ if ($action == 'settemplates') {
if ($action == 'setvalue' && $user->admin) {
$db->begin();
$result = dolibarr_set_const($db, "NOTIFICATION_EMAIL_FROM", GETPOST("email_from", "restricthtml"), 'chaine', 0, '', $conf->entity);
$result = dolibarr_set_const($db, "NOTIFICATION_EMAIL_FROM", GETPOST("email_from", "alphawithlgt"), 'chaine', 0, '', $conf->entity);
if ($result < 0) {
$error++;
}
@ -270,7 +270,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
}
$helptext = '';
form_constantes($constantes, 2, $helptext);
form_constantes($constantes, 3, $helptext);
} else {
print '<table class="noborder centpercent">';
print '<tr class="liste_titre">';

View File

@ -445,12 +445,24 @@ if ($id > 0) {
// Employee
if ($action != 'editfk_user') {
$morehtmlref .= '<br>' . $form->editfieldkey("Employee", 'fk_user', $object->label, $object, $user->rights->tax->charges->creer, 'string', '', 0, 1);
if (!empty($object->fk_user)) {
if ($object->getSommePaiement() > 0 && !empty($object->fk_user)) {
$userstatic = new User($db);
$userstatic->fetch($object->fk_user);
$morehtmlref .= $userstatic->getNomUrl(1);
$result = $userstatic->fetch($object->fk_user);
if ($result > 0) {
$morehtmlref .= '<br>' .$langs->trans('Employee').' : '.$userstatic->getNomUrl(1);
}
} else {
$morehtmlref .= '<br>' . $form->editfieldkey("Employee", 'fk_user', $object->label, $object, $user->rights->salaries->write, 'string', '', 0, 1);
if (!empty($object->fk_user)) {
$userstatic = new User($db);
$result = $userstatic->fetch($object->fk_user);
if ($result > 0) {
$morehtmlref .= $userstatic->getNomUrl(1);
} else {
dol_print_error($db);
exit();
}
}
}
} else {
$morehtmlref .= '<br>'.$langs->trans('Employee').' :&nbsp;';

View File

@ -405,7 +405,7 @@ if ($action == 'create') {
print '</div>';
print "<br>\n";
dol_fiche_head();
print dol_get_fiche_head();
print '<table class="border centpercent">';
@ -512,7 +512,7 @@ if ($id) {
print '<input type="hidden" name="token" value="'.newToken().'">';
}
dol_fiche_head($head, 'card', $langs->trans("VATPayment"), -1, 'payment');
print dol_get_fiche_head($head, 'card', $langs->trans("VATPayment"), -1, 'payment');
$morehtmlref = '<div class="refidno">';
// Label of social contribution

View File

@ -851,6 +851,10 @@ class Conf
if (isset($this->projet) && !isset($this->project)) {
$this->project = $this->projet;
}
// member is new use, adherent is old use still initialised
if (isset($this->adherent) && !isset($this->member)) {
$this->member = $this->adherent;
}
// Object $mc
if (!defined('NOREQUIREMC') && !empty($this->multicompany->enabled)) {

View File

@ -2577,7 +2577,7 @@ class Form
}
}
if ($showempty) {
$out .= '<option value="0" selected>'.$textifempty.'</option>';
$out .= '<option value="0" selected>'.($textifempty ? $textifempty : '&nbsp;').'</option>';
}
$i = 0;

View File

@ -417,7 +417,7 @@ class FormMail extends Form
$listofmimes = array();
$keytoavoidconflict = empty($this->trackid) ? '' : '-'.$this->trackid; // this->trackid must be defined
if (GETPOST('mode', 'alpha') == 'init' || (GETPOST('modelmailselected', 'alpha') && GETPOST('modelmailselected', 'alpha') != '-1')) {
if (GETPOST('mode', 'alpha') == 'init' || (GETPOST('modelselected') && GETPOST('modelmailselected', 'alpha') && GETPOST('modelmailselected', 'alpha') != '-1')) {
if (!empty($arraydefaultmessage->joinfiles) && is_array($this->param['fileinit'])) {
foreach ($this->param['fileinit'] as $file) {
$this->add_attached_files($file, basename($file), dol_mimetype($file));

View File

@ -124,7 +124,7 @@ class FormTicket
/**
* Show the form to input ticket
*
* @param int $withdolfichehead With dol_fiche_head
* @param int $withdolfichehead With dol_get_fiche_head() and dol_get_fiche_end()
* @param string $mode Mode ('create' or 'edit')
* @return void
*/

View File

@ -346,7 +346,7 @@ class Interfaces
}
// We set info of modules
$triggers[$j]['picto'] = $objMod->picto ?img_object('', $objMod->picto, 'class="valignmiddle pictomodule "') : img_object('', 'generic', 'class="valignmiddle pictomodule "');
$triggers[$j]['picto'] = (!empty($objMod->picto)) ? img_object('', $objMod->picto, 'class="valignmiddle pictomodule "') : img_object('', 'generic', 'class="valignmiddle pictomodule "');
$triggers[$j]['file'] = $files[$key];
$triggers[$j]['fullpath'] = $fullpath[$key];
$triggers[$j]['relpath'] = $relpath[$key];
@ -377,7 +377,14 @@ class Interfaces
}
}
} else {
print 'Error: Trigger '.$modName.' does not extends DolibarrTriggers<br>';
$triggers[$j]['picto'] = (!empty($objMod->picto)) ? img_object('', $objMod->picto, 'class="valignmiddle pictomodule "') : img_object('', 'generic', 'class="valignmiddle pictomodule "');
$triggers[$j]['file'] = $files[$key];
$triggers[$j]['fullpath'] = $fullpath[$key];
$triggers[$j]['relpath'] = $relpath[$key];
$triggers[$j]['status'] = img_picto('Error: Trigger '.$modName.' does not extends DolibarrTriggers', 'warning');
//print 'Error: Trigger '.$modName.' does not extends DolibarrTriggers<br>';
$text = 'Error: Trigger '.$modName.' does not extends DolibarrTriggers';
}
} catch (Exception $e) {
print $e->getMessage();

View File

@ -1488,7 +1488,7 @@ function complete_elementList_with_modules(&$elementList)
*
* @param array $tableau Array of constants array('key'=>array('type'=>type, 'label'=>label)
* where type can be 'string', 'text', 'textarea', 'html', 'yesno', 'emailtemplate:xxx', ...
* @param int $strictw3c 0=Include form into table (deprecated), 1=Form is outside table to respect W3C (deprecated), 2=No form nor button at all (form is output by caller, recommended)
* @param int $strictw3c 0=Include form into table (deprecated), 1=Form is outside table to respect W3C (deprecated), 2=No form nor button at all, 3=No form nor button at all and each field has a unique name (form is output by caller, recommended)
* @param string $helptext Help
* @return void
*/
@ -1510,7 +1510,7 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '')
print '<table class="noborder centpercent">';
print '<tr class="liste_titre">';
print '<td class="titlefield">'.$langs->trans("Description").'</td>';
print '<td class="titlefieldcreate">'.$langs->trans("Description").'</td>';
print '<td>';
$text = $langs->trans("Value");
print $form->textwithpicto($text, $helptext, 1, 'help', '', 0, 2, 'idhelptext');
@ -1614,24 +1614,24 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '')
foreach (array_keys($_Avery_Labels) as $codecards) {
$arrayoflabels[$codecards] = $_Avery_Labels[$codecards]['name'];
}
print $form->selectarray('constvalue'.(empty($strictw3c) ? '' : '[]'), $arrayoflabels, ($obj->value ? $obj->value : 'CARD'), 1, 0, 0);
print $form->selectarray('constvalue'.(empty($strictw3c) ? '' : ($strictw3c == 3 ? '_'.$const : '[]')), $arrayoflabels, ($obj->value ? $obj->value : 'CARD'), 1, 0, 0);
print '<input type="hidden" name="consttype" value="yesno">';
print '<input type="hidden" name="constnote'.(empty($strictw3c) ? '' : '[]').'" value="'.nl2br(dol_escape_htmltag($obj->note)).'">';
print '</td>';
} else {
print '<td>';
print '<input type="hidden" name="consttype'.(empty($strictw3c) ? '' : '[]').'" value="'.($obj->type ? $obj->type : 'string').'">';
print '<input type="hidden" name="constnote'.(empty($strictw3c) ? '' : '[]').'" value="'.nl2br(dol_escape_htmltag($obj->note)).'">';
print '<input type="hidden" name="consttype'.(empty($strictw3c) ? '' : ($strictw3c == 3 ? '_'.$const : '[]')).'" value="'.($obj->type ? $obj->type : 'string').'">';
print '<input type="hidden" name="constnote'.(empty($strictw3c) ? '' : ($strictw3c == 3 ? '_'.$const : '[]')).'" value="'.nl2br(dol_escape_htmltag($obj->note)).'">';
if ($obj->type == 'textarea' || in_array($const, array('ADHERENT_CARD_TEXT', 'ADHERENT_CARD_TEXT_RIGHT', 'ADHERENT_ETIQUETTE_TEXT'))) {
print '<textarea class="flat" name="constvalue'.(empty($strictw3c) ? '' : '[]').'" cols="50" rows="5" wrap="soft">'."\n";
print '<textarea class="flat" name="constvalue'.(empty($strictw3c) ? '' : ($strictw3c == 3 ? '_'.$const : '[]')).'" cols="50" rows="5" wrap="soft">'."\n";
print $obj->value;
print "</textarea>\n";
} elseif ($obj->type == 'html') {
require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
$doleditor = new DolEditor('constvalue_'.$const.(empty($strictw3c) ? '' : '[]'), $obj->value, '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%');
$doleditor = new DolEditor('constvalue'.(empty($strictw3c) ? '' : ($strictw3c == 3 ? '_'.$const : '[]')), $obj->value, '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%');
$doleditor->Create();
} elseif ($obj->type == 'yesno') {
print $form->selectyesno('constvalue'.(empty($strictw3c) ? '' : '[]'), $obj->value, 1);
print $form->selectyesno('constvalue'.(empty($strictw3c) ? '' : ($strictw3c == 3 ? '_'.$const : '[]')), $obj->value, 1);
} elseif (preg_match('/emailtemplate/', $obj->type)) {
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
$formmail = new FormMail($db);
@ -1654,10 +1654,9 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '')
}
//var_dump($arraydefaultmessage);
//var_dump($arrayofmessagename);
print $form->selectarray('constvalue_'.$obj->name, $arrayofmessagename, $obj->value.':'.$tmp[1], 'None', 0, 0, '', 0, 0, 0, '', '', 1);
} else // type = 'string' ou 'chaine'
{
print '<input type="text" class="flat" size="48" name="constvalue'.(empty($strictw3c) ? '' : '[]').'" value="'.dol_escape_htmltag($obj->value).'">';
print $form->selectarray('constvalue'.(empty($strictw3c) ? '' : ($strictw3c == 3 ? '_'.$const : '[]')), $arrayofmessagename, $obj->value.':'.$tmp[1], 'None', 0, 0, '', 0, 0, 0, '', '', 1);
} else { // type = 'string' ou 'chaine'
print '<input type="text" class="flat minwidth300" name="constvalue'.(empty($strictw3c) ? '' : ($strictw3c == 3 ? '_'.$const : '[]')).'" value="'.dol_escape_htmltag($obj->value).'">';
}
print '</td>';
}

View File

@ -6322,7 +6322,7 @@ function dol_string_onlythesehtmltags($stringtoclean, $cleanalsosomestyles = 1,
*/
function dol_string_onlythesehtmlattributes($stringtoclean, $allowed_attributes = array("alt", "class", "contenteditable", "data-html", "href", "id", "name", "src", "style", "target", "title"))
{
if (class_exists('DOMDocument')) {
if (class_exists('DOMDocument') && !empty($stringtoclean)) {
$dom = new DOMDocument();
$dom->loadHTML($stringtoclean, LIBXML_ERR_NONE|LIBXML_HTML_NOIMPLIED|LIBXML_HTML_NODEFDTD|LIBXML_NONET|LIBXML_NOWARNING|LIBXML_NOXMLDECL);
if (is_object($dom)) {

View File

@ -177,12 +177,12 @@ function member_admin_prepare_head()
$h = 0;
$head = array();
$head[$h][0] = DOL_URL_ROOT.'/adherents/admin/adherent.php';
$head[$h][0] = DOL_URL_ROOT.'/adherents/admin/member.php';
$head[$h][1] = $langs->trans("Miscellaneous");
$head[$h][2] = 'general';
$h++;
$head[$h][0] = DOL_URL_ROOT.'/adherents/admin/adherent_emails.php';
$head[$h][0] = DOL_URL_ROOT.'/adherents/admin/member_emails.php';
$head[$h][1] = $langs->trans("EMails");
$head[$h][2] = 'emails';
$h++;
@ -193,12 +193,12 @@ function member_admin_prepare_head()
// $this->tabs = array('entity:-tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to remove a tab
complete_head_from_modules($conf, $langs, null, $head, $h, 'member_admin');
$head[$h][0] = DOL_URL_ROOT.'/adherents/admin/adherent_extrafields.php';
$head[$h][0] = DOL_URL_ROOT.'/adherents/admin/member_extrafields.php';
$head[$h][1] = $langs->trans("ExtraFieldsMember");
$head[$h][2] = 'attributes';
$h++;
$head[$h][0] = DOL_URL_ROOT.'/adherents/admin/adherent_type_extrafields.php';
$head[$h][0] = DOL_URL_ROOT.'/adherents/admin/member_type_extrafields.php';
$head[$h][1] = $langs->trans("ExtraFieldsMemberType");
$head[$h][2] = 'attributes_type';
$h++;

View File

@ -28,7 +28,7 @@
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
/**
* Description and activation class for module accounting expert
* Class to describe and enable double entry accounting module
*/
class modAccounting extends DolibarrModules
{

View File

@ -27,7 +27,7 @@
* \brief Module to manage members of a foundation
* \file htdocs/core/modules/modAdherent.class.php
* \ingroup member
* \brief File descriptor or module Member
* \brief Description and activation file for the module member
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
@ -66,7 +66,7 @@ class modAdherent extends DolibarrModules
);
// Config pages
$this->config_page_url = array("adherent.php@adherents");
$this->config_page_url = array("member.php@adherents");
// Dependencies
$this->hidden = false; // A condition to hide module

View File

@ -28,7 +28,7 @@
* \brief Module to manage agenda and events
* \file htdocs/core/modules/modAgenda.class.php
* \ingroup agenda
* \brief File of class to describe and enable/disable module Agenda
* \brief Description and activation file for the module agenda
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
* \brief Descriptor file for Api modulee
* \file htdocs/core/modules/modApi.class.php
* \ingroup api
* \brief Description and activation file for module Api
* \brief Description and activation file for the module Api
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,7 +22,7 @@
*
* \file htdocs/core/modules/modAsset.class.php
* \ingroup asset
* \brief Description and activation file for module Assets
* \brief Description and activation file for the module assets
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -24,7 +24,7 @@
* \brief Module pour gerer la tenue d'un compte bancaire et rapprochements
* \file htdocs/core/modules/modBanque.class.php
* \ingroup banque
* \brief Fichier de description et activation du module Banque
* \brief Description and activation file for the module bank
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,8 +22,8 @@
* \defgroup barcode Module barcode
* \brief Module pour gerer les codes barres
* \file htdocs/core/modules/modBarcode.class.php
* \ingroup barcode,produit
* \brief Fichier de description et activation du module Barcode
* \ingroup barcode, product
* \brief Description and activation file for the module barcode
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -20,7 +20,7 @@
* \brief Add a log into a block chain for some actions.
* \file htdocs/core/modules/modBlockedLog.class.php
* \ingroup blockedlog
* \brief Description and activation file for module BlockedLog
* \brief Description and activation file for the module BlockedLog
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
*
* \file htdocs/core/modules/modBom.class.php
* \ingroup bom
* \brief Description and activation file for module Bom
* \brief Description and activation file for the module Bom
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
@ -286,6 +286,7 @@ class modBom extends DolibarrModules
$langs->load("mrp");
$this->export_code[$r] = $this->rights_class.'_'.$r;
$this->export_label[$r] = 'BomAndBomLines'; // Translation key (used only if key ExportDataset_xxx_z not found)
$this->export_permission[$r] = array(array("bom", "read"));
$this->export_icon[$r] = 'bom';
$keyforclass = 'BOM';
$keyforclassfile = '/bom/class/bom.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module to manage Bookmarks
* \file htdocs/core/modules/modBookmark.class.php
* \ingroup bookmark
* \brief Fichier de description et activation du module Bookmarks
* \brief Description and activation file for the module Bookmarks
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -20,7 +20,7 @@
* \brief Module to manage points of sale
* \file htdocs/core/modules/modCashDesk.class.php
* \ingroup pos
* \brief File to enable/disable module Point Of Sales
* \brief Description and activation file for the module Point Of Sales
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
* \brief Module to manage categories
* \file htdocs/core/modules/modCategorie.class.php
* \ingroup category
* \brief Fichier de description et activation du module Categorie
* \brief Description and activation file for the module Category
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';
include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module pour gerer l'appel automatique
* \file htdocs/core/modules/modClickToDial.class.php
* \ingroup clicktodial
* \brief Fichier de description et activation du module de click to Dial
* \brief Description and activation file for the module Click to Dial
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -20,7 +20,7 @@
* \brief Collab module descriptor.
* \file htdocs/core/modules/modCollab.class.php
* \ingroup collab
* \brief Description and activation file for module Collab
* \brief Description and activation file for the module Collab
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -27,7 +27,7 @@
* \brief Module pour gerer le suivi des commandes
* \file htdocs/core/modules/modCommande.class.php
* \ingroup commande
* \brief Fichier de description et activation du module Commande
* \brief Description and activation file for the module command
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
* \brief Module pour inclure des fonctions de comptabilite (gestion de comptes comptables et rapports)
* \file htdocs/core/modules/modComptabilite.class.php
* \ingroup comptabilite
* \brief Fichier de description et activation du module Comptabilite
* \brief Description and activation file for the module simple accountancy
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,7 +22,7 @@
* \brief Module pour gerer la tenue de contrat de services
* \file htdocs/core/modules/modContrat.class.php
* \ingroup contrat
* \brief Fichier de description et activation du module Contrat
* \brief Description and activation file for the module contract
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief cron module descriptor.
* \file htdocs/core/modules/modCron.class.php
* \ingroup cron
* \brief Description and activation file for module Jobs
* \brief Description and activation file for the module Jobs
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
*
* \file htdocs/core/modules/modDataPolicy.class.php
* \ingroup datapolicy
* \brief Description and activation file for module DATAPOLICY
* \brief Description and activation file for the module datapolicy
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
*
* \file htdocs/core/modules/modDav.class.php
* \ingroup dav
* \brief Description and activation file for module dav
* \brief Description and activation file for the module dav
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
*
* \file htdocs/core/modules/modDebugBar.class.php
* \ingroup debugbar
* \brief Description and activation file for module debugbar
* \brief Description and activation file for the module debugbar
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module pour gerer les deplacements et notes de frais
* \file htdocs/core/modules/modDeplacement.class.php
* \ingroup deplacement
* \brief Fichier de description et activation du module Deplacement et notes de frais
* \brief Description and activation file for the module trips (deprecated)
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,7 +22,7 @@
* \brief Module pour gerer des generations de documents
* \file htdocs/core/modules/modDocumentGeneration.class.php
* \ingroup document
* \brief Fichier de description et activation du module Generation document
* \brief Description and activation file for the module Generation document
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
* \brief Module to manage the follow-up of the donations
* \file htdocs/core/modules/modDon.class.php
* \ingroup donations
* \brief Description and activation file for module Donation
* \brief Description and activation file for the module Donation
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -20,7 +20,7 @@
* \brief Module to manage dynamic prices in products
* \file htdocs/core/modules/modDynamicPrices.class.php
* \ingroup produit
* \brief File to describe module to manage dynamic prices in products
* \brief Description and activation file for the module to manage dynamic prices in products
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -20,7 +20,7 @@
* \brief Module for ECM (Electronic Content Management)
* \file htdocs/core/modules/modECM.class.php
* \ingroup ecm
* \brief Description and activation file for module ECM
* \brief Description and activation file for the module ECM
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
*
* \file htdocs/core/modules/modEmailCollector.class.php
* \ingroup emailcollector
* \brief Description and activation file for module emailcollector
* \brief Description and activation file for the module emailcollector
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
*
* \file htdocs/eventorganization/core/modules/modEventOrganization.class.php
* \ingroup eventorganization
* \brief Description and activation file for module EventOrganization
* \brief Description and activation file for the EventOrganization
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -24,7 +24,7 @@
* \brief Module pour gerer les expeditions de produits
* \file htdocs/core/modules/modExpedition.class.php
* \ingroup expedition
* \brief Fichier de description et activation du module Expedition
* \brief Description and activation file for the module Expedition
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module to manage expense report. Replace old module Deplacement.
* \file htdocs/core/modules/modExpenseReport.class.php
* \ingroup expensereport
* \brief Description and activation file for module ExpenseReport
* \brief Description and activation file for the module ExpenseReport
*/
include_once DOL_DOCUMENT_ROOT."/core/modules/DolibarrModules.class.php";

View File

@ -21,7 +21,7 @@
* \brief Module generique pour realiser des exports de donnees en base
* \file htdocs/core/modules/modExport.class.php
* \ingroup export
* \brief Fichier de description et activation du module export
* \brief Description and activation file for the module export
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module pour inclure des informations externes RSS
* \file htdocs/core/modules/modExternalRss.class.php
* \ingroup externalrss
* \brief Fichier de description et activation du module externalrss
* \brief Description and activation file for the module externalrss
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,7 +22,7 @@
* \brief Module to include an external web site/tools into Dolibarr menu and into a frame page.
* \file htdocs/core/modules/modExternalSite.class.php
* \ingroup externalsite
* \brief Description and activation file for module ExternalSite
* \brief Description and activation file for the module ExternalSite
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module for FTP client module
* \file htdocs/core/modules/modFTP.class.php
* \ingroup ftp
* \brief Description and activation file for module FTP
* \brief Description and activation file for the module FTP
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -20,11 +20,11 @@
*/
/**
* \defgroup facture Module invoices
* \brief Module pour gerer les factures clients et/ou fournisseurs
* \defgroup facture Module customer invoices
* \brief Module to manage customer invoices
* \file htdocs/core/modules/modFacture.class.php
* \ingroup facture
* \brief Fichier de la classe de description et activation du module Facture
* \brief Description and activation file for the module customer invoices
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,7 +22,7 @@
* \brief Module pour mettre en page les zones de saisie de texte
* \file htdocs/core/modules/modFckeditor.class.php
* \ingroup fckeditor
* \brief Fichier de description et activation du module Fckeditor
* \brief Description and activation file for the module Fckeditor
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -25,7 +25,7 @@
* \brief Module to manage intervention cards
* \file htdocs/core/modules/modFicheinter.class.php
* \ingroup ficheinter
* \brief Fichier de description et activation du module Ficheinter
* \brief Description and activation file for the module Ficheinter
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -24,7 +24,7 @@
* \defgroup fournisseur Module suppliers
* \file htdocs/core/modules/modFournisseur.class.php
* \ingroup fournisseur
* \brief Description and activation file for module Supplier
* \brief Description and activation file for the module Supplier
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -20,7 +20,7 @@
* \brief Module to make geoip conversions
* \file htdocs/core/modules/modGeoIPMaxmind.class.php
* \ingroup geoip
* \brief File of geoipmaxmind module descriptor
* \brief Description and activation file for the module geoipmaxmind
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module to use Gravatar to show photo of users
* \file htdocs/core/modules/modGravatar.class.php
* \ingroup gravatar
* \brief Description and activation file for module Gravatar
* \brief Description and activation file for the module Gravatar
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -18,7 +18,7 @@
/**
* \file htdocs/core/modules/modHRM.class.php
* \ingroup HRM
* \brief Description and activation file for module HRM
* \brief Description and activation file for the module HRM
*/
include_once DOL_DOCUMENT_ROOT."/core/modules/DolibarrModules.class.php";

View File

@ -26,7 +26,7 @@
* \brief Module de gestion des congés
* \file htdocs/core/modules/modHoliday.class.php
* \ingroup holiday
* \brief Description and activation file for module holiday
* \brief Description and activation file for the module holiday
*/
include_once DOL_DOCUMENT_ROOT."/core/modules/DolibarrModules.class.php";

View File

@ -21,7 +21,7 @@
* \brief Module to make generic import of data into dolibarr database
* \file htdocs/core/modules/modImport.class.php
* \ingroup import
* \brief Fichier de description et activation du module Import
* \brief Description and activation file for the module Import
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,7 +22,7 @@
*
* \file htdocs/core/modules/modIncoterm.class.php
* \ingroup incoterm
* \brief Description and activation file for module MyModule
* \brief Description and activation file for the module MyModule
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
/**
* \file htdocs/core/modules/modIntracommreport.class.php
* \ingroup Intracomm report
* \brief Module to activate intracomm report module
* \brief Description and activation file for the module intracomm report
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module pour gerer les formats d'impression des etiquettes
* \file htdocs/core/modules/modLabel.class.php
* \ingroup other
* \brief Fichier de description et activation du module Label
* \brief Description and activation file for the module Labels
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,7 +22,7 @@
* \brief Module to manage LDAP interfaces with contacts or users
* \file htdocs/core/modules/modLdap.class.php
* \ingroup ldap
* \brief File to describe and activate Ldap module
* \brief Description and activation file for the module LDAP
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module to include loans management
* \file htdocs/core/modules/modLoan.class.php
* \ingroup loan
* \brief File to activate module loan
* \brief Description and activation file for the module loan
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,7 +22,7 @@
* \brief Module to manage EMailings
* \file htdocs/core/modules/modMailing.class.php
* \ingroup mailing
* \brief Fichier de description et activation du module Mailing
* \brief Description and activation file for the module Mailing
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module to manage mailman and spip
* \file htdocs/core/modules/modMailmanSpip.class.php
* \ingroup mailmanspip
* \brief Fichier de description et activation du module de click to Dial
* \brief Description and activation file for the module mailmanspip
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -20,7 +20,7 @@
* \brief Module to manage margins
* \file htdocs/core/modules/modMargin.class.php
* \ingroup margin
* \brief Description and activation file for module Margin
* \brief Description and activation file for the module Margin
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Add a log into a block chain for some actions.
* \file htdocs/core/modules/modBlockedLog.class.php
* \ingroup blockedlog
* \brief Description and activation file for module ModuleBuilder
* \brief Description and activation file for the module ModuleBuilder
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -24,7 +24,7 @@
*
* \file htdocs/core/modules/modMrp.class.php
* \ingroup mrp
* \brief Description and activation file for module Mrp
* \brief Description and activation file for the module Mrp
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
* \brief Handle multiple currencies on company/propal/orders ...
* \file htdocs/core/modules/modMultiCurrency.class.php
* \ingroup multicurrency
* \brief Description and activation file for module MultiCurrency
* \brief Description and activation file for the module MultiCurrency
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module pour gerer les notifications (par mail ou autre)
* \file htdocs/core/modules/modNotification.class.php
* \ingroup notification
* \brief Fichier de description et activation du module Notification
* \brief Description and activation file for the module Notification
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
/**
* \file htdocs/core/modules/modOauth.class.php
* \ingroup oauth
* \brief File of class to describe and activate module Oauth
* \brief Description and activation file for the module Oauth
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Module to OpenSurvey integration.
* \file htdocs/core/modules/modOpenSurvey.class.php
* \ingroup opensurvey
* \brief Description and activation file for module OpenSurvey
* \brief Description and activation file for the module OpenSurvey
*/
include_once DOL_DOCUMENT_ROOT."/core/modules/DolibarrModules.class.php";

View File

@ -21,7 +21,7 @@
* \brief Add integration with Paybox online payment system.
* \file htdocs/core/modules/modPaybox.class.php
* \ingroup paybox
* \brief Description and activation file for module Paybox
* \brief Description and activation file for the module Paybox
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
* \brief Module to manage payment by bank transfer
* \file htdocs/core/modules/modPaymentByBankTransfer.class.php
* \ingroup paymentbybanktransfer
* \brief File to describe and activate the module PaymentByBankTransfer
* \brief Description and activation file for the module PaymentByBankTransfer
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -22,7 +22,7 @@
* \brief Add integration with Paypal online payment system.
* \file htdocs/core/modules/modPaypal.class.php
* \ingroup paypal
* \brief Description and activation file for module Paypal
* \brief Description and activation file for the module Paypal
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
* \brief Module to manage Direct debit orders
* \file htdocs/core/modules/modPrelevement.class.php
* \ingroup prelevement
* \brief File to describe and enable the module Prelevement
* \brief Description and activation file for the module Prelevement
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
/**
* \file htdocs/core/modules/modPrinting.class.php
* \ingroup printing
* \brief File of class to describe and activate module Direct Printing
* \brief Description and activation file for the module Direct Printing
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -28,7 +28,7 @@
* \brief Module to manage catalog of predefined products
* \file htdocs/core/modules/modProduct.class.php
* \ingroup produit
* \brief File to describe module to manage catalog of predefined products
* \brief Description and activation file for the module to manage catalog of predefined products
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
* \brief Management module for batch number, eat-by and sell-by date for product
* \file htdocs/core/modules/modProductBatch.class.php
* \ingroup productbatch
* \brief Description and activation file for module productbatch
* \brief Description and activation file for the module productbatch
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -26,7 +26,7 @@
* \brief Module to create projects/tasks/gantt diagram. Projects can them be affected to tasks.
* \file htdocs/core/modules/modProjet.class.php
* \ingroup projet
* \brief Fichier de description et activation du module Projet
* \brief Description and activation file for the module project
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -26,7 +26,7 @@
* \brief Module pour gerer la tenue de propositions commerciales
* \file htdocs/core/modules/modPropale.class.php
* \ingroup propale
* \brief Fichier de description et activation du module Propale
* \brief Description and activation file for the module customer proposal
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
/**
* \file htdocs/core/modules/modReceiptPrinter.class.php
* \ingroup printing
* \brief File of class to describe and activate module Receipt Printer
* \brief Description and activation file for the module Receipt Printer
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -20,7 +20,7 @@
* \brief Module pour gerer les réceptions de produits
* \file htdocs/core/modules/modReception.class.php
* \ingroup reception
* \brief Fichier de description et activation du module Reception
* \brief Description and activation file for the module Reception
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
*
* \file htdocs/recruitment/core/modules/modRecruitment.class.php
* \ingroup recruitment
* \brief Description and activation file for module Recruitment
* \brief Description and activation file for the module Recruitment
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -23,7 +23,7 @@
* \brief Resource module descriptor.
* \file core/modules/modResource.class.php
* \ingroup resource
* \brief Description and activation file for module Resource
* \brief Description and activation file for the module Resource
*/
include_once DOL_DOCUMENT_ROOT."/core/modules/DolibarrModules.class.php";

View File

@ -27,7 +27,7 @@
* \brief Module to include salaries management
* \file htdocs/core/modules/modSalaries.class.php
* \ingroup salaries
* \brief File to activate module salaries
* \brief Description and activation file for the module salaries
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -25,7 +25,7 @@
* \brief Module pour gerer le suivi de services predefinis
* \file htdocs/core/modules/modService.class.php
* \ingroup service
* \brief Fichier de description et activation du module Service
* \brief Description and activation file for the module Service
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -21,7 +21,7 @@
* \brief Add a SocialNetworks button.
* \file htdocs/core/modules/modSocialNetworks.class.php
* \ingroup socialnetworks
* \brief Description and activation file for module SocialNetworks
* \brief Description and activation file for the module SocialNetworks
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

View File

@ -25,7 +25,7 @@
* \brief Module to manage third parties (customers, prospects)
* \file htdocs/core/modules/modSociete.class.php
* \ingroup societe
* \brief Fichier de description et activation du module Societe
* \brief Description and activation file for the module societe (thirdparty)
*/
include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php';

Some files were not shown because too many files have changed in this diff Show More