32require
'../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/lib/member.lib.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
35require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent_type.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/adherents/class/subscription.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
43$langs->loadLangs(array(
"companies",
"bills",
"members",
"users",
"mails",
'other'));
45$action =
GETPOST(
'action',
'aZ09');
46$confirm =
GETPOST(
'confirm',
'alpha');
47$contextpage =
GETPOST(
'contextpage',
'aZ09');
48$optioncss =
GETPOST(
'optioncss',
'aZ');
52$ref =
GETPOST(
'ref',
'alphanohtml');
58$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
59$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
61if (empty($page) || $page == -1) {
64$offset = $limit * $page;
70 $sortfield =
"c.rowid";
81$extrafields->fetch_name_optionals_label(
$object->table_element);
86$hookmanager->initHooks(array(
'subscription'));
98if ($id > 0 || !empty($ref)) {
100 $result =
$object->fetch($id, $ref);
103 $canadduser = ($user->admin || $user->hasRight(
"user",
"user",
"creer"));
107 $caneditfielduser = ((($user->id ==
$object->user_id) && $user->hasRight(
"user",
"self",
"creer"))
108 || (($user->id !=
$object->user_id) && $user->hasRight(
"user",
"user",
"creer")));
109 $caneditpassworduser = ((($user->id ==
$object->user_id) && $user->hasRight(
"user",
"self",
"password"))
110 || (($user->id !=
$object->user_id) && $user->hasRight(
"user",
"user",
"password")));
115$canaddmember = $user->hasRight(
'adherent',
'creer');
118 $caneditfieldmember = $user->hasRight(
'adherent',
'creer');
129$parameters = array();
130$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
136if (empty($reshook) && $action ==
'confirm_create_thirdparty' && $confirm ==
'yes' && $user->hasRight(
'societe',
'creer')) {
140 $result = $company->create_from_member($object,
GETPOST(
'companyname',
'alpha'),
GETPOST(
'companyalias',
'alpha'),
GETPOST(
'customercode',
'alpha'));
143 $langs->load(
"errors");
146 $action =
'addsubscription';
153if (empty($reshook) && $action ==
'setuserid' && ($user->hasRight(
'user',
'self',
'creer') || $user->hasRight(
'user',
'user',
'creer'))) {
155 if (!$user->hasRight(
'user',
'user',
'creer')) {
158 setEventMessages($langs->trans(
"ErrorUserPermissionAllowsToLinksToItselfOnly"),
null,
'errors');
173if (empty($reshook) && $action ==
'setsocid') {
177 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"adherent";
178 $sql .=
" WHERE fk_soc = '".GETPOSTINT(
'socid').
"'";
179 $resql = $db->query($sql);
181 $obj = $db->fetch_object($resql);
182 if ($obj && $obj->rowid > 0) {
184 $othermember->fetch($obj->rowid);
185 $thirdparty =
new Societe($db);
188 setEventMessages($langs->trans(
"ErrorMemberIsAlreadyLinkedToThisThirdParty", $othermember->getFullName($langs), $othermember->login, $thirdparty->name),
null,
'errors');
203if ($user->hasRight(
'adherent',
'cotisation',
'creer') && $action ==
'subscription' && !$cancel) {
206 $langs->load(
"banks");
208 $result =
$object->fetch($rowid);
209 $result = $adht->fetch(
$object->typeid);
212 $datesubscription = 0;
214 $defaultdelay = !empty($adht->duration_value) ? $adht->duration_value : 1;
215 $defaultdelayunit = !empty($adht->duration_unit) ? $adht->duration_unit :
'y';
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';
276 if (isModEnabled(
'bank') &&
GETPOST(
"paymentsave") !=
'none') {
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';
291 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"FinancialAccount"));
294 $action =
'addsubscription';
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);
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;
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;
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);
439$form =
new Form($db);
443$title = $langs->trans(
"Member").
" - ".$langs->trans(
"Subscriptions");
444$help_url =
"EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros|DE:Modul_Mitglieder";
446llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-member page-card_subscription');
450if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
451 $param .=
'&contextpage='.urlencode($contextpage);
453if ($limit > 0 && $limit != $conf->liste_limit) {
454 $param .=
'&limit='.((int) $limit);
456$param .=
'&id='.$rowid;
457if ($optioncss !=
'') {
458 $param .=
'&optioncss='.urlencode($optioncss);
465 $langs->load(
"errors");
466 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(
"PublicFile"), $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" width="100%"><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->fk_soc);
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" width="100%"><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,
$object->user_id,
'userid',
'');
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
'<table class="noborder centpercent">'.
"\n";
739 print
'<tr class="liste_titre">';
741 print_liste_field_titre(
'DateCreation', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
743 print_liste_field_titre(
'DateStart', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
744 print_liste_field_titre(
'DateEnd', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
746 if (isModEnabled(
'bank')) {
747 print_liste_field_titre(
'Account', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
751 $accountstatic =
new Account($db);
757 $objp = $db->fetch_object($result);
759 $adh->id = $objp->rowid;
760 $adh->typeid = $objp->type;
762 $subscriptionstatic->ref = $objp->crowid;
763 $subscriptionstatic->id = $objp->crowid;
765 $typeid = $objp->cfk_type;
767 $adht->fetch($typeid);
770 print
'<tr class="oddeven">';
771 print
'<td>'.$subscriptionstatic->getNomUrl(1).
'</td>';
772 print
'<td class="center">'.dol_print_date($db->jdate($objp->datec),
'dayhour').
"</td>\n";
773 print
'<td class="center">';
775 print $adht->getNomUrl(1);
778 print
'<td class="center">'.dol_print_date($db->jdate($objp->dateh),
'day').
"</td>\n";
779 print
'<td class="center">'.dol_print_date($db->jdate($objp->datef),
'day').
"</td>\n";
780 print
'<td class="right amount">'.price($objp->subscription).
'</td>';
781 if (isModEnabled(
'bank')) {
782 print
'<td class="right">';
784 $accountstatic->label = $objp->label;
785 $accountstatic->id = $objp->baid;
786 $accountstatic->number = $objp->number;
787 $accountstatic->account_number = $objp->account_number;
788 $accountstatic->currency_code = $objp->currency_code;
790 if (isModEnabled(
'accounting') && $objp->fk_accountancy_journal > 0) {
792 $accountingjournal->fetch($objp->fk_accountancy_journal);
794 $accountstatic->accountancy_journal = $accountingjournal->getNomUrl(0, 1, 1,
'', 1);
797 $accountstatic->ref = $objp->ref;
798 print $accountstatic->getNomUrl(1);
810 if (isModEnabled(
'bank')) {
813 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
823if (($action !=
'addsubscription' && $action !=
'create_thirdparty')) {
826 include_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
827 $validpaymentmethod = getValidOnlinePaymentMethods(
'');
828 $useonlinepayment = count($validpaymentmethod);
830 if ($useonlinepayment) {
833 require_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
834 print showOnlinePaymentUrl(
'membersubscription',
$object->ref);
842if (($action ==
'addsubscription' || $action ==
'create_thirdparty') && $user->hasRight(
'adherent',
'cotisation',
'creer')) {
852 if (
GETPOST(
'paymentsave') ==
'bankdirect') {
855 if (
GETPOST(
'paymentsave') ==
'invoiceonly') {
858 if (
GETPOST(
'paymentsave') ==
'bankviainvoice') {
862 if (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'bankviainvoice' && isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
864 } elseif (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'bankdirect' && isModEnabled(
'bank')) {
866 } elseif (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'invoiceonly' && isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
871 print
"\n\n<!-- Form add subscription -->\n";
873 if ($conf->use_javascript_ajax) {
875 print
"\n".
'<script type="text/javascript">';
876 print
'$(document).ready(function () {
877 $(".bankswitchclass, .bankswitchclass2").'.(($bankdirect || $bankviainvoice) ?
'show()' :
'hide()').
';
878 $("#none, #invoiceonly").click(function() {
879 $(".bankswitchclass").hide();
880 $(".bankswitchclass2").hide();
882 $("#bankdirect, #bankviainvoice").click(function() {
883 $(".bankswitchclass").show();
884 $(".bankswitchclass2").show();
886 $("#selectoperation").change(function() {
887 var code = $(this).val();
890 $(".fieldrequireddyn").addClass("fieldrequired");
891 if ($("#fieldchqemetteur").val() == "")
893 $("#fieldchqemetteur").val($("#memberlabel").val());
898 $(".fieldrequireddyn").removeClass("fieldrequired");
903 print
'$("#'.GETPOST(
'paymentsave',
'aZ09').
'").prop("checked", true);';
906 print
'</script>'.
"\n";
911 if ($action ==
'create_thirdparty') {
913 $fullname =
$object->getFullName($langs);
915 if (
$object->morphy ==
'mor') {
916 $companyname =
$object->company;
917 if (!empty($fullname)) {
918 $companyalias = $fullname;
921 $companyname = $fullname;
922 if (!empty(
$object->company)) {
923 $companyalias =
$object->company;
928 $formquestion = array(
929 array(
'label' => $langs->trans(
"NameToCreate"),
'type' =>
'text',
'name' =>
'companyname',
'value' => $companyname,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"'),
930 array(
'label' => $langs->trans(
"AliasNames"),
'type' =>
'text',
'name' =>
'companyalias',
'value' => $companyalias,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"')
934 $tmpcompany =
new Societe($db);
935 $tmpcompany->name = $companyname;
936 $tmpcompany->get_codeclient($tmpcompany, 0);
937 $customercode = $tmpcompany->code_client;
938 $formquestion[] = array(
939 'label' => $langs->trans(
"CustomerCode"),
941 'name' =>
'customercode',
942 'value' => $customercode,
943 'morecss' =>
'minwidth300',
944 'moreattr' =>
'maxlength="128"',
949 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrThirdParty"), $langs->trans(
"ConfirmCreateThirdParty"),
"confirm_create_thirdparty", $formquestion, 1);
953 print
'<form name="subscription" method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
954 print
'<input type="hidden" name="token" value="'.newToken().
'">';
955 print
'<input type="hidden" name="action" value="subscription">';
956 print
'<input type="hidden" name="rowid" value="'.$rowid.
'">';
957 print
'<input type="hidden" name="memberlabel" id="memberlabel" value="'.dol_escape_htmltag(
$object->getFullName($langs)).
'">';
958 print
'<input type="hidden" name="thirdpartylabel" id="thirdpartylabel" value="'.dol_escape_htmltag(
$object->company).
'">';
962 print
'<div class="div-table-responsive">';
963 print
'<table class="border centpercent">'.
"\n";
975 print
'<td class="fieldrequired">'.$langs->trans(
"DateSubscription").
'</td><td>';
980 $datefrom =
$object->datevalid;
993 print $form->selectDate($datefrom,
'', 0, 0, 0,
"subscription", 1, 1);
1003 } elseif (
getDolGlobalInt(
'MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR')) {
1009 print
'<tr><td>'.$langs->trans(
"DateEndSubscription").
'</td><td>';
1010 print $form->selectDate($dateto,
'end', 0, 0, 0,
"subscription", 1, 0);
1013 if ($adht->subscription) {
1015 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>';
1018 print
'<tr><td>'.$langs->trans(
"Label").
'</td>';
1019 print
'<td><input name="label" type="text" size="32" value="';
1021 print $langs->trans(
"Subscription").
' '.
dol_print_date(($datefrom ? $datefrom : time()),
"%Y");
1023 print
'"></td></tr>';
1026 if ((isModEnabled(
'bank') || isModEnabled(
'invoice')) && !
getDolGlobalString(
'ADHERENT_SUBSCRIPTION_HIDECOMPLEMENTARYACTIONS')) {
1029 $result = $company->fetch(
$object->socid);
1033 print
'<tr><td class="tdtop fieldrequired">'.$langs->trans(
'MoreActions');
1035 print
'<td class="line-height-large">';
1037 print
'<input type="radio" class="moreaction" id="none" name="paymentsave" value="none"'.(empty($bankdirect) && empty($invoiceonly) && empty($bankviainvoice) ?
' checked' :
'').
'>';
1038 print
'<label for="none"> '.$langs->trans(
"None").
'</label><br>';
1040 if (isModEnabled(
'bank')) {
1041 print
'<input type="radio" class="moreaction" id="bankdirect" name="paymentsave" value="bankdirect"'.(!empty($bankdirect) ?
' checked' :
'');
1042 print
'><label for="bankdirect"> '.$langs->trans(
"MoreActionBankDirect").
'</label><br>';
1045 if (isModEnabled(
'societe') && isModEnabled(
'invoice')) {
1046 print
'<input type="radio" class="moreaction" id="invoiceonly" name="paymentsave" value="invoiceonly"'.(!empty($invoiceonly) ?
' checked' :
'');
1048 print
'><label for="invoiceonly"> '.$langs->trans(
"MoreActionInvoiceOnly");
1050 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1054 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1056 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1057 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1058 print $langs->trans(
"CreateDolibarrThirdParty");
1062 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1064 if (
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS') && (isModEnabled(
'product') || isModEnabled(
'service'))) {
1066 $result = $prodtmp->fetch(
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1070 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1072 print
'</label><br>';
1075 if (isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
1076 print
'<input type="radio" class="moreaction" id="bankviainvoice" name="paymentsave" value="bankviainvoice"'.(!empty($bankviainvoice) ?
' checked' :
'');
1078 print
'><label for="bankviainvoice"> '.$langs->trans(
"MoreActionBankViaInvoice");
1080 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1084 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1086 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1087 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1088 print $langs->trans(
"CreateDolibarrThirdParty");
1092 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1094 if (
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS') && (isModEnabled(
'product') || isModEnabled(
'service'))) {
1096 $result = $prodtmp->fetch(
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1100 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1102 print
'</label><br>';
1107 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"FinancialAccount").
'</td><td>';
1108 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
1109 $form->select_comptes(
GETPOST(
'accountid'),
'accountid', 0,
'', 2,
'', 0,
'minwidth200');
1110 print
"</td></tr>\n";
1113 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"PaymentMode").
'</td><td>';
1114 print $form->select_types_paiements(
GETPOST(
'operation'),
'operation',
'', 2, 1, 0, 0, 1,
'minwidth200', 1);
1115 print
"</td></tr>\n";
1118 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"DatePayment").
'</td><td>';
1119 print $form->selectDate(isset($paymentdate) ? $paymentdate : -1,
'payment', 0, 0, 1,
'subscription', 1, 1);
1120 print
"</td></tr>\n";
1122 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Numero');
1123 print
' <em>('.$langs->trans(
"ChequeOrTransferNumber").
')</em>';
1125 print
'<td><input id="fieldnum_chq" name="num_chq" type="text" size="8" value="'.(!
GETPOST(
'num_chq') ?
'' :
GETPOST(
'num_chq')).
'"></td></tr>';
1127 print
'<tr class="bankswitchclass2 fieldrequireddyn"><td>'.$langs->trans(
'CheckTransmitter');
1128 print
' <em>('.$langs->trans(
"ChequeMaker").
')</em>';
1130 print
'<td><input id="fieldchqemetteur" name="chqemetteur" size="32" type="text" value="'.(!
GETPOST(
'chqemetteur') ?
'' :
GETPOST(
'chqemetteur')).
'"></td></tr>';
1132 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Bank');
1133 print
' <em>('.$langs->trans(
"ChequeBank").
')</em>';
1135 print
'<td><input id="chqbank" name="chqbank" size="32" type="text" value="'.(!
GETPOST(
'chqbank') ?
'' :
GETPOST(
'chqbank')).
'"></td></tr>';
1139 print
'<tr><td></td><td></td></tr>';
1141 print
'<tr><td>'.$langs->trans(
"SendAcknowledgementByMail").
'</td>';
1144 print $langs->trans(
"NoEMail");
1147 $adht->fetch(
$object->typeid);
1154 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1157 $outputlangs =
new Translate(
'', $conf);
1158 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ? $mysoc->default_lang :
$object->thirdparty->default_lang);
1160 $outputlangs->loadLangs(array(
"main",
"members"));
1162 $arraydefaultmessage =
null;
1165 if (!empty($labeltouse)) {
1166 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1169 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1170 $subject = $arraydefaultmessage->topic;
1171 $msg = $arraydefaultmessage->content;
1179 $tmp =
'<input name="sendmail" type="checkbox"'.(GETPOST(
'sendmail',
'alpha') ?
' checked' : (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
' checked' :
'')).
'>';
1181 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM').
'<br>'.
"\n";
1182 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1183 $helpcontent .=
'<b>'.$langs->trans(
"MailTopic").
'</b>:<br>'.
"\n";
1184 if ($subjecttosend) {
1185 $helpcontent .= $subjecttosend.
"\n";
1187 $langs->load(
"errors");
1188 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1190 $helpcontent .=
"<br>";
1191 $helpcontent .=
'<b>'.$langs->trans(
"MailText").
'</b>:<br>';
1195 $langs->load(
"errors");
1196 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1199 print $form->textwithpicto($tmp, $helpcontent, 1,
'help',
'', 0, 2,
'helpemailtosend');
1208 print
'<div class="center">';
1209 $parameters = array();
1210 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
1211 if (empty($reshook)) {
1212 print
'<input type="submit" class="button" name="add" value="'.$langs->trans(
"AddSubscription").
'">';
1213 print
' ';
1214 print
'<input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1220 print
"\n<!-- End form subscription -->\n\n";
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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.
picto_from_langcode($codelang, $moreatt='', $notitlealt=0)
Return img flag of country for a language code or country code.
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.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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_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_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).
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.
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...
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.
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.
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.