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) {
184 $sql =
"SELECT rowid FROM ".MAIN_DB_PREFIX.
"adherent";
185 $sql .=
" WHERE fk_soc = ".((int)
GETPOSTINT(
'socid'));
186 $resql = $db->query($sql);
188 $obj = $db->fetch_object($resql);
189 if ($obj && $obj->rowid > 0) {
191 $othermember->fetch($obj->rowid);
192 $thirdparty =
new Societe($db);
195 setEventMessages($langs->trans(
"ErrorMemberIsAlreadyLinkedToThisThirdParty", $othermember->getFullName($langs), $othermember->login, $thirdparty->name),
null,
'errors');
210if ($user->hasRight(
'adherent',
'cotisation',
'creer') && $action ==
'subscription' && !$cancel) {
213 $langs->load(
"banks");
215 $result =
$object->fetch($rowid);
216 $result = $adht->fetch(
$object->typeid);
219 $datesubscription = 0;
221 $defaultdelay = !empty($adht->duration_value) ? $adht->duration_value : 1;
222 $defaultdelayunit = !empty($adht->duration_unit) ? $adht->duration_unit :
'y';
238 $operation =
GETPOST(
"operation",
"alphanohtml");
239 $num_chq =
GETPOST(
"num_chq",
"alphanohtml");
240 $emetteur_nom =
GETPOST(
"chqemetteur");
241 $emetteur_banque =
GETPOST(
"chqbank");
242 $option =
GETPOST(
"paymentsave");
243 if (empty($option)) {
246 $sendalsoemail =
GETPOST(
"sendmail",
'alpha');
249 if (!$datesubscription) {
251 $langs->load(
"errors");
252 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateSubscription"));
254 $action =
'addsubscription';
256 if (
GETPOST(
'end') && !$datesubend) {
258 $langs->load(
"errors");
259 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateEndSubscription"));
261 $action =
'addsubscription';
266 if (($option ==
'bankviainvoice' || $option ==
'bankdirect') && !$paymentdate) {
268 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"DatePayment"));
270 $action =
'addsubscription';
274 if ($adht->subscription) {
275 if (!is_numeric($amount)) {
277 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Amount"));
280 $action =
'addsubscription';
283 if (isModEnabled(
'bank') &&
GETPOST(
"paymentsave") !=
'none') {
286 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Label"));
289 $action =
'addsubscription';
291 if (
GETPOST(
"paymentsave") !=
'invoiceonly' && !
GETPOST(
"operation")) {
292 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"PaymentMode"));
295 $action =
'addsubscription';
298 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"FinancialAccount"));
301 $action =
'addsubscription';
305 $errmsg = $langs->trans(
"ErrorDoNotProvideAccountsIfNullAmount");
308 $action =
'addsubscription';
316 if (!$error && $action ==
'subscription') {
320 $crowid =
$object->subscription($datesubscription, $amount, $accountid, $operation, $label, $num_chq, $emetteur_nom, $emetteur_banque, $datesubend);
328 $result =
$object->subscriptionComplementaryActions($crowid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, $amount, $num_chq, $emetteur_nom, $emetteur_banque);
341 $action =
'addsubscription';
351 if (
$object->email && $sendalsoemail) {
353 'datesubscription' => $datesubscription,
355 'ccountid' => $accountid,
356 'operation' => $operation,
358 'num_chq' => $num_chq,
359 'emetteur_nom' => $emetteur_nom,
360 'emetteur_banque' => $emetteur_banque,
361 'datesubend' => $datesubend
363 $reshook = $hookmanager->executeHooks(
'sendMail', $parameters, $object, $action);
368 if (empty($reshook)) {
373 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
377 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ? $mysoc->default_lang :
$object->thirdparty->default_lang);
379 $outputlangs->loadLangs(array(
"main",
"members"));
382 $arraydefaultmessage =
null;
385 if (!empty($labeltouse)) {
386 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
389 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
390 $subject = $arraydefaultmessage->topic;
391 $msg = $arraydefaultmessage->content;
401 $listofpaths = array();
402 $listofnames = array();
403 $listofmimes = array();
404 if (is_object(
$object->invoice) && (!is_object($arraydefaultmessage) || intval($arraydefaultmessage->joinfiles))) {
405 $invoicediroutput =
$conf->facture->dir_output;
407 $file = $fileparams[
'fullname'];
409 $listofpaths = array($file);
410 $listofnames = array(basename($file));
414 $moreinheader =
'X-Dolibarr-Info: send_an_email by adherents/subscription.php'.
"\r\n";
416 $result =
$object->sendEmail($texttosend, $subjecttosend, $listofpaths, $listofmimes, $listofnames,
"",
"", 0, -1,
'', $moreinheader);
446$form =
new Form($db);
450$title = $langs->trans(
"Member").
" - ".$langs->trans(
"Subscriptions");
451$help_url =
"EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros|DE:Modul_Mitglieder";
453llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-member page-card_subscription');
457if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
458 $param .=
'&contextpage='.urlencode($contextpage);
460if ($limit > 0 && $limit !=
$conf->liste_limit) {
461 $param .=
'&limit='.((int) $limit);
463$param .=
'&id='.$rowid;
464if ($optioncss !=
'') {
465 $param .=
'&optioncss='.urlencode($optioncss);
472 $langs->load(
"errors");
473 print $langs->trans(
"ErrorRecordNotFound");
479$defaultdelay = !empty($adht->duration_value) ? $adht->duration_value : 1;
480$defaultdelayunit = !empty($adht->duration_unit) ? $adht->duration_unit :
'y';
488if (isModEnabled(
'societe')) {
492print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
493print
'<input type="hidden" name="token" value="'.newToken().
'">';
494print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
498$linkback =
'<a href="'.DOL_URL_ROOT.
'/adherents/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
500$morehtmlref =
'<a href="'.DOL_URL_ROOT.
'/adherents/vcard.php?id='.
$object->id.
'" class="refid">';
501$morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard.png',
'class="valignmiddle marginleftonly paddingrightonly"');
502$morehtmlref .=
'</a>';
504dol_banner_tab($object,
'rowid', $linkback, 1,
'rowid',
'ref', $morehtmlref);
506print
'<div class="fichecenter">';
507print
'<div class="fichehalfleft">';
509print
'<div class="underbanner clearboth"></div>';
510print
'<table class="border centpercent tableforfield">';
514 print
'<tr><td class="titlefield">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</td><td class="valeur">'.
dol_escape_htmltag(
$object->login).
'</td></tr>';
518print
'<tr><td class="titlefield">'.$langs->trans(
"Type").
'</td>';
519print
'<td class="valeur">'.$adht->getNomUrl(1).
"</td></tr>\n";
522print
'<tr><td>'.$langs->trans(
"MemberNature").
'</td>';
523print
'<td class="valeur" >'.$object->getmorphylib(
'', 1).
'</td>';
530print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td class="valeur">'.
$object->getCivilityLabel().
'</td>';
535 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td>';
537 print preg_replace(
'/./i',
'*',
$object->pass);
540 print
'<!-- '.$langs->trans(
"Crypted").
': '.
$object->pass_indatabase_crypted.
' -->';
542 print
'<span class="opacitymedium">'.$langs->trans(
"Hidden").
'</span>';
544 if (!empty(
$object->pass_indatabase) && empty(
$object->user_id)) {
545 $langs->load(
"errors");
546 $htmltext = $langs->trans(
"WarningPasswordSetWithNoAccount");
547 print
' '.$form->textwithpicto(
'', $htmltext, 1,
'warning');
553print
'<tr><td>'.$langs->trans(
"SubscriptionEndDate").
'</td><td class="valeur">';
557 print
" ".img_warning($langs->trans(
"Late"));
560 if (
$object->need_subscription == 0) {
561 print $langs->trans(
"SubscriptionNotNeeded");
562 } elseif (!$adht->subscription) {
563 print $langs->trans(
"SubscriptionNotRecorded");
565 print
" ".img_warning($langs->trans(
"Late"));
568 print $langs->trans(
"SubscriptionNotReceived");
570 print
" ".img_warning($langs->trans(
"Late"));
580print
'<div class="fichehalfright">';
581print
'<div class="underbanner clearboth"></div>';
583print
'<table class="border tableforfield centpercent">';
586if (isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
587 print
'<tr><td>'.$langs->trans(
"Categories").
'</td>';
588 print
'<td colspan="2">';
589 print $form->showCategories(
$object->id, Categorie::TYPE_MEMBER, 1);
594print
'<tr><td class="titlefield">'.$langs->trans(
"DateOfBirth").
'</td><td class="valeur">'.
dol_print_date(
$object->birth,
'day').
'</td></tr>';
598 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
599 print
'<tr><td>'.$langs->trans(
"DefaultLang").
'</td><td>';
602 $langs->load(
"languages");
603 $labellang = (
$object->default_lang ? $langs->trans(
'Language_'.
$object->default_lang) :
'');
610$linkofpubliclist = DOL_MAIN_URL_ROOT.
'/public/members/public_list.php'.((isModEnabled(
'multicompany')) ?
'?entity='.
$conf->entity :
'');
611print
'<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>';
615include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
618if (isModEnabled(
'societe')) {
620 print
'<table class="nobordernopadding centpercent"><tr><td>';
621 print $langs->trans(
"LinkedToDolibarrThirdParty");
623 if ($action !=
'editthirdparty' && $user->hasRight(
'adherent',
'creer')) {
624 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>';
626 print
'</tr></table>';
627 print
'</td><td colspan="2" class="valeur">';
628 if ($action ==
'editthirdparty') {
630 print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'" name="form'.$htmlname.
'">';
631 print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
632 print
'<input type="hidden" name="action" value="set'.$htmlname.
'">';
633 print
'<input type="hidden" name="token" value="'.newToken().
'">';
634 print
'<table class="nobordernopadding">';
636 print $form->select_company(
$object->fk_soc,
'socid',
'', 1);
638 print
'<td class="left"><input type="submit" class="button button-edit" value="'.$langs->trans(
"Modify").
'"></td>';
639 print
'</tr></table></form>';
643 $result = $company->fetch(
$object->socid);
644 print $company->getNomUrl(1);
647 $tmparray = $company->getOutstandingBills(
'customer');
648 if (!empty($tmparray[
'refs'])) {
649 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']).
')';
654 print
'<span class="opacitymedium">'.$langs->trans(
"NoThirdPartyAssociatedToMember").
'</span>';
662print
'<table class="nobordernopadding centpercent"><tr><td>';
663print $langs->trans(
"LinkedToDolibarrUser");
665if ($action !=
'editlogin' && $user->hasRight(
'adherent',
'creer')) {
666 print
'<td class="right">';
667 if ($user->hasRight(
"user",
"user",
"creer")) {
668 print
'<a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editlogin&token='.
newToken().
'&rowid='.
$object->id.
'">'.
img_edit($langs->trans(
'SetLinkToUser'), 1).
'</a>';
672print
'</tr></table>';
673print
'</td><td colspan="2" class="valeur">';
674if ($action ==
'editlogin') {
675 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id,
$object->user_id,
'userid', array());
678 $linkeduser =
new User($db);
679 $linkeduser->fetch(
$object->user_id);
680 print $linkeduser->getNomUrl(-1);
682 print
'<span class="opacitymedium">'.$langs->trans(
"NoDolibarrAccess").
'</span>';
689print
"</div></div>\n";
690print
'<div class="clearboth"></div>';
700if ($user->hasRight(
'adherent',
'cotisation',
'creer')) {
701 if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
702 print
'<div class="tabsAction">';
705 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.$rowid.
'&action=addsubscription&token='.
newToken().
'">'.$langs->trans(
"AddSubscription").
"</a></div>";
707 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"AddSubscription").
'</a></div>';
717if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
718 $sql =
"SELECT d.rowid, d.firstname, d.lastname, d.societe, d.fk_adherent_type as type,";
719 $sql .=
" c.rowid as crowid, c.subscription,";
720 $sql .=
" c.datec, c.fk_type as cfk_type,";
721 $sql .=
" c.dateadh as dateh,";
723 $sql .=
" c.fk_bank,";
724 $sql .=
" b.rowid as bid,";
725 $sql .=
" ba.rowid as baid, ba.label, ba.bank, ba.ref, ba.account_number, ba.fk_accountancy_journal, ba.number, ba.currency_code";
726 $sql .=
" FROM ".MAIN_DB_PREFIX.
"adherent as d, ".MAIN_DB_PREFIX.
"subscription as c";
727 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank as b ON c.fk_bank = b.rowid";
728 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_account as ba ON b.fk_account = ba.rowid";
729 $sql .=
" WHERE d.rowid = c.fk_adherent AND d.rowid=".((int) $rowid);
730 $sql .= $db->order($sortfield, $sortorder);
732 $result = $db->query($sql);
736 $num = $db->num_rows($result);
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">'.dol_print_date($db->jdate($objp->datec),
'dayhour').
"</td>\n";
774 print
'<td class="center">';
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="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>';
824if (($action !=
'addsubscription' && $action !=
'create_thirdparty')) {
827 include_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
828 $validpaymentmethod = getValidOnlinePaymentMethods(
'');
829 $useonlinepayment = count($validpaymentmethod);
831 if ($useonlinepayment) {
834 require_once DOL_DOCUMENT_ROOT.
'/core/lib/payments.lib.php';
835 print showOnlinePaymentUrl(
'membersubscription',
$object->ref);
843if (($action ==
'addsubscription' || $action ==
'create_thirdparty') && $user->hasRight(
'adherent',
'cotisation',
'creer')) {
853 if (
GETPOST(
'paymentsave') ==
'bankdirect') {
856 if (
GETPOST(
'paymentsave') ==
'invoiceonly') {
859 if (
GETPOST(
'paymentsave') ==
'bankviainvoice') {
863 if (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'bankviainvoice' && isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
865 } elseif (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'bankdirect' && isModEnabled(
'bank')) {
867 } elseif (
getDolGlobalString(
'ADHERENT_BANK_USE') ==
'invoiceonly' && isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
872 print
"\n\n<!-- Form add subscription -->\n";
874 if (
$conf->use_javascript_ajax) {
876 print
"\n".
'<script type="text/javascript">';
877 print
'$(document).ready(function () {
878 $(".bankswitchclass, .bankswitchclass2").'.(($bankdirect || $bankviainvoice) ?
'show()' :
'hide()').
';
879 $("#none, #invoiceonly").click(function() {
880 $(".bankswitchclass").hide();
881 $(".bankswitchclass2").hide();
883 $("#bankdirect, #bankviainvoice").click(function() {
884 $(".bankswitchclass").show();
885 $(".bankswitchclass2").show();
887 $("#selectoperation").change(function() {
888 var code = $(this).val();
891 $(".fieldrequireddyn").addClass("fieldrequired");
892 if ($("#fieldchqemetteur").val() == "")
894 $("#fieldchqemetteur").val($("#memberlabel").val());
899 $(".fieldrequireddyn").removeClass("fieldrequired");
904 print
'$("#'.GETPOST(
'paymentsave',
'aZ09').
'").prop("checked", true);';
907 print
'</script>'.
"\n";
912 if ($action ==
'create_thirdparty') {
914 $fullname =
$object->getFullName($langs);
916 if (
$object->morphy ==
'mor') {
917 $companyname =
$object->company;
918 if (!empty($fullname)) {
919 $companyalias = $fullname;
922 $companyname = $fullname;
923 if (!empty(
$object->company)) {
924 $companyalias =
$object->company;
929 $formquestion = array(
930 array(
'label' => $langs->trans(
"NameToCreate"),
'type' =>
'text',
'name' =>
'companyname',
'value' => $companyname,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"'),
931 array(
'label' => $langs->trans(
"AliasNames"),
'type' =>
'text',
'name' =>
'companyalias',
'value' => $companyalias,
'morecss' =>
'minwidth300',
'moreattr' =>
'maxlength="128"')
935 $tmpcompany =
new Societe($db);
936 $tmpcompany->name = $companyname;
937 $tmpcompany->get_codeclient($tmpcompany, 0);
938 $customercode = $tmpcompany->code_client;
939 $formquestion[] = array(
940 'label' => $langs->trans(
"CustomerCode"),
942 'name' =>
'customercode',
943 'value' => $customercode,
944 'morecss' =>
'minwidth300',
945 'moreattr' =>
'maxlength="128"',
950 print $form->formconfirm($_SERVER[
"PHP_SELF"].
"?rowid=".
$object->id, $langs->trans(
"CreateDolibarrThirdParty"), $langs->trans(
"ConfirmCreateThirdParty"),
"confirm_create_thirdparty", $formquestion, 1);
954 print
'<form name="subscription" method="POST" action="'.$_SERVER[
"PHP_SELF"].
'">';
955 print
'<input type="hidden" name="token" value="'.newToken().
'">';
956 print
'<input type="hidden" name="action" value="subscription">';
957 print
'<input type="hidden" name="rowid" value="'.$rowid.
'">';
958 print
'<input type="hidden" name="memberlabel" id="memberlabel" value="'.dol_escape_htmltag(
$object->getFullName($langs)).
'">';
959 print
'<input type="hidden" name="thirdpartylabel" id="thirdpartylabel" value="'.dol_escape_htmltag(
$object->company).
'">';
963 print
'<div class="div-table-responsive">';
964 print
'<table class="border centpercent">'.
"\n";
976 print
'<td class="fieldrequired">'.$langs->trans(
"DateSubscription").
'</td><td>';
982 $datefrom =
$object->datevalid;
998 print $form->selectDate($datefrom,
'', 0, 0, 0,
"subscription", 1, 1);
1008 } elseif (
getDolGlobalInt(
'MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR')) {
1014 print
'<tr><td>'.$langs->trans(
"DateEndSubscription").
'</td><td>';
1015 print $form->selectDate($dateto,
'end', 0, 0, 0,
"subscription", 1, 0);
1018 if ($adht->subscription) {
1020 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>';
1023 print
'<tr><td>'.$langs->trans(
"Label").
'</td>';
1024 print
'<td><input name="label" type="text" size="32" value="';
1026 print $langs->trans(
"Subscription").
' '.
dol_print_date(($datefrom ? $datefrom : time()),
"%Y");
1028 print
'"></td></tr>';
1031 if ((isModEnabled(
'bank') || isModEnabled(
'invoice')) && !
getDolGlobalString(
'ADHERENT_SUBSCRIPTION_HIDECOMPLEMENTARYACTIONS')) {
1034 $result = $company->fetch(
$object->socid);
1038 print
'<tr><td class="tdtop fieldrequired">'.$langs->trans(
'MoreActions');
1040 print
'<td class="line-height-large">';
1042 print
'<input type="radio" class="moreaction" id="none" name="paymentsave" value="none"'.(empty($bankdirect) && empty($invoiceonly) && empty($bankviainvoice) ?
' checked' :
'').
'>';
1043 print
'<label for="none"> '.$langs->trans(
"None").
'</label><br>';
1045 if (isModEnabled(
'bank')) {
1046 print
'<input type="radio" class="moreaction" id="bankdirect" name="paymentsave" value="bankdirect"'.(!empty($bankdirect) ?
' checked' :
'');
1047 print
'><label for="bankdirect"> '.$langs->trans(
"MoreActionBankDirect").
'</label><br>';
1050 if (isModEnabled(
'societe') && isModEnabled(
'invoice')) {
1051 print
'<input type="radio" class="moreaction" id="invoiceonly" name="paymentsave" value="invoiceonly"'.(!empty($invoiceonly) ?
' checked' :
'');
1053 print
'><label for="invoiceonly"> '.$langs->trans(
"MoreActionInvoiceOnly");
1055 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1059 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1061 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1062 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1063 print $langs->trans(
"CreateDolibarrThirdParty");
1067 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1069 if (
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS') && (isModEnabled(
'product') || isModEnabled(
'service'))) {
1071 $result = $prodtmp->fetch(
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1075 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1077 print
'</label><br>';
1080 if (isModEnabled(
'bank') && isModEnabled(
'societe') && isModEnabled(
'invoice')) {
1081 print
'<input type="radio" class="moreaction" id="bankviainvoice" name="paymentsave" value="bankviainvoice"'.(!empty($bankviainvoice) ?
' checked' :
'');
1083 print
'><label for="bankviainvoice"> '.$langs->trans(
"MoreActionBankViaInvoice");
1085 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1089 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1091 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1092 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1093 print $langs->trans(
"CreateDolibarrThirdParty");
1097 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1099 if (
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS') && (isModEnabled(
'product') || isModEnabled(
'service'))) {
1101 $result = $prodtmp->fetch(
getDolGlobalString(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1105 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1107 print
'</label><br>';
1112 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"FinancialAccount").
'</td><td>';
1113 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
1114 $form->select_comptes(
GETPOST(
'accountid'),
'accountid', 0,
'', 2,
'', 0,
'minwidth200');
1115 print
"</td></tr>\n";
1118 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"PaymentMode").
'</td><td>';
1119 print $form->select_types_paiements(
GETPOST(
'operation'),
'operation',
'', 2, 1, 0, 0, 1,
'minwidth200', 1);
1120 print
"</td></tr>\n";
1123 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"DatePayment").
'</td><td>';
1124 print $form->selectDate(isset($paymentdate) ? $paymentdate : -1,
'payment', 0, 0, 1,
'subscription', 1, 1);
1125 print
"</td></tr>\n";
1127 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Numero');
1128 print
' <em>('.$langs->trans(
"ChequeOrTransferNumber").
')</em>';
1130 print
'<td><input id="fieldnum_chq" name="num_chq" type="text" size="8" value="'.(!
GETPOST(
'num_chq') ?
'' :
GETPOST(
'num_chq')).
'"></td></tr>';
1132 print
'<tr class="bankswitchclass2 fieldrequireddyn"><td>'.$langs->trans(
'CheckTransmitter');
1133 print
' <em>('.$langs->trans(
"ChequeMaker").
')</em>';
1135 print
'<td><input id="fieldchqemetteur" name="chqemetteur" size="32" type="text" value="'.(!
GETPOST(
'chqemetteur') ?
'' :
GETPOST(
'chqemetteur')).
'"></td></tr>';
1137 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Bank');
1138 print
' <em>('.$langs->trans(
"ChequeBank").
')</em>';
1140 print
'<td><input id="chqbank" name="chqbank" size="32" type="text" value="'.(!
GETPOST(
'chqbank') ?
'' :
GETPOST(
'chqbank')).
'"></td></tr>';
1144 print
'<tr><td></td><td></td></tr>';
1146 print
'<tr><td>'.$langs->trans(
"SendAcknowledgementByMail").
'</td>';
1149 print $langs->trans(
"NoEMail");
1152 $adht->fetch(
$object->typeid);
1159 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1163 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ? $mysoc->default_lang :
$object->thirdparty->default_lang);
1165 $outputlangs->loadLangs(array(
"main",
"members"));
1167 $arraydefaultmessage =
null;
1170 if (!empty($labeltouse)) {
1171 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1174 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1175 $subject = $arraydefaultmessage->topic;
1176 $msg = $arraydefaultmessage->content;
1184 $tmp =
'<input name="sendmail" type="checkbox"'.(GETPOST(
'sendmail',
'alpha') ?
' checked' : (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
' checked' :
'')).
'>';
1186 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM').
'<br>'.
"\n";
1187 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1188 $helpcontent .=
'<b>'.$langs->trans(
"MailTopic").
'</b>:<br>'.
"\n";
1189 if ($subjecttosend) {
1190 $helpcontent .= $subjecttosend.
"\n";
1192 $langs->load(
"errors");
1193 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1195 $helpcontent .=
"<br>";
1196 $helpcontent .=
'<b>'.$langs->trans(
"MailText").
'</b>:<br>';
1200 $langs->load(
"errors");
1201 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1204 print $form->textwithpicto($tmp, $helpcontent, 1,
'help',
'', 0, 2,
'helpemailtosend');
1213 print
'<div class="center">';
1214 $parameters = array();
1215 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
1216 if (empty($reshook)) {
1217 print
'<input type="submit" class="button" name="add" value="'.$langs->trans(
"AddSubscription").
'">';
1218 print
' ';
1219 print
'<input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1225 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.
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.