31 require
'../main.inc.php';
32 require_once DOL_DOCUMENT_ROOT.
'/core/lib/member.lib.php';
33 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
34 require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
35 require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent_type.class.php';
36 require_once DOL_DOCUMENT_ROOT.
'/adherents/class/subscription.class.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.class.php';
38 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
39 require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
40 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
42 $langs->loadLangs(array(
"companies",
"bills",
"members",
"users",
"mails",
'other'));
44 $action =
GETPOST(
'action',
'aZ09');
45 $confirm =
GETPOST(
'confirm',
'alpha');
46 $contextpage =
GETPOST(
'contextpage',
'aZ09');
47 $optioncss =
GETPOST(
'optioncss',
'aZ');
51 $ref =
GETPOST(
'ref',
'alphanohtml');
52 $typeid =
GETPOST(
'typeid',
'int');
56 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
57 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
58 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
60 if (empty($page) || $page == -1) {
63 $offset = $limit * $page;
64 $pageprev = $page - 1;
65 $pagenext = $page + 1;
69 $sortfield =
"c.rowid";
80 $extrafields->fetch_name_optionals_label($object->table_element);
85 $defaultdelayunit =
'y';
88 $hookmanager->initHooks(array(
'subscription'));
91 $hidedetails = (
GETPOST(
'hidedetails',
'int') ?
GETPOST(
'hidedetails',
'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0));
92 $hidedesc = (
GETPOST(
'hidedesc',
'int') ?
GETPOST(
'hidedesc',
'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0));
93 $hideref = (
GETPOST(
'hideref',
'int') ?
GETPOST(
'hideref',
'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0));
100 if ($id > 0 || !empty($ref)) {
102 $result = $object->fetch($id, $ref);
105 $canadduser = ($user->admin || $user->hasRight(
"user",
"user",
"creer"));
107 if ($object->user_id) {
109 $caneditfielduser = ((($user->id == $object->user_id) && $user->hasRight(
"user",
"self",
"creer"))
110 || (($user->id != $object->user_id) && $user->hasRight(
"user",
"user",
"creer")));
111 $caneditpassworduser = ((($user->id == $object->user_id) && $user->hasRight(
"user",
"self",
"password"))
112 || (($user->id != $object->user_id) && $user->hasRight(
"user",
"user",
"password")));
117 $canaddmember = $user->hasRight(
'adherent',
'creer');
120 $caneditfieldmember = $user->hasRight(
'adherent',
'creer');
124 $result =
restrictedArea($user,
'adherent', $object->id,
'',
'',
'socid',
'rowid', 0);
131 $parameters = array();
132 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
138 if (empty($reshook) && $action ==
'confirm_create_thirdparty' && $confirm ==
'yes' && $user->hasRight(
'societe',
'creer')) {
142 $result = $company->create_from_member($object,
GETPOST(
'companyname',
'alpha'),
GETPOST(
'companyalias',
'alpha'),
GETPOST(
'customercode',
'alpha'));
145 $langs->load(
"errors");
148 $action =
'addsubscription';
155 if (empty($reshook) && $action ==
'setuserid' && ($user->hasRight(
'user',
'self',
'creer') || $user->hasRight(
'user',
'user',
'creer'))) {
157 if (!$user->hasRight(
'user',
'user',
'creer')) {
158 if (
GETPOST(
"userid",
'int') != $user->id &&
GETPOST(
"userid",
'int') != $object->user_id) {
160 setEventMessages($langs->trans(
"ErrorUserPermissionAllowsToLinksToItselfOnly"),
null,
'errors');
165 if (
GETPOST(
"userid",
'int') != $object->user_id) {
166 $result = $object->setUserId(
GETPOST(
"userid",
'int'));
175 if (empty($reshook) && $action ==
'setsocid') {
178 if (
GETPOST(
'socid',
'int') != $object->fk_soc) {
179 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"adherent";
180 $sql .=
" WHERE fk_soc = '".GETPOST(
'socid',
'int').
"'";
181 $resql = $db->query(
$sql);
183 $obj = $db->fetch_object($resql);
184 if ($obj && $obj->rowid > 0) {
186 $othermember->fetch($obj->rowid);
187 $thirdparty =
new Societe($db);
188 $thirdparty->fetch(
GETPOST(
'socid',
'int'));
190 setEventMessages($langs->trans(
"ErrorMemberIsAlreadyLinkedToThisThirdParty", $othermember->getFullName($langs), $othermember->login, $thirdparty->name),
null,
'errors');
195 $result = $object->setThirdPartyId(
GETPOST(
'socid',
'int'));
205 if ($user->hasRight(
'adherent',
'cotisation',
'creer') && $action ==
'subscription' && !$cancel) {
208 $langs->load(
"banks");
210 $result = $object->fetch($rowid);
211 $result = $adht->fetch($object->typeid);
214 $datesubscription = 0;
223 if (
GETPOST(
"paymentyear",
'int') &&
GETPOST(
"paymentmonth",
'int') &&
GETPOST(
"paymentday",
'int')) {
230 $accountid =
GETPOST(
"accountid",
'int');
231 $operation =
GETPOST(
"operation",
"alphanohtml");
232 $num_chq =
GETPOST(
"num_chq",
"alphanohtml");
233 $emetteur_nom =
GETPOST(
"chqemetteur");
234 $emetteur_banque =
GETPOST(
"chqbank");
235 $option =
GETPOST(
"paymentsave");
236 if (empty($option)) {
239 $sendalsoemail =
GETPOST(
"sendmail",
'alpha');
242 if (!$datesubscription) {
244 $langs->load(
"errors");
245 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateSubscription"));
247 $action =
'addsubscription';
249 if (
GETPOST(
'end') && !$datesubend) {
251 $langs->load(
"errors");
252 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateEndSubscription"));
254 $action =
'addsubscription';
259 if (($option ==
'bankviainvoice' || $option ==
'bankdirect') && !$paymentdate) {
261 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"DatePayment"));
263 $action =
'addsubscription';
267 if ($adht->subscription) {
268 if (!is_numeric($amount)) {
270 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Amount"));
273 $action =
'addsubscription';
279 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Label"));
282 $action =
'addsubscription';
284 if (
GETPOST(
"paymentsave") !=
'invoiceonly' && !
GETPOST(
"operation")) {
285 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"PaymentMode"));
288 $action =
'addsubscription';
290 if (
GETPOST(
"paymentsave") !=
'invoiceonly' && !(
GETPOST(
"accountid",
'int') > 0)) {
291 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"FinancialAccount"));
294 $action =
'addsubscription';
297 if (
GETPOST(
"accountid",
'int')) {
298 $errmsg = $langs->trans(
"ErrorDoNotProvideAccountsIfNullAmount");
301 $action =
'addsubscription';
309 if (!$error && $action ==
'subscription') {
313 $crowid = $object->subscription($datesubscription, $amount, $accountid, $operation, $label, $num_chq, $emetteur_nom, $emetteur_banque, $datesubend);
316 $errmsg = $object->error;
321 $result = $object->subscriptionComplementaryActions($crowid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, $amount, $num_chq, $emetteur_nom, $emetteur_banque);
334 $action =
'addsubscription';
344 if ($object->email && $sendalsoemail) {
346 'datesubscription' => $datesubscription,
348 'ccountid' => $accountid,
349 'operation' => $operation,
351 'num_chq' => $num_chq,
352 'emetteur_nom' => $emetteur_nom,
353 'emetteur_banque' => $emetteur_banque,
354 'datesubend' => $datesubend
356 $reshook = $hookmanager->executeHooks(
'sendMail', $parameters, $object, $action);
361 if (empty($reshook)) {
366 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
370 $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
372 $outputlangs->loadLangs(array(
"main",
"members"));
375 $arraydefaultmessage =
null;
376 $labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION;
378 if (!empty($labeltouse)) {
379 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
382 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
383 $subject = $arraydefaultmessage->topic;
384 $msg = $arraydefaultmessage->content;
394 $listofpaths = array();
395 $listofnames = array();
396 $listofmimes = array();
397 if (is_object($object->invoice) && (!is_object($arraydefaultmessage) || intval($arraydefaultmessage->joinfiles))) {
398 $invoicediroutput = $conf->facture->dir_output;
399 $fileparams =
dol_most_recent_file($invoicediroutput.
'/'.$object->invoice->ref, preg_quote($object->invoice->ref,
'/').
'[^\-]+');
400 $file = $fileparams[
'fullname'];
402 $listofpaths = array($file);
403 $listofnames = array(basename($file));
407 $moreinheader =
'X-Dolibarr-Info: send_an_email by adherents/subscription.php'.
"\r\n";
409 $result = $object->sendEmail($texttosend, $subjecttosend, $listofpaths, $listofmimes, $listofnames,
"",
"", 0, -1,
'', $moreinheader);
411 $errmsg = $object->error;
414 setEventMessages($langs->trans(
"EmailSentToMember", $object->email),
null,
'mesgs');
424 $_POST[
"subscription"] =
'';
425 $_POST[
"accountid"] =
'';
426 $_POST[
"operation"] =
'';
427 $_POST[
"label"] =
'';
428 $_POST[
"num_chq"] =
'';
443 $title = $langs->trans(
"Member").
" - ".$langs->trans(
"Subscriptions");
445 $help_url =
"EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros|DE:Modul_Mitglieder";
451 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
452 $param .=
'&contextpage='.urlencode($contextpage);
454 if ($limit > 0 && $limit != $conf->liste_limit) {
455 $param .=
'&limit='.((int) $limit);
457 $param .=
'&id='.$rowid;
458 if ($optioncss !=
'') {
459 $param .=
'&optioncss='.urlencode($optioncss);
465 if (! ($object->id > 0)) {
466 $langs->load(
"errors");
467 print $langs->trans(
"ErrorRecordNotFound");
477 $adht->fetch($object->typeid);
482 if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) {
489 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
490 print
'<input type="hidden" name="token" value="'.newToken().
'">';
491 print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
495 $linkback =
'<a href="'.DOL_URL_ROOT.
'/adherents/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
497 $morehtmlref =
'<a href="'.DOL_URL_ROOT.
'/adherents/vcard.php?id='.$object->id.
'" class="refid">';
498 $morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard.png',
'class="valignmiddle marginleftonly paddingrightonly"');
499 $morehtmlref .=
'</a>';
501 dol_banner_tab($object,
'rowid', $linkback, 1,
'rowid',
'ref', $morehtmlref);
503 print
'<div class="fichecenter">';
504 print
'<div class="fichehalfleft">';
506 print
'<div class="underbanner clearboth"></div>';
507 print
'<table class="border centpercent tableforfield">';
510 if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) {
511 print
'<tr><td class="titlefield">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</td><td class="valeur">'.
dol_escape_htmltag($object->login).
'</td></tr>';
515 print
'<tr><td class="titlefield">'.$langs->trans(
"Type").
'</td>';
516 print
'<td class="valeur">'.$adht->getNomUrl(1).
"</td></tr>\n";
519 print
'<tr><td>'.$langs->trans(
"MemberNature").
'</td>';
520 print
'<td class="valeur" >'.$object->getmorphylib(
'', 1).
'</td>';
524 print
'<tr><td>'.$langs->trans(
"Company").
'</td><td class="valeur">'.
dol_escape_htmltag($object->company).
'</td></tr>';
527 print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td class="valeur">'.$object->getCivilityLabel().
'</td>';
531 if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) {
532 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td>';
534 print preg_replace(
'/./i',
'*', $object->pass);
537 print
'<!-- '.$langs->trans(
"Crypted").
': '.$object->pass_indatabase_crypted.
' -->';
539 print
'<span class="opacitymedium">'.$langs->trans(
"Hidden").
'</span>';
541 if (!empty($object->pass_indatabase) && empty($object->user_id)) {
542 $langs->load(
"errors");
543 $htmltext = $langs->trans(
"WarningPasswordSetWithNoAccount");
544 print
' '.$form->textwithpicto(
'', $htmltext, 1,
'warning');
550 print
'<tr><td>'.$langs->trans(
"SubscriptionEndDate").
'</td><td class="valeur">';
551 if ($object->datefin) {
553 if ($object->hasDelay()) {
554 print
" ".img_warning($langs->trans(
"Late"));
557 if ($object->need_subscription == 0) {
558 print $langs->trans(
"SubscriptionNotNeeded");
559 } elseif (!$adht->subscription) {
560 print $langs->trans(
"SubscriptionNotRecorded");
562 print
" ".img_warning($langs->trans(
"Late"));
565 print $langs->trans(
"SubscriptionNotReceived");
567 print
" ".img_warning($langs->trans(
"Late"));
577 print
'<div class="fichehalfright">';
578 print
'<div class="underbanner clearboth"></div>';
580 print
'<table class="border tableforfield centpercent">';
583 if (
isModEnabled(
'categorie') && $user->hasRight(
'categorie',
'lire')) {
584 print
'<tr><td>'.$langs->trans(
"Categories").
'</td>';
585 print
'<td colspan="2">';
586 print
$form->showCategories($object->id, Categorie::TYPE_MEMBER, 1);
591 print
'<tr><td class="titlefield">'.$langs->trans(
"DateOfBirth").
'</td><td class="valeur">'.
dol_print_date($object->birth,
'day').
'</td></tr>';
595 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
596 print
'<tr><td>'.$langs->trans(
"DefaultLang").
'</td><td>';
599 $langs->load(
"languages");
600 $labellang = ($object->default_lang ? $langs->trans(
'Language_'.$object->default_lang) :
'');
601 print
picto_from_langcode($object->default_lang,
'class="paddingrightonly saturatemedium opacitylow"');
607 $linkofpubliclist = DOL_MAIN_URL_ROOT.
'/public/members/public_list.php'.((
isModEnabled(
'multicompany')) ?
'?entity='.$conf->entity :
'');
608 print
'<tr><td>'.$langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist).
'</td><td class="valeur">'.
yn($object->public).
'</td></tr>';
612 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
617 print
'<table class="nobordernopadding" width="100%"><tr><td>';
618 print $langs->trans(
"LinkedToDolibarrThirdParty");
620 if ($action !=
'editthirdparty' && $user->hasRight(
'adherent',
'creer')) {
621 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editthirdparty&token='.
newToken().
'&rowid='.$object->id.
'">'.
img_edit($langs->trans(
'SetLinkToThirdParty'), 1).
'</a></td>';
623 print
'</tr></table>';
624 print
'</td><td colspan="2" class="valeur">';
625 if ($action ==
'editthirdparty') {
627 print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'" name="form'.$htmlname.
'">';
628 print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
629 print
'<input type="hidden" name="action" value="set'.$htmlname.
'">';
630 print
'<input type="hidden" name="token" value="'.newToken().
'">';
631 print
'<table class="nobordernopadding">';
633 print
$form->select_company($object->fk_soc,
'socid',
'', 1);
635 print
'<td class="left"><input type="submit" class="button button-edit" value="'.$langs->trans(
"Modify").
'"></td>';
636 print
'</tr></table></form>';
638 if ($object->fk_soc) {
640 $result = $company->fetch($object->fk_soc);
641 print $company->getNomUrl(1);
644 $tmparray = $company->getOutstandingBills(
'customer');
645 if (!empty($tmparray[
'refs'])) {
646 print
' - '.img_picto($langs->trans(
"Invoices"),
'bill',
'class="paddingright"').
'<a href="'.DOL_URL_ROOT.
'/compta/facture/list.php?socid='.$object->socid.
'">'.$langs->trans(
"Invoices").
' ('.count($tmparray[
'refs']).
')';
651 print
'<span class="opacitymedium">'.$langs->trans(
"NoThirdPartyAssociatedToMember").
'</span>';
659 print
'<table class="nobordernopadding" width="100%"><tr><td>';
660 print $langs->trans(
"LinkedToDolibarrUser");
662 if ($action !=
'editlogin' && $user->hasRight(
'adherent',
'creer')) {
663 print
'<td class="right">';
664 if ($user->hasRight(
"user",
"user",
"creer")) {
665 print
'<a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editlogin&token='.
newToken().
'&rowid='.$object->id.
'">'.
img_edit($langs->trans(
'SetLinkToUser'), 1).
'</a>';
669 print
'</tr></table>';
670 print
'</td><td colspan="2" class="valeur">';
671 if ($action ==
'editlogin') {
672 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.$object->id, $object->user_id,
'userid',
'');
674 if ($object->user_id) {
675 $linkeduser =
new User($db);
676 $linkeduser->fetch($object->user_id);
677 print $linkeduser->getNomUrl(-1);
679 print
'<span class="opacitymedium">'.$langs->trans(
"NoDolibarrAccess").
'</span>';
686 print
"</div></div>\n";
687 print
'<div class="clearboth"></div>';
697 if ($user->hasRight(
'adherent',
'cotisation',
'creer')) {
698 if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
699 print
'<div class="tabsAction">';
701 if ($object->statut > 0) {
702 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.$rowid.
'&action=addsubscription&token='.
newToken().
'">'.$langs->trans(
"AddSubscription").
"</a></div>";
704 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"AddSubscription").
'</a></div>';
714 if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
715 $sql =
"SELECT d.rowid, d.firstname, d.lastname, d.societe, d.fk_adherent_type as type,";
716 $sql .=
" c.rowid as crowid, c.subscription,";
717 $sql .=
" c.datec, c.fk_type as cfk_type,";
718 $sql .=
" c.dateadh as dateh,";
720 $sql .=
" c.fk_bank,";
721 $sql .=
" b.rowid as bid,";
722 $sql .=
" ba.rowid as baid, ba.label, ba.bank, ba.ref, ba.account_number, ba.fk_accountancy_journal, ba.number, ba.currency_code";
723 $sql .=
" FROM ".MAIN_DB_PREFIX.
"adherent as d, ".MAIN_DB_PREFIX.
"subscription as c";
724 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank as b ON c.fk_bank = b.rowid";
725 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_account as ba ON b.fk_account = ba.rowid";
726 $sql .=
" WHERE d.rowid = c.fk_adherent AND d.rowid=".((int) $rowid);
727 $sql .= $db->order($sortfield, $sortorder);
729 $result = $db->query(
$sql);
733 $num = $db->num_rows($result);
735 print
'<table class="noborder centpercent">'.
"\n";
737 print
'<tr class="liste_titre">';
739 print_liste_field_titre(
'DateCreation', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
741 print_liste_field_titre(
'DateStart', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
742 print_liste_field_titre(
'DateEnd', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
745 print_liste_field_titre(
'Account', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
749 $accountstatic =
new Account($db);
755 $objp = $db->fetch_object($result);
757 $adh->id = $objp->rowid;
758 $adh->typeid = $objp->type;
760 $subscriptionstatic->ref = $objp->crowid;
761 $subscriptionstatic->id = $objp->crowid;
763 $typeid = $objp->cfk_type;
765 $adht->fetch($typeid);
768 print
'<tr class="oddeven">';
769 print
'<td>'.$subscriptionstatic->getNomUrl(1).
'</td>';
770 print
'<td class="center">'.dol_print_date($db->jdate($objp->datec),
'dayhour').
"</td>\n";
771 print
'<td class="center">';
773 print $adht->getNomUrl(1);
776 print
'<td class="center">'.dol_print_date($db->jdate($objp->dateh),
'day').
"</td>\n";
777 print
'<td class="center">'.dol_print_date($db->jdate($objp->datef),
'day').
"</td>\n";
778 print
'<td class="right amount">'.price($objp->subscription).
'</td>';
780 print
'<td class="right">';
782 $accountstatic->label = $objp->label;
783 $accountstatic->id = $objp->baid;
784 $accountstatic->number = $objp->number;
785 $accountstatic->account_number = $objp->account_number;
786 $accountstatic->currency_code = $objp->currency_code;
788 if (
isModEnabled(
'accounting') && $objp->fk_accountancy_journal > 0) {
790 $accountingjournal->fetch($objp->fk_accountancy_journal);
792 $accountstatic->accountancy_journal = $accountingjournal->getNomUrl(0, 1, 1,
'', 1);
795 $accountstatic->ref = $objp->ref;
796 print $accountstatic->getNomUrl(1);
811 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
821 if (($action !=
'addsubscription' && $action !=
'create_thirdparty')) {
825 if ($useonlinepayment) {
828 require_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
829 print showOnlinePaymentUrl(
'membersubscription', $object->ref);
837 if (($action ==
'addsubscription' || $action ==
'create_thirdparty') && $user->hasRight(
'adherent',
'cotisation',
'creer')) {
847 if (
GETPOST(
'paymentsave') ==
'bankdirect') {
850 if (
GETPOST(
'paymentsave') ==
'invoiceonly') {
853 if (
GETPOST(
'paymentsave') ==
'bankviainvoice') {
857 if (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE ==
'bankviainvoice' &&
isModEnabled(
'banque') &&
isModEnabled(
'societe') &&
isModEnabled(
'facture')) {
859 } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE ==
'bankdirect' &&
isModEnabled(
'banque')) {
861 } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE ==
'invoiceonly' &&
isModEnabled(
'banque') &&
isModEnabled(
'societe') &&
isModEnabled(
'facture')) {
866 print
"\n\n<!-- Form add subscription -->\n";
868 if ($conf->use_javascript_ajax) {
870 print
"\n".
'<script type="text/javascript">';
871 print
'$(document).ready(function () {
872 $(".bankswitchclass, .bankswitchclass2").'.(($bankdirect || $bankviainvoice) ?
'show()' :
'hide()').
';
873 $("#none, #invoiceonly").click(function() {
874 $(".bankswitchclass").hide();
875 $(".bankswitchclass2").hide();
877 $("#bankdirect, #bankviainvoice").click(function() {
878 $(".bankswitchclass").show();
879 $(".bankswitchclass2").show();
881 $("#selectoperation").change(function() {
882 var code = $(this).val();
885 $(".fieldrequireddyn").addClass("fieldrequired");
886 if ($("#fieldchqemetteur").val() == "")
888 $("#fieldchqemetteur").val($("#memberlabel").val());
893 $(".fieldrequireddyn").removeClass("fieldrequired");
898 print
'$("#'.GETPOST(
'paymentsave',
'aZ09').
'").prop("checked", true);';
901 print
'</script>'.
"\n";
906 if ($action ==
'create_thirdparty') {
908 $fullname = $object->getFullName($langs);
910 if ($object->morphy ==
'mor') {
911 $companyname = $object->company;
912 if (!empty($fullname)) {
913 $companyalias = $fullname;
916 $companyname = $fullname;
917 if (!empty($object->company)) {
918 $companyalias = $object->company;
923 $formquestion = array(
924 array(
'label' => $langs->trans(
"NameToCreate"),
'type' =>
'text',
'name' =>
'companyname',
'value' => $companyname,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"'),
925 array(
'label' => $langs->trans(
"AliasNames"),
'type' =>
'text',
'name' =>
'companyalias',
'value' => $companyalias,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"')
928 if (!empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) {
929 $tmpcompany =
new Societe($db);
930 $tmpcompany->name = $companyname;
931 $tmpcompany->get_codeclient($tmpcompany, 0);
932 $customercode = $tmpcompany->code_client;
933 $formquestion[] = array(
934 'label' => $langs->trans(
"CustomerCode"),
936 'name' =>
'customercode',
937 'value' => $customercode,
938 'morecss' =>
'minwidth300',
939 'moreattr' =>
'maxlength="128"',
944 print
$form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".$object->id, $langs->trans(
"CreateDolibarrThirdParty"), $langs->trans(
"ConfirmCreateThirdParty"),
"confirm_create_thirdparty", $formquestion, 1);
948 print
'<form name="subscription" method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
949 print
'<input type="hidden" name="token" value="'.newToken().
'">';
950 print
'<input type="hidden" name="action" value="subscription">';
951 print
'<input type="hidden" name="rowid" value="'.$rowid.
'">';
952 print
'<input type="hidden" name="memberlabel" id="memberlabel" value="'.dol_escape_htmltag($object->getFullName($langs)).
'">';
953 print
'<input type="hidden" name="thirdpartylabel" id="thirdpartylabel" value="'.dol_escape_htmltag($object->company).
'">';
957 print
'<div class="div-table-responsive">';
958 print
'<table class="border centpercent">'.
"\n";
972 print
'<td class="fieldrequired">'.$langs->trans(
"DateSubscription").
'</td><td>';
977 $datefrom = $object->datevalid;
984 print
$form->selectDate($datefrom,
'',
'',
'',
'',
"subscription", 1, 1);
994 } elseif (
getDolGlobalInt(
'MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR')) {
1000 print
'<tr><td>'.$langs->trans(
"DateEndSubscription").
'</td><td>';
1001 print
$form->selectDate($dateto,
'end',
'',
'',
'',
"subscription", 1, 0);
1004 if ($adht->subscription) {
1006 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Amount").
'</td><td><input type="text" name="subscription" size="6" value="'.(
GETPOSTISSET(
'subscription') ?
GETPOST(
'subscription') :
price($adht->amount, 0,
'', 0)).
'"> '.$langs->trans(
"Currency".$conf->currency) .
'</td></tr>';
1009 print
'<tr><td>'.$langs->trans(
"Label").
'</td>';
1010 print
'<td><input name="label" type="text" size="32" value="';
1012 print $langs->trans(
"Subscription").
' '.
dol_print_date(($datefrom ? $datefrom : time()),
"%Y");
1014 print
'"></td></tr>';
1019 if ($object->socid) {
1020 $result = $company->fetch($object->socid);
1024 print
'<tr><td class="tdtop fieldrequired">'.$langs->trans(
'MoreActions');
1026 print
'<td class="line-height-large">';
1028 print
'<input type="radio" class="moreaction" id="none" name="paymentsave" value="none"'.(empty($bankdirect) && empty($invoiceonly) && empty($bankviainvoice) ?
' checked' :
'').
'>';
1029 print
'<label for="none"> '.$langs->trans(
"None").
'</label><br>';
1032 print
'<input type="radio" class="moreaction" id="bankdirect" name="paymentsave" value="bankdirect"'.(!empty($bankdirect) ?
' checked' :
'');
1033 print
'><label for="bankdirect"> '.$langs->trans(
"MoreActionBankDirect").
'</label><br>';
1037 print
'<input type="radio" class="moreaction" id="invoiceonly" name="paymentsave" value="invoiceonly"'.(!empty($invoiceonly) ?
' checked' :
'');
1039 print
'><label for="invoiceonly"> '.$langs->trans(
"MoreActionInvoiceOnly");
1040 if ($object->fk_soc) {
1041 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1044 if (empty($object->fk_soc)) {
1045 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1047 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1048 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.$object->id.
'&action=create_thirdparty">';
1049 print $langs->trans(
"CreateDolibarrThirdParty");
1052 if (empty($conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS) || $conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS !=
'defaultforfoundationcountry') {
1053 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1055 if (!empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (
isModEnabled(
'product') ||
isModEnabled(
'service'))) {
1057 $result = $prodtmp->fetch($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS);
1061 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1063 print
'</label><br>';
1067 print
'<input type="radio" class="moreaction" id="bankviainvoice" name="paymentsave" value="bankviainvoice"'.(!empty($bankviainvoice) ?
' checked' :
'');
1069 print
'><label for="bankviainvoice"> '.$langs->trans(
"MoreActionBankViaInvoice");
1070 if ($object->socid) {
1071 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1074 if (empty($object->socid)) {
1075 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1077 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1078 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.$object->id.
'&action=create_thirdparty">';
1079 print $langs->trans(
"CreateDolibarrThirdParty");
1082 if (empty($conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS) || $conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS !=
'defaultforfoundationcountry') {
1083 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1085 if (!empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (
isModEnabled(
'product')||
isModEnabled(
'service'))) {
1087 $result = $prodtmp->fetch($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS);
1091 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1093 print
'</label><br>';
1098 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"FinancialAccount").
'</td><td>';
1100 $form->select_comptes(
GETPOST(
'accountid'),
'accountid', 0,
'', 2,
'', 0,
'minwidth200');
1101 print
"</td></tr>\n";
1104 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"PaymentMode").
'</td><td>';
1105 print
$form->select_types_paiements(
GETPOST(
'operation'),
'operation',
'', 2, 1, 0, 0, 1,
'minwidth200', 1);
1106 print
"</td></tr>\n";
1109 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"DatePayment").
'</td><td>';
1110 print
$form->selectDate(isset($paymentdate) ? $paymentdate : -1,
'payment', 0, 0, 1,
'subscription', 1, 1);
1111 print
"</td></tr>\n";
1113 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Numero');
1114 print
' <em>('.$langs->trans(
"ChequeOrTransferNumber").
')</em>';
1116 print
'<td><input id="fieldnum_chq" name="num_chq" type="text" size="8" value="'.(!
GETPOST(
'num_chq') ?
'' :
GETPOST(
'num_chq')).
'"></td></tr>';
1118 print
'<tr class="bankswitchclass2 fieldrequireddyn"><td>'.$langs->trans(
'CheckTransmitter');
1119 print
' <em>('.$langs->trans(
"ChequeMaker").
')</em>';
1121 print
'<td><input id="fieldchqemetteur" name="chqemetteur" size="32" type="text" value="'.(!
GETPOST(
'chqemetteur') ?
'' :
GETPOST(
'chqemetteur')).
'"></td></tr>';
1123 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Bank');
1124 print
' <em>('.$langs->trans(
"ChequeBank").
')</em>';
1126 print
'<td><input id="chqbank" name="chqbank" size="32" type="text" value="'.(!
GETPOST(
'chqbank') ?
'' :
GETPOST(
'chqbank')).
'"></td></tr>';
1130 print
'<tr><td></td><td></td></tr>';
1132 print
'<tr><td>'.$langs->trans(
"SendAcknowledgementByMail").
'</td>';
1134 if (!$object->email) {
1135 print $langs->trans(
"NoEMail");
1138 $adht->fetch($object->typeid);
1145 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1148 $outputlangs =
new Translate(
'', $conf);
1149 $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
1151 $outputlangs->loadLangs(array(
"main",
"members"));
1153 $arraydefaultmessage =
null;
1154 $labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION;
1156 if (!empty($labeltouse)) {
1157 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1160 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1161 $subject = $arraydefaultmessage->topic;
1162 $msg = $arraydefaultmessage->content;
1170 $tmp =
'<input name="sendmail" type="checkbox"'.(GETPOST(
'sendmail',
'alpha') ?
' checked' : (!empty($conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL) ?
' checked' :
'')).
'>';
1172 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM').
'<br>'.
"\n";
1173 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.$object->email.
'<br>'.
"\n";
1174 $helpcontent .=
'<b>'.$langs->trans(
"MailTopic").
'</b>:<br>'.
"\n";
1175 if ($subjecttosend) {
1176 $helpcontent .= $subjecttosend.
"\n";
1178 $langs->load(
"errors");
1179 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1181 $helpcontent .=
"<br>";
1182 $helpcontent .=
'<b>'.$langs->trans(
"MailText").
'</b>:<br>';
1186 $langs->load(
"errors");
1187 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1189 print
$form->textwithpicto($tmp, $helpcontent, 1,
'help',
'', 0, 2,
'helpemailtosend');
1198 print
'<div class="center">';
1199 $parameters = array();
1200 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
1201 if (empty($reshook)) {
1202 print
'<input type="submit" class="button" name="add" value="'.$langs->trans(
"AddSubscription").
'">';
1203 print
' ';
1204 print
'<input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1210 print
"\n<!-- End form subscription -->\n\n";
if(GETPOST('button_removefilter_x', 'alpha')||GETPOST('button_removefilter.x', 'alpha')||GETPOST('button_removefilter', 'alpha')) if(GETPOST('button_search_x', 'alpha')||GETPOST('button_search.x', 'alpha')||GETPOST('button_search', 'alpha')) if($action=="save" &&empty($cancel)) $help_url
View.
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage bank accounts.
Class to manage accounting journals.
Class to manage members of a foundation.
const STATUS_VALIDATED
Validated status.
Class to manage members type.
Class to manage products or services.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage subscriptions of foundation members.
Class to manage translations.
Class to manage Dolibarr users.
if(isModEnabled('facture') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $sql
Social contributions to pay.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforendofmonth=0)
Add a delay to a date.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
dol_most_recent_file($dir, $regexfilter='', $excludefilter=array('(\.meta|_preview.*\.png)$', '^\.'), $nohook=false, $mode='')
Return file(s) into a directory (by default most recent)
dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
picto_from_langcode($codelang, $moreatt='', $notitlealt=0)
Return img flag of country for a language code or country code.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
dol_mimetype($file, $default='application/octet-stream', $mode=0)
Return MIME type of a file from its name with extension.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_get_fiche_end($notab=0)
Return tab footer of a card.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0)
Set event message in dol_events session object.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
newToken()
Return the value of token currently saved into session with name 'newtoken'.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dol_concatdesc($text1, $text2, $forxml=false, $invert=false)
Concat 2 descriptions with a new line between them (second operand after first one with appropriate n...
complete_substitutions_array(&$substitutionarray, $outputlangs, $object=null, $parameters=null, $callfunc="completesubstitutionarray")
Complete the $substitutionarray with more entries coming from external module that had set the "subst...
make_substitutions($text, $substitutionarray, $outputlangs=null, $converttextinhtmlifnecessary=0)
Make substitution into a text string, replacing keys with vals from $substitutionarray (oldval=>newva...
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
dol_htmlentitiesbr($stringtoencode, $nl2brmode=0, $pagecodefrom='UTF-8', $removelasteolbr=1)
This function is called to encode a string into a HTML string but differs from htmlentities because a...
getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $object=null, $include=null)
Return array of possible common substitutions.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
member_prepare_head(Adherent $object)
Return array head with list of tabs to view object informations.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.