diff --git a/ChangeLog b/ChangeLog index 95585a1153d..96174a6d5c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,7 @@ English Dolibarr ChangeLog ***** ChangeLog for 3.0 compared to 2.9 ***** For users: +- New: Can generate business card for on particular member. - New: Task #10553 : Can attach files on members card. - New: Can filter on payment type and bank account in payment lists. - New: When sending supplier orders by mail, a text is predefined. diff --git a/htdocs/adherents/cartes/carte.php b/htdocs/adherents/cartes/carte.php index 9688522ed50..eed63e4c40e 100755 --- a/htdocs/adherents/cartes/carte.php +++ b/htdocs/adherents/cartes/carte.php @@ -29,6 +29,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/member/cards/modules_cards.php"); +$langs->load("members"); // Choix de l'annee d'impression ou annee courante. $now = dol_now(); @@ -36,95 +37,133 @@ $year=dol_print_date($now,'%Y'); $month=dol_print_date($now,'%m'); $day=dol_print_date($now,'%d'); $foruserid=GETPOST('foruserid'); +$foruserlogin=GETPOST('foruserlogin'); -$arrayofmembers=array(); -// requete en prenant que les adherents a jour de cotisation -$sql = "SELECT d.rowid, d.prenom, d.nom, d.login, d.societe, d.datefin,"; -$sql.= " d.adresse, d.cp, d.ville, d.naiss, d.email, d.photo,"; -$sql.= " t.libelle as type,"; -$sql.= " p.libelle as pays"; -$sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as t, ".MAIN_DB_PREFIX."adherent as d"; -$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_pays as p ON d.pays = p.rowid"; -$sql.= " WHERE d.fk_adherent_type = t.rowid AND d.statut = 1"; -if ($foruserid) $sql.=" AND d.rowid=".$foruserid; -$sql.= " ORDER BY d.rowid ASC"; +/* + * View + */ -$result = $db->query($sql); -if ($result) +if (empty($foruserid) && empty($foruserlogin)) { - $num = $db->num_rows($result); - $i = 0; - while ($i < $num) - { - $objp = $db->fetch_object($result); + llxHeader('',$langs->trans("MembersCards")); - if ($objp->pays == '-') $objp->pays=''; + print_fiche_titre($langs->trans("LinkToGeneratedPages")); + print '
'; - // List of values to scan for a replacement - $substitutionarray = array ( - '%PRENOM%'=>$objp->prenom, - '%NOM%'=>$objp->nom, - '%LOGIN%'=>$objp->login, - '%SERVEUR%'=>"http://".$_SERVER["SERVER_NAME"]."/", - '%SOCIETE%'=>$objp->societe, - '%ADRESSE%'=>$objp->adresse, - '%CP%'=>$objp->cp, - '%VILLE%'=>$objp->ville, - '%PAYS%'=>$objp->pays, - '%EMAIL%'=>$objp->email, - '%NAISS%'=>$objp->naiss, - '%TYPE%'=>$objp->type, - '%ID%'=>$objp->rowid, - '%ANNEE%'=>$year, // For backward compatibility - '%YEAR%'=>$year, - '%MONTH%'=>$month, - '%DAY%'=>$day - ); + print $langs->trans("LinkToGeneratedPagesDesc").'
'; + print '
'; - $textleft=make_substitutions($conf->global->ADHERENT_CARD_TEXT, $substitutionarray, $langs); - $textheader=make_substitutions($conf->global->ADHERENT_CARD_HEADER_TEXT, $substitutionarray, $langs); - $textfooter=make_substitutions($conf->global->ADHERENT_CARD_FOOTER_TEXT, $substitutionarray, $langs); - $textright=make_substitutions($conf->global->ADHERENT_CARD_TEXT_RIGHT, $substitutionarray, $langs); + print $langs->trans("PDFForAllMembersCards",$conf->global->ADHERENT_CARD_TYPE).' '; + print '
'; + print ''; + print ' '; + print '
'; + print '
'; - if ($foruserid) - { - for($j=0;$j<100;$j++) - { - $arrayofmembers[]=array('textleft'=>$textleft, - 'textheader'=>$textheader, - 'textfooter'=>$textfooter, - 'textright'=>$textright, - 'id'=>$objp->rowid, - 'photo'=>$objp->photo); - } - } - else - { - $arrayofmembers[]=array('textleft'=>$textleft, - 'textheader'=>$textheader, - 'textfooter'=>$textfooter, - 'textright'=>$textright, - 'id'=>$objp->rowid, - 'photo'=>$objp->photo); - } + print $langs->trans("PDFForOneMemberCards",$conf->global->ADHERENT_CARD_TYPE).' '; + print '
'; + print $langs->trans("Login").': '; + print ' '; + print '
'; + print '
'; - $i++; - } - // Build and output PDF - $result=members_card_pdf_create($db, $arrayofmembers, '', $outputlangs); - if ($result <= 0) - { - dol_print_error($db,$result); - exit; - } + llxFooter('$Date$ - $Revision$'); } else { - dol_print_error($db); - llxFooter('$Date$ - $Revision$'); + $arrayofmembers=array(); + + // requete en prenant que les adherents a jour de cotisation + $sql = "SELECT d.rowid, d.prenom, d.nom, d.login, d.societe, d.datefin,"; + $sql.= " d.adresse, d.cp, d.ville, d.naiss, d.email, d.photo,"; + $sql.= " t.libelle as type,"; + $sql.= " p.libelle as pays"; + $sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as t, ".MAIN_DB_PREFIX."adherent as d"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_pays as p ON d.pays = p.rowid"; + $sql.= " WHERE d.fk_adherent_type = t.rowid AND d.statut = 1"; + if (is_numeric($foruserid)) $sql.=" AND d.rowid=".$foruserid; + if ($foruserlogin) $sql.=" AND d.login='".$db->escape($foruserlogin)."'"; + $sql.= " ORDER BY d.rowid ASC"; + + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); + $i = 0; + while ($i < $num) + { + $objp = $db->fetch_object($result); + + if ($objp->pays == '-') $objp->pays=''; + + // List of values to scan for a replacement + $substitutionarray = array ( + '%PRENOM%'=>$objp->prenom, + '%NOM%'=>$objp->nom, + '%LOGIN%'=>$objp->login, + '%SERVEUR%'=>"http://".$_SERVER["SERVER_NAME"]."/", + '%SOCIETE%'=>$objp->societe, + '%ADRESSE%'=>$objp->adresse, + '%CP%'=>$objp->cp, + '%VILLE%'=>$objp->ville, + '%PAYS%'=>$objp->pays, + '%EMAIL%'=>$objp->email, + '%NAISS%'=>$objp->naiss, + '%TYPE%'=>$objp->type, + '%ID%'=>$objp->rowid, + '%ANNEE%'=>$year, // For backward compatibility + '%YEAR%'=>$year, + '%MONTH%'=>$month, + '%DAY%'=>$day + ); + + $textleft=make_substitutions($conf->global->ADHERENT_CARD_TEXT, $substitutionarray, $langs); + $textheader=make_substitutions($conf->global->ADHERENT_CARD_HEADER_TEXT, $substitutionarray, $langs); + $textfooter=make_substitutions($conf->global->ADHERENT_CARD_FOOTER_TEXT, $substitutionarray, $langs); + $textright=make_substitutions($conf->global->ADHERENT_CARD_TEXT_RIGHT, $substitutionarray, $langs); + + if (is_numeric($foruserid) || $foruserlogin) + { + for($j=0;$j<100;$j++) + { + $arrayofmembers[]=array('textleft'=>$textleft, + 'textheader'=>$textheader, + 'textfooter'=>$textfooter, + 'textright'=>$textright, + 'id'=>$objp->rowid, + 'photo'=>$objp->photo); + } + } + else + { + $arrayofmembers[]=array('textleft'=>$textleft, + 'textheader'=>$textheader, + 'textfooter'=>$textfooter, + 'textright'=>$textright, + 'id'=>$objp->rowid, + 'photo'=>$objp->photo); + } + + $i++; + } + + // Build and output PDF + $result=members_card_pdf_create($db, $arrayofmembers, '', $outputlangs); + if ($result <= 0) + { + dol_print_error($db,$result); + exit; + } + } + else + { + dol_print_error($db); + + llxFooter('$Date$ - $Revision$'); + } } ?> diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index aa415b3f8f3..3f65625dcb1 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -22,7 +22,7 @@ ThisIsContentOfYourCard=This is details of your card CardContent=Content of your member card SetLinkToUser=Link to a Dolibarr user SetLinkToThirdParty=Link to a Dolibarr third party -MembersCards=Members print cards +MembersCards=Members business cards MembersList=List of members MembersListToValid=List of draft members (to be validated) MembersListValid=List of valid members @@ -154,3 +154,9 @@ MoreActions=Complementary action on recording MoreActionBankDirect=Create a direct transaction record on account MoreActionBankViaInvoice=Create an invoice and payment on account MoreActionInvoiceOnly=Create an invoice with no payment +LinkToGeneratedPages=Generate visit cards +LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. +PDFForAllMembersCards=Generate PDF of business cards for all members (Format for PDF actually setup : %s) +PDFForOneMemberCards=Generate PDF of business cards for a particular member (Format for PDF actually setup: %s) +BuildCards=Build PDF file + diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index 92f1faead8a..bb5245f2661 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -154,3 +154,8 @@ MoreActions=Action complémentaire à l'enregistrement MoreActionBankDirect=Création transaction sur compte directement MoreActionBankViaInvoice=Création facture avec paiement sur compte MoreActionInvoiceOnly=Création facture sans paiement +LinkToGeneratedPages=Génération de cartes de visites +LinkToGeneratedPagesDesc=Cet écran vous permet de générer des planches de cartes de visites pour chaque adhérents ou pour un adhérent en particulier. +PDFForAllMembersCards=Génération PDF de cartes pour tous les adhérents (Format de planche actuellement configuré: %s) +PDFForOneMemberCards=Génération PDF de cartes pour un adhérent particulier (Format de planche actuellement configuré: %s) +BuildCards=Générer cartes de visites diff --git a/htdocs/langs/nb_NO/members.lang b/htdocs/langs/nb_NO/members.lang index 3f316135e72..addd48da29f 100644 --- a/htdocs/langs/nb_NO/members.lang +++ b/htdocs/langs/nb_NO/members.lang @@ -9,150 +9,25 @@ Members=Medlemmer MemberAccount=Medlemskonto ShowMember=Bis medlemskort UserNotLinkedToMember=Brukeren er ikke knyttet til noe medlem -MembersTickets=Members Tickets -Attributs=Attributes -Person=Person -ErrorMemberTypeNotDefined=Member type not defined -ListOfPublicMembers=List of public members -ListOfValidatedPublicMembers=List of validated public members -ErrorThisMemberIsNotPublic=This member is not public -MembersCards=Members print cards -MembersList=List of members -MembersListToValid=List of draft members (to be validated) -MembersListValid=List of valid members -MembersListUpToDate=List of valid members with up to date subscription -MembersListNotUpToDate=List of valid members with subscription out of date -MembersListResiliated=List of resiliated members -MembersListQualified=List of qualified members -MenuMembersToValidate=Draft members -MenuMembersValidated=Validated members -MenuMembersUpToDate=Up to date members -MenuMembersNotUpToDate=Out of date members -MenuMembersResiliated=Resiliated members -DateAbonment=Subscription date -DateSubscription=Subscription date -DateNextSubscription=Next subscription -DateEndSubscription=Subscription end date -EndSubscription=End subscription -NewMember=New member -NewType=New member type -MemberType=Member type -MemberTypeId=Member type id -MemberTypeLabel=Member type label -MembersTypes=Members types -MembersAttributes=Members attributes -SearchAMember=Search a member -MemberStatusDraft=Draft (needs to be validated) -MemberStatusDraftShort=To validate -MemberStatusActive=Validated (waiting subscription) -MemberStatusActiveShort=Validated -MemberStatusActiveLate=subscription expired -MemberStatusActiveLateShort=Expired -MemberStatusPaid=Subscription up to date -MemberStatusPaidShort=Up to date -MemberStatusResiliated=Resiliated member -MemberStatusResiliatedShort=Resiliated -MembersStatusToValid=Draft members -MembersStatusToValidShort=Draft members -MembersStatusValidated=Validated members -MembersStatusPaid=Subscription up to date -MembersStatusPaidShort=Up to date -MembersStatusNotPaid=Subscription out of date -MembersStatusNotPaidShort=Out of date -MembersStatusResiliated=Resiliated members -MembersStatusResiliatedShort=Resiliated members -NewCotisation=New contribution -EditMember=Edit member -SubscriptionEndDate=Subscription's end date -NewAttribute=New attribut -AttributeCode=Attribute code -OptionalFieldsSetup=Optional fields setup -MembersTypeSetup=Members type setup -NewSubscription=New subscription -Subscription=Subscription -Subscriptions=Subscriptions -SubscriptionLate=Late -SubscriptionNotReceived=Subscription never received -SubscriptionLateShort=Late -SubscriptionNotReceivedShort=Never received -ListOfSubscriptions=List of subscriptions -SendCardByMail=Send card -AddMember=Add member -MemberType=Member type -NoTypeDefinedGoToSetup=No member types defined. Go to setup - Members types -NewMemberType=New member type -WelcomeEMail=Welcome e-mail -SubscriptionRequired=Subscription required -EditType=Edit member type -DeleteType=Delete -VoteAllowed=Vote allowed -Physical=Physical -Moral=Moral -MorPhy=Moral/Physical -Reenable=Reenable -ResiliateMember=Resiliate a member -ConfirmResiliateMember=Are you sure you want to resiliate this member ? -DeleteMember=Delete a member -ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his subscriptions) ? -DeleteSubscription=Delete a subscription -ConfirmDeleteSubscription=Are you sure you want to delete this subscription ? -Filehtpasswd=htpasswd file -ValidateMember=Validate a member -ConfirmValidateMember=Are you sure you want to validate this member ? -FollowingLinksArePublic=The following links are open pages not protected by any Dolibarr permission. They are not formated pages, provided as example to show how to list members database. -PublicMemberList=Public member list -BlankSubscriptionForm=Subscription form -MemberPublicLinks=Public links/pages -ExportDataset_member_1=Members and subscriptions -LastMembers=Last %s members -LastMembersModified=Last %s modified members -AttributeName=Attribute name -FieldEdition=% field edition -AlphaNumOnlyCharsAndNoSpace=only alphanumericals characters without space -String=String -Text=Text -Int=Int -Date=Date -DateAndTime=Date and time -PublicMemberCard=Member public card -MemberNotOrNoMoreExpectedToSubscribe=Member not or no more expected to subscribe -AddSubscription=Add subscription -ShowSubscription=Show subscription -MemberModifiedInDolibarr=Member modified in Dolibarr -SendAnEMailToMember=Send information email to member -DescADHERENT_MAIL_VALID_SUBJECT=EMail subject for member validation -DescADHERENT_MAIL_VALID=EMail for member validation -DescADHERENT_MAIL_COTIS_SUBJECT=EMail subject for subscription -DescADHERENT_MAIL_COTIS=EMail for subscription -DescADHERENT_MAIL_RESIL_SUBJECT=EMail subject for member resiliation -DescADHERENT_MAIL_RESIL=EMail for member resiliation -DescADHERENT_MAIL_FROM=Sender EMail for automatic emails -DescADHERENT_ETIQUETTE_TYPE=Labels format -DescADHERENT_CARD_HEADER_TEXT=Text printed on top of member cards -DescADHERENT_CARD_TEXT=Text printed on member cards -DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards -ShowTypeCard=Show type '%s' -HTPasswordExport=htpassword file generation - - -// START - Lines generated via autotranslator.php tool (2010-07-17 11:45:17). -// Reference language: en_US -FundationMembers=Stiftelsen medlemmer -ErrorMemberIsAlreadyLinkedToThisThirdParty=Et annet medlem (navn: %s, innlogging: %s) er allerede koblet til en tredje part %s. Fjern denne linken først fordi en tredjepart ikke kan knyttes til bare ett medlem (og vice versa). -ErrorUserPermissionAllowsToLinksToItselfOnly=Av sikkerhetsgrunner må du få tilgang til å redigere alle brukere skal kunne knytte et medlem til en bruker som ikke er ditt. -ThisIsContentOfYourCard=Dette er detaljer på kortet -CardContent=Innholdet av medlem-kortet -SetLinkToUser=Link til en Dolibarr bruker -SetLinkToThirdParty=Link til en Dolibarr tredjepart -SubscriptionId=Abonnement id -MemberId=Medlem id -PaymentSubscription=Nye bidrag betaling -DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=E-post emne for medlem autosubscription -DescADHERENT_AUTOREGISTER_MAIL=E-post for medlem autosubscription -DescADHERENT_CARD_TYPE=Format på kortene siden -DescADHERENT_CARD_TEXT_RIGHT=Tekst trykt på kort medlem (justere på høyre) -DescADHERENT_MAILMAN_LISTS=Liste (er) for automatisk insription av nye medlemmer (separert med komma) -NoThirdPartyAssociatedToMember=Ingen tredjepart knyttet til dette medlemmet -ThirdPartyDolibarr=Dolibarr tredjepart -MembersAndSubscriptions=Medlemmer og Suscriptions -// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:48:27). + +// START - Lines generated via autotranslator.php tool (2010-07-17 11:45:17). +// Reference language: en_US +FundationMembers=Stiftelsen medlemmer +ErrorMemberIsAlreadyLinkedToThisThirdParty=Et annet medlem (navn: %s, innlogging: %s) er allerede koblet til en tredje part %s. Fjern denne linken først fordi en tredjepart ikke kan knyttes til bare ett medlem (og vice versa). +ErrorUserPermissionAllowsToLinksToItselfOnly=Av sikkerhetsgrunner må du få tilgang til å redigere alle brukere skal kunne knytte et medlem til en bruker som ikke er ditt. +ThisIsContentOfYourCard=Dette er detaljer på kortet +CardContent=Innholdet av medlem-kortet +SetLinkToUser=Link til en Dolibarr bruker +SetLinkToThirdParty=Link til en Dolibarr tredjepart +SubscriptionId=Abonnement id +MemberId=Medlem id +PaymentSubscription=Nye bidrag betaling +DescADHERENT_AUTOREGISTER_MAIL_SUBJECT=E-post emne for medlem autosubscription +DescADHERENT_AUTOREGISTER_MAIL=E-post for medlem autosubscription +DescADHERENT_CARD_TYPE=Format på kortene siden +DescADHERENT_CARD_TEXT_RIGHT=Tekst trykt på kort medlem (justere på høyre) +DescADHERENT_MAILMAN_LISTS=Liste (er) for automatisk insription av nye medlemmer (separert med komma) +NoThirdPartyAssociatedToMember=Ingen tredjepart knyttet til dette medlemmet +ThirdPartyDolibarr=Dolibarr tredjepart +MembersAndSubscriptions=Medlemmer og Suscriptions +// STOP - Lines generated via autotranslator.php tool (2010-07-17 11:48:27).