From 0688dcfb7580e9e0a0a854f8ff9e302c17c18fcb Mon Sep 17 00:00:00 2001 From: Lucas Marcouiller <45882981+Hystepik@users.noreply.github.com> Date: Wed, 2 Aug 2023 12:18:09 +0200 Subject: [PATCH] New : add deletedraft massaction to orders_list (#25170) Co-authored-by: Hystepik --- htdocs/compta/prelevement/orders_list.php | 65 ++++++++++++++++++++++- htdocs/langs/en_US/expensereports.lang | 1 + 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/orders_list.php b/htdocs/compta/prelevement/orders_list.php index c8122ec27c3..57f65320979 100644 --- a/htdocs/compta/prelevement/orders_list.php +++ b/htdocs/compta/prelevement/orders_list.php @@ -72,8 +72,10 @@ $bon = new BonPrelevement($db); $hookmanager->initHooks(array('withdrawalsreceiptslist')); $usercancreate = $user->rights->prelevement->bons->creer; +$permissiontodelete = $user->hasRight('prelevement', 'creer'); if ($type == 'bank-transfer') { $usercancreate = $user->rights->paymentbybanktransfer->create; + $permissiontodelete = $user->hasRight('paymentbybanktransfer', 'create'); } // Security check @@ -97,6 +99,61 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' $search_amount = ""; } +// Mass actions + +// Delete draft +if (($massaction == "delete" || ($action == 'delete' && $confirm == 'yes')) && $permissiontodelete) { + $db->begin(); + $objecttmp = new BonPrelevement($db); + foreach ($toselect as $toselectid) { + $result = $objecttmp->fetch($toselectid); + if ($result > 0) { + if ($objecttmp->status != $objecttmp::STATUS_DRAFT || $objecttmp->credite > 0 || $objecttmp->date_creation != null) { + $langs->load("errors"); + $nbignored++; + $TMsg[] = '
'.$langs->trans('ErrorOnlyDraftStatusCanBeDeletedInMassAction', $objecttmp->ref).'

'; + continue; + } + $result = $objecttmp->delete($user); + if ($result < 0) { // if delete returns is < 0, there is an error, we break and rollback later + setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); + $error++; + break; + } else { + $nbok++; + } + } else { + setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); + $error++; + break; + } + } + if (empty($error)) { + // Message for elements well deleted + if ($nbok > 1) { + setEventMessages($langs->trans("RecordsDeleted", $nbok), null, 'mesgs'); + } elseif ($nbok > 0) { + setEventMessages($langs->trans("RecordDeleted", $nbok), null, 'mesgs'); + } else { + setEventMessages($langs->trans("NoRecordDeleted"), null, 'mesgs'); + } + + // Message for elements which can't be deleted + if (!empty($TMsg)) { + sort($TMsg); + setEventMessages('', array_unique($TMsg), 'warnings'); + } + + $db->commit(); + } else { + $db->rollback(); + } + $massaction = ''; +} +$objectclass = 'BonPrelevement'; +$objectlabel = 'BonPrelevement'; +$uploaddir = $conf->prelevement->dir_output; +include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; /* * View @@ -194,6 +251,9 @@ $arrayofmassactions = array( //'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"), //'builddoc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("PDFMerge"), ); +if (!empty($permissiontodelete)) { + $arrayofmassactions['predeletedraft'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete"); +} $massactionbutton = $form->selectMassAction('', $arrayofmassactions); print '
'."\n"; @@ -221,7 +281,10 @@ if ($usercancreate) { $newcardbutton .= dolGetButtonTitle($langs->trans('NewStandingOrder'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/compta/prelevement/create.php?type='.urlencode($type)); } -print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'generic', 0, $newcardbutton, '', $limit, 0, 0, 1); +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'generic', 0, $newcardbutton, '', $limit, 0, 0, 1); + +include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; + $moreforfilter = ''; /*$moreforfilter.='
'; diff --git a/htdocs/langs/en_US/expensereports.lang b/htdocs/langs/en_US/expensereports.lang index 5a5e06cf9c7..fb47274323f 100644 --- a/htdocs/langs/en_US/expensereports.lang +++ b/htdocs/langs/en_US/expensereports.lang @@ -164,3 +164,4 @@ TaxUndefinedForThisCategory = Taxe undefined for this category ErrorRecordNotFound=Record not found errorComputeTtcOnMileageExpense=Error on computing mileage expense ErrorBadValueForParameter=Error bad value for parameter %s +ErrorOnlyDraftStatusCanBeDeletedInMassAction=Error only draft status can be deleted in mass action \ No newline at end of file