Correction du champ info "contact facturation" pour rcuprer les donnes dans la bonne table.

This commit is contained in:
Laurent Destailleur 2005-12-03 22:07:43 +00:00
parent c4984ac65f
commit 368eaa8d37
4 changed files with 92 additions and 44 deletions

View File

@ -58,6 +58,11 @@ class Contact
var $email;
var $birthday;
var $ref_facturation; // Nb de reference facture pour lequel il est contact
var $ref_contrat; // Nb de reference contrat pour lequel il est contact
var $ref_commande; // Nb de reference commande pour lequel il est contact
var $ref_propal; // Nb de reference propal pour lequel il est contact
/**
* \brief Constructeur de l'objet contact
* \param DB Habler d'accès base
@ -428,13 +433,13 @@ class Contact
}
/*
* \brief Charge l'objet contact
* \param id id du contact
* \param user Utilisateur lié au contact pour une alerte
* \return int 1 si ok, -1 si erreur
*/
function fetch($id, $user=0)
/*
* \brief Charge l'objet contact
* \param id id du contact
* \param user Utilisateur lié au contact pour une alerte
* \return int 1 si ok, -1 si erreur
*/
function fetch($id, $user=0)
{
$sql = "SELECT c.idp, c.fk_soc, c.civilite civilite_id, c.name, c.firstname,";
$sql.= " c.address, c.cp, c.ville,";
@ -494,6 +499,7 @@ class Contact
$this->db->free($resql);
// Recherche le user Dolibarr lié à ce contact
$sql = "SELECT u.rowid ";
$sql .= " FROM ".MAIN_DB_PREFIX."user as u";
$sql .= " WHERE u.fk_socpeople = ". $id;
@ -516,32 +522,7 @@ class Contact
return -1;
}
$sql = "SELECT count(*) as nb";
$sql .= " FROM ".MAIN_DB_PREFIX."contact_facture";
$sql .= " WHERE fk_contact = ". $id;
$resql=$this->db->query($sql);
if ($resql)
{
$obj=$this->db->fetch_object($resql);
if ($obj->nb)
{
$this->facturation = 1;
}
else
{
$this->facturation = 0;
}
$this->db->free($resql);
}
else
{
dolibarr_syslog("Error in Contact::fetch() selectcontactfacture sql=$sql");
$this->error="Error in Contact::fetch() selectcontactfacture - ".$this->db->error()." - ".$sql;
return -1;
}
// Charge alertes du user
if ($user)
{
$sql = "SELECT fk_user";
@ -577,6 +558,45 @@ class Contact
}
}
/*
* \brief Charge le nombre d'elements auquel est lié ce contact
* ref_facturation
* ref_contrat
* ref_commande
* ref_propale
* \return int 1 si ok, -1 si erreur
*/
function load_ref_elements()
{
// Compte les elements pour lesquels il est contact
$sql ="SELECT tc.element, count(ec.rowid) as nb";
$sql.=" FROM ".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc";
$sql.=" WHERE ec.fk_c_type_contact = tc.rowid";
$sql.=" AND element_id = ". $id;
$sql.=" GROUP BY tc.element";
$resql=$this->db->query($sql);
if ($resql)
{
$obj=$this->db->fetch_object($resql);
if ($obj->nb)
{
if ($obj->element=='facture') $this->ref_facturation = $obj->nb;
if ($obj->element=='contrat') $this->ref_contrat = $obj->nb;
if ($obj->element=='commande') $this->ref_commande = $obj->nb;
if ($obj->element=='propal') $this->ref_propal = $obj->nb;
}
$this->db->free($resql);
}
else
{
dolibarr_syslog("Error in Contact::fetch() selectcontactfacture sql=$sql");
$this->error="Error in Contact::fetch() selectcontactfacture - ".$this->db->error()." - ".$sql;
return -1;
}
}
/*
* \brief Efface le contact de la base et éventuellement de l'annuaire LDAP

View File

@ -276,10 +276,6 @@ if ($_GET["action"] == 'create')
print '<tr><td valign="top">'.$langs->trans("Note").'</td><td colspan="3" valign="note"><textarea name="note" cols="70" rows="'.ROWS_3.'">'.$contact->note.'</textarea></td></tr>';
print '<tr><td>'.$langs->trans("BillingContact").'</td><td colspan="3">';
print $form->selectyesno("facturation",$contact->facturation);
print '</td></tr>';
print '<tr><td align="center" colspan="4"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td></tr>';
print "</table><br>";
@ -365,10 +361,22 @@ elseif ($_GET["action"] == 'edit' && $_GET["id"])
print $contact->note;
print '</textarea></td></tr>';
print '<tr><td>'.$langs->trans("BillingContact").'</td><td colspan="3">';
print $form->selectyesno("facturation",$contact->facturation);
print '</td></tr>';
$contact->load_ref_elements();
if ($conf->facture->enabled)
{
print '<tr><td>'.$langs->trans("ContactForInvoices").'</td><td colspan="3">';
print $contact->ref_facturation?$contact->ref_facturation:$langs->trans("NoContactForAnyInvoice");
print '</td></tr>';
}
if ($conf->contrat->enabled)
{
print '<tr><td>'.$langs->trans("ContactForContracts").'</td><td colspan="3">';
print $contact->ref_contrat?$contact->ref_contrat:$langs->trans("NoContactForAnyContract");
print '</td></tr>';
}
print '<tr><td>'.$langs->trans("DolibarrLogin").'</td><td colspan="3">';
if ($contact->user_id) print '<a href="'.DOL_URL_ROOT.'/user/fiche.php?id='.$contact->user_id.'">'.$contact->user_login.'</a>';
else print $langs->trans("NoDolibarrAccess");
@ -454,9 +462,21 @@ elseif ($_GET["id"])
print nl2br($contact->note);
print '</td></tr>';
print '<tr><td>'.$langs->trans("BillingContact").'</td><td colspan="3">';
print yn($contact->facturation);
print '</td></tr>';
$contact->load_ref_elements();
if ($conf->facture->enabled)
{
print '<tr><td>'.$langs->trans("ContactForInvoices").'</td><td colspan="3">';
print $contact->ref_facturation?$contact->ref_facturation:$langs->trans("NoContactForAnyInvoice");
print '</td></tr>';
}
if ($conf->contrat->enabled)
{
print '<tr><td>'.$langs->trans("ContactForContracts").'</td><td colspan="3">';
print $contact->ref_contrat?$contact->ref_contrat:$langs->trans("NoContactForAnyContract");
print '</td></tr>';
}
print '<tr><td>'.$langs->trans("DolibarrLogin").'</td><td colspan="3">';
if ($contact->user_id) print '<a href="'.DOL_URL_ROOT.'/user/fiche.php?id='.$contact->user_id.'">'.$contact->user_login.'</a>';

View File

@ -85,6 +85,10 @@ ShowCompany=Show company
ShowContact=Show contact
ContactsAllShort=All
ContactType=Contact type
ContactForInvoices=Invoices' contact
ContactForContracts=Contracts' contact
NoContactForAnyInvoice=This contact is not contact for any invoice
NoContactForAnyContract=This contact is not contact for any contract
NewContact=New contact
LastContacts=Last contacts
MyContacts=My contacts

View File

@ -85,6 +85,10 @@ ShowCompany=Afficher soci
ShowContact=Afficher contact
ContactsAllShort=Tous
ContactType=Type de contact
ContactForInvoices=Contact de factures
ContactForContracts=Contact de contrats
NoContactForAnyInvoice=Ce contact n'est contact d'aucune facture
NoContactForAnyContract=Ce contact n'est contact d'aucun contrat
NewContact=Nouveau contact
LastContacts=Derniers contacts
MyContacts=Mes contacts