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";