Fix: Regression. Le contact doit toujours apparaitre dans la liste des contacts car il doit pouvoir etre sélectionner pour un autre type.

Fix: bug #21119 : Mettre un message d'erreur plus clair si doublon contact
This commit is contained in:
Laurent Destailleur 2007-10-31 12:55:01 +00:00
parent e65cc0ab87
commit 51468b6c0a
10 changed files with 120 additions and 69 deletions

View File

@ -17,7 +17,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* *
* $Id$ * $Id$
* $Source$
*/ */
/** /**
@ -62,11 +61,20 @@ if ($_POST["action"] == 'addcontact' && $user->rights->propale->creer)
{ {
Header("Location: contact.php?propalid=".$propal->id); Header("Location: contact.php?propalid=".$propal->id);
exit; exit;
} else }
else
{
if ($propal->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
{
$langs->load("errors");
$mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
}
else
{ {
$mesg = '<div class="error">'.$propal->error.'</div>'; $mesg = '<div class="error">'.$propal->error.'</div>';
} }
} }
}
// modification d'un contact. On enregistre le type // modification d'un contact. On enregistre le type
if ($_POST["action"] == 'updateligne' && $user->rights->propale->creer) if ($_POST["action"] == 'updateligne' && $user->rights->propale->creer)
{ {
@ -221,7 +229,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des users déjà sélectionnés // On récupère les id des users déjà sélectionnés
$userAlreadySelected = $propal->getListContactId('internal'); //$userAlreadySelected = $propal->getListContactId('internal'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_users($user->id,'contactid',0,$userAlreadySelected); $html->select_users($user->id,'contactid',0,$userAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';
@ -252,7 +260,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des contacts déjà sélectionnés // On récupère les id des contacts déjà sélectionnés
$contactAlreadySelected = $propal->getListContactId('external'); //$contactAlreadySelected = $propal->getListContactId('external'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected); $html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';

View File

@ -62,11 +62,20 @@ if ($_POST["action"] == 'addcontact' && $user->rights->commande->creer)
{ {
Header("Location: contact.php?id=".$commande->id); Header("Location: contact.php?id=".$commande->id);
exit; exit;
} else }
else
{
if ($commande->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
{
$langs->load("errors");
$mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
}
else
{ {
$mesg = '<div class="error">'.$commande->error.'</div>'; $mesg = '<div class="error">'.$commande->error.'</div>';
} }
} }
}
// modification d'un contact. On enregistre le type // modification d'un contact. On enregistre le type
if ($_POST["action"] == 'updateligne' && $user->rights->commande->creer) if ($_POST["action"] == 'updateligne' && $user->rights->commande->creer)
{ {
@ -233,7 +242,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des users déjà sélectionnés // On récupère les id des users déjà sélectionnés
$userAlreadySelected = $commande->getListContactId('internal'); //$userAlreadySelected = $commande->getListContactId('internal'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_users($user->id,'contactid',0,$userAlreadySelected); $html->select_users($user->id,'contactid',0,$userAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';
@ -264,7 +273,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des contacts déjà sélectionnés // On récupère les id des contacts déjà sélectionnés
$contactAlreadySelected = $commande->getListContactId('external'); // $contactAlreadySelected = $commande->getListContactId('external'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected); $html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';

View File

@ -16,7 +16,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* *
* $Id$ * $Id$
* $Source$
*/ */
/** /**
@ -100,12 +99,20 @@ class CommonObject
return 1; return 1;
} }
else else
{
if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS')
{
$this->error=$this->db->errno();
return -2;
}
else
{ {
$this->error=$this->db->error()." - $sql"; $this->error=$this->db->error()." - $sql";
dolibarr_syslog($this->error,LOG_ERR); dolibarr_syslog($this->error,LOG_ERR);
return -1; return -1;
} }
} }
}
/** /**
* \brief Mise a jour du statut d'un contact * \brief Mise a jour du statut d'un contact
@ -170,8 +177,8 @@ class CommonObject
if ($source == 'external') $sql.=" t.fk_soc as socid,"; if ($source == 'external') $sql.=" t.fk_soc as socid,";
$sql.=" t.name as nom,"; $sql.=" t.name as nom,";
$sql.= "tc.source, tc.element, tc.code, tc.libelle"; $sql.= "tc.source, tc.element, tc.code, tc.libelle";
$sql.= " FROM (".MAIN_DB_PREFIX."element_contact ec,"; $sql.= " FROM ".MAIN_DB_PREFIX."c_type_contact tc,";
$sql.= " ".MAIN_DB_PREFIX."c_type_contact tc)"; $sql.= " ".MAIN_DB_PREFIX."element_contact ec";
if ($source == 'internal') $sql.=" LEFT JOIN ".MAIN_DB_PREFIX."user t on ec.fk_socpeople = t.rowid"; if ($source == 'internal') $sql.=" LEFT JOIN ".MAIN_DB_PREFIX."user t on ec.fk_socpeople = t.rowid";
if ($source == 'external') $sql.=" LEFT JOIN ".MAIN_DB_PREFIX."socpeople t on ec.fk_socpeople = t.rowid"; if ($source == 'external') $sql.=" LEFT JOIN ".MAIN_DB_PREFIX."socpeople t on ec.fk_socpeople = t.rowid";
$sql.= " WHERE ec.element_id =".$this->id; $sql.= " WHERE ec.element_id =".$this->id;
@ -286,7 +293,7 @@ class CommonObject
* Exemple: contact client de livraison ('external', 'SHIPPING') * Exemple: contact client de livraison ('external', 'SHIPPING')
* Exemple: contact interne suivi paiement ('internal', 'SALESREPFOLL') * Exemple: contact interne suivi paiement ('internal', 'SALESREPFOLL')
* \param source 'external' or 'internal' * \param source 'external' or 'internal'
* \param source 'BILLING', 'SHIPPING', 'SALESREPFOLL', ... * \param code 'BILLING', 'SHIPPING', 'SALESREPFOLL', ...
* \return array Liste des id contacts * \return array Liste des id contacts
*/ */
function getIdContact($source,$code) function getIdContact($source,$code)

View File

@ -60,11 +60,20 @@ if ($_POST["action"] == 'addcontact' && $user->rights->facture->creer)
{ {
Header("Location: contact.php?facid=".$facture->id); Header("Location: contact.php?facid=".$facture->id);
exit; exit;
} else }
else
{
if ($facture->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
{
$langs->load("errors");
$mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
}
else
{ {
$mesg = '<div class="error">'.$facture->error.'</div>'; $mesg = '<div class="error">'.$facture->error.'</div>';
} }
} }
}
// modification d'un contact. On enregistre le type // modification d'un contact. On enregistre le type
if ($_POST["action"] == 'updateligne' && $user->rights->facture->creer) if ($_POST["action"] == 'updateligne' && $user->rights->facture->creer)
{ {
@ -213,7 +222,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des users déjà sélectionnés // On récupère les id des users déjà sélectionnés
$userAlreadySelected = $facture->getListContactId('internal'); //$userAlreadySelected = $facture->getListContactId('internal'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_users($user->id,'contactid',0,$userAlreadySelected); $html->select_users($user->id,'contactid',0,$userAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';
@ -244,7 +253,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des contacts déjà sélectionnés // On récupère les id des contacts déjà sélectionnés
$contactAlreadySelected = $facture->getListContactId('external'); //$contactAlreadySelected = $facture->getListContactId('external'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected); $html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';

View File

@ -60,11 +60,20 @@ if ($_POST["action"] == 'addcontact' && $user->rights->contrat->creer)
{ {
Header("Location: contact.php?id=".$contrat->id); Header("Location: contact.php?id=".$contrat->id);
exit; exit;
} else }
else
{
if ($contrat->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
{
$langs->load("errors");
$mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
}
else
{ {
$mesg = '<div class="error">'.$contrat->error.'</div>'; $mesg = '<div class="error">'.$contrat->error.'</div>';
} }
} }
}
// modification d'un contact. On enregistre le type // modification d'un contact. On enregistre le type
if ($_POST["action"] == 'updateligne' && $user->rights->contrat->creer) if ($_POST["action"] == 'updateligne' && $user->rights->contrat->creer)
{ {
@ -234,7 +243,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des users déjà sélectionnés // On récupère les id des users déjà sélectionnés
$userAlreadySelected = $contrat->getListContactId('internal'); //$userAlreadySelected = $contrat->getListContactId('internal'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_users($user->id,'contactid',0,$userAlreadySelected); $html->select_users($user->id,'contactid',0,$userAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';
@ -265,7 +274,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des contacts déjà sélectionnés // On récupère les id des contacts déjà sélectionnés
$contactAlreadySelected = $contrat->getListContactId('external'); //$contactAlreadySelected = $contrat->getListContactId('external'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected); $html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';

View File

@ -61,10 +61,18 @@ if ($_POST["action"] == 'addcontact' && $user->rights->ficheinter->creer)
exit; exit;
} }
else else
{
if ($fichinter->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
{
$langs->load("errors");
$mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>';
}
else
{ {
$mesg = '<div class="error">'.$fichinter->error.'</div>'; $mesg = '<div class="error">'.$fichinter->error.'</div>';
} }
} }
}
// modification d'un contact. On enregistre le type // modification d'un contact. On enregistre le type
if ($_POST["action"] == 'updateligne' && $user->rights->ficheinter->creer) if ($_POST["action"] == 'updateligne' && $user->rights->ficheinter->creer)
{ {
@ -219,7 +227,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des users déjà sélectionnés // On récupère les id des users déjà sélectionnés
$userAlreadySelected = $fichinter->getListContactId('internal'); //$userAlreadySelected = $fichinter->getListContactId('internal'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_users($user->id,'contactid',0,$userAlreadySelected); $html->select_users($user->id,'contactid',0,$userAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';
@ -250,7 +258,7 @@ if ($id > 0)
print '<td colspan="1">'; print '<td colspan="1">';
// On récupère les id des contacts déjà sélectionnés // On récupère les id des contacts déjà sélectionnés
$contactAlreadySelected = $fichinter->getListContactId('external'); //$contactAlreadySelected = $fichinter->getListContactId('external'); // On ne doit pas desactiver un contact deja selectionner car on doit pouvoir le seclectionner une deuxieme fois pour un autre type
$html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected); $html->select_contacts($selectedCompany, $selected = '', $htmlname = 'contactid',0,$contactAlreadySelected);
print '</td>'; print '</td>';
print '<td>'; print '<td>';

View File

@ -1,3 +1,4 @@
# Dolibarr language file - en_US - errors # Dolibarr language file - en_US - errors
ErrorDuplicateTrigger=A trigger file named '<b>%s</b>' is already loaded. Remove duplicate trigger file in directory '<b>%s</b>'. ErrorDuplicateTrigger=A trigger file named '<b>%s</b>' is already loaded. Remove duplicate trigger file in directory '<b>%s</b>'.
ErrorFailToDeleteFile=Failed to remove file '<b>%s</b>'. ErrorFailToDeleteFile=Failed to remove file '<b>%s</b>'.
ErrorThisContactIsAlreadyDefinedAsThisType=this contact is already defined as contact for this type.

View File

@ -1,3 +1,4 @@
# Dolibarr language file - fr_FR - errors # Dolibarr language file - fr_FR - errors
ErrorDuplicateTrigger=Un fichier trigger du nom de '<b>%s</b>' est deja chargé. Supprimer le doublon du répertoire '<b>%s</b>'. ErrorDuplicateTrigger=Un fichier trigger du nom de '<b>%s</b>' est deja chargé. Supprimer le doublon du répertoire '<b>%s</b>'.
ErrorFailToDeleteFile=Echec de l'effacement du fichier '<b>%s</b>'. ErrorFailToDeleteFile=Echec de l'effacement du fichier '<b>%s</b>'.
ErrorThisContactIsAlreadyDefinedAsThisType=Ce contact est déjà défini comme contact pour ce type.

View File

@ -21,7 +21,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* *
* $Id$ * $Id$
* $Source$
*/ */
/** /**