[howto] Aggiunta dati al filename del PDF


#1

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

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);


#3

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


#4

[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.


#5

Ok, vedo di usare github.


#6

Ok,
tutto chiaro grazie. :slight_smile:


#7

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.


#8

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


#9

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


#10

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


#11

Ah, ok ora mi è chiaro.
Grazie


#12

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’è.


#13

​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.


#14