diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php
index 29a98c0541b..b6bde6605ad 100644
--- a/htdocs/compta/facture/list.php
+++ b/htdocs/compta/facture/list.php
@@ -585,24 +585,19 @@ if ($resql)
'presend'=>$langs->trans("SendByMail"),
'builddoc'=>$langs->trans("PDFMerge"),
);
- if ($conf->prelevement->enabled)
- {
- $langs->load("withdrawals");
- $arrayofmassactions['withdrawrequest']=$langs->trans("MakeWithdrawRequest");
+ if ($conf->prelevement->enabled) {
+ $langs->load("withdrawals");
+ $arrayofmassactions['withdrawrequest'] = $langs->trans("MakeWithdrawRequest");
}
- if ($user->rights->facture->supprimer)
- {
- //if (! empty($conf->global->STOCK_CALCULATE_ON_BILL) || empty($conf->global->INVOICE_CAN_ALWAYS_BE_REMOVED))
- if (empty($conf->global->INVOICE_CAN_ALWAYS_BE_REMOVED))
- {
- // mass deletion never possible on invoices on such situation
+ if ($user->rights->facture->supprimer) {
+ if (!empty($conf->global->INVOICE_CAN_REMOVE_DRAFT_ONLY)) {
+ $arrayofmassactions['predeletedraft'] = $langs->trans("Deletedraft");
}
- else
- {
- $arrayofmassactions['predelete']=$langs->trans("Delete");
- }
- }
- if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array();
+ elseif (!empty($conf->global->INVOICE_CAN_ALWAYS_BE_REMOVED)) { // mass deletion never possible on invoices on such situation
+ $arrayofmassactions['predelete'] = $langs->trans("Delete");
+ }
+ }
+ if (in_array($massaction, array('presend', 'predelete'))) $arrayofmassactions = array();
$massactionbutton=$form->selectMassAction('', $arrayofmassactions);
$newcardbutton='';
diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php
index c2c3467e55c..4d2b6145990 100644
--- a/htdocs/core/actions_massactions.inc.php
+++ b/htdocs/core/actions_massactions.inc.php
@@ -1079,24 +1079,23 @@ if (! $error && ($massaction == 'delete' || ($action == 'delete' && $confirm ==
$result=$objecttmp->fetch($toselectid);
if ($result > 0)
{
- // Refuse deletion for some status ?
- /*
- if ($objectclass == 'Facture' && $objecttmp->status == Facture::STATUS_DRAFT)
- {
- $langs->load("errors");
- $nbignored++;
- $resaction.='
'.$langs->trans('ErrorOnlyDraftStatusCanBeDeletedInMassAction',$objecttmp->ref).'
';
- continue;
- }*/
-
- if (in_array($objecttmp->element, array('societe','member'))) $result = $objecttmp->delete($objecttmp->id, $user, 1);
+ // Refuse deletion for some objects/status
+ if ($objectclass == 'Facture' && empty($conf->global->INVOICE_CAN_ALWAYS_BE_REMOVED) && $objecttmp->status != Facture::STATUS_DRAFT))
+ {
+ $langs->load("errors");
+ $nbignored++;
+ $resaction.=''.$langs->trans('ErrorOnlyDraftStatusCanBeDeletedInMassAction',$objecttmp->ref).'
';
+ continue;
+ }
+
+ if (in_array($objecttmp->element, array('societe', 'member'))) $result = $objecttmp->delete($objecttmp->id, $user, 1);
else $result = $objecttmp->delete($user);
- if ($result <= 0)
+ if ($result <= 0)
{
- setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
- $error++;
- break;
+ setEventMessages($objecttmp->error, $objecttmp->errors, 'errors');
+ $error++;
+ break;
}
else $nbok++;
}
diff --git a/htdocs/core/tpl/massactions_pre.tpl.php b/htdocs/core/tpl/massactions_pre.tpl.php
index 48989b2daec..d46e27e28af 100644
--- a/htdocs/core/tpl/massactions_pre.tpl.php
+++ b/htdocs/core/tpl/massactions_pre.tpl.php
@@ -27,6 +27,11 @@
// $trackid='ord'.$object->id;
+if ($massaction == 'predeletedraft')
+{
+ print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmMassDraftDeletion"), $langs->trans("ConfirmMassDeletionQuestion", count($toselect)), "delete", null, '', 0, 200, 500, 1);
+}
+
if ($massaction == 'predelete')
{
print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmMassDeletion"), $langs->trans("ConfirmMassDeletionQuestion", count($toselect)), "delete", null, '', 0, 200, 500, 1);
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index 418042f1da9..60369b80ea5 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -941,4 +941,6 @@ Local=Local
Remote=Remote
LocalAndRemote=Local and Remote
KeyboardShortcut=Keyboard shortcut
-AssignedTo=Assigned to
\ No newline at end of file
+AssignedTo=Assigned to
+Deletedraft=Delete draft
+ConfirmMassDraftDeletion=Draft Bulk delete confirmation
diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang
index e8681e72e62..6fba224525e 100644
--- a/htdocs/langs/fr_FR/main.lang
+++ b/htdocs/langs/fr_FR/main.lang
@@ -941,3 +941,5 @@ Remote=Distant
LocalAndRemote=Local et distant
KeyboardShortcut=Raccourci clavier
AssignedTo=Assigné à
+Deletedraft=Supprimer brouillon
+ConfirmMassDraftDeletion=Confirmation de suppression brouillons en masse