NEW : when we delete several objects with massaction, if somes object has child we must see which objects are concerned and nevertheless delete objects which can be deleted

This commit is contained in:
Gauthier PC portable 024 2021-09-07 16:46:48 +02:00
parent 19f0db23df
commit 938092d67c
4 changed files with 19 additions and 15 deletions

View File

@ -1287,6 +1287,7 @@ if (!$error && ($massaction == 'delete' || ($action == 'delete' && $confirm == '
$objecttmp = new $objectclass($db);
$nbok = 0;
$TMsg = array();
foreach ($toselect as $toselectid) {
$result = $objecttmp->fetch($toselectid);
if ($result > 0) {
@ -1315,9 +1316,9 @@ if (!$error && ($massaction == 'delete' || ($action == 'delete' && $confirm == '
}
if ($result <= 0) {
setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
$TMsg = array_merge($objecttmp->errors, $TMsg);
$error++;
break;
} else {
$nbok++;
}
@ -1328,15 +1329,18 @@ if (!$error && ($massaction == 'delete' || ($action == 'delete' && $confirm == '
}
}
if (!$error) {
if ($nbok > 1) {
setEventMessages($langs->trans("RecordsDeleted", $nbok), null, 'mesgs');
} else {
setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs');
}
$db->commit();
} else {
$db->rollback();
// Message for elements well deleted
if ($nbok > 1) {
setEventMessages($langs->trans("RecordsDeleted", $nbok), null, 'mesgs');
} elseif(!empty($nbok)) {
setEventMessages($langs->trans("RecordsDeleted", '1'), null, 'mesgs');
}
$db->commit();
// Message for elements which can't be deleted
if (!empty($error)) {
sort($TMsg);
setEventMessages('', array_unique($TMsg), 'errors');
}
//var_dump($listofobjectthirdparties);exit;
}

View File

@ -4292,10 +4292,10 @@ abstract class CommonObject
//print 'Found into table '.$table.', type '.$langs->transnoentitiesnoconv($elementname).', haschild='.$haschild;
$haschild += $obj->nb;
if (is_numeric($elementname)) { // old usage
$this->errors[] = $langs->trans("ErrorRecordHasAtLeastOneChildOfType", $table);
$this->errors[] = $langs->transnoentities("ErrorRecordHasAtLeastOneChildOfType", method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref, $table);
} else // new usage: $elementname=Translation key
{
$this->errors[] = $langs->trans("ErrorRecordHasAtLeastOneChildOfType", $langs->transnoentitiesnoconv($elementname));
$this->errors[] = $langs->transnoentities("ErrorRecordHasAtLeastOneChildOfType", method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref, $langs->transnoentitiesnoconv($elementname));
}
break; // We found at least one, we stop here
}

View File

@ -83,7 +83,7 @@ ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "status not s
ErrorRefAlreadyExists=Ref used for creation already exists.
ErrorPleaseTypeBankTransactionReportName=Please enter the bank statement name where the entry has to be reported (Format YYYYMM or YYYYMMDD)
ErrorRecordHasChildren=Failed to delete record since it has some child records.
ErrorRecordHasAtLeastOneChildOfType=Object has at least one child of type %s
ErrorRecordHasAtLeastOneChildOfType=Object %s has at least one child of type %s
ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into another object.
ErrorModuleRequireJavascript=Javascript must not be disabled to have this feature working. To enable/disable Javascript, go to menu Home->Setup->Display.
ErrorPasswordsMustMatch=Both typed passwords must match each other

View File

@ -83,7 +83,7 @@ ErrorCantSaveADoneUserWithZeroPercentage=Impossible de sauver une action à l'é
ErrorRefAlreadyExists=Le référence <b>%s</b> existe déjà.
ErrorPleaseTypeBankTransactionReportName=Choisissez le nom du relevé bancaire sur lequel la ligne est rapportées (Format AAAAMM ou AAAAMMJJ)
ErrorRecordHasChildren=Impossible de supprimer l'enregistrement car il possède des enregistrements fils.
ErrorRecordHasAtLeastOneChildOfType=L'objet a au moins un enfant de type %s
ErrorRecordHasAtLeastOneChildOfType=L'objet %s a au moins un enfant de type %s
ErrorRecordIsUsedCantDelete=Ne peut effacer l'enregistrement. Ce dernier est déjà utilisé ou inclut dans un autre élément.
ErrorModuleRequireJavascript=Le javascript ne doit pas être désactivé pour que cette fonctionnalité soit utilisable. Pour activer/désactiver l'utilisation de javascript, allez dans le menu Accueil->Configuration->Affichage.
ErrorPasswordsMustMatch=Les 2 mots de passe saisis doivent correspondre