Fix: delete pdf if supplier invoice is deleted
Fix: compatibility with external modules (minimum for 3.2)
This commit is contained in:
parent
b1f3dbd45e
commit
bb74a63d59
@ -100,10 +100,15 @@ class FileUpload
|
|||||||
$object->fetch($fk_element);
|
$object->fetch($fk_element);
|
||||||
$object->fetch_thirdparty();
|
$object->fetch_thirdparty();
|
||||||
|
|
||||||
|
$object_ref = dol_sanitizeFileName($object->ref);
|
||||||
|
if ($element == 'invoice_supplier') {
|
||||||
|
$object_ref = get_exdir($object->id, 2) . $object_ref;
|
||||||
|
}
|
||||||
|
|
||||||
$this->_options = array(
|
$this->_options = array(
|
||||||
'script_url' => $_SERVER['PHP_SELF'],
|
'script_url' => $_SERVER['PHP_SELF'],
|
||||||
'upload_dir' => $dir_output . '/' . $object->ref . '/',
|
'upload_dir' => $dir_output . '/' . $object_ref . '/',
|
||||||
'upload_url' => DOL_URL_ROOT.'/document.php?modulepart='.$element.'&attachment=1&file=/'.$object->ref.'/',
|
'upload_url' => DOL_URL_ROOT.'/document.php?modulepart='.$element.'&attachment=1&file=/'.$object_ref.'/',
|
||||||
'param_name' => 'files',
|
'param_name' => 'files',
|
||||||
// Set the following option to 'POST', if your server does not support
|
// Set the following option to 'POST', if your server does not support
|
||||||
// DELETE requests. This is a parameter sent to the client:
|
// DELETE requests. This is a parameter sent to the client:
|
||||||
@ -136,8 +141,8 @@ class FileUpload
|
|||||||
),
|
),
|
||||||
*/
|
*/
|
||||||
'thumbnail' => array(
|
'thumbnail' => array(
|
||||||
'upload_dir' => $dir_output . '/' . $object->ref . '/thumbs/',
|
'upload_dir' => $dir_output . '/' . $object_ref . '/thumbs/',
|
||||||
'upload_url' => DOL_URL_ROOT.'/document.php?modulepart='.$element.'&attachment=1&file=/'.$object->ref.'/thumbs/',
|
'upload_url' => DOL_URL_ROOT.'/document.php?modulepart='.$element.'&attachment=1&file=/'.$object_ref.'/thumbs/',
|
||||||
'max_width' => 80,
|
'max_width' => 80,
|
||||||
'max_height' => 80
|
'max_height' => 80
|
||||||
)
|
)
|
||||||
|
|||||||
@ -582,34 +582,73 @@ class FactureFournisseur extends Facture
|
|||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det WHERE fk_facture_fourn = '.$rowid.';';
|
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn_det WHERE fk_facture_fourn = '.$rowid.';';
|
||||||
dol_syslog("FactureFournisseur sql=".$sql, LOG_DEBUG);
|
dol_syslog(get_class($this)."::delete sql=".$sql, LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn WHERE rowid = '.$rowid;
|
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'facture_fourn WHERE rowid = '.$rowid;
|
||||||
dol_syslog("FactureFournisseur sql=".$sql, LOG_DEBUG);
|
dol_syslog(get_class($this)."::delete sql=".$sql, LOG_DEBUG);
|
||||||
$resql2 = $this->db->query($sql);
|
$resql2 = $this->db->query($sql);
|
||||||
if (! $resql2) $error++;
|
if (! $resql2) {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
|
// Appel des triggers
|
||||||
|
include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
|
||||||
|
$interface=new Interfaces($this->db);
|
||||||
|
$result=$interface->run_triggers('INVOICE_SUPPLIER_DELETE',$this,$user,$langs,$conf);
|
||||||
|
if ($result < 0) {
|
||||||
|
$error++; $this->errors=$interface->errors;
|
||||||
|
}
|
||||||
|
// Fin appel triggers
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
// We remove directory
|
||||||
|
if ($conf->fournisseur->facture->dir_output)
|
||||||
|
{
|
||||||
|
$ref = dol_sanitizeFileName($this->ref);
|
||||||
|
$dir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($this->id, 2).$ref;
|
||||||
|
$file = $dir . "/" . $ref . ".pdf";
|
||||||
|
if (file_exists($file))
|
||||||
|
{
|
||||||
|
if (! dol_delete_file($file,0,0,0,$this)) // For triggers
|
||||||
|
{
|
||||||
|
$this->error='ErrorFailToDeleteFile';
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (file_exists($dir))
|
||||||
|
{
|
||||||
|
$res=@dol_delete_dir_recursive($dir);
|
||||||
|
if (! $res)
|
||||||
|
{
|
||||||
|
$this->error='ErrorFailToDeleteDir';
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
dol_syslog(get_class($this)."::delete $this->id by $user->id", LOG_DEBUG);
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->db->rollback();
|
|
||||||
$this->error=$this->db->lasterror();
|
$this->error=$this->db->lasterror();
|
||||||
dol_syslog("FactureFournisseur::delete ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this)."::delete ".$this->error, LOG_ERR);
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
$this->error=$this->db->lasterror();
|
return -$error;
|
||||||
dol_syslog("FactureFournisseur::delete ".$this->error, LOG_ERR);
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -119,11 +119,12 @@ if ($action=='delete')
|
|||||||
if ($facture->fetch($facid))
|
if ($facture->fetch($facid))
|
||||||
{
|
{
|
||||||
$langs->load("other");
|
$langs->load("other");
|
||||||
|
$facture->fetch_thirdparty();
|
||||||
$ref=dol_sanitizeFileName($facture->ref);
|
$ref=dol_sanitizeFileName($facture->ref);
|
||||||
$upload_dir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($facture->id,2).$ref;
|
$upload_dir = $conf->fournisseur->facture->dir_output.'/'.get_exdir($facture->id,2).$ref;
|
||||||
|
|
||||||
$file = $upload_dir . '/' . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
|
$file = $upload_dir . '/' . GETPOST('urlfile'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP).
|
||||||
dol_delete_file($file);
|
dol_delete_file($file,0,0,0,$facture);
|
||||||
$mesg = '<div class="ok">'.$langs->trans('FileWasRemoved',GETPOST('urlfile')).'</div>';
|
$mesg = '<div class="ok">'.$langs->trans('FileWasRemoved',GETPOST('urlfile')).'</div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -119,6 +119,7 @@ elseif ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->fourni
|
|||||||
elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->fournisseur->facture->supprimer)
|
elseif ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->fournisseur->facture->supprimer)
|
||||||
{
|
{
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
$object->fetch_thirdparty();
|
||||||
$result=$object->delete($id);
|
$result=$object->delete($id);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
@ -791,6 +792,7 @@ elseif ($action == 'builddoc')
|
|||||||
{
|
{
|
||||||
// Save modele used
|
// Save modele used
|
||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
|
$object->fetch_thirdparty();
|
||||||
if ($_REQUEST['model'])
|
if ($_REQUEST['model'])
|
||||||
{
|
{
|
||||||
$object->setDocModel($user, $_REQUEST['model']);
|
$object->setDocModel($user, $_REQUEST['model']);
|
||||||
@ -822,9 +824,10 @@ elseif ($action == 'remove_file')
|
|||||||
|
|
||||||
if ($object->fetch($id))
|
if ($object->fetch($id))
|
||||||
{
|
{
|
||||||
|
$object->fetch_thirdparty();
|
||||||
$upload_dir = $conf->fournisseur->facture->dir_output . "/";
|
$upload_dir = $conf->fournisseur->facture->dir_output . "/";
|
||||||
$file = $upload_dir . '/' . GETPOST('file');
|
$file = $upload_dir . '/' . GETPOST('file');
|
||||||
dol_delete_file($file);
|
dol_delete_file($file,0,0,0,$object);
|
||||||
$mesg = '<div class="ok">'.$langs->trans("FileWasRemoved",GETPOST('file')).'</div>';
|
$mesg = '<div class="ok">'.$langs->trans("FileWasRemoved",GETPOST('file')).'</div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user