FIX Delete of draft invoice

This commit is contained in:
Laurent Destailleur 2018-10-29 14:41:00 +01:00
parent 85b8c9f219
commit 27d82d0e8e
3 changed files with 7 additions and 6 deletions

View File

@ -190,7 +190,7 @@ if (empty($reshook))
$qualified_for_stock_change = $object->hasProductsOrServices(1);
}
if ($object->is_erasable())
if ($object->is_erasable() > 0)
{
$result = $object->delete($user, 0, $idwarehouse);
if ($result > 0) {
@ -4812,7 +4812,7 @@ else if ($id > 0 || ! empty($ref))
// Delete
$isErasable = $object->is_erasable();
if ($user->rights->facture->supprimer || $isErasable == 1) // isErasable = 1 means draft (draft can always be deleted with no need of permissions)
if ($user->rights->facture->supprimer || $isErasable == 1) // isErasable = 1 means draft with temporary ref (draft can always be deleted with no need of permissions)
{
//var_dump($isErasable);
if ($isErasable == -4) {

View File

@ -328,12 +328,13 @@ abstract class CommonInvoice extends CommonObject
/**
* Return if an invoice can be deleted
* Rule is:
* If invoice is draft and has a temporary ref -> yes
* If invoice is draft and has a temporary ref -> yes (1)
* If hidden option INVOICE_CAN_NEVER_BE_REMOVED is on -> no (0)
* If invoice is dispatched in bookkeeping -> no (-1)
* If invoice has a definitive ref, is not last and INVOICE_CAN_ALWAYS_BE_REMOVED off -> no (-2)
* If invoice not last in a cycle -> no (-3)
* If there is payment -> no (-4)
* Otherwise -> yes (2)
*
* @return int <=0 if no, >0 if yes
*/
@ -381,7 +382,7 @@ abstract class CommonInvoice extends CommonObject
// Test if there is at least one payment. If yes, refuse to delete.
if (empty($conf->global->INVOICE_CAN_ALWAYS_BE_REMOVED) && $this->getSommePaiement() > 0) return -4;
return 1;
return 2;
}
/**

View File

@ -3117,9 +3117,9 @@ else
}
// Delete
if ($action != 'confirm_edit' && $user->rights->fournisseur->facture->supprimer)
$isErasable=$object->is_erasable();
if ($action != 'confirm_edit' && ($user->rights->fournisseur->facture->supprimer || $isErasable == 1)) // isErasable = 1 means draft with temporary ref (draft can always be deleted with no need of permissions)
{
$isErasable=$object->is_erasable();
//var_dump($isErasable);
if ($isErasable == -4) {
print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="' . $langs->trans("DisabledBecausePayments") . '">' . $langs->trans('Delete') . '</a></div>';