← Back
Editing: fatturepdf.php
<?php require ("conn.php"); $id = $_REQUEST['id']; $query = new doQuery (); $arIva = array (0=>'2000-01-01', 20=>'2011-12-31', 21=>'2013-09-30', 22=>'2100-01-01'); $sql = "SELECT `fatture`.*, date_format(`data`, '%d-%m-%Y') AS `data2`, `esenzioni`.`testo` FROM `fatture`, `esenzioni` WHERE `fatture`.`id` = '".$id."' AND `tipo` = `esenzioni`.`id`"; $row = $query->freeQuery ($sql, 0); $id = $row[0]->id; $id_cliente = $row[0]->id_cliente; $numero = $row[0]->numero; $impon = $row[0]->imponibile; $data = $row[0]->data; $data2 = $row[0]->data2; $tipo = $row[0]->tipo; $conto = $row[0]->conto; $testoEs = $row[0]->testo; foreach ($arIva as $al=>$dt) { if ($data > $dtOl && $data <= $dt) $alIva = $al; $dtOl = $dt; } # apertura pdf require_once ("fpdf.php"); $oy = 20; # offset y $distx=7; $disty=15; $pdf=new FPDF ('P','pt','A4'); $pdf->AddPage (); # testata $pdf->image ("images/smartmedia2000.jpg", 48, $oy+3); $pdf->SetFont ('Arial', '', 9); $pdf->SetXY (60, 120); $pdf->MultiCell (0, 11, 'di Felici ing. Fabrizio v. Lituania, 46 - 58100 Grosseto Tel. 3476444150 c.f. FLCFRZ72L30E202E p.IVA 01208620532',0,'L'); # cliente $row = $query->freeQuery ("SELECT * FROM `clienti` WHERE `id`='$id_cliente'", 0); /* if (strpos ($row[0]->denominazione, '--')) { $nomecli0 = explode("-", str_replace("--","@", $row[0]->denominazione)); foreach ($nomecli0 as $nomecli) $nomecli = str_replace("@","-", $nomecli); } else $nomecli = explode("-", $row[0]->denominazione); */ $nomecli = explode("@", $row[0]->denominazione); $indircli = explode("-", $row[0]->indirizzo); $pdf->SetXY (350, 140); $pdf->SetFont('Times', '', 14); for ($c1=0; $c1<count($nomecli); $c1++) $mitt.= $nomecli[$c1]."\n"; for ($c2=0; $c2<count($indircli); $c2++) $mitt.= $indircli[$c2]."\n"; if ($row[0]->codfisc) $mitt.= "c.f. ".$row[0]->codfisc."\n"; if ($row[0]->partiva) $mitt.= "p.iva ".$row[0]->partiva; $pdf->MultiCell (0, 16, $mitt); $pdf->SetXY (45, 266); # testata e riquadri tabella $pdf->Cell (0, 20, 'Fattura n. '.$numero.' del '.$data2, 0, 2); $pdf->setFillColor (200); $pdf->rect (45, 286, 445, 18, 'FD'); $pdf->rect (490, 286, 60, 18, 'FD'); $pdf->rect (45, 305, 445, 210, 'D'); $pdf->rect (490, 305, 60, 210, 'D'); $pdf->setFillColor (0); # descrizione prestazioni $pdf->Cell (445, 18, 'Descrizione prestazioni', 'R', 0); $pdf->Cell (60, 18, 'Euro', 0, 1, 'C'); $righe = $query->freeQuery ("SELECT `prestazioni`.* FROM `prestazioni` WHERE `id_fattura`='$id'", 0); $importo = $c = 0; $xc=522; # variabile di allienamento dell'importo 0.00 foreach ($righe as $i=>$row) { $descriz.= $row->descrizione."\n"; /* $descr = $descriz; # memorizza l'intera descrizione $r = 1; # righe della descrizione $chnk = 60; # punto di taglio della descrizione if (strlen($descriz)<60) $pdf->text(50, $oy+260+$disty*$c, $descriz); else { while (strlen($descr)>60) { $descr1 = substr ($descr, 60, 60*$r+20); # stringa di controllo per lo spazio da tagliare $chnk = 61+strpos ($descr1, " "); $pdf->text (50, $oy+260+$disty*$c, substr($descr, 0, $chnk)); $c++; $descr = substr ($descr, $chnk); # riduce la descrizione } $pdf->text (50, $oy+260+$disty*$c, $descr); } */ $pdf->text (aligndx ($row->importo, $xc, $distx), $oy+300+$disty*$c, "{$row->importo}"); $importo+= $row->importo; $c++; } $pdf->SetXY (45, 305); $pdf->MultiCell (445, 16, $descriz, 0, 'L'); # consuntivo if ($data < '2005-03-21') { $testi = array ('totale prestazioni','contributo I.N.P.S. 4%','imponibile I.V.A.','I.V.A. '.$alIva.'%','TOTALE complessivo','r.a. a detrarre 20%','TOTALE netto a pagare'); $postesti = array (387, 357, 385, 420, 350, 371, 337); $numeri = array (addzero($impon/1.04), addzero($impon/1.04*0.04), $impon, addzero($impon*$alIva/100), addzero($impon*(100+$alIva)/100), addzero($impon*0.2), $impon); $pdf->SetXY (510, 500); $tp = $tipo == 1 ? 5 : 7; # fattura senza ritenuta o con ritenuta for ($c=0; $c<$tp; $c++) { if ($c>3) $pdf->SetFont ('Times', 'B', 14); $pdf->text ($postesti[$c], $oy+$yc+$disty*$c, $testi[$c]); $pdf->text (aligndx ($numeri[$c], $xc, $distx), $oy+$yc+$disty*$c, $numeri[$c]); } } else if ($tipo > 1) { $testi = array ('TOTALE complessivo'); $postesti = array (350); $numeri = array ($impon); $yc=510; $c=0; for ($c=0; $c<5; $c++) { if ($c>3) $pdf->SetFont('Times', 'B', 14); $pdf->text ($postesti[$c], $oy+$yc+$disty*$c, $testi[$c]); $pdf->text (aligndx ($numeri[$c], $xc, $distx), $oy+$yc+$disty*$c, $numeri[$c]); } } else { # descrizioni $testi = array ('imponibile I.V.A.', 'I.V.A. '.$alIva.'%', 'TOTALE complessivo'); $postesti = array (385, 420, 350); # valori numerici $numeri = array ($impon, addzero($impon*$alIva/100), addzero($impon*(100+$alIva)/100)); $yc=510; $c=0; for ($c=0; $c<5; $c++) { if ($c>3) $pdf->SetFont('Times', 'B', 14); $pdf->text($postesti[$c], $oy+$yc+$disty*$c, $testi[$c]); $pdf->text(aligndx($numeri[$c], $xc, $distx), $oy+$yc+$disty*$c, $numeri[$c]); } } # coda, data e firma $pdf->SetXY (30, 580); $pdf->SetFont ('Times', 'B', 10); $pdf->Cell (540, 60, $testoEs, 0, 2); $pdf->SetFont('Times', 'B', 14); switch ($conto) { case "bcc": $banca = "Prego vogliate saldare tramite accredito su conto corrente bancario n. 315557 presso Banca TeMa, Grosseto intestato a Fabrizio Felici, cod. IBAN IT77T0885114301000000315557.\n"; break; case "ing": $banca = "Prego vogliate saldare tramite accredito su conto corrente bancario n. 0169819 presso ING Direct intestato a Fabrizio Felici, cod. IBAN IT53T0347501605CC0010169819.\n"; break; case "web": $banca = "Prego vogliate saldare tramite accredito su conto corrente bancario n. 00111772 presso Webank it intestato a Fabrizio Felici, cod. IBAN IT23U0503401753000000111772.\n"; break; } ; $banca.= "Nel solo caso in cui si sia preventivamente concordato per il saldo tramite assegno, lo stesso dovra' essere univocamente intestato a Fabrizio Felici."; $pdf->MultiCell (540, 15, $banca); $pdf->text(50, 750, 'Grosseto, '.$data2); $pdf->text(400, 780, 'Ing. Fabrizio Felici'); # output su file $pdf->Output ('Fattura_SM2000_'.str_replace("/","",$numero).'.pdf', 'I'); //$pdf->Output ('/home/www/fatture/pdf/Fattura_'.str_replace("/","",$numero).'.pdf', 'F'); $pdf->Close (); # funzione per aggiugere gli zeri ai numeri senza i centesimi function addzero ($num) { $num = round ($num, 2); # arrotonda le cifre in eccesso ai centesimi if (floor($num)==ceil($num)) return $num.".00"; # numero intero else if (floor($num*10)==ceil($num*10)) return $num."0"; # numero con decimi else return $num; } # funzione per allineare i numeri a destra function aligndx ($num, $posx, $dist) { if ($num<10) return $posx; else if ($num<100) return $posx-$dist; else if ($num<1000) return $posx-$dist*2; else if ($num<10000) return $posx-$dist*3; else return $posx-$dist*4; } ?>
Save File
Cancel