Fix: Count of up to date members

This commit is contained in:
Laurent Destailleur 2009-02-21 15:14:45 +00:00
parent f5b246f5bb
commit eef7a7ec02
4 changed files with 65 additions and 69 deletions

View File

@ -26,9 +26,9 @@
*/ */
require("./pre.inc.php"); require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT."/includes/modules/member/PDF_card.class.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/member/PDF_card.class.php");
//require_once(DOL_DOCUMENT_ROOT."/adherents/cartes/PDF_card.class.php");
// liste des patterns remplacable dans le texte a imprimer // liste des patterns remplacable dans le texte a imprimer
@ -49,14 +49,6 @@ $patterns = array (
'/%ANNEE%/' '/%ANNEE%/'
); );
/*
*-------------------------------------------------
* Pour cr<EFBFBD>er l'objet on a 2 moyens :
* Soit on donne les valeurs en les passant dans un tableau (sert pour un format personnel)
* Soit on donne le type d'<EFBFBD>tiquette au format AVERY
*-------------------------------------------------
*/
$dir = $conf->adherent->dir_tmp; $dir = $conf->adherent->dir_tmp;
$file = $dir . "/tmpcard.pdf"; $file = $dir . "/tmpcard.pdf";
@ -88,7 +80,7 @@ $sql.= " t.libelle as type,";
$sql.= " p.libelle as pays"; $sql.= " p.libelle as pays";
$sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as t, ".MAIN_DB_PREFIX."adherent as d"; $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.= " 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 AND datefin >= ".$db->idate(mktime()); $sql.= " WHERE d.fk_adherent_type = t.rowid AND d.statut = 1";
$sql.= " ORDER BY d.rowid ASC"; $sql.= " ORDER BY d.rowid ASC";
$result = $db->query($sql); $result = $db->query($sql);
@ -132,16 +124,22 @@ if ($result)
$db->close(); $db->close();
// Output file clearstatcache();
$type = 'application/octet-stream';
$attachment=true;
if ($type) header('Content-Type: '.$type); if (! empty($conf->global->MAIN_DISABLE_FORCE_SAVEAS)) $attachment=false;
header('Content-Disposition: attachment; filename="tmpcard.pdf"'); $filename='tmpcards.pdf';
$type=dol_mimetype($filename);
if ($encoding) header('Content-Encoding: '.$encoding);
if ($type) header('Content-Type: '.$type);
if ($attachment) header('Content-Disposition: attachment; filename="'.$filename.'"');
else header('Content-Disposition: inline; filename="'.$filename.'"');
// Ajout directives pour resoudre bug IE // Ajout directives pour resoudre bug IE
header('Cache-Control: Public, must-revalidate'); header('Cache-Control: Public, must-revalidate');
header('Pragma: public'); header('Pragma: public');
readfile($file); readfile($file);
} }
else else

View File

@ -26,17 +26,10 @@
*/ */
require("./pre.inc.php"); require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php"); require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/member/PDF_card.class.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/modules/member/PDF_card.class.php');
/*
*-------------------------------------------------
* Pour cr<EFBFBD>er l'objet on a 2 moyens :
* Soit on donne les valeurs en les passant dans un tableau (sert pour un format personnel)
* Soit on donne le type d'<EFBFBD>tiquette au format AVERY
*-------------------------------------------------
*/
$dir = $conf->adherent->dir_tmp; $dir = $conf->adherent->dir_tmp;
$file = $dir . "/tmplabel.pdf"; $file = $dir . "/tmplabel.pdf";
@ -75,7 +68,7 @@ $sql.= " t.libelle as type,";
$sql.= " p.libelle as pays"; $sql.= " p.libelle as pays";
$sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as t, ".MAIN_DB_PREFIX."adherent as d"; $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.= " 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 AND datefin >= ".$db->idate(mktime()); $sql.= " WHERE d.fk_adherent_type = t.rowid AND d.statut = 1";
$sql.= " ORDER BY d.rowid ASC"; $sql.= " ORDER BY d.rowid ASC";
$result = $db->query($sql); $result = $db->query($sql);
@ -100,16 +93,22 @@ if ($result)
$db->close(); $db->close();
// Output file clearstatcache();
$type = 'application/octet-stream';
$attachment=true;
if ($type) header('Content-Type: '.$type); if (! empty($conf->global->MAIN_DISABLE_FORCE_SAVEAS)) $attachment=false;
header('Content-Disposition: attachment; filename="tmplabel.pdf"'); $filename='tmplabels.pdf';
$type=dol_mimetype($filename);
if ($encoding) header('Content-Encoding: '.$encoding);
if ($type) header('Content-Type: '.$type);
if ($attachment) header('Content-Disposition: attachment; filename="'.$filename.'"');
else header('Content-Disposition: inline; filename="'.$filename.'"');
// Ajout directives pour resoudre bug IE // Ajout directives pour resoudre bug IE
header('Cache-Control: Public, must-revalidate'); header('Cache-Control: Public, must-revalidate');
header('Pragma: public'); header('Pragma: public');
readfile($file); readfile($file);
} }
else else

View File

@ -166,7 +166,7 @@ if ($_REQUEST["action"] == 'update' && ! $_POST["cancel"])
$adh->email = trim($_POST["email"]); $adh->email = trim($_POST["email"]);
$adh->naiss = $datenaiss; $adh->naiss = $datenaiss;
$adh->typeid = $_POST["type"]; $adh->typeid = $_POST["typeid"];
$adh->note = trim($_POST["comment"]); $adh->note = trim($_POST["comment"]);
$adh->morphy = $_POST["morphy"]; $adh->morphy = $_POST["morphy"];
@ -244,7 +244,7 @@ if ($user->rights->adherent->creer && $_POST["action"] == 'add')
$datecotisation=dol_mktime(12, 0 , 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]); $datecotisation=dol_mktime(12, 0 , 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]);
} }
$type=$_POST["type"]; $typeid=$_POST["typeid"];
$nom=$_POST["nom"]; $nom=$_POST["nom"];
$prenom=$_POST["prenom"]; $prenom=$_POST["prenom"];
$societe=$_POST["societe"]; $societe=$_POST["societe"];
@ -279,7 +279,7 @@ if ($user->rights->adherent->creer && $_POST["action"] == 'add')
$adh->pass = $pass; $adh->pass = $pass;
$adh->naiss = $datenaiss; $adh->naiss = $datenaiss;
$adh->photo = $photo; $adh->photo = $photo;
$adh->typeid = $type; $adh->typeid = $typeid;
$adh->note = $comment; $adh->note = $comment;
$adh->morphy = $morphy; $adh->morphy = $morphy;
foreach($_POST as $key => $value){ foreach($_POST as $key => $value){
@ -291,12 +291,12 @@ if ($user->rights->adherent->creer && $_POST["action"] == 'add')
} }
// Test validite des parametres // Test validite des parametres
if(!isset($type) || $type==''){ if (empty($typeid)) {
$error++; $error++;
$errmsg .= $langs->trans("ErrorMemberTypeNotDefined")."<br>\n"; $errmsg .= $langs->trans("ErrorMemberTypeNotDefined")."<br>\n";
} }
// Test si le login existe deja // Test si le login existe deja
if(!isset($login) || $login==''){ if (empty($login)) {
$error++; $error++;
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->trans("Login"))."<br>\n"; $errmsg .= $langs->trans("ErrorFieldRequired",$langs->trans("Login"))."<br>\n";
} }
@ -312,7 +312,7 @@ if ($user->rights->adherent->creer && $_POST["action"] == 'add')
$errmsg .= $langs->trans("ErrorLoginAlreadyExists",$login)."<br>\n"; $errmsg .= $langs->trans("ErrorLoginAlreadyExists",$login)."<br>\n";
} }
} }
if (!isset($nom) || $nom=='') { if (empty($nom)) {
$error++; $error++;
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname"))."<br>\n"; $errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname"))."<br>\n";
} }
@ -324,7 +324,7 @@ if ($user->rights->adherent->creer && $_POST["action"] == 'add')
$error++; $error++;
$errmsg .= $langs->trans("ErrorBadEMail",$email)."<br>\n"; $errmsg .= $langs->trans("ErrorBadEMail",$email)."<br>\n";
} }
if (!isset($pass) || $pass == '' ) { if (empty($pass)) {
$error++; $error++;
$errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Password"))."<br>\n"; $errmsg .= $langs->trans("ErrorFieldRequired",$langs->transnoentities("Password"))."<br>\n";
} }
@ -627,12 +627,12 @@ if ($action == 'edit')
print '<tr><td>'.$langs->trans("Type").'*</td><td>'; print '<tr><td>'.$langs->trans("Type").'*</td><td>';
if ($user->rights->adherent->creer) // If $user->rights->adherent->self->creer, we do not allow. if ($user->rights->adherent->creer) // If $user->rights->adherent->self->creer, we do not allow.
{ {
$htmls->select_array("type", $adht->liste_array(), $adh->typeid); $htmls->select_array("typeid", $adht->liste_array(), $adh->typeid);
} }
else else
{ {
print $adht->getNomUrl(1); print $adht->getNomUrl(1);
print '<input type="hidden" name="type" value="'.$adh->typeid.'">'; print '<input type="hidden" name="typeid" value="'.$adh->typeid.'">';
} }
print "</td></tr>"; print "</td></tr>";
@ -748,7 +748,7 @@ if ($action == 'create')
$listetype=$adht->liste_array(); $listetype=$adht->liste_array();
if (sizeof($listetype)) if (sizeof($listetype))
{ {
$htmls->select_array("type", $listetype, $typeid); $htmls->select_array("typeid", $listetype, $typeid);
} else { } else {
print '<font class="error">'.$langs->trans("NoTypeDefinedGoToSetup").'</font>'; print '<font class="error">'.$langs->trans("NoTypeDefinedGoToSetup").'</font>';
} }

View File

@ -46,9 +46,10 @@ $var=True;
$Adherents=array(); $Adherents=array();
$AdherentsAValider=array(); $AdherentsAValider=array();
$MemberUpToDate=array();
$AdherentsResilies=array(); $AdherentsResilies=array();
$AdherentType=array(); $AdherentType=array();
$Cotisants=array();
# Liste les adherents # Liste les adherents
$sql = "SELECT t.rowid, t.libelle, t.cotisation,"; $sql = "SELECT t.rowid, t.libelle, t.cotisation,";
@ -57,6 +58,7 @@ $sql.= " FROM ".MAIN_DB_PREFIX."adherent_type as t";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."adherent as d ON t.rowid = d.fk_adherent_type"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."adherent as d ON t.rowid = d.fk_adherent_type";
$sql.= " GROUP BY t.rowid, t.libelle, t.cotisation, d.statut"; $sql.= " GROUP BY t.rowid, t.libelle, t.cotisation, d.statut";
dol_syslog("index.php::select nb of members by type sql=".$sql, LOG_DEBUG);
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
@ -72,30 +74,27 @@ if ($result)
$adhtype->libelle=$objp->libelle; $adhtype->libelle=$objp->libelle;
$AdherentType[$objp->rowid]=$adhtype; $AdherentType[$objp->rowid]=$adhtype;
if ($objp->statut == -1) { $AdherentsAValider[$objp->rowid]=$objp->somme; } if ($objp->statut == -1) { $MemberToValidate[$objp->rowid]=$objp->somme; }
if ($objp->statut == 1) { $Adherents[$objp->rowid]=$objp->somme; } if ($objp->statut == 1) { $MembersValidated[$objp->rowid]=$objp->somme; }
if ($objp->statut == 0) { $AdherentsResilies[$objp->rowid]=$objp->somme; } if ($objp->statut == 0) { $MembersResiliated[$objp->rowid]=$objp->somme; }
if ($objp->cotisation != 'yes')
{
$Cotisants[$objp->rowid]=$Adherents[$objp->rowid]=$objp->somme;
}
else
{
$Cotisants[$objp->rowid]=0; // Calcule plus loin
}
$i++; $i++;
} }
$db->free($result); $db->free($result);
} }
# Liste les cotisants a jour // List members up to date
// current rule: uptodate = the end date is in future whatever is type
// old rule: uptodate = if type does not need payment, that end date is null, if type need payment that end date is in future)
$sql = "SELECT count(*) as somme , d.fk_adherent_type"; $sql = "SELECT count(*) as somme , d.fk_adherent_type";
$sql.= " FROM ".MAIN_DB_PREFIX."adherent as d"; $sql.= " FROM ".MAIN_DB_PREFIX."adherent as d, ".MAIN_DB_PREFIX."adherent_type as t";
$sql.= " WHERE d.statut = 1 AND d.datefin >= ".$db->idate(mktime()); //$sql.= " WHERE d.statut = 1 AND ((t.cotisation = 0 AND d.datefin IS NULL) OR d.datefin >= ".$db->idate(gmmktime()).')';
$sql.= " WHERE d.statut = 1 AND d.datefin >= ".$db->idate(gmmktime());
$sql.= " AND t.rowid = d.fk_adherent_type";
$sql.= " GROUP BY d.fk_adherent_type"; $sql.= " GROUP BY d.fk_adherent_type";
dol_syslog("index.php::select nb of uptodate members by type sql=".$sql, LOG_DEBUG);
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
@ -104,7 +103,7 @@ if ($result)
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$Cotisants[$objp->fk_adherent_type]=$objp->somme; $MemberUpToDate[$objp->fk_adherent_type]=$objp->somme;
$i++; $i++;
} }
$db->free(); $db->free();
@ -145,7 +144,7 @@ $SommeD=0;
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Type").'</td>'; print '<td>'.$langs->trans("MembersTypes").'</td>';
print '<td align=right>'.$langs->trans("MembersStatusToValid").'</td>'; print '<td align=right>'.$langs->trans("MembersStatusToValid").'</td>';
print '<td align=right>'.$langs->trans("MenuMembersNotUpToDate").'</td>'; print '<td align=right>'.$langs->trans("MenuMembersNotUpToDate").'</td>';
print '<td align=right>'.$langs->trans("MenuMembersUpToDate").'</td>'; print '<td align=right>'.$langs->trans("MenuMembersUpToDate").'</td>';
@ -157,21 +156,21 @@ foreach ($AdherentType as $key => $adhtype)
$var=!$var; $var=!$var;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
print '<td><a href="type.php?rowid='.$adhtype->id.'">'.img_object($langs->trans("ShowType"),"group").' '.$adhtype->libelle.'</a></td>'; print '<td><a href="type.php?rowid='.$adhtype->id.'">'.img_object($langs->trans("ShowType"),"group").' '.$adhtype->libelle.'</a></td>';
print '<td align="right">'.(isset($AdherentsAValider[$key]) && $AdherentsAValider[$key] > 0?$AdherentsAValider[$key]:'').' '.$staticmember->LibStatut(-1,$adhtype->cotisation,0,3).'</td>'; print '<td align="right">'.(isset($MemberToValidate[$key]) && $MemberToValidate[$key] > 0?$MemberToValidate[$key]:'').' '.$staticmember->LibStatut(-1,$adhtype->cotisation,0,3).'</td>';
print '<td align="right">'.(isset($Adherents[$key]) && ($Adherents[$key]-$Cotisants[$key] > 0) ? $Adherents[$key]-$Cotisants[$key]:'').' '.$staticmember->LibStatut(1,$adhtype->cotisation,0,3).'</td>'; print '<td align="right">'.(isset($MembersValidated[$key]) && ($MembersValidated[$key]-$MemberUpToDate[$key] > 0) ? $MembersValidated[$key]-$MemberUpToDate[$key]:'').' '.$staticmember->LibStatut(1,$adhtype->cotisation,0,3).'</td>';
print '<td align="right">'.(isset($Cotisants[$key]) && $Cotisants[$key] > 0 ? $Cotisants[$key]:'').' '.$staticmember->LibStatut(1,$adhtype->cotisation,mktime(),3).'</td>'; print '<td align="right">'.(isset($MemberUpToDate[$key]) && $MemberUpToDate[$key] > 0 ? $MemberUpToDate[$key]:'').' '.$staticmember->LibStatut(1,$adhtype->cotisation,gmmktime(),3).'</td>';
print '<td align="right">'.(isset($AdherentsResilies[$key]) && $AdherentsResilies[$key]> 0 ?$AdherentsResilies[$key]:'').' '.$staticmember->LibStatut(0,$adhtype->cotisation,0,3).'</td>'; print '<td align="right">'.(isset($MembersResiliated[$key]) && $MembersResiliated[$key]> 0 ?$MembersResiliated[$key]:'').' '.$staticmember->LibStatut(0,$adhtype->cotisation,0,3).'</td>';
print "</tr>\n"; print "</tr>\n";
$SommeA+=isset($AdherentsAValider[$key])?$AdherentsAValider[$key]:0; $SommeA+=isset($MemberToValidate[$key])?$MemberToValidate[$key]:0;
$SommeB+=isset($Adherents[$key])?$Adherents[$key]-$Cotisants[$key]:0; $SommeB+=isset($MembersValidated[$key])?$MembersValidated[$key]-$MemberUpToDate[$key]:0;
$SommeC+=isset($Cotisants[$key])?$Cotisants[$key]:0; $SommeC+=isset($MemberUpToDate[$key])?$MemberUpToDate[$key]:0;
$SommeD+=isset($AdherentsResilies[$key])?$AdherentsResilies[$key]:0; $SommeD+=isset($MembersResiliated[$key])?$MembersResiliated[$key]:0;
} }
print '<tr class="liste_total">'; print '<tr class="liste_total">';
print '<td> <b>'.$langs->trans("Total").'</b> </td>'; print '<td> <b>'.$langs->trans("Total").'</b> </td>';
print '<td align="right"><b>'.$SommeA.' '.$staticmember->LibStatut(-1,$adhtype->cotisation,0,3).'</b></td>'; print '<td align="right"><b>'.$SommeA.' '.$staticmember->LibStatut(-1,$adhtype->cotisation,0,3).'</b></td>';
print '<td align="right"><b>'.$SommeB.' '.$staticmember->LibStatut(1,$adhtype->cotisation,0,3).'</b></td>'; print '<td align="right"><b>'.$SommeB.' '.$staticmember->LibStatut(1,$adhtype->cotisation,0,3).'</b></td>';
print '<td align="right"><b>'.$SommeC.' '.$staticmember->LibStatut(1,$adhtype->cotisation,mktime(),3).'</b></td>'; print '<td align="right"><b>'.$SommeC.' '.$staticmember->LibStatut(1,$adhtype->cotisation,gmmktime(),3).'</b></td>';
print '<td align="right"><b>'.$SommeD.' '.$staticmember->LibStatut(0,$adhtype->cotisation,0,3).'</b></td>'; print '<td align="right"><b>'.$SommeD.' '.$staticmember->LibStatut(0,$adhtype->cotisation,0,3).'</b></td>';
print '</tr>'; print '</tr>';
@ -229,7 +228,7 @@ else
// Tableau r<>sum<75> par an // List of subscription by year
$Total=array(); $Total=array();
$Number=array(); $Number=array();
$tot=0; $tot=0;
@ -261,7 +260,7 @@ if ($result)
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td>'.$langs->trans("Year").'</td>'; print '<td>'.$langs->trans("Subscriptions").'</td>';
print '<td align="right">'.$langs->trans("Number").'</td>'; print '<td align="right">'.$langs->trans("Number").'</td>';
print '<td align="right">'.$langs->trans("AmountTotal").'</td>'; print '<td align="right">'.$langs->trans("AmountTotal").'</td>';
print '<td align="right">'.$langs->trans("AmountAverage").'</td>'; print '<td align="right">'.$langs->trans("AmountAverage").'</td>';