33require
'../main.inc.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/member.lib.php';
35require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
36require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent_type.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/adherents/class/subscription.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
53$langs->loadLangs(array(
"companies",
"bills",
"members",
"users",
"mails",
'other'));
55$action =
GETPOST(
'action',
'aZ09');
56$confirm =
GETPOST(
'confirm',
'alpha');
57$contextpage =
GETPOST(
'contextpage',
'aZ09');
58$optioncss =
GETPOST(
'optioncss',
'aZ');
62$ref =
GETPOST(
'ref',
'alphanohtml');
68$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
69$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
71if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
75$offset = $limit * $page;
81 $sortfield =
"c.rowid";
92$extrafields->fetch_name_optionals_label(
$object->table_element);
97$hookmanager->initHooks(array(
'subscription'));
109if ($id > 0 || !empty($ref)) {
111 $result =
$object->fetch($id, $ref);
114 $canadduser = ($user->admin || $user->hasRight(
"user",
"user",
"creer"));
118 $caneditfielduser = ((($user->id ==
$object->user_id) && $user->hasRight(
"user",
"self",
"creer"))
119 || (($user->id !=
$object->user_id) && $user->hasRight(
"user",
"user",
"creer")));
120 $caneditpassworduser = ((($user->id ==
$object->user_id) && $user->hasRight(
"user",
"self",
"password"))
121 || (($user->id !=
$object->user_id) && $user->hasRight(
"user",
"user",
"password")));
126$permissiontoaddmember = $user->hasRight(
'adherent',
'creer');
136$parameters = array();
137$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
143if (empty($reshook) && $action ==
'confirm_create_thirdparty' && $confirm ==
'yes' && $user->hasRight(
'societe',
'creer')) {
147 $result = $company->create_from_member($object,
GETPOST(
'companyname',
'alpha'),
GETPOST(
'companyalias',
'alpha'),
GETPOST(
'customercode',
'alpha'));
150 $langs->load(
"errors");
153 $action =
'addsubscription';
160if (empty($reshook) && $action ==
'setuserid' && ($user->hasRight(
'user',
'self',
'creer') || $user->hasRight(
'user',
'user',
'creer'))) {
162 if (!$user->hasRight(
'user',
'user',
'creer')) {
165 setEventMessages($langs->trans(
"ErrorUserPermissionAllowsToLinksToItselfOnly"),
null,
'errors');
180if (empty($reshook) && $action ==
'setsocid' && $permissiontoaddmember) {
183 $sql =
"SELECT rowid FROM " . MAIN_DB_PREFIX .
"adherent";
184 $sql .=
" WHERE fk_soc = " . ((int)
GETPOSTINT(
'socid'));
185 $resql = $db->query($sql);
187 $obj = $db->fetch_object($resql);
188 if ($obj && $obj->rowid > 0) {
190 $othermember->fetch($obj->rowid);
191 $thirdparty =
new Societe($db);
194 setEventMessages($langs->trans(
"ErrorMemberIsAlreadyLinkedToThisThirdParty", $othermember->getFullName($langs), $othermember->login, $thirdparty->name),
null,
'errors');
208if (empty($reshook) && $user->hasRight(
'adherent',
'cotisation',
'creer') && $action ==
'subscription' && !$cancel) {
211 $langs->load(
"banks");
213 $result =
$object->fetch($rowid);
214 $result = $adht->fetch(
$object->typeid);
217 $datesubscription = 0;
219 $defaultdelay = !empty($adht->duration_value) ? $adht->duration_value : 1;
220 $defaultdelayunit = !empty($adht->duration_unit) ? $adht->duration_unit :
'y';
236 $operation =
GETPOST(
"operation",
"alphanohtml");
237 $num_chq =
GETPOST(
"num_chq",
"alphanohtml");
238 $emetteur_nom =
GETPOST(
"chqemetteur");
239 $emetteur_banque =
GETPOST(
"chqbank");
240 $option =
GETPOST(
"paymentsave");
241 if (empty($option)) {
244 $sendalsoemail =
GETPOST(
"sendmail",
'alpha');
247 if (!$datesubscription) {
249 $langs->load(
"errors");
250 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateSubscription"));
252 $action =
'addsubscription';
254 if (
GETPOST(
'end') && !$datesubend) {
256 $langs->load(
"errors");
257 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateEndSubscription"));
259 $action =
'addsubscription';
264 if (($option ==
'bankviainvoice' || $option ==
'bankdirect') && !$paymentdate) {
266 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"DatePayment"));
268 $action =
'addsubscription';
272 if ($adht->subscription) {
273 if (!is_numeric($amount)) {
275 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Amount"));
278 $action =
'addsubscription';
281 if (isModEnabled(
'bank') &&
GETPOST(
"paymentsave") !=
'none') {
284 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Label"));
287 $action =
'addsubscription';
289 if (
GETPOST(
"paymentsave") !=
'invoiceonly' && !
GETPOST(
"operation")) {
290 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"PaymentMode"));
293 $action =
'addsubscription';
296 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"FinancialAccount"));
299 $action =
'addsubscription';
303 $errmsg = $langs->trans(
"ErrorDoNotProvideAccountsIfNullAmount");
306 $action =
'addsubscription';
314 if (!$error && $action ==
'subscription') {
318 $crowid =
$object->subscription($datesubscription, (
float) $amount, $accountid, $operation, $label, $num_chq, $emetteur_nom, $emetteur_banque, $datesubend);
326 $result =
$object->subscriptionComplementaryActions($crowid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, (
float) $amount, $num_chq, $emetteur_nom, $emetteur_banque);
339 $action =
'addsubscription';
349 if (
$object->email && $sendalsoemail) {
351 'datesubscription' => $datesubscription,
353 'accountid' => $accountid,
354 'ccountid' => $accountid,
355 'operation' => $operation,
357 'num_chq' => $num_chq,
358 'emetteur_nom' => $emetteur_nom,
359 'emetteur_banque' => $emetteur_banque,
360 'datesubend' => $datesubend
362 $reshook = $hookmanager->executeHooks(
'sendMail', $parameters, $object, $action);
367 if (empty($reshook)) {
372 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
376 $outputlangs->setDefaultLang(!empty(
$object->default_lang) ?
$object->default_lang : (empty(
$object->thirdparty->default_lang) ? $mysoc->default_lang :
$object->thirdparty->default_lang));
378 $outputlangs->loadLangs(array(
"main",
"members"));
381 $arraydefaultmessage =
null;
384 if (!empty($labeltouse)) {
385 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
388 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
389 $subject = (string) $arraydefaultmessage->topic;
390 $msg = (string) $arraydefaultmessage->content;
393 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
400 $listofpaths = array();
401 $listofnames = array();
402 $listofmimes = array();
403 if (is_object(
$object->invoice) && (!is_object($arraydefaultmessage) || intval($arraydefaultmessage->joinfiles))) {
404 $invoicediroutput =
$conf->facture->dir_output;
406 $file = $fileparams[
'fullname'];
408 $listofpaths = array($file);
409 $listofnames = array(basename($file));
413 $moreinheader =
'X-Dolibarr-Info: send_an_email by adherents/subscription.php'.
"\r\n";
415 $result =
$object->sendEmail($texttosend, $subjecttosend, $listofpaths, $listofmimes, $listofnames,
"",
"", 0, -1,
'', $moreinheader);
445$form =
new Form($db);
449$title = $langs->trans(
"Member").
" - ".$langs->trans(
"Subscriptions");
450$help_url =
"EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros|DE:Modul_Mitglieder";
452llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-member page-card_subscription');
456if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
457 $param .=
'&contextpage='.urlencode($contextpage);
459if ($limit > 0 && $limit !=
$conf->liste_limit) {
460 $param .=
'&limit='.((int) $limit);
462$param .=
'&id='.$rowid;
463if ($optioncss !=
'') {
464 $param .=
'&optioncss='.urlencode($optioncss);
471 $langs->load(
"errors");
472 print $langs->trans(
"ErrorRecordNotFound");
478$defaultdelay = !empty($adht->duration_value) ? $adht->duration_value : 1;
479$defaultdelayunit = !empty($adht->duration_unit) ? $adht->duration_unit :
'y';
487if (isModEnabled(
'societe')) {
491print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
492print
'<input type="hidden" name="token" value="'.newToken().
'">';
493print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
497$linkback =
'<a href="'.DOL_URL_ROOT.
'/adherents/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
499$morehtmlref =
'<a href="'.DOL_URL_ROOT.
'/adherents/vcard.php?id='.
$object->id.
'" class="refid">';
500$morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard.png',
'class="valignmiddle marginleftonly paddingrightonly"');
501$morehtmlref .=
'</a>';
503dol_banner_tab($object,
'rowid', $linkback, 1,
'rowid',
'ref', $morehtmlref);
505print
'<div class="fichecenter">';
506print
'<div class="fichehalfleft">';
508print
'<div class="underbanner clearboth"></div>';
509print
'<table class="border centpercent tableforfield">';
513 print
'<tr><td class="titlefield">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</td><td class="valeur">'.
dol_escape_htmltag(
$object->login).
'</td></tr>';
517print
'<tr><td class="titlefield">'.$langs->trans(
"Type").
'</td>';
518print
'<td class="valeur">'.$adht->getNomUrl(1).
"</td></tr>\n";
521print
'<tr><td>'.$langs->trans(
"MemberNature").
'</td>';
522print
'<td class="valeur" >'.$object->getmorphylib(
'', 1).
'</td>';
529print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td class="valeur">'.
$object->getCivilityLabel().
'</td>';
534 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td>';
536 print preg_replace(
'/./i',
'*',
$object->pass);
539 print
'<!-- '.$langs->trans(
"Crypted").
': '.
$object->pass_indatabase_crypted.
' -->';
541 print
'<span class="opacitymedium">'.$langs->trans(
"Hidden").
'</span>';
543 if (!empty(
$object->pass_indatabase) && empty(
$object->user_id)) {
544 $langs->load(
"errors");
545 $htmltext = $langs->trans(
"WarningPasswordSetWithNoAccount");
546 print
' '.$form->textwithpicto(
'', $htmltext, 1,
'warning');
552print
'<tr><td>'.$langs->trans(
"SubscriptionEndDate").
'</td><td class="valeur">';
556 print
" ".img_warning($langs->trans(
"Late"));
559 if (
$object->need_subscription == 0) {
560 print $langs->trans(
"SubscriptionNotNeeded");
561 } elseif (!$adht->subscription) {
562 print $langs->trans(
"SubscriptionNotRecorded");
564 print
" ".img_warning($langs->trans(
"Late"));
567 print $langs->trans(
"SubscriptionNotReceived");
569 print
" ".img_warning($langs->trans(
"Late"));
579print
'<div class="fichehalfright">';
580print
'<div class="underbanner clearboth"></div>';
582print
'<table class="border tableforfield centpercent">';
585if (isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
586 print
'<tr><td>'.$langs->trans(
"Categories").
'</td>';
587 print
'<td colspan="2">';
588 print $form->showCategories(
$object->id, Categorie::TYPE_MEMBER, 1);
593print
'<tr><td class="titlefield">'.$langs->trans(
"DateOfBirth").
'</td><td class="valeur">'.
dol_print_date(
$object->birth,
'day').
'</td></tr>';
597 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
598 print
'<tr><td>'.$langs->trans(
"DefaultLang").
'</td><td>';
601 $langs->load(
"languages");
602 $labellang = (
$object->default_lang ? $langs->trans(
'Language_'.
$object->default_lang) :
'');
609$linkofpubliclist = DOL_MAIN_URL_ROOT.
'/public/members/public_list.php'.((isModEnabled(
'multicompany')) ?
'?entity='.
$conf->entity :
'');
610print
'<tr><td>'.$form->textwithpicto($langs->trans(
"MembershipPublic"), $langs->trans(
"Public",
getDolGlobalString(
'MAIN_INFO_SOCIETE_NOM'), $linkofpubliclist), 1,
'help',
'', 0, 3,
'publicfile').
'</td><td class="valeur">'.
yn(
$object->public).
'</td></tr>';
614include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
617if (isModEnabled(
'societe')) {
619 print
'<table class="nobordernopadding centpercent"><tr><td>';
620 print $langs->trans(
"LinkedToDolibarrThirdParty");
622 if ($action !=
'editthirdparty' && $user->hasRight(
'adherent',
'creer')) {
623 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>';
625 print
'</tr></table>';
626 print
'</td><td colspan="2" class="valeur">';
627 if ($action ==
'editthirdparty') {
629 print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'" name="form'.$htmlname.
'">';
630 print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
631 print
'<input type="hidden" name="action" value="set'.$htmlname.
'">';
632 print
'<input type="hidden" name="token" value="'.newToken().
'">';
633 print
'<table class="nobordernopadding">';
635 print $form->select_company(
$object->fk_soc,
'socid',
'', 1);
637 print
'<td class="left"><input type="submit" class="button button-edit" value="'.$langs->trans(
"Modify").
'"></td>';
638 print
'</tr></table></form>';
642 $result = $company->fetch(
$object->socid);
643 print $company->getNomUrl(1);
646 $tmparray = $company->getOutstandingBills(
'customer');
647 if (!empty($tmparray[
'refs'])) {
648 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']).
')';
653 print
'<span class="opacitymedium">'.$langs->trans(
"NoThirdPartyAssociatedToMember").
'</span>';
661print
'<table class="nobordernopadding centpercent"><tr><td>';
662print $langs->trans(
"LinkedToDolibarrUser");
664if ($action !=
'editlogin' && $user->hasRight(
'adherent',
'creer')) {
665 print
'<td class="right">';
666 if ($user->hasRight(
"user",
"user",
"creer")) {
667 print
'<a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editlogin&token='.
newToken().
'&rowid='.
$object->id.
'">'.
img_edit($langs->trans(
'SetLinkToUser'), 1).
'</a>';
671print
'</tr></table>';
672print
'</td><td colspan="2" class="valeur">';
673if ($action ==
'editlogin') {
674 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id, (
string)
$object->user_id,
'userid', array());
677 $linkeduser =
new User($db);
678 $linkeduser->fetch(
$object->user_id);
679 print $linkeduser->getNomUrl(-1);
681 print
'<span class="opacitymedium">'.$langs->trans(
"NoDolibarrAccess").
'</span>';
688print
"</div></div>\n";
689print
'<div class="clearboth"></div>';
699if ($user->hasRight(
'adherent',
'cotisation',
'creer')) {
700 if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
701 print
'<div class="tabsAction">';
704 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.$rowid.
'&action=addsubscription&token='.
newToken().
'">'.$langs->trans(
"AddSubscription").
"</a></div>";
706 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"AddSubscription").
'</a></div>';
716if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
717 $sql =
"SELECT d.rowid, d.firstname, d.lastname, d.societe, d.fk_adherent_type as type,";
718 $sql .=
" c.rowid as crowid, c.subscription,";
719 $sql .=
" c.datec, c.fk_type as cfk_type,";
720 $sql .=
" c.dateadh as dateh,";
722 $sql .=
" c.fk_bank,";
723 $sql .=
" b.rowid as bid,";
724 $sql .=
" ba.rowid as baid, ba.label, ba.bank, ba.ref, ba.account_number, ba.fk_accountancy_journal, ba.number, ba.currency_code";
725 $sql .=
" FROM ".MAIN_DB_PREFIX.
"adherent as d, ".MAIN_DB_PREFIX.
"subscription as c";
726 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank as b ON c.fk_bank = b.rowid";
727 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_account as ba ON b.fk_account = ba.rowid";
728 $sql .=
" WHERE d.rowid = c.fk_adherent AND d.rowid=".((int) $rowid);
729 $sql .= $db->order($sortfield, $sortorder);
731 $result = $db->query($sql);
735 $num = $db->num_rows($result);
737 print
'<div class="div-table-responsive-no-min">';
738 print
'<table class="noborder centpercent">'.
"\n";
740 print
'<tr class="liste_titre">';
742 print_liste_field_titre(
'DateCreation', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
744 print_liste_field_titre(
'DateStart', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
745 print_liste_field_titre(
'DateEnd', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
747 if (isModEnabled(
'bank')) {
748 print_liste_field_titre(
'Account', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
752 $accountstatic =
new Account($db);
758 $objp = $db->fetch_object($result);
760 $adh->id = $objp->rowid;
761 $adh->typeid = $objp->type;
763 $subscriptionstatic->ref = $objp->crowid;
764 $subscriptionstatic->id = $objp->crowid;
766 $typeid = $objp->cfk_type;
768 $adht->fetch($typeid);
771 print
'<tr class="oddeven">';
772 print
'<td>'.$subscriptionstatic->getNomUrl(1).
'</td>';
773 print
'<td class="center nowraponall">'.dol_print_date($db->jdate($objp->datec),
'dayhour').
"</td>\n";
774 print
'<td class="center tdoverflowmax125">';
776 print $adht->getNomUrl(1);
779 print
'<td class="center">'.dol_print_date($db->jdate($objp->dateh),
'day').
"</td>\n";
780 print
'<td class="center">'.dol_print_date($db->jdate($objp->datef),
'day').
"</td>\n";
781 print
'<td class="right amount">'.price($objp->subscription).
'</td>';
782 if (isModEnabled(
'bank')) {
783 print
'<td class="tdoverflowmax100 right">';
785 $accountstatic->label = $objp->label;
786 $accountstatic->id = $objp->baid;
787 $accountstatic->number = $objp->number;
788 $accountstatic->account_number = $objp->account_number;
789 $accountstatic->currency_code = $objp->currency_code;
791 if (isModEnabled(
'accounting') && $objp->fk_accountancy_journal > 0) {
793 $accountingjournal->fetch($objp->fk_accountancy_journal);
795 $accountstatic->accountancy_journal = $accountingjournal->getNomUrl(0, 1, 1,
'', 1);
798 $accountstatic->ref = $objp->ref;
799 print $accountstatic->getNomUrl(1);
811 if (isModEnabled(
'bank')) {
814 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
825if (($action !=
'addsubscription' && $action !=
'create_thirdparty')) {
828 include_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
829 $validpaymentmethod = getValidOnlinePaymentMethods(
'');
830 $useonlinepayment = count($validpaymentmethod);
832 if ($useonlinepayment) {
835 require_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
836 print showOnlinePaymentUrl(
'membersubscription',
$object->ref);
844if (($action ==
'addsubscription' || $action ==
'create_thirdparty') && $user->hasRight(
'adherent',
'cotisation',
'creer')) {
854 if (
GETPOST(
'paymentsave') ==
'bankdirect') {
857 if (
GETPOST(
'paymentsave') ==
'invoiceonly') {
860 if (
GETPOST(
'paymentsave') ==
'bankviainvoice') {
864 if (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'bankviainvoice' && isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
866 } elseif (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'bankdirect' && isModEnabled(
'bank')) {
868 } elseif (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'invoiceonly' && isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
873 print
"\n\n<!-- Form add subscription -->\n";
875 if (
$conf->use_javascript_ajax) {
877 print
"\n".
'<script type="text/javascript">';
878 print
'$(document).ready(function () {
879 $(".bankswitchclass, .bankswitchclass2").'.(($bankdirect || $bankviainvoice) ?
'show()' :
'hide()').
';
880 $("#none, #invoiceonly").click(function() {
881 $(".bankswitchclass").hide();
882 $(".bankswitchclass2").hide();
884 $("#bankdirect, #bankviainvoice").click(function() {
885 $(".bankswitchclass").show();
886 $(".bankswitchclass2").show();
888 $("#selectoperation").change(function() {
889 var code = $(this).val();
892 $(".fieldrequireddyn").addClass("fieldrequired");
893 if ($("#fieldchqemetteur").val() == "")
895 $("#fieldchqemetteur").val($("#memberlabel").val());
900 $(".fieldrequireddyn").removeClass("fieldrequired");
905 print
'$("#'.GETPOST(
'paymentsave',
'aZ09').
'").prop("checked", true);';
908 print
'</script>'.
"\n";
913 if ($action ==
'create_thirdparty') {
915 $fullname =
$object->getFullName($langs);
917 if (
$object->morphy ==
'mor') {
918 $companyname =
$object->company;
919 if (!empty($fullname)) {
920 $companyalias = $fullname;
923 $companyname = $fullname;
924 if (!empty(
$object->company)) {
925 $companyalias =
$object->company;
930 $formquestion = array(
931 array(
'label' => $langs->trans(
"NameToCreate"),
'type' =>
'text',
'name' =>
'companyname',
'value' => $companyname,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"'),
932 array(
'label' => $langs->trans(
"AliasNames"),
'type' =>
'text',
'name' =>
'companyalias',
'value' => $companyalias,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"')
936 $tmpcompany =
new Societe($db);
937 $tmpcompany->name = $companyname;
938 $tmpcompany->get_codeclient($tmpcompany, 0);
939 $customercode = $tmpcompany->code_client;
940 $formquestion[] = array(
941 'label' => $langs->trans(
"CustomerCode"),
943 'name' =>
'customercode',
944 'value' => $customercode,
945 'morecss' =>
'minwidth300',
946 'moreattr' =>
'maxlength="128"',
951 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrThirdParty"), $langs->trans(
"ConfirmCreateThirdParty"),
"confirm_create_thirdparty", $formquestion, 1);
955 print
'<form name="subscription" method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
956 print
'<input type="hidden" name="token" value="'.newToken().
'">';
957 print
'<input type="hidden" name="action" value="subscription">';
958 print
'<input type="hidden" name="rowid" value="'.$rowid.
'">';
959 print
'<input type="hidden" name="memberlabel" id="memberlabel" value="'.dol_escape_htmltag(
$object->getFullName($langs)).
'">';
960 print
'<input type="hidden" name="thirdpartylabel" id="thirdpartylabel" value="'.dol_escape_htmltag(
$object->company).
'">';
964 print
'<div class="div-table-responsive">';
965 print
'<table class="border centpercent">'.
"\n";
977 print
'<td class="fieldrequired">'.$langs->trans(
"DateSubscription").
'</td><td>';
1002 print $form->selectDate($datefrom,
'', 0, 0, 0,
"subscription", 1, 1);
1012 } elseif (
getDolGlobalInt(
'MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR')) {
1018 print
'<tr><td>'.$langs->trans(
"DateEndSubscription").
'</td><td>';
1019 print $form->selectDate($dateto,
'end', 0, 0, 0,
"subscription", 1, 0);
1022 if ($adht->subscription) {
1024 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Amount").
'</td>';
1025 print
'<td><input autofocus class="width50" type="text" name="subscription" value="'.(GETPOSTISSET(
'subscription') ?
GETPOST(
'subscription') : (is_null($adht->amount) ?
'' :
price($adht->amount, 0,
'', 0))).
'"> '.$langs->trans(
"Currency".
$conf->currency) .
'</td></tr>';
1028 print
'<tr><td>'.$langs->trans(
"Label").
'</td>';
1029 print
'<td><input name="label" type="text" size="32" value="';
1031 print $langs->trans(
"Subscription").
' '.
dol_print_date(($datefrom ? $datefrom : time()),
"%Y");
1033 print
'"></td></tr>';
1036 if ((isModEnabled(
'bank') || isModEnabled(
'invoice')) && !
getDolGlobalString(
'ADHERENT_SUBSCRIPTION_HIDECOMPLEMENTARYACTIONS')) {
1039 $result = $company->fetch(
$object->socid);
1043 print
'<tr><td class="tdtop fieldrequired">'.$langs->trans(
'MoreActions');
1045 print
'<td class="line-height-large">';
1047 print
'<input type="radio" class="moreaction" id="none" name="paymentsave" value="none"'.(empty($bankdirect) && empty($invoiceonly) && empty($bankviainvoice) ?
' checked' :
'').
'>';
1048 print
'<label for="none"> '.$langs->trans(
"None").
'</label><br>';
1050 if (isModEnabled(
'bank')) {
1051 print
'<input type="radio" class="moreaction" id="bankdirect" name="paymentsave" value="bankdirect"'.(!empty($bankdirect) ?
' checked' :
'');
1052 print
'><label for="bankdirect"> '.$langs->trans(
"MoreActionBankDirect").
'</label><br>';
1055 if (isModEnabled(
'societe') && isModEnabled(
'invoice')) {
1056 print
'<input type="radio" class="moreaction" id="invoiceonly" name="paymentsave" value="invoiceonly"'.(!empty($invoiceonly) ?
' checked' :
'');
1058 print
'><label for="invoiceonly"> '.$langs->trans(
"MoreActionInvoiceOnly");
1060 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1064 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1066 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1067 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1068 print $langs->trans(
"CreateDolibarrThirdParty");
1072 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1074 if (
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS') && (isModEnabled(
'product') || isModEnabled(
'service'))) {
1076 $result = $prodtmp->fetch(
getDolGlobalInt(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1080 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1082 print
'</label><br>';
1085 if (isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
1086 print
'<input type="radio" class="moreaction" id="bankviainvoice" name="paymentsave" value="bankviainvoice"'.(!empty($bankviainvoice) ?
' checked' :
'');
1088 print
'><label for="bankviainvoice"> '.$langs->trans(
"MoreActionBankViaInvoice");
1090 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1094 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1096 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1097 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1098 print $langs->trans(
"CreateDolibarrThirdParty");
1102 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1104 if (
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS') && (isModEnabled(
'product') || isModEnabled(
'service'))) {
1106 $result = $prodtmp->fetch(
getDolGlobalInt(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1110 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1112 print
'</label><br>';
1117 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"FinancialAccount").
'</td><td>';
1118 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
1119 $form->select_comptes(
GETPOST(
'accountid'),
'accountid', 0,
'', 2,
'', 0,
'minwidth200');
1120 print
"</td></tr>\n";
1123 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"PaymentMode").
'</td><td>';
1124 print $form->select_types_paiements(
GETPOST(
'operation'),
'operation',
'', 2, 1, 0, 0, 1,
'minwidth200', 1);
1125 print
"</td></tr>\n";
1128 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"DatePayment").
'</td><td>';
1129 print $form->selectDate(isset($paymentdate) ? $paymentdate : -1,
'payment', 0, 0, 1,
'subscription', 1, 1);
1130 print
"</td></tr>\n";
1132 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Numero');
1133 print
' <em>('.$langs->trans(
"ChequeOrTransferNumber").
')</em>';
1135 print
'<td><input id="fieldnum_chq" name="num_chq" type="text" size="8" value="'.(!
GETPOST(
'num_chq') ?
'' :
GETPOST(
'num_chq')).
'"></td></tr>';
1137 print
'<tr class="bankswitchclass2 fieldrequireddyn"><td>'.$langs->trans(
'CheckTransmitter');
1138 print
' <em>('.$langs->trans(
"ChequeMaker").
')</em>';
1140 print
'<td><input id="fieldchqemetteur" name="chqemetteur" size="32" type="text" value="'.(!
GETPOST(
'chqemetteur') ?
'' :
GETPOST(
'chqemetteur')).
'"></td></tr>';
1142 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Bank');
1143 print
' <em>('.$langs->trans(
"ChequeBank").
')</em>';
1145 print
'<td><input id="chqbank" name="chqbank" size="32" type="text" value="'.(!
GETPOST(
'chqbank') ?
'' :
GETPOST(
'chqbank')).
'"></td></tr>';
1149 print
'<tr><td></td><td></td></tr>';
1151 print
'<tr><td>'.$langs->trans(
"SendAcknowledgementByMail").
'</td>';
1154 print $langs->trans(
"NoEMail");
1157 $adht->fetch(
$object->typeid);
1164 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1168 $outputlangs->setDefaultLang(!empty(
$object->default_lang) ?
$object->default_lang : (empty(
$object->thirdparty->default_lang) ? $mysoc->default_lang :
$object->thirdparty->default_lang));
1170 $outputlangs->loadLangs(array(
"main",
"members"));
1172 $arraydefaultmessage =
null;
1175 if (!empty($labeltouse)) {
1176 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1179 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1180 $subject = (string) $arraydefaultmessage->topic;
1181 $msg = (string) $arraydefaultmessage->content;
1184 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1189 $tmp =
'<input name="sendmail" type="checkbox"'.(GETPOST(
'sendmail',
'alpha') ?
' checked' : (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
' checked' :
'')).
'>';
1191 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM',
$conf->email_from).
'<br>'.
"\n";
1192 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1193 $helpcontent .=
'<b>'.$langs->trans(
"MailTopic").
'</b>:<br>'.
"\n";
1194 if ($subjecttosend) {
1195 $helpcontent .= $subjecttosend.
"\n";
1197 $langs->load(
"errors");
1198 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1200 $helpcontent .=
"<br>";
1201 $helpcontent .=
'<b>'.$langs->trans(
"MailText").
'</b>:<br>';
1205 $langs->load(
"errors");
1206 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1209 print $form->textwithpicto($tmp, $helpcontent, 1,
'help',
'', 0, 2,
'helpemailtosend');
1218 print
'<div class="center">';
1219 $parameters = array();
1220 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
1221 if (empty($reshook)) {
1222 print
'<input type="submit" class="button" name="add" value="'.$langs->trans(
"AddSubscription").
'">';
1223 print
' ';
1224 print
'<input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1230 print
"\n<!-- End form subscription -->\n\n";
$id
Support class for third parties, contacts, members, users or resources.
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
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.
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=0, $mode=0)
Return file(s) into a directory (by default most recent)
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
picto_from_langcode($codelang, $moreatt='', $notitlealt=0)
Return img flag of country for a language code or country code.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
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.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0, $attop=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_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
newToken()
Return the value of token currently saved into session with name 'newtoken'.
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...
yn($yesno, $format=1, $color=0)
Return yes or no in current language.
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.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
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...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify 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 information.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
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.