[howto] Aggiunta dati al filename del PDF

Una modifica banale nella generazione del PDF che ho fatto per comodità personale: appendere al filename della fattura anche la data di creazione ed il cliente.

In pratica al posto di avere:
Fattura_25.pdf
adesso ottengo
Fattura_25_2016-12-31_Nome Cliente.pdf

Per ottenere questo o un altro risultato basta aprire il file /application/helpers/pdf_helper.php
ed intervenire sulla riga 85.
Per ottenere il risultato di cui sopra ho modificato la riga in questo modo:

    return pdf_create($html, lang('invoice') . '_' . str_replace(array('\\', '/'), '_', $invoice->invoice_number . '_' . $invoice->invoice_date_created . '_' . $invoice->client_name),

Alessandro

2 Likes

Scusami,
il codice è valido/testato anche per la versione 1.4.10?
Vedo che la stringa di codice che indichi finisce con la ,
la riga da sostituire è questa?:
return pdf_create($html, trans(‘invoice’) . ‘’ . str_replace(array(’\’, ‘/’), '’, $invoice->invoice_number),$stream, $invoice->invoice_password, true, $isGuest, $include_zugferd, $associatedFiles);

Grazie per il contributo: eventualmente proponi il cambiamento su Jira o GitHub

[quote=“Remo_Cosini, post:2, topic:3750”]
Scusami,
il codice è valido/testato anche per la versione 1.4.10?[/quote]

Si, è la versione su cui l’ho implementato.

[quote=“Remo_Cosini, post:2, topic:3750”]Vedo che la stringa di codice che indichi finisce con la ,
la riga da sostituire è questa?:
return pdf_create($html, trans(‘invoice’) . ‘’ . str_replace(array(’\’, ‘/’), '’, $invoice->invoice_number),$stream, $invoice->invoice_password, true, $isGuest, $include_zugferd, $associatedFiles);[/quote]

Nella versione ITA la riga (n.85) da sostituire è la seguente:

return pdf_create($html, lang('invoice') . '_' . str_replace(array('\\', '/'), '_', $invoice->invoice_number),

Nella versione originale il codice da cambiare si trova alla riga n.78 e lang(‘invoice’) nella mia versione andrebbe sostituito con trans(‘invoice’) presente nell’originale.

Ok, vedo di usare github.

Ok,
tutto chiaro grazie. :slight_smile:

Ciao @rospus ho applicato le modifiche al codice come suggerito.
Nella maggior parte delle funzioni la fattura appare corretta e funziona tutto.
Ma se vado nell’archivio delle fatture e clicco su una fattura mi apre un PDF vuoto 0kb e nei log leggo:
ERROR - 2017-02-12 12:45:16 --> Severity: Warning --> readfile(./uploads/archive/2017-01-27_Fattura_1_2017-01-27_Mario%20Rossi.pdf): failed to open stream: No such file or directory /var/www/html/gestcli/application/modules/invoices/controllers/invoices.php 103

Nella cartella /uploads/archive i file ci sono e sono PDF validi e leggibili :frowning:
A te funziona? Hai suggerimenti in merito? Sembra che il %20 sostituisca lo spazio e causi errore, forse il nome della fattura viene costruito in modo diverso per l’archivio e non riesce a ripescarla.

Ma scusate @denysvitali ,
a parte il nome del Cliente, non avrei ottenuto la stessa cosa inserendo delle etichette di formattazione dalla voce “Gruppo Fatture”??

Decisamente no, visto che volevo avere nel file la data della fattura ed il nominativo… :wink:

No, quelle impostazioni sono solo ed esclusivamente per la generazione del numero di fattura, che è parzialmente indipendente dalla formattazione del numero della fattura

1 Like

Ah, ok ora mi è chiaro.
Grazie

Sarebbe bello poter settare il template del nome tramite la GUI di invoiceplane.

@rospus il nome del cliente pensi che sia già pulito da possibili caratteri speciali? ho qualche dubbio a riguardo, chiamando $invoice(client_name) secondo me viene tirato fuori così com’è.

​Ritengo che lo sviluppatore abbia già predisposto in fase d’inserimento in anagrafica​ ​una serie di escapes per accettare solo l’alfabeto. Per verificarlo si fa prima a fare una prova… :wink:
Se così non fosse l’escape si potrebbe tranquillamente aggiungere prima di usare la variabile nome_cliente per generare la stringa del filename.