task #10500: Option to choose if professionnal id are unique.

This commit is contained in:
Juanjo Menent 2011-08-11 16:53:43 +00:00
parent f2277c6a3a
commit b5d1b3ee46
6 changed files with 108 additions and 12 deletions

View File

@ -83,4 +83,5 @@ ErrorBadMaskFailedToLocatePosOfSequence=Error, sense número de seqüència en l
ErrorBadMaskBadRazMonth=Error, valor de tornada a 0 incorrecte
ErrorSelectAtLeastOne=Error. Seleccioneu com a mínim una entrada.
ErrorProductWithRefNotExist=La referència de producte '<i>%s</i>' no existeix
ErrorDeleteNotPossibleLineIsConsolidated=Eliminació impossible ja que el registre està enllaçat a una transacció bancària conciliada
ErrorDeleteNotPossibleLineIsConsolidated=Eliminació impossible ja que el registre està enllaçat a una transacció bancària conciliada
ErrorProdIdAlreadyExist=%s es troba assignat a altre tercer

View File

@ -82,4 +82,5 @@ ErrorBadMaskFailedToLocatePosOfSequence=Error, mask without sequence number
ErrorBadMaskBadRazMonth=Error, bad reset value
ErrorSelectAtLeastOne=Error. Select at least one entry.
ErrorProductWithRefNotExist=Product with reference '<i>%s</i>' don't exist
ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transation that is conciliated
ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transation that is conciliated
ErrorProdIdAlreadyExist=%s is assigned to another third

View File

@ -83,4 +83,5 @@ ErrorBadMaskFailedToLocatePosOfSequence=Error, sin número de secuencia en la m
ErrorBadMaskBadRazMonth=Error, valor de vuelta a 0 incorrecto
ErrorSelectAtLeastOne=Error. Seleccione al menos una entrada.
ErrorProductWithRefNotExist=La referencia de producto '<i>%s</i>' no existe
ErrorDeleteNotPossibleLineIsConsolidated=Eliminación imposible ya que el registro está enlazado a una transacción bancaria conciliada
ErrorDeleteNotPossibleLineIsConsolidated=Eliminación imposible ya que el registro está enlazado a una transacción bancaria conciliada
ErrorProdIdAlreadyExist=%s se encuentra asignado a otro tercero

View File

@ -83,4 +83,5 @@ ErrorBadMaskFailedToLocatePosOfSequence=Erreur, masque sans numéro de séquence
ErrorBadMaskBadRazMonth=Erreur, mauvais valeur de remise à zéro
ErrorSelectAtLeastOne=Erreur. Sélectionnez au moins une entrée.
ErrorProductWithRefNotExist=La référence produit '<i>%s</i>' n'existe pas
ErrorDeleteNotPossibleLineIsConsolidated=Suppression impossible car l'enregistrement porte sur au moins une transaction bancaire rapprochée
ErrorDeleteNotPossibleLineIsConsolidated=Suppression impossible car l'enregistrement porte sur au moins une transaction bancaire rapprochée
ErrorProdIdAlreadyExist=%s est attribué à un autre tiers

View File

@ -6,7 +6,7 @@
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2008 Patrick Raguin <patrick.raguin@auguria.net>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2010-2011 Juanjo Menent <jmenent@2byte.es>
*
* 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
@ -26,7 +26,7 @@
* \file htdocs/societe/class/societe.class.php
* \ingroup societe
* \brief File for third party class
* \version $Id: societe.class.php,v 1.96 2011/08/10 22:47:35 eldy Exp $
* \version $Id: societe.class.php,v 1.97 2011/08/11 16:53:43 simnandez Exp $
*/
require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php");
@ -1958,12 +1958,88 @@ class Societe extends CommonObject
}
}
}
/**
* Returns if a profid sould be verified
* @param idprof 1,2,3,4 (Exemple: 1=siren,2=siret,3=naf,4=rcs/rm)
* @return boolean true , false
*/
function id_prof_verifiable($idprof)
{
global $conf;
switch($idprof)
{
case 1:
$ret=(!$conf->global->SOCIETE_IDPROF1_UNIQUE?false:true);
break;
case 2:
$ret=(!$conf->global->SOCIETE_IDPROF2_UNIQUE?false:true);
break;
case 3:
$ret=(!$conf->global->SOCIETE_IDPROF3_UNIQUE?false:true);
break;
case 4:
$ret=(!$conf->global->SOCIETE_IDPROF4_UNIQUE?false:true);
break;
default:
$ret=false;
}
return $ret;
}
/**
* Verify if a profid exists into database for others thirds
* @param idprof 1,2,3,4 (Exemple: 1=siren,2=siret,3=naf,4=rcs/rm)
* @param value value of profid
* @param socid id of society if update
* @return boolean true if exists, false if not
*/
function id_prof_exists($idprof,$value,$socid=0)
{
switch($idprof)
{
case 1:
$field="siren";
break;
case 2:
$field="siret";
break;
case 3:
$field="ape";
break;
case 4:
$field="idprof4";
break;
}
//Verify duplicate entries
$sql = "SELECT COUNT(*) as idprof FROM ".MAIN_DB_PREFIX."societe WHERE ".$field." = '".$value."'";
if($socid) $sql .= " AND rowid <> ".$socid;
$resql = $this->db->query($sql);
if ($resql)
{
$nump = $this->db->num_rows($resql);
$obj = $this->db->fetch_object($resql);
$count = $obj->idprof;
}
else
{
$count = 0;
print $this->db->error();
}
$this->db->free($resql);
if ($count > 0) return true;
else return false;
}
/**
* Verifie la validite d'un identifiant professionnel en fonction du pays de la societe (siren, siret, ...)
* @param idprof 1,2,3,4 (Exemple: 1=siren,2=siret,3=naf,4=rcs/rm)
* @param soc Objet societe
* @return int <=0 if KO, >0 if OK
* @return int <=0 if KO, >0 if OK, -10=idprofx already exist into database
* TODO not in business class
*/
function id_prof_check($idprof,$soc)
@ -1973,7 +2049,7 @@ class Societe extends CommonObject
$ok=1;
if (! empty($conf->global->MAIN_DISABLEPROFIDRULES)) return 1;
// Verifie SIREN si pays FR
if ($idprof == 1 && $soc->pays_code == 'FR')
{

View File

@ -25,7 +25,7 @@
* \file htdocs/societe/soc.php
* \ingroup societe
* \brief Third party card page
* \version $Id: soc.php,v 1.132 2011/08/10 22:47:35 eldy Exp $
* \version $Id: soc.php,v 1.133 2011/08/11 16:53:43 simnandez Exp $
*/
require("../main.inc.php");
@ -133,7 +133,7 @@ if (empty($reshook))
$object->fetch($socid);
}
else if ($canvas) $object->canvas=$canvas;
if (GETPOST("private") == 1)
{
$object->particulier = GETPOST("private");
@ -230,8 +230,24 @@ if (empty($reshook))
$error++; $errors[] = $langs->trans("ErrorSupplierModuleNotEnabled");
$action = ($action=='add'?'create':'edit');
}
}
if($action == 'add') $mode=0;
else $mode=1;
for ($i = 1; $i < 3; $i++)
{
$slabel="idprof".$i;
if (($_POST[$slabel] && $object->id_prof_verifiable($i)))
{
if($object->id_prof_exists($i,$_POST["$slabel"],$object->id))
{
$langs->load("errors");
$error++; $errors[] = $langs->transcountry('ProfId'.$i ,$object->pays_code)." ".$langs->trans("ErrorProdIdAlreadyExist",$_POST["$slabel"]);
$action = ($action=='add'?'create':'edit');
}
}
}
}
if (! $error)
{
if ($action == 'add')
@ -1959,5 +1975,5 @@ else
$db->close();
llxFooter('$Date: 2011/08/10 22:47:35 $ - $Revision: 1.132 $');
llxFooter('$Date: 2011/08/11 16:53:43 $ - $Revision: 1.133 $');
?>