refactor creation file pdf
This commit is contained in:
parent
351801d4ac
commit
9b617eac73
@ -113,17 +113,7 @@ class InvoicePdfService
|
||||
}
|
||||
$pdfFilename = $prefixPdf."_".$pdfFilename;
|
||||
$filenames = [];
|
||||
foreach($factureFolders as $folder) {
|
||||
try {
|
||||
$storage->newFolder($folder);
|
||||
} catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$ff_pdf = $folder.$pdfFilename.'.pdf';
|
||||
$storage->newFile($ff_pdf);
|
||||
$file_pdf = $storage->get($ff_pdf);
|
||||
$file_pdf->putContent($pdfContent);
|
||||
$filenames[] = $ff_pdf;
|
||||
}
|
||||
$filenames = $this->savePdfToFolders($factureFolders, $pdfFilename, $pdfContent, $storage);
|
||||
$this->gestionBdd->setFactureGeneratedDate($factureId);
|
||||
return [
|
||||
"content" => $pdfContent,
|
||||
@ -211,20 +201,7 @@ class InvoicePdfService
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
$pdfFilename = $pdf->GetInvoiceFilename();
|
||||
$filenames = [];
|
||||
|
||||
foreach($factureFolders as $folder) {
|
||||
try {
|
||||
$storage->newFolder($folder);
|
||||
} catch(TemplateException $e) {
|
||||
// Ignore si le dossier existe déjà
|
||||
}
|
||||
$ff_pdf = $folder.$pdfFilename;
|
||||
$storage->newFile($ff_pdf);
|
||||
$file_pdf = $storage->get($ff_pdf);
|
||||
$file_pdf->putContent($pdfContent);
|
||||
$filenames[] = $ff_pdf;
|
||||
}
|
||||
|
||||
$filenames = $this->savePdfToFolders($factureFolders, $pdfFilename, $pdfContent, $storage);
|
||||
$this->gestionBdd->setFactureGeneratedDate($factureId);
|
||||
return [
|
||||
"content" => $pdfContent,
|
||||
@ -276,16 +253,10 @@ class InvoicePdfService
|
||||
}
|
||||
$clientRacineFolder = $racinePath.'CLIENTS/'.mb_strtoupper($clientNameInFolder, 'UTF-8').'/';
|
||||
$filename = "FACTURE".'_'.$pdf->GetMultipleInvoiceFilename($month, $year);
|
||||
$filenamePath = $clientRacineFolder.$filename.'.pdf';
|
||||
$pdfContent = $pdf->Output('', 'S');
|
||||
try {
|
||||
$storage->newFolder($clientRacineFolder);
|
||||
} catch(\OCP\Files\NotPermittedException $e) {
|
||||
}
|
||||
$storage->newFile($filenamePath);
|
||||
$file_pdf = $storage->get($filenamePath);
|
||||
$file_pdf->putContent($pdfContent);
|
||||
return $filenamePath;
|
||||
$singleFolderArray = [$clientRacineFolder];
|
||||
$filenames = $this->savePdfToFolders($singleFolderArray, $filename, $pdfContent, $storage);
|
||||
return $filenames[0];
|
||||
}
|
||||
|
||||
public function generateInvoiceRecap($filter, $filterType, $date, $idNextCloud)
|
||||
@ -666,4 +637,62 @@ class InvoicePdfService
|
||||
"Si les frais de recouvrement sont supérieurs à ce montant forfaitaire, une indemnisation complémentaire " .
|
||||
"sera due sur présentation de justificatifs (articles L 441-3 et L 441-6 du code de commerce).";
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction générique pour sauvegarder un fichier PDF dans plusieurs dossiers
|
||||
*
|
||||
* @param array $factureFolders Liste des dossiers où sauvegarder
|
||||
* @param string $pdfFilename Nom du fichier PDF (sans extension)
|
||||
* @param string $pdfContent Contenu binaire du PDF
|
||||
* @param mixed $storage Instance de stockage Nextcloud
|
||||
* @return array Liste des chemins des fichiers créés
|
||||
*/
|
||||
private function savePdfToFolders(array $factureFolders, string $pdfFilename, string $pdfContent, $storage): array
|
||||
{
|
||||
$filenames = [];
|
||||
|
||||
foreach ($factureFolders as $folder) {
|
||||
// --- GESTION DU CHEMIN ---
|
||||
if (($_ENV['APP_ENV'] ?? 'prod') === 'dev') {
|
||||
// En dev : remplacer les accents et caractères spéciaux pour Docker
|
||||
$relativeFolder = $this->sanitizePathDev($folder);
|
||||
$pdfFileNameSafe = $this->sanitizePathDev($pdfFilename);
|
||||
} else {
|
||||
// En prod : garder UTF-8, juste retirer slash initial
|
||||
$relativeFolder = ltrim($folder, '/');
|
||||
$pdfFileNameSafe = $pdfFilename;
|
||||
}
|
||||
|
||||
// --- CREATION DU DOSSIER ---
|
||||
try {
|
||||
if (!$storage->nodeExists($relativeFolder)) {
|
||||
$storage->newFolder($relativeFolder);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
error_log("ERROR creating folder '$relativeFolder': " . $e->getMessage());
|
||||
// Ne pas faire exit, continuer avec les autres dossiers
|
||||
continue;
|
||||
}
|
||||
|
||||
// --- CHEMIN COMPLET DU FICHIER ---
|
||||
$ff_pdf = rtrim($relativeFolder, '/') . '/' . $pdfFileNameSafe . '.pdf';
|
||||
|
||||
// --- CREATION OU MISE A JOUR DU FICHIER ---
|
||||
try {
|
||||
if ($storage->nodeExists($ff_pdf)) {
|
||||
$file_pdf = $storage->get($ff_pdf);
|
||||
} else {
|
||||
$file_pdf = $storage->newFile($ff_pdf);
|
||||
}
|
||||
$file_pdf->putContent($pdfContent);
|
||||
$filenames[] = $ff_pdf;
|
||||
} catch (\Throwable $e) {
|
||||
error_log("ERROR on file '$ff_pdf': " . $e->getMessage());
|
||||
// Ne pas faire exit, continuer avec les autres fichiers
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
return $filenames;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user