浏览代码

Fix error management and better merging behaviour

Laurent Destailleur 2 年之前
父节点
当前提交
886eaa9117

+ 2 - 2
htdocs/core/modules/modSociete.class.php

@@ -318,9 +318,9 @@ class modSociete extends DolibarrModules
 			's.status'=>"Numeric", 's.client'=>"Numeric", 's.fournisseur'=>"Boolean", 's.datec'=>"Date", 's.tms'=>"Date",
 			's.status'=>"Numeric", 's.client'=>"Numeric", 's.fournisseur'=>"Boolean", 's.datec'=>"Date", 's.tms'=>"Date",
 			's.code_client'=>"Text", 's.code_fournisseur'=>"Text", 's.code_compta'=>"Text", 's.code_compta_fournisseur'=>"Text",
 			's.code_client'=>"Text", 's.code_fournisseur'=>"Text", 's.code_compta'=>"Text", 's.code_compta_fournisseur'=>"Text",
 			's.address'=>"Text", 's.zip'=>"Text", 's.town'=>"Text",
 			's.address'=>"Text", 's.zip'=>"Text", 's.town'=>"Text",
-			'd.nom'=>'Text', 'r.nom'=>'Text', 'c.label'=>"List:c_country:label:label", 'c.code'=>"Text",
+			'd.nom'=>'Text', 'r.nom'=>'Text', 'c.label'=>'List:c_country:label:label', 'c.code'=>'Text',
 			's.phone'=>"Text", 's.fax'=>"Text",
 			's.phone'=>"Text", 's.fax'=>"Text",
-			's.url'=>"Text", 's.email'=>"Text", 's.default_lang'=>"Text", 's.canvas' => "Canvas",
+			's.url'=>"Text", 's.email'=>"Text", 's.default_lang'=>"Text", 's.canvas' => "Text",
 			's.siret'=>"Text", 's.siren'=>"Text", 's.ape'=>"Text", 's.idprof4'=>"Text", 's.idprof5'=>"Text", 's.idprof6'=>"Text",
 			's.siret'=>"Text", 's.siren'=>"Text", 's.ape'=>"Text", 's.idprof4'=>"Text", 's.idprof5'=>"Text", 's.idprof6'=>"Text",
 			's.tva_intra'=>"Text", 's.capital'=>"Numeric", 's.note_private'=>"Text", 's.note_public'=>"Text",
 			's.tva_intra'=>"Text", 's.capital'=>"Numeric", 's.note_private'=>"Text", 's.note_public'=>"Text",
 			't.libelle'=>"Text", 'ce.code'=>"List:c_effectif:libelle:code", "cfj.libelle"=>"Text", 's.fk_prospectlevel'=>'List:c_prospectlevel:label:code',
 			't.libelle'=>"Text", 'ce.code'=>"List:c_effectif:libelle:code", "cfj.libelle"=>"Text", 's.fk_prospectlevel'=>'List:c_prospectlevel:label:code',

+ 6 - 2
htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php

@@ -120,6 +120,10 @@ class InterfaceActionsAuto extends DolibarrTriggers
 				$object->actionmsg2 = $langs->transnoentities("COMPANY_MODIFYInDolibarr", $object->name);
 				$object->actionmsg2 = $langs->transnoentities("COMPANY_MODIFYInDolibarr", $object->name);
 			}
 			}
 			$object->actionmsg = $langs->transnoentities("COMPANY_MODIFYInDolibarr", $object->name);
 			$object->actionmsg = $langs->transnoentities("COMPANY_MODIFYInDolibarr", $object->name);
+			// For merge event, we add a mention
+			if (!empty($object->context['mergefromname'])) {
+				$object->actionmsg = dol_concatdesc($object->actionmsg, $langs->trans("DataFromWasMerged", $object->context['mergefromname']));
+			}
 
 
 			$object->sendtoid = 0;
 			$object->sendtoid = 0;
 			$object->socid = $object->id;
 			$object->socid = $object->id;
@@ -1077,8 +1081,8 @@ class InterfaceActionsAuto extends DolibarrTriggers
 		$actioncomm = new ActionComm($this->db);
 		$actioncomm = new ActionComm($this->db);
 		$actioncomm->type_code   = $object->actiontypecode; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...)
 		$actioncomm->type_code   = $object->actiontypecode; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...)
 		$actioncomm->code        = 'AC_'.$action;
 		$actioncomm->code        = 'AC_'.$action;
-		$actioncomm->label       = $object->actionmsg2;
-		$actioncomm->note_private = $object->actionmsg;
+		$actioncomm->label       = $object->actionmsg2;		// Label of event
+		$actioncomm->note_private = $object->actionmsg;		// Description
 		$actioncomm->fk_project  = $projectid;
 		$actioncomm->fk_project  = $projectid;
 		$actioncomm->datep       = $now;
 		$actioncomm->datep       = $now;
 		$actioncomm->datef       = $now;
 		$actioncomm->datef       = $now;

+ 1 - 0
htdocs/langs/en_US/agenda.lang

@@ -180,3 +180,4 @@ BrowserPush=Browser Popup Notification
 Reminders=Reminders
 Reminders=Reminders
 ActiveByDefault=Enabled by default
 ActiveByDefault=Enabled by default
 Until=until
 Until=until
+DataFromWasMerged=Data from %s was merged

+ 11 - 6
htdocs/societe/card.php

@@ -191,7 +191,7 @@ if (empty($reshook)) {
 	if ($action == 'confirm_merge' && $confirm == 'yes' && $user->hasRight('societe', 'creer')) {
 	if ($action == 'confirm_merge' && $confirm == 'yes' && $user->hasRight('societe', 'creer')) {
 		$error = 0;
 		$error = 0;
 		$soc_origin_id = GETPOST('soc_origin', 'int');
 		$soc_origin_id = GETPOST('soc_origin', 'int');
-		$soc_origin = new Societe($db);
+		$soc_origin = new Societe($db);		// The thirdparty that we will delete
 
 
 		if ($soc_origin_id <= 0) {
 		if ($soc_origin_id <= 0) {
 			$langs->load('errors');
 			$langs->load('errors');
@@ -241,6 +241,11 @@ if (empty($reshook)) {
 					}
 					}
 				}
 				}
 
 
+				// If alias name is not defined on target thirdparty, we can store in it the old name of company.
+				if (empty($object->name_bis) && $object->name != $soc_origin->name) {
+					$object->name_bis = $soc_origin->name;
+				}
+
 				// Merge categories
 				// Merge categories
 				$static_cat = new Categorie($db);
 				$static_cat = new Categorie($db);
 
 
@@ -331,7 +336,7 @@ if (empty($reshook)) {
 
 
 
 
 				if (!$error) {
 				if (!$error) {
-					$object->context = array('merge'=>1, 'mergefromid'=>$soc_origin->id);
+					$object->context = array('merge'=>1, 'mergefromid'=>$soc_origin->id, 'mergefromname'=>$soc_origin->name);
 
 
 					// Call trigger
 					// Call trigger
 					$result = $object->call_trigger('COMPANY_MODIFY', $user);
 					$result = $object->call_trigger('COMPANY_MODIFY', $user);
@@ -343,7 +348,7 @@ if (empty($reshook)) {
 				}
 				}
 
 
 				if (!$error) {
 				if (!$error) {
-					//We finally remove the old thirdparty
+					// We finally remove the old thirdparty
 					if ($soc_origin->delete($soc_origin->id, $user) < 1) {
 					if ($soc_origin->delete($soc_origin->id, $user) < 1) {
 						setEventMessages($soc_origin->error, $soc_origin->errors, 'errors');
 						setEventMessages($soc_origin->error, $soc_origin->errors, 'errors');
 						$error++;
 						$error++;
@@ -616,10 +621,10 @@ if (empty($reshook)) {
 
 
 				$result = $object->create($user);
 				$result = $object->create($user);
 
 
-				if (empty($error) && isModEnabled('mailing') && !empty($object->email) && $object->no_email == 1) {
+				if ($result >= 0 && isModEnabled('mailing') && !empty($object->email) && $object->no_email == 1) {
 					// Add mass emailing flag into table mailing_unsubscribe
 					// Add mass emailing flag into table mailing_unsubscribe
-					$result = $object->setNoEmail($object->no_email);
-					if ($result < 0) {
+					$resultnoemail = $object->setNoEmail($object->no_email);
+					if ($resultnoemail < 0) {
 						$error++;
 						$error++;
 						$errors = array_merge($errors, ($object->error ? array($object->error) : $object->errors));
 						$errors = array_merge($errors, ($object->error ? array($object->error) : $object->errors));
 						$action = 'create';
 						$action = 'create';