- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Creare Modello Fattura + FPDF
-
Creare Modello Fattura + FPDF
Ciao a tutti non so proprio da dove iniziare:
Devo creare una fattura del seguente tipo con FPDF però non ho nessuna idea su come farla. Mi aiutate per favore?.
Estrarre i dati da asp per popolare la fattura lo so fare però il problema è scrivere il PDF con i campi della fattura. Grazie.
Vi allego il modello di fattura che devo realizzare.
-
Ciao, ho trovato il tuo post cercando aiuti su FPDF, se ti serve ancora ti posto come ho realizzato io la mia fattura:
Nella cartella fpdf/models/ ho creato il file Fattura.mod (con blok notes):
this.Header=function Header() { this.Image('images/### nome immagine ###.JPG',10,8,45); this.SetFont('Arial','B',20); this.SetTextColor(43,134,43); this.Ln(5); this.Cell(80); this.Cell(0,8,'### nome ditta ###',0,1,'L'); this.SetDrawColor(43,134,43); this.Line(90,23,200,23); this.SetFont('Arial','',10); this.SetTextColor(179,181,179); this.Cell(0,6,'### sottotitolo nome ditta ###',0,1,'R'); this.Ln(3); this.SetFont('Arial','',12); this.Cell(0,5,'### indirizzo ###',0,1,'R'); this.Cell(0,5,'### telefono ###',0,1,'R'); this.Cell(0,5,'### P.IVA / C.F. ###',0,1,'R'); this.SetTextColor(0,0,0); this.Ln(5); } this.Footer=function Footer() { this.SetY(-12); this.SetFont('Arial','',8); this.SetTextColor(50,32,210); this.Cell(20,5,'fattura generata in automatico da ### nome applicazione ###',0,0,'L'); this.SetFont('Arial','I',8); this.SetTextColor(0,0,0); this.Cell(80,5,'Page '+ this.PageNo()+ '/{nb}',0,0,'R'); this.Cell(90,5,'S. E. & O.',0,1,'R'); }
questo invece il file che genera la fattura:
<!--#include file="fpdf.asp"--> <!--#include file="### connessione al database ###"--> <% ' ### qua tutte le query necessarie ### Dim i, pdf Set pdf=CreateJsObject("FPDF") pdf.CreatePDF() pdf.SetPath("fpdf/") pdf.Open() pdf.LoadModels("Fattura") ' il nome del modello (mod) è specificato senza estensione. pdf.AddPage() 'impostazione dati visibili nelle proprietà del documento una volta salvato pdf.SetAuthor "### autore ###" ' autore, và nelle proprietà pdf.SetCreator "### applicazione ###" ' applicazione che ha generato il documento (Gestione fatture") pdf.SetSubject "Fattura n° "& RSfatt("ftt_numero") & "/" & Mid(RSfatt("ftt_data"), 3, 2) ' oggetto del documento pdf.SetTitle "Fattura" ' titolo del documento pdf.SetCreationDate Now() ' data creazione del documento (puoi inserire anche l'ora) pdf.SetDisplayMode "real" ' modalità di apertura del documento (real = 100%) pdf.SetTextColor 0,0,0 ' inserimento N° scontrino se esistente If RSfatt("ftt_scontrino_num") <> "" AND Len(RSfatt("ftt_scontrino_data")) = 8 Then pdf.SetFont "Arial","B",10 pdf.Cell 25,6,"Scontrino N°",0,0,"L" ' campo numero scontrino pdf.Cell 15,6, RSfatt("ftt_scontrino_num"),0,0,"L",0 pdf.Cell 8,6,"del",0,0,"L" ' data scontrino pdf.Cell 10,6,StrToData(RSfatt("ftt_scontrino_data")),0,0,"L",0 pdf.Cell 23 Else pdf.Cell 80 End If pdf.SetFont "Arial","B",12 pdf.Cell 35,6,"Fattura N°",0,0,"R" ' colore di sfondo della cella pdf.SetFillColor 255,204,1 ' campo numero fattura pdf.Cell 25,6, RSfatt("ftt_numero") & "/" & Mid(RSfatt("ftt_data"), 3, 2),1,0,"R",1 pdf.Cell 20,6,"del",0,0,"R" ' data fattura pdf.Cell 30,6,StrToData(RSfatt("ftt_data")),1,0,"R",1 ' inserire campo data fattura pdf.Ln(15) pdf.SetTextColor 0,0,0 pdf.SetFont "Arial","B",12 pdf.Cell 93,5,"",0,0 pdf.Cell 92,5,"Spett.le",0,1 pdf.SetTextColor 0,0,0 'recupero le coordinate correnti x=pdf.GetX() y=pdf.GetY() pdf.Cell 93,5,"",0,1 'imposto la nuova coordinata per la seconda multicella pdf.SetXY x+93,y 'colore testo nero pdf.SetTextColor 0,0,0 pdf.MultiCell 97,6,VediTesto(RScli("cli_nome")),0 pdf.Ln(6) pdf.Cell 30,5,"P. IVA - C.F. " & "",0 pdf.Cell 50,5,VediTesto(RScli("cli_piva")),0,1 ' campo P.IVA o C.F. 'preparo la stringa del pagamento If RSfatt("ftt_pagata") = 2 Then StrPagamento = "Effettuato con " ElseIf RSfatt("ftt_pagata") = 1 Then StrPagamento = "Acconto "& VisualizzaPrezzo(RSfatt("ftt_acconto")) &" ? con " ElseIf RSfatt("ftt_pagata") = 0 Then StrPagamento = "" End If StrPagamento = StrPagamento & LCase(VediTesto(RSpaga("pag_tipo"))) pdf.Cell 30,5,"Pagamento:",0 pdf.Cell 160,5,StrPagamento,0,1 ' campo pagamento pdf.Ln(4) 'colore di sfondo della cella pdf.SetFillColor 193,193,193 pdf.SetTextColor 0,0,0 pdf.SetFont "Arial","B",10 pdf.Cell 15,6,"Numero",1,0,"",1 pdf.Cell 120,6,"Descrizione",1,0,"",1 pdf.Cell 20,6,"Importo",1,0,"C",1 pdf.Cell 15,6,"% IVA",1,0,"C",1 pdf.Cell 20,6,"Imponibile",1,1,"C",1 pdf.SetFillColor 0,0,0 pdf.Cell 15,6,"","LR",0 pdf.Cell 120,6,"","R",0 pdf.Cell 20,6,"","R",0 pdf.Cell 15,6,"","R",0 pdf.Cell 20,6,"","R",1 'imposto carattere proporzionale pdf.SetFont "Courier","",8 'INIZIO LOOP RIGHE FATTURA Do While Not RSriga.EOF ' ### SEGNO ####### If RSriga("fttr_segno") = 0 Then Segno = "" pdf.SetTextColor 0,0,0 Else Segno = "- " pdf.SetTextColor 255,0,0 End If pdf.Cell 3,6,"n°","L",0 'quantità pdf.Cell 12,6,String(6 - Len(FormatNumber(RSriga("fttr_qtt"), 0)), chr(160)) & FormatNumber(RSriga("fttr_qtt"), 0),0 'x e y recupero la posizione iniziale della multicella x=pdf.GetX() y=pdf.GetY() w = 120 'descrizione pdf.MultiCell w,6,VediTesto(RSriga("fttr_dsc")),"LR","J" 'y2 recupero la posizione finale della multicella y2=pdf.GetY() 'stampo una serie di righe vuote solo con il bordo sinistro sotto a n° SOLO SE USATA MULTICELLA If y+6 < y2 Then For ix = y To y2-6 Step 6 pdf.SetXY x-15,ix pdf.Cell 15,6,"","L",0 Next End If 'stampo una serie di righe vuote solo con i bordi fino alla fine della scritta nella multicella (y2-6 [-6 perchè è l'altezza della linea]) If y+6 < y2 Then For ix = y To y2-6 Step 6 pdf.SetXY x+w,ix pdf.Cell 20,6,"","R",0 pdf.Cell 15,6,"","R",0 pdf.Cell 20,6,"","R",1 Next End If 'imposto la posizione finale della multicella (-6 per tornare allineato all'ultima riga della multicella pdf.SetXY x+w,y2-6 'Importo Len(Segno) + pdf.Cell 20,6,String(10 - Len(FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp")), 2,,,-1) & Segno), chr(160)) & Segno & FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp")), 2,,,-1),"R",0 '% IVA pdf.Cell 15,6,String(5 - Len(RSriga("fttr_iva")), chr(160)) & RSriga("fttr_iva"),"R",0 'imponibile pdf.Cell 20,6,String(10 - Len(FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp_tt")), 2,,,-1) & Segno), chr(160)) & Segno & FormatNumber(VisualizzaPrezzo(RSriga("fttr_imp_tt")), 2,,,-1),"R",1 'FINE LOOP RIGHE RSriga.MoveNext Loop 'se non ci sono più righe da stampare riempio con celle che creano solo i bordi: y=pdf.GetY() ' recupero il valore di Y corrente For ix = y To 260.00125 Step 6 pdf.Cell 15,6,"","LR",0 pdf.Cell 120,6,"","R" pdf.Cell 20,6,"","R",0 pdf.Cell 15,6,"","R",0 pdf.Cell 20,6,"","R",1 Next pdf.SetTextColor 0,0,0 pdf.Cell 150,6,"Imponibile ","LT",0,"R" pdf.Cell 5,6,"?","T" pdf.Cell 35,6,String(19 - Len(FormatNumber(VisualizzaPrezzo(RSfatt("ftt_imp")), 2,,,-1)), chr(160)) & FormatNumber(VisualizzaPrezzo(RSfatt("ftt_imp")), 2,,,-1),"TR",1 ' campo imponibile pdf.Cell 150,6,"I.V.A. 20% ","L",0,"R" pdf.Cell 5,6,"?" pdf.Cell 35,6,String(19 - Len(FormatNumber(VisualizzaPrezzo(RSfatt("ftt_iva")), 2,,,-1)), chr(160)) & FormatNumber(VisualizzaPrezzo(RSfatt("ftt_iva")), 2,,,-1),"R",1 ' campo IVA pdf.SetFont "Courier","B",12 pdf.Cell 150,6,"Totale fattura ","LTB",0,"R" 'colore di sfondo della cella pdf.SetFillColor 255,204,1 pdf.Cell 5,6,"?","LTB",0,"L",1 pdf.Cell 35,6,String(18 - Len(FormatNumber(VisualizzaPrezzo(RSfatt("ftt_tot")), 2,,,-1)), chr(160)) & FormatNumber(VisualizzaPrezzo(RSfatt("ftt_tot")), 2,,,-1),"TRBR",0,"R",1 ' campo totale fattura pdf.Close() 'salvo la fattura NomeFile = String(5 - Len(RSfatt("ftt_numero")), "0") & RSfatt("ftt_numero") & "_" & Mid(RSfatt("ftt_data"), 3, 2) & ".pdf" reportPath = server.mapPath(PathFattCli & NomeFile) ' ### PathFattCli = cartella con permessi di scrittura nella forma (esempio) "/Public/fatture_cli/" x = pdf.Output(reportPath,"F",true) 'se in Q.S. è passato invia = s invio il file come allegato mail SOLO SE il cliente ha un indirizzo mail valido If (Request("invia") = "s" OR aggiorna = "s") AND (VediTesto(RScli("cli_mail1")) <> "") Then InvioMailHTMLAllegato MailAdmin, VediTesto(RScli("cli_mail1")), "Invio fattura", "<font face='Trebuchet MS' size='2'>Allegata fattura.<br /><br />Lo scontrino fiscale da allegare alla fattura, ed indicato nella fattura, lo trovate insieme al materiale ordinato.<br /><br />Ai sensi dell'Art.21 DPR 633/1972 ed interpretazioni di cui alle RM571134/1988. RM450217/1990. RM451163/1990. RM132/E/1997 e RM107/E/2001, si trasmette fattura tramite e-mail che si considera quindi emessa e spedita in originale.<br /><br />Sarà vostra cura la stampa su supporto cartaceo (risoluzione del 04/07/2001 n. 107).</font><br /><br />"& FirmaMail, PathFattCli & NomeFile End If 'in ogni caso mi invio una copia della fattura InvioMailHTMLAllegato MailAdmin, MailAdmin, "Invio fattura "& RSfatt("ftt_numero") & "/" & Mid(RSfatt("ftt_data"), 3, 2), "<font face='Trebuchet MS' size='2'>Allegata fattura "& RSfatt("ftt_numero") & "/" & Mid(RSfatt("ftt_data"), 3, 2) &"</font>", PathFattCli & NomeFile ' visualizzo la fattura pdf.Output() Set pdf = Nothing %>
non ho implementato il salto pagina perchè le mie fatture sono sempre piccole :bho:
dove trovi ### devi inserire i tuoi dati
ciao, fulvio