New: Ajout d'informations dans le tableau de bord Dolibarr.

This commit is contained in:
Laurent Destailleur 2005-08-12 21:45:18 +00:00
parent 7c7e9c1bb1
commit 9bf544f727
9 changed files with 493 additions and 71 deletions

View File

@ -1280,5 +1280,67 @@ class Adherent
if ($statut == 0) return $langs->trans("MemberStatusResiliated"); if ($statut == 0) return $langs->trans("MemberStatusResiliated");
} }
/**
* \brief Charge indicateurs this->nb de tableau de bord
* \return int <0 si ko, >0 si ok
*/
function load_state_board()
{
global $conf;
$this->nb=array();
$sql = "SELECT count(a.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."adherent as a";
$sql.= " WHERE a.statut > 0";
$resql=$this->db->query($sql);
if ($resql)
{
while ($obj=$this->db->fetch_object($resql))
{
$this->nb["members"]=$obj->nb;
}
return 1;
}
else
{
dolibarr_print_error($this->db);
$this->error=$this->db->error();
return -1;
}
}
/**
* \brief Charge indicateurs this->nbtodo et this->nbtodolate de tableau de bord
* \return int <0 si ko, >0 si ok
*/
function load_board()
{
global $conf;
$this->nbtodo=$this->nbtodolate=0;
$sql = "SELECT a.rowid,".$this->db->pdate("a.datefin")." as datefin";
$sql.= " FROM ".MAIN_DB_PREFIX."adherent as a";
$sql.= " WHERE a.statut=1";
$resql=$this->db->query($sql);
if ($resql)
{
while ($obj=$this->db->fetch_object($resql))
{
$this->nbtodo++;
if ($obj->datefin < (time() - $conf->adherent->cotisation->warning_delay)) $this->nbtodolate++;
}
return 1;
}
else
{
dolibarr_print_error($this->db);
$this->error=$this->db->error();
return -1;
}
}
} }
?> ?>

View File

@ -97,7 +97,7 @@ if ($result)
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Name")." / ".$langs->trans("Company"),"liste.php","d.nom","&page=$page&statut=$statut","","",$sortfield); print_liste_field_titre($langs->trans("Name")." / ".$langs->trans("Company"),"liste.php","d.nom","&page=$page&statut=$statut","","",$sortfield);
print_liste_field_titre($langs->trans("DateAbonment"),"liste.php","t.cotisation","&page=$page&statut=$statut","","",$sortfield); print_liste_field_titre($langs->trans("EndSubscription"),"liste.php","t.cotisation","&page=$page&statut=$statut","","",$sortfield);
print_liste_field_titre($langs->trans("EMail"),"liste.php","d.email","&page=$page&statut=$statut","","",$sortfield); print_liste_field_titre($langs->trans("EMail"),"liste.php","d.email","&page=$page&statut=$statut","","",$sortfield);
print_liste_field_titre($langs->trans("Type"),"liste.php","t.libelle","&page=$page&statut=$statut","","",$sortfield); print_liste_field_titre($langs->trans("Type"),"liste.php","t.libelle","&page=$page&statut=$statut","","",$sortfield);
print_liste_field_titre($langs->trans("Person"),"liste.php","d.morphy","&page=$page&statut=$statut","","",$sortfield); print_liste_field_titre($langs->trans("Person"),"liste.php","d.morphy","&page=$page&statut=$statut","","",$sortfield);

View File

@ -20,63 +20,102 @@
* *
*/ */
/*! \file htdocs/client.class.php /**
\file htdocs/client.class.php
\ingroup societe \ingroup societe
\brief Fichier de la classe des clients \brief Fichier de la classe des clients
\version $Revision$ \version $Revision$
*/ */
/*! \class Client /**
\brief Classe permettant la gestion des clients \class Client
\brief Classe permettant la gestion des clients
*/ */
include_once DOL_DOCUMENT_ROOT."/societe.class.php"; include_once DOL_DOCUMENT_ROOT."/societe.class.php";
class Client extends Societe {
var $db;
/** class Client extends Societe
* \brief Constructeur de la classe {
* \param DB handler accès base de données var $db;
* \param id id societe (0 par defaut)
*/
function Client($DB, $id=0)
{
global $config;
$this->db = $DB;
$this->id = $id;
$this->factures = array();
return 0;
}
function read_factures()
{
$sql = "SELECT rowid, facnumber";
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql .= " WHERE f.fk_soc = ".$this->id;
$sql .= " ORDER BY datef DESC";
$result = $this->db->query($sql) ; /**
$i = 0; * \brief Constructeur de la classe
if ( $result ) * \param DB handler accès base de données
{ * \param id id societe (0 par defaut)
$num = $this->db->num_rows(); */
function Client($DB, $id=0)
while ($i < $num ) {
{ global $config;
$row = $this->db->fetch_row();
$this->db = $DB;
$this->id = $id;
$this->factures = array();
return 0;
}
function read_factures()
{
$sql = "SELECT rowid, facnumber";
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql .= " WHERE f.fk_soc = ".$this->id;
$sql .= " ORDER BY datef DESC";
$result = $this->db->query($sql) ;
$i = 0;
if ( $result )
{
$num = $this->db->num_rows();
while ($i < $num )
{
$row = $this->db->fetch_row();
$this->factures[$i][0] = $row[0];
$this->factures[$i][1] = $row[1];
$i++;
}
}
return $result;
}
$this->factures[$i][0] = $row[0];
$this->factures[$i][1] = $row[1]; /**
* \brief Charge indicateurs this->nb de tableau de bord
* \return int <0 si ko, >0 si ok
*/
function load_state_board()
{
global $conf;
$this->nb=array();
$i++; $sql = "SELECT count(s.idp) as nb, s.client";
} $sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
} $sql.= " WHERE s.client in (1,2)";
return $result; $sql.= " GROUP BY s.client";
} $resql=$this->db->query($sql);
if ($resql)
{
while ($obj=$this->db->fetch_object($resql))
{
if ($obj->client == 1) $this->nb["customers"]=$obj->nb;
if ($obj->client == 2) $this->nb["prospects"]=$obj->nb;
}
return 1;
}
else
{
dolibarr_print_error($this->db);
$this->error=$this->db->error();
return -1;
}
}
} }
?> ?>

View File

@ -464,6 +464,36 @@ class Account
} }
/**
* \brief Charge indicateurs this->nbtodo et this->nbtodolate de tableau de bord
* \return int <0 si ko, >0 si ok
*/
function load_board()
{
global $conf;
$this->nbtodo=$this->nbtodolate=0;
$sql = "SELECT b.rowid,".$this->db->pdate("b.datev")." as datefin";
$sql.= " FROM ".MAIN_DB_PREFIX."bank as b";
$sql.= " WHERE b.rappro=0";
$resql=$this->db->query($sql);
if ($resql)
{
while ($obj=$this->db->fetch_object($resql))
{
$this->nbtodo++;
if ($obj->datefin < (time() - $conf->bank->rappro->warning_delay)) $this->nbtodolate++;
}
return 1;
}
else
{
dolibarr_print_error($this->db);
$this->error=$this->db->error();
return -1;
}
}
} }
?> ?>

View File

@ -159,6 +159,38 @@ class Fournisseur extends Societe {
$commf->addline("Toto",120,1,$prod->tva, $prod->id, 0, $prod->ref_fourn); $commf->addline("Toto",120,1,$prod->tva, $prod->id, 0, $prod->ref_fourn);
} }
} }
/**
* \brief Charge indicateurs this->nb de tableau de bord
* \return int <0 si ko, >0 si ok
*/
function load_state_board()
{
global $conf;
$this->nb=array();
$sql = "SELECT count(s.idp) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE s.fournisseur = 1";
$resql=$this->db->query($sql);
if ($resql)
{
while ($obj=$this->db->fetch_object($resql))
{
$this->nb["suppliers"]=$obj->nb;
}
return 1;
}
else
{
dolibarr_print_error($this->db);
$this->error=$this->db->error();
return -1;
}
}
} }
?> ?>

View File

@ -128,15 +128,143 @@ else
} }
*/ */
/*
* Dolibarr State Board
*/
print '<br>';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">';
print '<td colspan="2">'.$langs->trans("DolibarrStateBoard").'</td>';
print '<td align="right">&nbsp;</td>';
print '</tr>';
$var=true;
// Nbre de sociétés clients/prospects
if ($conf->societe->enabled)
{
include_once("./client.class.php");
$board=new Client($db);
$board->load_state_board();
foreach($board->nb as $key=>$val)
{
$var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Customers"),"company").'</td>';
print '<td>';
if ($key == "customers") print $langs->trans("Customers");
if ($key == "prospects") print $langs->trans("Prospects");
print '</td>';
print '<td align="right">';
if ($key == "customers") print '<a href="'.DOL_URL_ROOT.'/comm/clients.php">';
if ($key == "prospects") print '<a href="'.DOL_URL_ROOT.'/comm/clients.php">';
print $val;
print '</a></td>';
print '</tr>';
}
}
// Nbre de sociétés fournisseurs
if ($conf->fournisseur->enabled)
{
include_once("./fourn/fournisseur.class.php");
$board=new Fournisseur($db);
$board->load_state_board();
foreach($board->nb as $key=>$val)
{
$var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Suppliers"),"company").'</td>';
print '<td>';
if ($key == "suppliers") print $langs->trans("Suppliers");
print '</td>';
print '<td align="right">';
if ($key == "suppliers") print '<a href="'.DOL_URL_ROOT.'/fourn/liste.php">';
print $val;
print '</a></td>';
print '</tr>';
}
}
// Nbre d'adhérents
if ($conf->adherent->enabled)
{
include_once("./adherents/adherent.class.php");
$board=new Adherent($db);
$board->load_state_board();
foreach($board->nb as $key=>$val)
{
$var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Adherent"),"user").'</td>';
print '<td>';
if ($key == "members") print $langs->trans("Adherents");
print '</td>';
print '<td align="right">';
if ($key == "members") print '<a href="'.DOL_URL_ROOT.'/adherents/liste.php?statut=1&amp;mainmenu=members">';
print $val;
print '</a></td>';
print '</tr>';
}
}
// Nbre de produits
if ($conf->produit->enabled)
{
//include_once("./product.class.php");
$board=new Product($db);
$board->load_state_board();
foreach($board->nb as $key=>$val)
{
$var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Producst"),"product").'</td>';
print '<td>';
if ($key == "products") print $langs->trans("Products");
print '</td>';
print '<td align="right">';
if ($key == "products") print '<a href="'.DOL_URL_ROOT.'/product/liste.php?type=0&amp;mainmenu=products">';
print $val;
print '</a></td>';
print '</tr>';
}
}
// Nbre de services
if ($conf->service->enabled)
{
include_once("./service.class.php");
$board=new Service($db);
$board->load_state_board();
foreach($board->nb as $key=>$val)
{
$var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Services"),"service").'</td>';
print '<td>';
if ($key == "services") print $langs->trans("Services");
print '</td>';
print '<td align="right">';
if ($key == "services") print '<a href="'.DOL_URL_ROOT.'/product/liste.php?type=1&amp;mainmenu=products">';
print $val;
print '</a></td>';
print '</tr>';
}
}
print '</table>';
print '</td><td width="65%" valign="top" class="notopnoleftnoright">'; print '</td><td width="65%" valign="top" class="notopnoleftnoright">';
/* /*
* Dolibarr Board * Dolibarr Work Board
*/ */
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td colspan="2">'.$langs->trans("DolibarrBoard").'</td>'; print '<td colspan="2">'.$langs->trans("DolibarrWorkBoard").'</td>';
print '<td align="right">'.$langs->trans("Number").'</td>'; print '<td align="right">'.$langs->trans("Number").'</td>';
print '<td align="right">'.$langs->trans("Late").'</td>'; print '<td align="right">'.$langs->trans("Late").'</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
@ -151,15 +279,17 @@ if ($conf->commercial->enabled || $conf->compta->enabled)
include_once("./actioncomm.class.php"); include_once("./actioncomm.class.php");
$board=new ActionComm($db); $board=new ActionComm($db);
$board->load_board(); $board->load_board();
$board->warning_delay=$conf->actions->warning_delay/60/60/24;
$board->label=$langs->trans("ActionsToDo");
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Actions"),"task").'</td><td>'.$langs->trans("ActionsToDo").'</td>'; print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Actions"),"task").'</td><td>'.$board->label.'</td>';
print '<td align="right"><a href="'.DOL_URL_ROOT.'/comm/action/index.php?status=todo">'.$board->nbtodo.'</a></td>'; print '<td align="right"><a href="'.DOL_URL_ROOT.'/comm/action/index.php?status=todo">'.$board->nbtodo.'</a></td>';
print '<td align="right">'; print '<td align="right">';
print '<a href="'.DOL_URL_ROOT.'/comm/action/index.php?status=todo">'; print '<a href="'.DOL_URL_ROOT.'/comm/action/index.php?status=todo">';
print $board->nbtodolate; print $board->nbtodolate;
print '</a></td><td nowrap align="right">'; print '</a></td><td nowrap align="right">';
print ' (>'.ceil($conf->actions->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ' (>'.ceil($board->warning_delay).' '.$langs->trans("days").')';
print '</td>'; print '</td>';
print '<td>'; print '<td>';
if ($board->nbtodolate > 0) print img_picto($langs->trans("Late"),"warning"); if ($board->nbtodolate > 0) print img_picto($langs->trans("Late"),"warning");
@ -237,6 +367,56 @@ if ($conf->propal->enabled && $user->rights->propale->lire)
print '</tr>'; print '</tr>';
} }
// Nbre services à activer (en retard)
if ($conf->contrat->enabled && $user->rights->contrat->lire)
{
$langs->load("contracts");
include_once("./contrat/contrat.class.php");
$board=new Contrat($db);
$board->load_board("inactives");
$var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Contract"),"contract").'</td><td>'.$langs->trans("BoardNotActivatedServices").'</td>';
print '<td align="right"><a href="'.DOL_URL_ROOT.'/contrat/services.php?mainmenu=commercial&leftmenu=contracts&mode=0">'.$board->nbtodo.'</a></td>';
print '<td align="right">';
print '<a href="'.DOL_URL_ROOT.'/contrat/services.php?mainmenu=commercial&leftmenu=contracts&mode=0">';
print $board->nbtodolate;
print '</a></td><td nowrap align="right">';
print ' (>'.ceil($conf->contrat->services->inactifs->warning_delay/60/60/24).' '.$langs->trans("days").')';
print '</td>';
print '<td>';
if ($board->nbtodolate > 0) print img_picto($langs->trans("Late"),"warning");
else print '&nbsp;';
print '</td>';
print '</tr>';
}
// Nbre services actifs (à renouveler)
if ($conf->contrat->enabled && $user->rights->contrat->lire)
{
$langs->load("contracts");
include_once("./contrat/contrat.class.php");
$board=new Contrat($db);
$board->load_board("expired");
$var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Contract"),"contract").'</td><td>'.$langs->trans("BoardRunningServices").'</td>';
print '<td align="right"><a href="'.DOL_URL_ROOT.'/contrat/services.php?mainmenu=commercial&leftmenu=contracts&mode=4">'.$board->nbtodo.'</a></td>';
print '<td align="right">';
print '<a href="'.DOL_URL_ROOT.'/contrat/services.php?mainmenu=commercial&leftmenu=contracts&mode=4">';
print $board->nbtodolate;
print '</a></td><td nowrap align="right">';
print ' (>'.ceil($conf->contrat->services->expires->warning_delay/60/60/24).' '.$langs->trans("days").')';
print '</td>';
print '<td>';
if ($board->nbtodolate > 0) print img_picto($langs->trans("Late"),"warning");
else print '&nbsp;';
print '</td>';
print '</tr>';
}
// Nbre factures fournisseurs (à payer) // Nbre factures fournisseurs (à payer)
if ($conf->fournisseur->enabled && $conf->facture->enabled && $user->rights->facture->lire) if ($conf->fournisseur->enabled && $conf->facture->enabled && $user->rights->facture->lire)
{ {
@ -283,23 +463,23 @@ if ($conf->facture->enabled && $user->rights->facture->lire)
print '</tr>'; print '</tr>';
} }
// Nbre services à activer (en retard) // Nbre ecritures à rapprocher
if ($conf->contrat->enabled && $user->rights->contrat->lire) if ($conf->banque->enabled && $user->rights->banque->lire)
{ {
$langs->load("contracts"); $langs->load("banks");
include_once("./contrat/contrat.class.php"); //include_once("./compta/bank/account.class.php");
$board=new Contrat($db); $board=new Account($db);
$board->load_board("inactives"); $board->load_board();
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Contract"),"contract").'</td><td>'.$langs->trans("BoardNotActivatedServices").'</td>'; print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("TransactionsToConciliate"),"payment").'</td><td>'.$langs->trans("TransactionsToConciliate").'</td>';
print '<td align="right"><a href="'.DOL_URL_ROOT.'/contrat/services.php?mainmenu=commercial&leftmenu=contracts&mode=0">'.$board->nbtodo.'</a></td>'; print '<td align="right"><a href="'.DOL_URL_ROOT.'/compta/bank/index.php?leftmenu=bank&mainmenu=bank">'.$board->nbtodo.'</a></td>';
print '<td align="right">'; print '<td align="right">';
print '<a href="'.DOL_URL_ROOT.'/contrat/services.php?mainmenu=commercial&leftmenu=contracts&mode=0">'; print '<a href="'.DOL_URL_ROOT.'/compta/bank/index.php?leftmenu=bank&mainmenu=bank">';
print $board->nbtodolate; print $board->nbtodolate;
print '</a></td><td nowrap align="right">'; print '</a></td><td nowrap align="right">';
print ' (>'.ceil($conf->contrat->services->inactifs->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ' (>'.ceil($conf->bank->rappro->warning_delay/60/60/24).' '.$langs->trans("days").')';
print '</td>'; print '</td>';
print '<td>'; print '<td>';
if ($board->nbtodolate > 0) print img_picto($langs->trans("Late"),"warning"); if ($board->nbtodolate > 0) print img_picto($langs->trans("Late"),"warning");
@ -308,23 +488,23 @@ if ($conf->contrat->enabled && $user->rights->contrat->lire)
print '</tr>'; print '</tr>';
} }
// Nbre services actifs (à renouveler) // Nbre adhérent valides (attente cotisation)
if ($conf->contrat->enabled && $user->rights->contrat->lire) if ($conf->adherent->enabled && $user->rights->adherent->lire)
{ {
$langs->load("contracts"); $langs->load("members");
include_once("./contrat/contrat.class.php"); include_once("./adherents/adherent.class.php");
$board=new Contrat($db); $board=new Adherent($db);
$board->load_board("expired"); $board->load_board();
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Contract"),"contract").'</td><td>'.$langs->trans("BoardRunningServices").'</td>'; print '<tr '.$bc[$var].'><td width="16">'.img_object($langs->trans("Members"),"user").'</td><td>'.$langs->trans("Members").'</td>';
print '<td align="right"><a href="'.DOL_URL_ROOT.'/contrat/services.php?mainmenu=commercial&leftmenu=contracts&mode=4">'.$board->nbtodo.'</a></td>'; print '<td align="right"><a href="'.DOL_URL_ROOT.'/adherents/liste.php?mainmenu=members&statut=1">'.$board->nbtodo.'</a></td>';
print '<td align="right">'; print '<td align="right">';
print '<a href="'.DOL_URL_ROOT.'/contrat/services.php?mainmenu=commercial&leftmenu=contracts&mode=4">'; print '<a href="'.DOL_URL_ROOT.'/adherents/liste.php?mainmenu=members&statut=1">';
print $board->nbtodolate; print $board->nbtodolate;
print '</a></td><td nowrap align="right">'; print '</a></td><td nowrap align="right">';
print ' (>'.ceil($conf->contrat->services->expires->warning_delay/60/60/24).' '.$langs->trans("days").')'; print ' (>'.ceil($conf->adherent->cotisation->warning_delay/60/60/24).' '.$langs->trans("days").')';
print '</td>'; print '</td>';
print '<td>'; print '<td>';
if ($board->nbtodolate > 0) print img_picto($langs->trans("Late"),"warning"); if ($board->nbtodolate > 0) print img_picto($langs->trans("Late"),"warning");

View File

@ -381,6 +381,8 @@ $conf->facture->fournisseur->warning_delay=2*24*60*60;
$conf->facture->client->warning_delay=31*24*60*60; // 1 mois $conf->facture->client->warning_delay=31*24*60*60; // 1 mois
$conf->contrat->services->inactifs->warning_delay=0*24*60*60; $conf->contrat->services->inactifs->warning_delay=0*24*60*60;
$conf->contrat->services->expires->warning_delay=0*24*60*60; $conf->contrat->services->expires->warning_delay=0*24*60*60;
$conf->adherent->cotisation->warning_delay=31*24*60*60; // 1 mois
$conf->bank->rappro->warning_delay=2*31*24*60*60; // 2 mois
/* /*
*/ */

View File

@ -1145,5 +1145,37 @@ class Product
return $tabobj; return $tabobj;
} }
/**
* \brief Charge indicateurs this->nb de tableau de bord
* \return int <0 si ko, >0 si ok
*/
function load_state_board()
{
global $conf;
$this->nb=array();
$sql = "SELECT count(p.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$sql.= " WHERE p.fk_product_type = 0";
$resql=$this->db->query($sql);
if ($resql)
{
while ($obj=$this->db->fetch_object($resql))
{
$this->nb["products"]=$obj->nb;
}
return 1;
}
else
{
dolibarr_print_error($this->db);
$this->error=$this->db->error();
return -1;
}
}
} }
?> ?>

View File

@ -1,5 +1,6 @@
<?php <?php
/* Copyright (C) 2002 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -20,7 +21,21 @@
* *
*/ */
class Service { /**
\file htdocs/service.class.php
\ingroup service
\brief Fichier de la classe des services prédéfinis
\version $Revision$
*/
/**
\class Service
\brief Classe permettant la gestion des services prédéfinis
*/
class Service
{
var $db; var $db;
var $id; var $id;
@ -179,6 +194,36 @@ class Service {
} }
} }
/**
* \brief Charge indicateurs this->nb de tableau de bord
* \return int <0 si ko, >0 si ok
*/
function load_state_board()
{
global $conf;
$this->nb=array();
$sql = "SELECT count(p.rowid) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$sql.= " WHERE p.fk_product_type = 1";
$resql=$this->db->query($sql);
if ($resql)
{
while ($obj=$this->db->fetch_object($resql))
{
$this->nb["services"]=$obj->nb;
}
return 1;
}
else
{
dolibarr_print_error($this->db);
$this->error=$this->db->error();
return -1;
}
}
} }
?> ?>