Add PDF deletion when unvalidating declarations
- Add deleteValidatedPDF method to remove PDF files from disk - Delete PDFs when unvalidating declarations (status reset to draft) - Delete PDFs when resetting declaration status for testing - Search for PDFs by declaration ID and declaration number - Clean up both validated and temporary PDF directories - Prevent stale PDFs from being shown after re-validation
This commit is contained in:
parent
a503ed6bf6
commit
b6e9075ece
@ -1606,6 +1606,9 @@ class DeclarationTVA
|
|||||||
*/
|
*/
|
||||||
public function resetDeclarationStatus($declaration_id)
|
public function resetDeclarationStatus($declaration_id)
|
||||||
{
|
{
|
||||||
|
// Delete any existing PDF files before resetting status
|
||||||
|
$this->deleteValidatedPDF($declaration_id);
|
||||||
|
|
||||||
$sql = "UPDATE " . MAIN_DB_PREFIX . "declarationtva_declarations
|
$sql = "UPDATE " . MAIN_DB_PREFIX . "declarationtva_declarations
|
||||||
SET status = 'validated'
|
SET status = 'validated'
|
||||||
WHERE rowid = " . (int)$declaration_id . " AND entity = " . $this->entity;
|
WHERE rowid = " . (int)$declaration_id . " AND entity = " . $this->entity;
|
||||||
@ -1854,6 +1857,9 @@ class DeclarationTVA
|
|||||||
*/
|
*/
|
||||||
public function unvalidateDeclaration($declaration_id)
|
public function unvalidateDeclaration($declaration_id)
|
||||||
{
|
{
|
||||||
|
// Delete validated PDF files before unvalidating
|
||||||
|
$this->deleteValidatedPDF($declaration_id);
|
||||||
|
|
||||||
// Check if the validated_date and validated_by columns exist
|
// Check if the validated_date and validated_by columns exist
|
||||||
$sql_check_columns = "SHOW COLUMNS FROM " . MAIN_DB_PREFIX . "declarationtva_declarations LIKE 'validated_date'";
|
$sql_check_columns = "SHOW COLUMNS FROM " . MAIN_DB_PREFIX . "declarationtva_declarations LIKE 'validated_date'";
|
||||||
$result_check = $this->db->query($sql_check_columns);
|
$result_check = $this->db->query($sql_check_columns);
|
||||||
@ -2111,6 +2117,77 @@ class DeclarationTVA
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete validated PDF files for a declaration
|
||||||
|
*
|
||||||
|
* @param int $declaration_id Declaration ID
|
||||||
|
* @return bool Success
|
||||||
|
*/
|
||||||
|
public function deleteValidatedPDF($declaration_id)
|
||||||
|
{
|
||||||
|
// Get declaration details
|
||||||
|
$sql = "SELECT declaration_number FROM " . MAIN_DB_PREFIX . "declarationtva_declarations
|
||||||
|
WHERE rowid = " . (int)$declaration_id . " AND entity = " . $this->entity;
|
||||||
|
|
||||||
|
$result = $this->db->query($sql);
|
||||||
|
if (!$result || $this->db->num_rows($result) == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$obj = $this->db->fetch_object($result);
|
||||||
|
$declaration_number = $obj->declaration_number;
|
||||||
|
|
||||||
|
// Check if PDF file exists in the VAT declarations validated directory
|
||||||
|
$vat_declarations_dir = DOL_DATA_ROOT . '/declarationtva/validated/';
|
||||||
|
|
||||||
|
// Look for PDF files with the declaration ID
|
||||||
|
$pattern = $vat_declarations_dir . 'CA3_' . $declaration_id . '_*.pdf';
|
||||||
|
$files = glob($pattern);
|
||||||
|
|
||||||
|
// If no files found with the exact pattern, try a more flexible search
|
||||||
|
if (empty($files)) {
|
||||||
|
$pattern = $vat_declarations_dir . 'CA3_*' . $declaration_id . '*.pdf';
|
||||||
|
$files = glob($pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Also search by declaration number
|
||||||
|
if (empty($files)) {
|
||||||
|
$pattern = $vat_declarations_dir . 'CA3_' . $declaration_number . '_*.pdf';
|
||||||
|
$files = glob($pattern);
|
||||||
|
}
|
||||||
|
|
||||||
|
$deleted_count = 0;
|
||||||
|
foreach ($files as $file) {
|
||||||
|
if (file_exists($file)) {
|
||||||
|
if (unlink($file)) {
|
||||||
|
$deleted_count++;
|
||||||
|
error_log("DEBUG: Deleted validated PDF: " . $file);
|
||||||
|
} else {
|
||||||
|
error_log("DEBUG: Failed to delete PDF: " . $file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Also check and delete from temporary directory
|
||||||
|
$temp_dir = DOL_DATA_ROOT . '/declarationtva/';
|
||||||
|
$temp_pattern = $temp_dir . 'CA3_' . $declaration_id . '_*.pdf';
|
||||||
|
$temp_files = glob($temp_pattern);
|
||||||
|
|
||||||
|
foreach ($temp_files as $file) {
|
||||||
|
if (file_exists($file)) {
|
||||||
|
if (unlink($file)) {
|
||||||
|
$deleted_count++;
|
||||||
|
error_log("DEBUG: Deleted temporary PDF: " . $file);
|
||||||
|
} else {
|
||||||
|
error_log("DEBUG: Failed to delete temporary PDF: " . $file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
error_log("DEBUG: Deleted " . $deleted_count . " PDF files for declaration " . $declaration_id);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the VAT declarations documents directory path
|
* Get the VAT declarations documents directory path
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user