33require
'../main.inc.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/lib/member.lib.php';
43require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
44require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent_type.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/adherents/class/subscription.class.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/class/extrafields.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
49require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
52$langs->loadLangs(array(
"companies",
"bills",
"members",
"users",
"mails",
'other'));
54$action =
GETPOST(
'action',
'aZ09');
55$confirm =
GETPOST(
'confirm',
'alpha');
56$contextpage =
GETPOST(
'contextpage',
'aZ09');
57$optioncss =
GETPOST(
'optioncss',
'aZ');
61$ref =
GETPOST(
'ref',
'alphanohtml');
63$cancel =
GETPOST(
'cancel',
'alpha');
67$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
68$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
70if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
74$offset = $limit * $page;
80 $sortfield =
"c.rowid";
91$extrafields->fetch_name_optionals_label(
$object->table_element);
96$hookmanager->initHooks(array(
'subscription'));
108if ($id > 0 || !empty($ref)) {
110 $result =
$object->fetch($id, $ref);
113 $canadduser = ($user->admin || $user->hasRight(
"user",
"user",
"creer"));
117 $caneditfielduser = ((($user->id ==
$object->user_id) && $user->hasRight(
"user",
"self",
"creer"))
118 || (($user->id !=
$object->user_id) && $user->hasRight(
"user",
"user",
"creer")));
119 $caneditpassworduser = ((($user->id ==
$object->user_id) && $user->hasRight(
"user",
"self",
"password"))
120 || (($user->id !=
$object->user_id) && $user->hasRight(
"user",
"user",
"password")));
125$permissiontoaddmember = $user->hasRight(
'adherent',
'creer');
135$parameters = array();
136$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
142if (empty($reshook) && $action ==
'confirm_create_thirdparty' && $confirm ==
'yes' && $user->hasRight(
'societe',
'creer')) {
146 $result = $company->create_from_member($object,
GETPOST(
'companyname',
'alpha'),
GETPOST(
'companyalias',
'alpha'),
GETPOST(
'customercode',
'alpha'));
149 $langs->load(
"errors");
152 $action =
'addsubscription';
159if (empty($reshook) && $action ==
'setuserid' && ($user->hasRight(
'user',
'self',
'creer') || $user->hasRight(
'user',
'user',
'creer'))) {
161 if (!$user->hasRight(
'user',
'user',
'creer')) {
164 setEventMessages($langs->trans(
"ErrorUserPermissionAllowsToLinksToItselfOnly"),
null,
'errors');
179if (empty($reshook) && $action ==
'setsocid' && $permissiontoaddmember) {
182 $sql =
"SELECT rowid FROM " . MAIN_DB_PREFIX .
"adherent";
183 $sql .=
" WHERE fk_soc = " . ((int)
GETPOSTINT(
'socid'));
184 $resql = $db->query($sql);
186 $obj = $db->fetch_object($resql);
187 if ($obj && $obj->rowid > 0) {
189 $othermember->fetch($obj->rowid);
190 $thirdparty =
new Societe($db);
193 setEventMessages($langs->trans(
"ErrorMemberIsAlreadyLinkedToThisThirdParty", $othermember->getFullName($langs), $othermember->login, $thirdparty->name),
null,
'errors');
207if (empty($reshook) && $user->hasRight(
'adherent',
'cotisation',
'creer') && $action ==
'subscription' && !$cancel) {
210 $langs->load(
"banks");
212 $result =
$object->fetch($rowid);
213 $result = $adht->fetch(
$object->typeid);
216 $datesubscription = 0;
218 $defaultdelay = !empty($adht->duration_value) ? $adht->duration_value : 1;
219 $defaultdelayunit = !empty($adht->duration_unit) ? $adht->duration_unit :
'y';
235 $operation =
GETPOST(
"operation",
"alphanohtml");
236 $num_chq =
GETPOST(
"num_chq",
"alphanohtml");
237 $emetteur_nom =
GETPOST(
"chqemetteur");
238 $emetteur_banque =
GETPOST(
"chqbank");
239 $option =
GETPOST(
"paymentsave");
240 if (empty($option)) {
243 $sendalsoemail =
GETPOST(
"sendmail",
'alpha');
246 if (!$datesubscription) {
248 $langs->load(
"errors");
249 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateSubscription"));
251 $action =
'addsubscription';
253 if (
GETPOST(
'end') && !$datesubend) {
255 $langs->load(
"errors");
256 $errmsg = $langs->trans(
"ErrorBadDateFormat", $langs->transnoentitiesnoconv(
"DateEndSubscription"));
258 $action =
'addsubscription';
263 if (($option ==
'bankviainvoice' || $option ==
'bankdirect') && !$paymentdate) {
265 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"DatePayment"));
267 $action =
'addsubscription';
271 if ($adht->subscription) {
272 if (!is_numeric($amount)) {
274 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Amount"));
277 $action =
'addsubscription';
283 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Label"));
286 $action =
'addsubscription';
288 if (
GETPOST(
"paymentsave") !=
'invoiceonly' && !
GETPOST(
"operation")) {
289 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"PaymentMode"));
292 $action =
'addsubscription';
295 $errmsg = $langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"FinancialAccount"));
298 $action =
'addsubscription';
302 $errmsg = $langs->trans(
"ErrorDoNotProvideAccountsIfNullAmount");
305 $action =
'addsubscription';
313 if (!$error && $action ==
'subscription') {
317 $crowid =
$object->subscription($datesubscription, (
float) $amount, $accountid, $operation, $label, $num_chq, $emetteur_nom, $emetteur_banque, $datesubend);
325 $result =
$object->subscriptionComplementaryActions($crowid, $option, $accountid, $datesubscription, $paymentdate, $operation, $label, (
float) $amount, $num_chq, $emetteur_nom, $emetteur_banque);
338 $action =
'addsubscription';
348 if (
$object->email && $sendalsoemail) {
350 'datesubscription' => $datesubscription,
352 'ccountid' => $accountid,
353 'operation' => $operation,
355 'num_chq' => $num_chq,
356 'emetteur_nom' => $emetteur_nom,
357 'emetteur_banque' => $emetteur_banque,
358 'datesubend' => $datesubend
360 $reshook = $hookmanager->executeHooks(
'sendMail', $parameters, $object, $action);
365 if (empty($reshook)) {
370 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
374 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang);
376 $outputlangs->loadLangs(array(
"main",
"members"));
379 $arraydefaultmessage =
null;
382 if (!empty($labeltouse)) {
383 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
386 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
387 $subject = (string) $arraydefaultmessage->topic;
388 $msg = (string) $arraydefaultmessage->content;
391 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
398 $listofpaths = array();
399 $listofnames = array();
400 $listofmimes = array();
401 if (is_object(
$object->invoice) && (!is_object($arraydefaultmessage) || intval($arraydefaultmessage->joinfiles))) {
402 $invoicediroutput = $conf->facture->dir_output;
404 $file = $fileparams[
'fullname'];
406 $listofpaths = array($file);
407 $listofnames = array(basename($file));
411 $moreinheader =
'X-Dolibarr-Info: send_an_email by adherents/subscription.php'.
"\r\n";
413 $result =
$object->sendEmail($texttosend, $subjecttosend, $listofpaths, $listofmimes, $listofnames,
"",
"", 0, -1,
'', $moreinheader);
443$form =
new Form($db);
447$title = $langs->trans(
"Member").
" - ".$langs->trans(
"Subscriptions");
448$help_url =
"EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros|DE:Modul_Mitglieder";
450llxHeader(
'', $title, $help_url,
'', 0, 0,
'',
'',
'',
'mod-member page-card_subscription');
454if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
455 $param .=
'&contextpage='.urlencode($contextpage);
457if ($limit > 0 && $limit != $conf->liste_limit) {
458 $param .=
'&limit='.((int) $limit);
460$param .=
'&id='.$rowid;
461if ($optioncss !=
'') {
462 $param .=
'&optioncss='.urlencode($optioncss);
469 $langs->load(
"errors");
470 print $langs->trans(
"ErrorRecordNotFound");
476$defaultdelay = !empty($adht->duration_value) ? $adht->duration_value : 1;
477$defaultdelayunit = !empty($adht->duration_unit) ? $adht->duration_unit :
'y';
489print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="POST">';
490print
'<input type="hidden" name="token" value="'.newToken().
'">';
491print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
495$linkback =
'<a href="'.dolBuildUrl(DOL_URL_ROOT.
'/adherents/list.php', [
'restore_lastsearch_values' => 1]).
'">'.$langs->trans(
"BackToList").
'</a>';
497$morehtmlref =
'<a href="'.DOL_URL_ROOT.
'/adherents/vcard.php?id='.
$object->id.
'" class="refid">';
498$morehtmlref .=
img_picto($langs->trans(
"Download").
' '.$langs->trans(
"VCard"),
'vcard',
'class="valignmiddle marginleftonly paddingrightonly"');
499$morehtmlref .=
'</a>';
501dol_banner_tab($object,
'rowid', $linkback, 1,
'rowid',
'ref', $morehtmlref);
503print
'<div class="fichecenter">';
504print
'<div class="fichehalfleft">';
506print
'<div class="underbanner clearboth"></div>';
507print
'<table class="border centpercent tableforfield">';
511 print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"Login").
' / '.$langs->trans(
"Id").
'</td><td class="valeur">'.
dol_escape_htmltag(
$object->login).
'</td></tr>';
515print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"Type").
'</td>';
516print
'<td class="valeur">'.$adht->getNomUrl(1).
"</td></tr>\n";
519print
'<tr><td>'.$langs->trans(
"MemberNature").
'</td>';
520print
'<td class="valeur" >'.$object->getmorphylib(
'', 1).
'</td>';
527print
'<tr><td>'.$langs->trans(
"UserTitle").
'</td><td class="valeur">'.
$object->getCivilityLabel().
'</td>';
532 print
'<tr><td>'.$langs->trans(
"Password").
'</td><td>';
534 print preg_replace(
'/./i',
'*',
$object->pass);
537 print
'<!-- '.$langs->trans(
"Crypted").
': '.
$object->pass_indatabase_crypted.
' -->';
539 print
'<span class="opacitymedium">'.$langs->trans(
"Hidden").
'</span>';
541 if (!empty(
$object->pass_indatabase) && empty(
$object->user_id)) {
542 $langs->load(
"errors");
543 $htmltext = $langs->trans(
"WarningPasswordSetWithNoAccount");
544 print
' '.$form->textwithpicto(
'', $htmltext, 1,
'warning');
550print
'<tr><td>'.$langs->trans(
"SubscriptionEndDate").
'</td><td class="valeur">';
554 print
" ".img_warning($langs->trans(
"Late"));
557 if (
$object->need_subscription == 0) {
558 print $langs->trans(
"SubscriptionNotNeeded");
559 } elseif (!$adht->subscription) {
560 print $langs->trans(
"SubscriptionNotRecorded");
562 print
" ".img_warning($langs->trans(
"Late"));
565 print $langs->trans(
"SubscriptionNotReceived");
567 print
" ".img_warning($langs->trans(
"Late"));
577print
'<div class="fichehalfright">';
578print
'<div class="underbanner clearboth"></div>';
580print
'<table class="border tableforfield centpercent">';
583if (
isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
584 print
'<tr><td>'.$langs->trans(
"Categories").
'</td>';
585 print
'<td colspan="2">';
586 print $form->showCategories(
$object->id, Categorie::TYPE_MEMBER, 1);
591print
'<tr><td class="titlefieldmiddle">'.$langs->trans(
"DateOfBirth").
'</td><td class="valeur">'.
dol_print_date(
$object->birth,
'day').
'</td></tr>';
595 require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
596 print
'<tr><td>'.$langs->trans(
"DefaultLang").
'</td><td>';
599 $langs->load(
"languages");
600 $labellang = (
$object->default_lang ? $langs->trans(
'Language_'.
$object->default_lang) :
'');
607$linkofpubliclist = DOL_MAIN_URL_ROOT.
'/public/members/public_list.php'.((
isModEnabled(
'multicompany')) ?
'?entity='.$conf->entity :
'');
608print
'<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>';
612include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_view.tpl.php';
617 print
'<table class="nobordernopadding centpercent"><tr><td>';
618 print $langs->trans(
"LinkedToDolibarrThirdParty");
620 if ($action !=
'editthirdparty' && $user->hasRight(
'adherent',
'creer')) {
621 print
'<td class="right"><a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editthirdparty&token='.
newToken().
'&rowid='.
$object->id.
'">'.
img_edit($langs->trans(
'SetLinkToThirdParty'), 1).
'</a></td>';
623 print
'</tr></table>';
624 print
'</td><td colspan="2" class="valeur">';
625 if ($action ==
'editthirdparty') {
627 print
'<form method="POST" action="'.$_SERVER[
'PHP_SELF'].
'" name="form'.$htmlname.
'">';
628 print
'<input type="hidden" name="rowid" value="'.$object->id.
'">';
629 print
'<input type="hidden" name="action" value="set'.$htmlname.
'">';
630 print
'<input type="hidden" name="token" value="'.newToken().
'">';
631 print
'<table class="nobordernopadding">';
633 print $form->select_company(
$object->socid,
'socid',
'', 1);
635 print
'<td class="left"><input type="submit" class="button button-edit" value="'.$langs->trans(
"Modify").
'"></td>';
636 print
'</tr></table></form>';
640 $result = $company->fetch(
$object->socid);
641 print $company->getNomUrl(1);
644 $tmparray = $company->getOutstandingBills(
'customer');
645 if (!empty($tmparray[
'refs'])) {
646 print
' - '.img_picto($langs->trans(
"Invoices"),
'bill',
'class="paddingright"').
'<a href="'.DOL_URL_ROOT.
'/compta/facture/list.php?socid='.
$object->socid.
'">'.$langs->trans(
"Invoices").
' ('.count($tmparray[
'refs']).
')';
651 print
'<span class="opacitymedium">'.$langs->trans(
"NoThirdPartyAssociatedToMember").
'</span>';
659print
'<table class="nobordernopadding centpercent"><tr><td>';
660print $langs->trans(
"LinkedToDolibarrUser");
662if ($action !=
'editlogin' && $user->hasRight(
'adherent',
'creer')) {
663 print
'<td class="right">';
664 if ($user->hasRight(
"user",
"user",
"creer")) {
665 print
'<a class="editfielda" href="'.$_SERVER[
"PHP_SELF"].
'?action=editlogin&token='.
newToken().
'&rowid='.
$object->id.
'">'.
img_edit($langs->trans(
'SetLinkToUser'), 1).
'</a>';
669print
'</tr></table>';
670print
'</td><td colspan="2" class="valeur">';
671if ($action ==
'editlogin') {
672 $form->form_users($_SERVER[
'PHP_SELF'].
'?rowid='.
$object->id, (
string)
$object->user_id,
'userid', array());
675 $linkeduser =
new User($db);
676 $linkeduser->fetch(
$object->user_id);
677 print $linkeduser->getNomUrl(-1);
679 print
'<span class="opacitymedium">'.$langs->trans(
"NoDolibarrAccess").
'</span>';
686print
"</div></div>\n";
687print
'<div class="clearboth"></div>';
697if ($user->hasRight(
'adherent',
'cotisation',
'creer')) {
698 if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
699 print
'<div class="tabsAction">';
702 print
'<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.$rowid.
'&action=addsubscription&token='.
newToken().
'">'.$langs->trans(
"AddSubscription").
"</a></div>";
704 print
'<div class="inline-block divButAction"><a class="butActionRefused classfortooltip" href="#" title="'.dol_escape_htmltag($langs->trans(
"ValidateBefore")).
'">'.$langs->trans(
"AddSubscription").
'</a></div>';
714if ($action !=
'addsubscription' && $action !=
'create_thirdparty') {
715 $sql =
"SELECT d.rowid, d.firstname, d.lastname, d.societe, d.fk_adherent_type as type,";
716 $sql .=
" c.rowid as crowid, c.subscription,";
717 $sql .=
" c.datec, c.fk_type as cfk_type,";
718 $sql .=
" c.dateadh as dateh,";
720 $sql .=
" c.fk_bank,";
721 $sql .=
" b.rowid as bid,";
722 $sql .=
" ba.rowid as baid, ba.label, ba.bank, ba.ref, ba.account_number, ba.fk_accountancy_journal, ba.number, ba.currency_code";
723 $sql .=
" FROM ".MAIN_DB_PREFIX.
"adherent as d, ".MAIN_DB_PREFIX.
"subscription as c";
724 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank as b ON c.fk_bank = b.rowid";
725 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"bank_account as ba ON b.fk_account = ba.rowid";
726 $sql .=
" WHERE d.rowid = c.fk_adherent AND d.rowid=".((int) $rowid);
727 $sql .= $db->order($sortfield, $sortorder);
729 $result = $db->query($sql);
733 $num = $db->num_rows($result);
735 print
'<div class="div-table-responsive-no-min">';
736 print
'<table class="noborder centpercent">'.
"\n";
738 print
'<tr class="liste_titre">';
740 print_liste_field_titre(
'DateCreation', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
742 print_liste_field_titre(
'DateStart', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
743 print_liste_field_titre(
'DateEnd', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
746 print_liste_field_titre(
'Account', $_SERVER[
"PHP_SELF"],
'',
'', $param,
'', $sortfield, $sortorder,
'right ');
750 $accountstatic =
new Account($db);
756 $objp = $db->fetch_object($result);
758 $adh->id = $objp->rowid;
759 $adh->typeid = $objp->type;
761 $subscriptionstatic->ref = $objp->crowid;
762 $subscriptionstatic->id = $objp->crowid;
764 $typeid = $objp->cfk_type;
766 $adht->fetch($typeid);
769 print
'<tr class="oddeven">';
770 print
'<td>'.$subscriptionstatic->getNomUrl(1).
'</td>';
771 print
'<td class="center nowraponall">'.dol_print_date($db->jdate($objp->datec),
'dayhour').
"</td>\n";
772 print
'<td class="center tdoverflowmax125">';
774 print $adht->getNomUrl(1);
777 print
'<td class="center">'.dol_print_date($db->jdate($objp->dateh),
'day').
"</td>\n";
778 print
'<td class="center">'.dol_print_date($db->jdate($objp->datef),
'day').
"</td>\n";
779 print
'<td class="right amount">'.price($objp->subscription).
'</td>';
781 print
'<td class="tdoverflowmax100 right">';
783 $accountstatic->label = $objp->label;
784 $accountstatic->id = $objp->baid;
785 $accountstatic->number = $objp->number;
786 $accountstatic->account_number = $objp->account_number;
787 $accountstatic->currency_code = $objp->currency_code;
789 if (
isModEnabled(
'accounting') && $objp->fk_accountancy_journal > 0) {
791 $accountingjournal->fetch($objp->fk_accountancy_journal);
793 $accountstatic->accountancy_journal = $accountingjournal->getNomUrl(0, 1, 1,
'', 1);
796 $accountstatic->ref = $objp->ref;
797 print $accountstatic->getNomUrl(1);
812 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') {
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="'.dolBuildUrl($_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>';
1000 print $form->selectDate($datefrom,
'', 0, 0, 0,
"subscription", 1, 1);
1010 } elseif (
getDolGlobalInt(
'MEMBER_SUBSCRIPTION_SUGGEST_END_OF_YEAR')) {
1016 print
'<tr><td>'.$langs->trans(
"DateEndSubscription").
'</td><td>';
1017 print $form->selectDate($dateto,
'end', 0, 0, 0,
"subscription", 1, 0);
1020 if ($adht->subscription) {
1022 print
'<tr><td class="fieldrequired">'.$langs->trans(
"Amount").
'</td>';
1023 print
'<td><input autofocus class="width50" type="text" name="subscription" value="'.(GETPOSTISSET(
'subscription') ?
GETPOST(
'subscription') : (is_null($adht->
amount) ?
'' :
price($adht->
amount, 0,
'', 0))).
'"> '.$langs->trans(
"Currency".
getDolCurrency()) .
'</td></tr>';
1026 print
'<tr><td>'.$langs->trans(
"Label").
'</td>';
1027 print
'<td><input name="label" type="text" size="32" value="';
1029 print $langs->trans(
"Subscription").
' '.
dol_print_date(($datefrom ? $datefrom : time()),
"%Y");
1031 print
'"></td></tr>';
1037 $result = $company->fetch(
$object->socid);
1041 print
'<tr><td class="tdtop fieldrequired">'.$langs->trans(
'MoreActions');
1043 print
'<td class="line-height-large">';
1045 print
'<input type="radio" class="moreaction" id="none" name="paymentsave" value="none"'.(empty($bankdirect) && empty($invoiceonly) && empty($bankviainvoice) ?
' checked' :
'').
'>';
1046 print
'<label for="none"> '.$langs->trans(
"None").
'</label><br>';
1049 print
'<input type="radio" class="moreaction" id="bankdirect" name="paymentsave" value="bankdirect"'.(!empty($bankdirect) ?
' checked' :
'');
1050 print
'><label for="bankdirect"> '.$langs->trans(
"MoreActionBankDirect").
'</label><br>';
1054 print
'<input type="radio" class="moreaction" id="invoiceonly" name="paymentsave" value="invoiceonly"'.(!empty($invoiceonly) ?
' checked' :
'');
1056 print
'><label for="invoiceonly"> '.$langs->trans(
"MoreActionInvoiceOnly");
1058 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1062 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1064 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1065 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1066 print $langs->trans(
"CreateDolibarrThirdParty");
1070 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1074 $result = $prodtmp->fetch(
getDolGlobalInt(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1078 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1080 print
'</label><br>';
1084 print
'<input type="radio" class="moreaction" id="bankviainvoice" name="paymentsave" value="bankviainvoice"'.(!empty($bankviainvoice) ?
' checked' :
'');
1086 print
'><label for="bankviainvoice"> '.$langs->trans(
"MoreActionBankViaInvoice");
1088 print
' ('.$langs->trans(
"ThirdParty").
': '.$company->getNomUrl(1).
')';
1092 print
img_warning($langs->trans(
"NoThirdPartyAssociatedToMember"));
1094 print $langs->trans(
"NoThirdPartyAssociatedToMember");
1095 print
' - <a href="'.$_SERVER[
"PHP_SELF"].
'?rowid='.
$object->id.
'&action=create_thirdparty">';
1096 print $langs->trans(
"CreateDolibarrThirdParty");
1100 print
'. <span class="opacitymedium">'.$langs->trans(
"NoVatOnSubscription", 0).
'</span>';
1104 $result = $prodtmp->fetch(
getDolGlobalInt(
'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS'));
1108 print
'. '.$langs->transnoentitiesnoconv(
"ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS", $prodtmp->getNomUrl(1));
1110 print
'</label><br>';
1115 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"FinancialAccount").
'</td><td>';
1116 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
1117 $form->select_comptes(
GETPOST(
'accountid'),
'accountid', 0,
'', 2,
'', 0,
'minwidth200');
1118 print
"</td></tr>\n";
1121 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"PaymentMode").
'</td><td>';
1122 print $form->select_types_paiements(
GETPOST(
'operation'),
'operation',
'', 2, 1, 0, 0, 1,
'minwidth200', 1);
1123 print
"</td></tr>\n";
1126 print
'<tr class="bankswitchclass"><td class="fieldrequired">'.$langs->trans(
"DatePayment").
'</td><td>';
1127 print $form->selectDate(isset($paymentdate) ? $paymentdate : -1,
'payment', 0, 0, 1,
'subscription', 1, 1);
1128 print
"</td></tr>\n";
1130 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Numero');
1131 print
' <em>('.$langs->trans(
"ChequeOrTransferNumber").
')</em>';
1133 print
'<td><input id="fieldnum_chq" name="num_chq" type="text" size="8" value="'.(!
GETPOST(
'num_chq') ?
'' :
GETPOST(
'num_chq')).
'"></td></tr>';
1135 print
'<tr class="bankswitchclass2 fieldrequireddyn"><td>'.$langs->trans(
'CheckTransmitter');
1136 print
' <em>('.$langs->trans(
"ChequeMaker").
')</em>';
1138 print
'<td><input id="fieldchqemetteur" name="chqemetteur" size="32" type="text" value="'.(!
GETPOST(
'chqemetteur') ?
'' :
GETPOST(
'chqemetteur')).
'"></td></tr>';
1140 print
'<tr class="bankswitchclass2"><td>'.$langs->trans(
'Bank');
1141 print
' <em>('.$langs->trans(
"ChequeBank").
')</em>';
1143 print
'<td><input id="chqbank" name="chqbank" size="32" type="text" value="'.(!
GETPOST(
'chqbank') ?
'' :
GETPOST(
'chqbank')).
'"></td></tr>';
1147 print
'<tr><td></td><td></td></tr>';
1149 print
'<tr><td>'.$langs->trans(
"SendAcknowledgementByMail").
'</td>';
1152 print $langs->trans(
"NoEMail");
1155 $adht->fetch(
$object->typeid);
1162 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
1165 $outputlangs =
new Translate(
'', $conf);
1166 $outputlangs->setDefaultLang(empty(
$object->thirdparty->default_lang) ?
$mysoc->default_lang :
$object->thirdparty->default_lang);
1168 $outputlangs->loadLangs(array(
"main",
"members"));
1170 $arraydefaultmessage =
null;
1173 if (!empty($labeltouse)) {
1174 $arraydefaultmessage = $formmail->getEMailTemplate($db,
'member', $user, $outputlangs, 0, 1, $labeltouse);
1177 if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
1178 $subject = (string) $arraydefaultmessage->topic;
1179 $msg = (string) $arraydefaultmessage->content;
1182 $substitutionarray = getCommonSubstitutionArray($outputlangs, 0,
null, $object);
1187 $tmp =
'<input name="sendmail" type="checkbox"'.(GETPOST(
'sendmail',
'alpha') ?
' checked' : (
getDolGlobalString(
'ADHERENT_DEFAULT_SENDINFOBYMAIL') ?
' checked' :
'')).
'>';
1189 $helpcontent .=
'<b>'.$langs->trans(
"MailFrom").
'</b>: '.
getDolGlobalString(
'ADHERENT_MAIL_FROM', $conf->email_from).
'<br>'.
"\n";
1190 $helpcontent .=
'<b>'.$langs->trans(
"MailRecipient").
'</b>: '.
$object->email.
'<br>'.
"\n";
1191 $helpcontent .=
'<b>'.$langs->trans(
"MailTopic").
'</b>:<br>'.
"\n";
1192 if ($subjecttosend) {
1193 $helpcontent .= $subjecttosend.
"\n";
1195 $langs->load(
"errors");
1196 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1198 $helpcontent .=
"<br>";
1199 $helpcontent .=
'<b>'.$langs->trans(
"MailText").
'</b>:<br>';
1203 $langs->load(
"errors");
1204 $helpcontent .=
'<span class="error">'.$langs->trans(
"ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv(
"Module310Name")).
'</span>'.
"\n";
1207 print $form->textwithpicto($tmp, $helpcontent, 1,
'help',
'', 0, 2,
'helpemailtosend');
1216 print
'<div class="center">';
1217 $parameters = array();
1218 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters, $object, $action);
1219 if (empty($reshook)) {
1220 print
'<input type="submit" class="button" name="add" value="'.$langs->trans(
"AddSubscription").
'">';
1221 print
' ';
1222 print
'<input type="submit" class="button button-cancel" name="cancel" value="'.$langs->trans(
"Cancel").
'">';
1228 print
"\n<!-- End form subscription -->\n\n";
$id
Support class for third parties, contacts, members, users or resources.
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage bank accounts.
Class to manage accounting journals.
Class to manage members of a foundation.
const STATUS_VALIDATED
Validated status.
Class to manage members type.
Class to manage products or services.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage subscriptions of foundation members.
Class to manage translations.
Class to manage Dolibarr users.
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforendofmonth=0)
Add a delay to a date.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
dol_most_recent_file($dir, $regexfilter='', $excludefilter=array('(\.meta|_preview.*\.png) $', '^\.'), $nohook=0, $mode=0)
Return file(s) into a directory (by default most recent)
dol_now($mode='gmt')
Return date for now.
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...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
picto_from_langcode($codelang, $moreatt='', $notitlealt=0)
Return img flag of country for a language code or country code.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
dol_mimetype($file, $default='application/octet-stream', $mode=0)
Return MIME type of a file from its name with extension.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0, $attop=0)
Set event message in dol_events session object.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dol_concatdesc($text1, $text2, $forxml=false, $invert=false)
Concat 2 descriptions with a new line between them (second operand after first one with appropriate n...
getDolCurrency()
Return the main currency ('EUR', 'USD', ...)
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_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='', $morecssonpicto='widthpictotitle')
Load a title with picto.
dol_htmlentitiesbr($stringtoencode, $nl2brmode=0, $pagecodefrom='UTF-8', $removelasteolbr=1)
This function is called to encode a string into a HTML string but differs from htmlentities because a...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
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.
if(getDolGlobalString( 'TAKEPOS_SHOW_CUSTOMER')) print $langs trans('Date')." left Label right Qty right Price right TotalHT right TotalTTC right right right right right right right right right centpercent right TotalHT right n right VAT right n right TotalVAT right n No sujeto a RE IRPF right TotalLT1 right n right TotalLT2 right n right TotalTTC right n takeposcustomercurrency takeposcustomercurrency takeposcustomercurrency takeposcustomercurrency right TotalTTC takeposcustomercurrency right takeposcustomercurrency n right PaymentTypeShortLIQ right SELECT p pos_change as p datep as p p num_paiement as f pf amount as amount
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.