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';
44$langs->loadLangs(array(
"companies",
"bills",
"members",
"users",
"mails",
'other'));
46$action =
GETPOST(
'action',
'aZ09');
47$confirm =
GETPOST(
'confirm',
'alpha');
48$contextpage =
GETPOST(
'contextpage',
'aZ09');
49$optioncss =
GETPOST(
'optioncss',
'aZ');
53$ref =
GETPOST(
'ref',
'alphanohtml');
59$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
60$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
62if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
66$offset = $limit * $page;
72 $sortfield =
"c.rowid";
83$extrafields->fetch_name_optionals_label(
$object->table_element);
88$hookmanager->initHooks(array(
'subscription'));
100if ($id > 0 || !empty($ref)) {
102 $result =
$object->fetch($id, $ref);
105 $canadduser = ($user->admin || $user->hasRight(
"user",
"user",
"creer"));
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$permissiontoaddmember = $user->hasRight(
'adherent',
'creer');
127$parameters = array();
128$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
134if (empty($reshook) && $action ==
'confirm_create_thirdparty' && $confirm ==
'yes' && $user->hasRight(
'societe',
'creer')) {
138 $result = $company->create_from_member($object,
GETPOST(
'companyname',
'alpha'),
GETPOST(
'companyalias',
'alpha'),
GETPOST(
'customercode',
'alpha'));
141 $langs->load(
"errors");
144 $action =
'addsubscription';
151if (empty($reshook) && $action ==
'setuserid' && ($user->hasRight(
'user',
'self',
'creer') || $user->hasRight(
'user',
'user',
'creer'))) {
153 if (!$user->hasRight(
'user',
'user',
'creer')) {
156 setEventMessages($langs->trans(
"ErrorUserPermissionAllowsToLinksToItselfOnly"),
null,
'errors');
171if (empty($reshook) && $action ==
'setsocid' && $permissiontoaddmember) {
175 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"adherent";
176 $sql .=
" WHERE fk_soc = ".((int)
GETPOSTINT(
'socid'));
177 $resql = $db->query($sql);
179 $obj = $db->fetch_object($resql);
180 if ($obj && $obj->rowid > 0) {
182 $othermember->fetch($obj->rowid);
183 $thirdparty =
new Societe($db);
186 setEventMessages($langs->trans(
"ErrorMemberIsAlreadyLinkedToThisThirdParty", $othermember->getFullName($langs), $othermember->login, $thirdparty->name),
null,
'errors');
201if ($user->hasRight(
'adherent',
'cotisation',
'creer') && $action ==
'subscription' && !$cancel) {
204 $langs->load(
"banks");
206 $result =
$object->fetch($rowid);
207 $result = $adht->fetch(
$object->typeid);
210 $datesubscription = 0;
212 $defaultdelay = !empty($adht->duration_value) ? $adht->duration_value : 1;
213 $defaultdelayunit = !empty($adht->duration_unit) ? $adht->duration_unit :
'y';
229 $operation =
GETPOST(
"operation",
"alphanohtml");
230 $num_chq =
GETPOST(
"num_chq",
"alphanohtml");
231 $emetteur_nom =
GETPOST(
"chqemetteur");
232 $emetteur_banque =
GETPOST(
"chqbank");
233 $option =
GETPOST(
"paymentsave");
234 if (empty($option)) {
237 $sendalsoemail =
GETPOST(
"sendmail",
'alpha');
240 if (!$datesubscription) {
242 $langs->load(
"errors");
243 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateSubscription"));
245 $action =
'addsubscription';
247 if (
GETPOST(
'end') && !$datesubend) {
249 $langs->load(
"errors");
250 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateEndSubscription"));
252 $action =
'addsubscription';
257 if (($option ==
'bankviainvoice' || $option ==
'bankdirect') && !$paymentdate) {
259 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"DatePayment"));
261 $action =
'addsubscription';
265 if ($adht->subscription) {
266 if (!is_numeric($amount)) {
268 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Amount"));
271 $action =
'addsubscription';
274 if (isModEnabled(
'bank') &&
GETPOST(
"paymentsave") !=
'none') {
277 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Label"));
280 $action =
'addsubscription';
282 if (
GETPOST(
"paymentsave") !=
'invoiceonly' && !
GETPOST(
"operation")) {
283 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"PaymentMode"));
286 $action =
'addsubscription';
289 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"FinancialAccount"));
292 $action =
'addsubscription';
296 $errmsg = $langs->trans(
"ErrorDoNotProvideAccountsIfNullAmount");
299 $action =
'addsubscription';
307 if (!$error && $action ==
'subscription') {
311 $crowid =
$object->subscription($datesubscription, $amount, $accountid, $operation, $label, $num_chq, $emetteur_nom, $emetteur_banque, $datesubend);
319 $result =
$object->subscriptionComplementaryActions($crowid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, $amount, $num_chq, $emetteur_nom, $emetteur_banque);
332 $action =
'addsubscription';
342 if (
$object->email && $sendalsoemail) {
344 'datesubscription' => $datesubscription,
346 'ccountid' => $accountid,
347 'operation' => $operation,
349 'num_chq' => $num_chq,
350 'emetteur_nom' => $emetteur_nom,
351 'emetteur_banque' => $emetteur_banque,
352 'datesubend' => $datesubend
354 $reshook = $hookmanager->executeHooks(
'sendMail', $parameters, $object, $action);
359 if (empty($reshook)) {
364 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
368 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ? $mysoc->default_lang :
$object->thirdparty->default_lang);
370 $outputlangs->loadLangs(array(
"main",
"members"));
373 $arraydefaultmessage =
null;
376 if (!empty($labeltouse)) {
377 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
380 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
381 $subject = $arraydefaultmessage->topic;
382 $msg = $arraydefaultmessage->content;
392 $listofpaths = array();
393 $listofnames = array();
394 $listofmimes = array();
395 if (is_object(
$object->invoice) && (!is_object($arraydefaultmessage) || intval($arraydefaultmessage->joinfiles))) {
396 $invoicediroutput = $conf->facture->dir_output;
398 $file = $fileparams[
'fullname'];
400 $listofpaths = array($file);
401 $listofnames = array(basename($file));
405 $moreinheader =
'X-Dolibarr-Info: send_an_email by adherents/subscription.php'.
"\r\n";
407 $result =
$object->sendEmail($texttosend, $subjecttosend, $listofpaths, $listofmimes, $listofnames,
"",
"", 0, -1,
'', $moreinheader);
437$form =
new Form($db);
441$title = $langs->trans(
"Member").
" - ".$langs->trans(
"Subscriptions");
442$help_url =
"EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros|DE:Modul_Mitglieder";
444llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-member page-card_subscription');
448if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
449 $param .=
'&contextpage='.urlencode($contextpage);
451if ($limit > 0 && $limit != $conf->liste_limit) {
452 $param .=
'&limit='.((int) $limit);
454$param .=
'&id='.$rowid;
455if ($optioncss !=
'') {
456 $param .=
'&optioncss='.urlencode($optioncss);
463 $langs->load(
"errors");
464 print $langs->trans(
"ErrorRecordNotFound");
470$defaultdelay = !empty($adht->duration_value) ? $adht->duration_value : 1;
471$defaultdelayunit = !empty($adht->duration_unit) ? $adht->duration_unit :
'y';
479if (isModEnabled(
'societe')) {
483print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
484print
'<input type="hidden" name="token" value="'.newToken().
'">';
485print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
489$linkback =
'<a href="'.DOL_URL_ROOT.
'/adherents/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
491$morehtmlref =
'<a href="'.DOL_URL_ROOT.
'/adherents/vcard.php?id='.
$object->id.
'" class="refid">';
492$morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard.png',
'class="valignmiddle marginleftonly paddingrightonly"');
493$morehtmlref .=
'</a>';
495dol_banner_tab($object,
'rowid', $linkback, 1,
'rowid',
'ref', $morehtmlref);
497print
'<div class="fichecenter">';
498print
'<div class="fichehalfleft">';
500print
'<div class="underbanner clearboth"></div>';
501print
'<table class="border centpercent tableforfield">';
505 print
'<tr><td class="titlefield">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</td><td class="valeur">'.
dol_escape_htmltag(
$object->login).
'</td></tr>';
509print
'<tr><td class="titlefield">'.$langs->trans(
"Type").
'</td>';
510print
'<td class="valeur">'.$adht->getNomUrl(1).
"</td></tr>\n";
513print
'<tr><td>'.$langs->trans(
"MemberNature").
'</td>';
514print
'<td class="valeur" >'.$object->getmorphylib(
'', 1).
'</td>';
521print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td class="valeur">'.
$object->getCivilityLabel().
'</td>';
526 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td>';
528 print preg_replace(
'/./i',
'*',
$object->pass);
531 print
'<!-- '.$langs->trans(
"Crypted").
': '.
$object->pass_indatabase_crypted.
' -->';
533 print
'<span class="opacitymedium">'.$langs->trans(
"Hidden").
'</span>';
535 if (!empty(
$object->pass_indatabase) && empty(
$object->user_id)) {
536 $langs->load(
"errors");
537 $htmltext = $langs->trans(
"WarningPasswordSetWithNoAccount");
538 print
' '.$form->textwithpicto(
'', $htmltext, 1,
'warning');
544print
'<tr><td>'.$langs->trans(
"SubscriptionEndDate").
'</td><td class="valeur">';
548 print
" ".img_warning($langs->trans(
"Late"));
551 if (
$object->need_subscription == 0) {
552 print $langs->trans(
"SubscriptionNotNeeded");
553 } elseif (!$adht->subscription) {
554 print $langs->trans(
"SubscriptionNotRecorded");
556 print
" ".img_warning($langs->trans(
"Late"));
559 print $langs->trans(
"SubscriptionNotReceived");
561 print
" ".img_warning($langs->trans(
"Late"));
571print
'<div class="fichehalfright">';
572print
'<div class="underbanner clearboth"></div>';
574print
'<table class="border tableforfield centpercent">';
577if (isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
578 print
'<tr><td>'.$langs->trans(
"Categories").
'</td>';
579 print
'<td colspan="2">';
580 print $form->showCategories(
$object->id, Categorie::TYPE_MEMBER, 1);
585print
'<tr><td class="titlefield">'.$langs->trans(
"DateOfBirth").
'</td><td class="valeur">'.
dol_print_date(
$object->birth,
'day').
'</td></tr>';
589 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
590 print
'<tr><td>'.$langs->trans(
"DefaultLang").
'</td><td>';
593 $langs->load(
"languages");
594 $labellang = (
$object->default_lang ? $langs->trans(
'Language_'.
$object->default_lang) :
'');
601$linkofpubliclist = DOL_MAIN_URL_ROOT.
'/public/members/public_list.php'.((isModEnabled(
'multicompany')) ?
'?entity='.$conf->entity :
'');
602print
'<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>';
606include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
609if (isModEnabled(
'societe')) {
611 print
'<table class="nobordernopadding" width="100%"><tr><td>';
612 print $langs->trans(
"LinkedToDolibarrThirdParty");
614 if ($action !=
'editthirdparty' && $user->hasRight(
'adherent',
'creer')) {
615 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>';
617 print
'</tr></table>';
618 print
'</td><td colspan="2" class="valeur">';
619 if ($action ==
'editthirdparty') {
621 print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'" name="form'.$htmlname.
'">';
622 print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
623 print
'<input type="hidden" name="action" value="set'.$htmlname.
'">';
624 print
'<input type="hidden" name="token" value="'.newToken().
'">';
625 print
'<table class="nobordernopadding">';
627 print $form->select_company(
$object->fk_soc,
'socid',
'', 1);
629 print
'<td class="left"><input type="submit" class="button button-edit" value="'.$langs->trans(
"Modify").
'"></td>';
630 print
'</tr></table></form>';
634 $result = $company->fetch(
$object->fk_soc);
635 print $company->getNomUrl(1);
638 $tmparray = $company->getOutstandingBills(
'customer');
639 if (!empty($tmparray[
'refs'])) {
640 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']).
')';
645 print
'<span class="opacitymedium">'.$langs->trans(
"NoThirdPartyAssociatedToMember").
'</span>';
653print
'<table class="nobordernopadding" width="100%"><tr><td>';
654print $langs->trans(
"LinkedToDolibarrUser");
656if ($action !=
'editlogin' && $user->hasRight(
'adherent',
'creer')) {
657 print
'<td class="right">';
658 if ($user->hasRight(
"user",
"user",
"creer")) {
659 print
'<a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editlogin&token='.
newToken().
'&rowid='.
$object->id.
'">'.
img_edit($langs->trans(
'SetLinkToUser'), 1).
'</a>';
663print
'</tr></table>';
664print
'</td><td colspan="2" class="valeur">';
665if ($action ==
'editlogin') {
666 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id,
$object->user_id,
'userid', array());
669 $linkeduser =
new User($db);
670 $linkeduser->fetch(
$object->user_id);
671 print $linkeduser->getNomUrl(-1);
673 print
'<span class="opacitymedium">'.$langs->trans(
"NoDolibarrAccess").
'</span>';
680print
"</div></div>\n";
681print
'<div class="clearboth"></div>';
691if ($user->hasRight(
'adherent',
'cotisation',
'creer')) {
692 if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
693 print
'<div class="tabsAction">';
696 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.$rowid.
'&action=addsubscription&token='.
newToken().
'">'.$langs->trans(
"AddSubscription").
"</a></div>";
698 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"AddSubscription").
'</a></div>';
708if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
709 $sql =
"SELECT d.rowid, d.firstname, d.lastname, d.societe, d.fk_adherent_type as type,";
710 $sql .=
" c.rowid as crowid, c.subscription,";
711 $sql .=
" c.datec, c.fk_type as cfk_type,";
712 $sql .=
" c.dateadh as dateh,";
714 $sql .=
" c.fk_bank,";
715 $sql .=
" b.rowid as bid,";
716 $sql .=
" ba.rowid as baid, ba.label, ba.bank, ba.ref, ba.account_number, ba.fk_accountancy_journal, ba.number, ba.currency_code";
717 $sql .=
" FROM ".MAIN_DB_PREFIX.
"adherent as d, ".MAIN_DB_PREFIX.
"subscription as c";
718 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank as b ON c.fk_bank = b.rowid";
719 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_account as ba ON b.fk_account = ba.rowid";
720 $sql .=
" WHERE d.rowid = c.fk_adherent AND d.rowid=".((int) $rowid);
721 $sql .= $db->order($sortfield, $sortorder);
723 $result = $db->query($sql);
727 $num = $db->num_rows($result);
729 print
'<table class="noborder centpercent">'.
"\n";
731 print
'<tr class="liste_titre">';
733 print_liste_field_titre(
'DateCreation', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
735 print_liste_field_titre(
'DateStart', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
736 print_liste_field_titre(
'DateEnd', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
738 if (isModEnabled(
'bank')) {
739 print_liste_field_titre(
'Account', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
743 $accountstatic =
new Account($db);
749 $objp = $db->fetch_object($result);
751 $adh->id = $objp->rowid;
752 $adh->typeid = $objp->type;
754 $subscriptionstatic->ref = $objp->crowid;
755 $subscriptionstatic->id = $objp->crowid;
757 $typeid = $objp->cfk_type;
759 $adht->fetch($typeid);
762 print
'<tr class="oddeven">';
763 print
'<td>'.$subscriptionstatic->getNomUrl(1).
'</td>';
764 print
'<td class="center">'.dol_print_date($db->jdate($objp->datec),
'dayhour').
"</td>\n";
765 print
'<td class="center">';
767 print $adht->getNomUrl(1);
770 print
'<td class="center">'.dol_print_date($db->jdate($objp->dateh),
'day').
"</td>\n";
771 print
'<td class="center">'.dol_print_date($db->jdate($objp->datef),
'day').
"</td>\n";
772 print
'<td class="right amount">'.price($objp->subscription).
'</td>';
773 if (isModEnabled(
'bank')) {
774 print
'<td class="right">';
776 $accountstatic->label = $objp->label;
777 $accountstatic->id = $objp->baid;
778 $accountstatic->number = $objp->number;
779 $accountstatic->account_number = $objp->account_number;
780 $accountstatic->currency_code = $objp->currency_code;
782 if (isModEnabled(
'accounting') && $objp->fk_accountancy_journal > 0) {
784 $accountingjournal->fetch($objp->fk_accountancy_journal);
786 $accountstatic->accountancy_journal = $accountingjournal->getNomUrl(0, 1, 1,
'', 1);
789 $accountstatic->ref = $objp->ref;
790 print $accountstatic->getNomUrl(1);
802 if (isModEnabled(
'bank')) {
805 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"None").
'</span></td></tr>';
815if (($action !=
'addsubscription' && $action !=
'create_thirdparty')) {
818 include_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
819 $validpaymentmethod = getValidOnlinePaymentMethods(
'');
820 $useonlinepayment = count($validpaymentmethod);
822 if ($useonlinepayment) {
825 require_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
826 print showOnlinePaymentUrl(
'membersubscription',
$object->ref);
834if (($action ==
'addsubscription' || $action ==
'create_thirdparty') && $user->hasRight(
'adherent',
'cotisation',
'creer')) {
844 if (
GETPOST(
'paymentsave') ==
'bankdirect') {
847 if (
GETPOST(
'paymentsave') ==
'invoiceonly') {
850 if (
GETPOST(
'paymentsave') ==
'bankviainvoice') {
854 if (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'bankviainvoice' && isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
856 } elseif (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'bankdirect' && isModEnabled(
'bank')) {
858 } elseif (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'invoiceonly' && isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
863 print
"\n\n<!-- Form add subscription -->\n";
865 if ($conf->use_javascript_ajax) {
867 print
"\n".
'<script type="text/javascript">';
868 print
'$(document).ready(function () {
869 $(".bankswitchclass, .bankswitchclass2").'.(($bankdirect || $bankviainvoice) ?
'show()' :
'hide()').
';
870 $("#none, #invoiceonly").click(function() {
871 $(".bankswitchclass").hide();
872 $(".bankswitchclass2").hide();
874 $("#bankdirect, #bankviainvoice").click(function() {
875 $(".bankswitchclass").show();
876 $(".bankswitchclass2").show();
878 $("#selectoperation").change(function() {
879 var code = $(this).val();
882 $(".fieldrequireddyn").addClass("fieldrequired");
883 if ($("#fieldchqemetteur").val() == "")
885 $("#fieldchqemetteur").val($("#memberlabel").val());
890 $(".fieldrequireddyn").removeClass("fieldrequired");
895 print
'$("#'.GETPOST(
'paymentsave',
'aZ09').
'").prop("checked", true);';
898 print
'</script>'.
"\n";
903 if ($action ==
'create_thirdparty') {
905 $fullname =
$object->getFullName($langs);
907 if (
$object->morphy ==
'mor') {
908 $companyname =
$object->company;
909 if (!empty($fullname)) {
910 $companyalias = $fullname;
913 $companyname = $fullname;
914 if (!empty(
$object->company)) {
915 $companyalias =
$object->company;
920 $formquestion = array(
921 array(
'label' => $langs->trans(
"NameToCreate"),
'type' =>
'text',
'name' =>
'companyname',
'value' => $companyname,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"'),
922 array(
'label' => $langs->trans(
"AliasNames"),
'type' =>
'text',
'name' =>
'companyalias',
'value' => $companyalias,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"')
926 $tmpcompany =
new Societe($db);
927 $tmpcompany->name = $companyname;
928 $tmpcompany->get_codeclient($tmpcompany, 0);
929 $customercode = $tmpcompany->code_client;
930 $formquestion[] = array(
931 'label' => $langs->trans(
"CustomerCode"),
933 'name' =>
'customercode',
934 'value' => $customercode,
935 'morecss' =>
'minwidth300',
936 'moreattr' =>
'maxlength="128"',
941 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrThirdParty"), $langs->trans(
"ConfirmCreateThirdParty"),
"confirm_create_thirdparty", $formquestion, 1);
945 print
'<form name="subscription" method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
946 print
'<input type="hidden" name="token" value="'.newToken().
'">';
947 print
'<input type="hidden" name="action" value="subscription">';
948 print
'<input type="hidden" name="rowid" value="'.$rowid.
'">';
949 print
'<input type="hidden" name="memberlabel" id="memberlabel" value="'.dol_escape_htmltag(
$object->getFullName($langs)).
'">';
950 print
'<input type="hidden" name="thirdpartylabel" id="thirdpartylabel" value="'.dol_escape_htmltag(
$object->company).
'">';
954 print
'<div class="div-table-responsive">';
955 print
'<table class="border centpercent">'.
"\n";
967 print
'<td class="fieldrequired">'.$langs->trans(
"DateSubscription").
'</td><td>';
973 $datefrom =
$object->datevalid;
989 print $form->selectDate($datefrom,
'', 0, 0, 0,
"subscription", 1, 1);
999 } elseif (
getDolGlobalInt(
'MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR')) {
1005 print
'<tr><td>'.$langs->trans(
"DateEndSubscription").
'</td><td>';
1006 print $form->selectDate($dateto,
'end', 0, 0, 0,
"subscription", 1, 0);
1009 if ($adht->subscription) {
1011 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>';
1014 print
'<tr><td>'.$langs->trans(
"Label").
'</td>';
1015 print
'<td><input name="label" type="text" size="32" value="';
1017 print $langs->trans(
"Subscription").
' '.
dol_print_date(($datefrom ? $datefrom : time()),
"%Y");
1019 print
'"></td></tr>';
1022 if ((isModEnabled(
'bank') || isModEnabled(
'invoice')) && !
getDolGlobalString(
'ADHERENT_SUBSCRIPTION_HIDECOMPLEMENTARYACTIONS')) {
1025 $result = $company->fetch(
$object->socid);
1029 print
'<tr><td class="tdtop fieldrequired">'.$langs->trans(
'MoreActions');
1031 print
'<td class="line-height-large">';
1033 print
'<input type="radio" class="moreaction" id="none" name="paymentsave" value="none"'.(empty($bankdirect) && empty($invoiceonly) && empty($bankviainvoice) ?
' checked' :
'').
'>';
1034 print
'<label for="none"> '.$langs->trans(
"None").
'</label><br>';
1036 if (isModEnabled(
'bank')) {
1037 print
'<input type="radio" class="moreaction" id="bankdirect" name="paymentsave" value="bankdirect"'.(!empty($bankdirect) ?
' checked' :
'');
1038 print
'><label for="bankdirect"> '.$langs->trans(
"MoreActionBankDirect").
'</label><br>';
1041 if (isModEnabled(
'societe') && isModEnabled(
'invoice')) {
1042 print
'<input type="radio" class="moreaction" id="invoiceonly" name="paymentsave" value="invoiceonly"'.(!empty($invoiceonly) ?
' checked' :
'');
1044 print
'><label for="invoiceonly"> '.$langs->trans(
"MoreActionInvoiceOnly");
1046 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1050 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1052 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1053 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1054 print $langs->trans(
"CreateDolibarrThirdParty");
1058 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1060 if (
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS') && (isModEnabled(
'product') || isModEnabled(
'service'))) {
1062 $result = $prodtmp->fetch(
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1066 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1068 print
'</label><br>';
1071 if (isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
1072 print
'<input type="radio" class="moreaction" id="bankviainvoice" name="paymentsave" value="bankviainvoice"'.(!empty($bankviainvoice) ?
' checked' :
'');
1074 print
'><label for="bankviainvoice"> '.$langs->trans(
"MoreActionBankViaInvoice");
1076 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1080 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1082 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1083 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1084 print $langs->trans(
"CreateDolibarrThirdParty");
1088 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1090 if (
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS') && (isModEnabled(
'product') || isModEnabled(
'service'))) {
1092 $result = $prodtmp->fetch(
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1096 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1098 print
'</label><br>';
1103 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"FinancialAccount").
'</td><td>';
1104 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
1105 $form->select_comptes(
GETPOST(
'accountid'),
'accountid', 0,
'', 2,
'', 0,
'minwidth200');
1106 print
"</td></tr>\n";
1109 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"PaymentMode").
'</td><td>';
1110 print $form->select_types_paiements(
GETPOST(
'operation'),
'operation',
'', 2, 1, 0, 0, 1,
'minwidth200', 1);
1111 print
"</td></tr>\n";
1114 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"DatePayment").
'</td><td>';
1115 print $form->selectDate(isset($paymentdate) ? $paymentdate : -1,
'payment', 0, 0, 1,
'subscription', 1, 1);
1116 print
"</td></tr>\n";
1118 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Numero');
1119 print
' <em>('.$langs->trans(
"ChequeOrTransferNumber").
')</em>';
1121 print
'<td><input id="fieldnum_chq" name="num_chq" type="text" size="8" value="'.(!
GETPOST(
'num_chq') ?
'' :
GETPOST(
'num_chq')).
'"></td></tr>';
1123 print
'<tr class="bankswitchclass2 fieldrequireddyn"><td>'.$langs->trans(
'CheckTransmitter');
1124 print
' <em>('.$langs->trans(
"ChequeMaker").
')</em>';
1126 print
'<td><input id="fieldchqemetteur" name="chqemetteur" size="32" type="text" value="'.(!
GETPOST(
'chqemetteur') ?
'' :
GETPOST(
'chqemetteur')).
'"></td></tr>';
1128 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Bank');
1129 print
' <em>('.$langs->trans(
"ChequeBank").
')</em>';
1131 print
'<td><input id="chqbank" name="chqbank" size="32" type="text" value="'.(!
GETPOST(
'chqbank') ?
'' :
GETPOST(
'chqbank')).
'"></td></tr>';
1135 print
'<tr><td></td><td></td></tr>';
1137 print
'<tr><td>'.$langs->trans(
"SendAcknowledgementByMail").
'</td>';
1140 print $langs->trans(
"NoEMail");
1143 $adht->fetch(
$object->typeid);
1150 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1153 $outputlangs =
new Translate(
'', $conf);
1154 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ? $mysoc->default_lang :
$object->thirdparty->default_lang);
1156 $outputlangs->loadLangs(array(
"main",
"members"));
1158 $arraydefaultmessage =
null;
1161 if (!empty($labeltouse)) {
1162 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1165 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1166 $subject = $arraydefaultmessage->topic;
1167 $msg = $arraydefaultmessage->content;
1175 $tmp =
'<input name="sendmail" type="checkbox"'.(GETPOST(
'sendmail',
'alpha') ?
' checked' : (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
' checked' :
'')).
'>';
1177 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM').
'<br>'.
"\n";
1178 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1179 $helpcontent .=
'<b>'.$langs->trans(
"MailTopic").
'</b>:<br>'.
"\n";
1180 if ($subjecttosend) {
1181 $helpcontent .= $subjecttosend.
"\n";
1183 $langs->load(
"errors");
1184 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1186 $helpcontent .=
"<br>";
1187 $helpcontent .=
'<b>'.$langs->trans(
"MailText").
'</b>:<br>';
1191 $langs->load(
"errors");
1192 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1195 print $form->textwithpicto($tmp, $helpcontent, 1,
'help',
'', 0, 2,
'helpemailtosend');
1204 print
'<div class="center">';
1205 $parameters = array();
1206 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
1207 if (empty($reshook)) {
1208 print
'<input type="submit" class="button" name="add" value="'.$langs->trans(
"AddSubscription").
'">';
1209 print
' ';
1210 print
'<input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1216 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.
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.
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.
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, $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'.
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...
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...
getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $object=null, $include=null)
Return array of possible common substitutions.
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.
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.