factuur classe ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kevin van Leeuwen

Kevin van Leeuwen

08/07/2010 22:42:22
Quote Anchor link
Beste mensen,

ik kwam laatst een topic tegen m.b.t. facturen.

Ik heb het zo geprogrammeerd dat het op zich wel goed werkt, alleen weet ik niet hoe ik de pdf versie kan maken. Het ziet er zo uit:

factuur.php?fid=88269456&[email protected]&datum=2010-07-05

Nu toot hij de factuur keurig, alleen hoe krijg ik zoiets in PDF, ik snap niks van die classes, hoe werkt zoiets ? Kan iemand mij uitleggen hoe dit werkt ?

groeten,
Kevin
 
PHP hulp

PHP hulp

25/12/2024 05:20:38
 
Martijn B

Martijn B

08/07/2010 22:50:21
Quote Anchor link
Volgens mij kun je van HTML ook een PDF laten maken. Zo'n project heeft vast wel een handleiding en een aantal voorbeelden.


Waarschijnlijk vind je hier waar je naar zoekt: http://sourceforge.net/
Gewijzigd op 08/07/2010 22:50:49 door Martijn B
 
Jelmer -

Jelmer -

08/07/2010 22:59:23
Quote Anchor link
Als voorbeeldje: ik gebruik de FPDF class, en dit is de code die mijn facturen genereert. Ik haal eerst alle data die nodig is op en zet die in variabelen zoals $factuur, $bedrijf (klant) $contactpersoon, $aankopen. En dan maak ik er een pdfje van op basis van coördinaten.

Die opmaak–de coördinaten vinden–is puur gedaan door alsmaar te proberen. Trail & error.
 
Joey Drieling

Joey Drieling

09/07/2010 07:05:32
Quote Anchor link
Ik heb eerst mijn PDF file gamaakt met layout hoef alleen de gegevens toetevoegen, heb het gamaakt aan de hand van de volgende tutorial. http://koivi.com/fill-pdf-form-fields/
 
Kevin van Leeuwen

Kevin van Leeuwen

09/07/2010 09:52:45
Quote Anchor link
ok dankje, daar kan ik denk ik wel uit komen :)
 
Kevin van Leeuwen

Kevin van Leeuwen

09/07/2010 23:24:03
Quote Anchor link
ik snap alleen niet hoe je bij pastebin.com aan de includes komt die fpdf.php wel maar die andere niet, waar tover je die vandaan ?
En ik heb een fid (factuur id) vb. 58988988 hoe maak ik daar dan een pdf van ? wat moet er dan in de url komen ?
groeten,
kevin
Gewijzigd op 09/07/2010 23:24:56 door Kevin van Leeuwen
 
Jelmer -

Jelmer -

10/07/2010 00:07:21
Quote Anchor link
Wat heb je al? Sla je al ergens op wat er op de factuur zelf moet staan? Beschrijving? Bedragen? Geadresseerde?

FPDF staat op de FPDF website. Helvetica Neue is een lettertype dat ik (graag) gebruik, maar volgens mij komt FPDF standaard wel met ondersteuning voor bijvoorbeeld Helvetica (niet de Neue) en Arial. Kan je, zeker in dit stadium, ook goed gebruiken.

setPadding was ik vergeten, dat heb ik er zelf ingeknutseld. Je kan het eruit halen, of ik zet mijn aangepaste FDPF even ergens online. Past wel in de Open Source mindset. (al is FPDF blijkbaar niet GPL o.i.d. die dit vereist.
 
Kevin van Leeuwen

Kevin van Leeuwen

10/07/2010 00:12:59
Quote Anchor link
dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<?php
// include/require hier evt nog andere zaken
require ("connect.php");
// we willen op deze pagina gebruik maken van beveiliging mbv sessies,
// dus includen (requiren) we session.php

require("session.php");
?>

<html>
<head>
<title>TetsSite Klanten Login</title>
</head>

<body>
<?php
/*
we gaan hier kijken of de gebruiker is ingelogd, en welk
user level de gebruiker heeft. Op grond daarvan laten we
bepaalde delen al dan niet zien.
Een gebruikerslevel is een getal wat aangeeft hoeveel
"macht" je hebt. Vaak is het zo: hoe hoger het getal, hoe
meer je mag.
bijvoorbeeld:
Voor een bepaalde bewerking heb je gebruikers-
niveau 1 nodig, maar voor een andere bewerking heb je niveau
2 nodig. Een gebruiker die beide bewerkingen mag uitvoeren
heeft gebruikersniveau 1+2 = 3. MAAR: Een gebruiker die om
een of andere reden alleen de tweede bewerking mag uitvoeren
heeft gebruikersniveau 0+2 = 2. Dus je telt de nummers die
bij bepaalde rechten horen bij elkaar op.
Het nummer dat het recht geeft op een bepaalde bewerking is
altijd een macht van 2.
bijvoorbeeld:
recht #1 (bv inloggen) heeft gebruikers niveau            2^0 = 1
recht #2 (bv je eigen info veranderen) heeft gebr. niveau 2^1 = 2
recht #3 (bv nieuws toevoegen) heeft gebruikers niveau    2^2 = 4
recht #4 (bv members toevoegen) heeft gebruikersniveau    2^3 = 8
enz.
Iemand die al deze bewerkingen mag uitvoeren heeft dus
gebruikersniveau 1+2+4+8 = 15 (of 2^4 - 1)
Iemand die alleen recht #1 en recht #3 heeft, heeft
dus gebruikersniveau 1+4 = 5
*/
// controle op ingelogd zijn:

if(isset($_SESSION['suser'])) {
?>

<?php
  /*
  vervolgens kijken we naar het userlevel, we vergelijken
  bitsgewijs het gebruikerslevel - dit doen we met behulp van
  een enkele '&' (de bitwise comparator)
  *** LET OP ***
  Enkel controleren met & is niet genoeg !
  Stel dat je level 9 moet hebben voor een bepaalde bewerking, en je hebt
  maar level 1. 1 & 9 is gelijk aan 1, en dan zou if(1 & 9) { ... } true opleveren
  Je moet dus expliciet controleren of je level hoog genoeg is.
  */

  if(($_SESSION['slevel'] & 0) == 0) {
    // voer code uit behorend bij recht #0



  
    if(is_numeric($_GET["fid"]))
    {

    $query  = mysql_query("SELECT * FROM `facturen` WHERE `fid` = '".$_GET["fid"]."'")or die(mysql_error("Er is iets misgegaan!"));
    $tellen = mysql_num_rows($query);
    $var    = mysql_fetch_assoc($query);
    if($tellen < 1)
    {

  echo "De factuur kan niet geopend worden, er is een mailbericht verzonden naar de admin";
    }

    else
    {
include 'fpdf.php';

define('NL', "\n");

/* $factuur is hier mijn factuur-data, en het is een object. Maar dat kan je gemakkelijk aanpassen.
$bedrijf is ook zo'n object, net als $contactpersoon. En $aankopen is een array van objecten. */


$pdf = new FPDF();
$pdf->setPadding(FPDF::TOP, '3pt');
$pdf->setPadding(FPDF::LEFT, '0pt');
$pdf->setPadding(FPDF::RIGHT, '0pt');

// In de handleiding van FPDF staat hoe je zo'n font-file genereert.
$pdf->addFont('HelveticaNeueBold',        '',    'HelveticaNeueBold.php');
$pdf->addFont('HelveticaNeueLight',     '', 'HelveticaNeueLight.php');
$pdf->addFont('HelveticaNeueUltraLight','', 'HelveticaNeueUltraLight.php');
$pdf->setTextColor(0, 0, 0);
//$pdf->setLineWidth(0.00001);
$pdf->setLineWidth(72.0/254);

$pdf->addPage('P');

/* "Factuur" */
$pdf->setFont('HelveticaNeueUltraLight', '', 32);
$pdf->setXY(12.6, 43.0);
$pdf->cell(45.2, 11.3, 'Factuur');

/* Logo + naam */
$pdf->image('./data/badeend.png', 166.8, 27.4, 15.3, 16.6, 'PNG');
$pdf->setFont('HelveticaNeueLight', '', 7);
$pdf->setXY(151.7, 46.1);
$pdf->cell(45.9, 4.9, 'naam', 0, 0, 'C');

/* Naam, adres, KvK en email-adres */
$lineheight = 3.1;
$breakheight = 3.6;
$pdf->setFont('HelveticaNeueLight', '', 7);
$pdf->setLeftMargin(12.6);
$pdf->setXY(12.6, 105.8);
// adresblokje
$pdf->write($lineheight, "straat\npostc");
$pdf->ln($breakheight);
// referentieblokje
$pdf->write($lineheight, "KvK: 01110000\nBTW: 0123.45.678");
$pdf->ln($breakheight);
// telefoonnummer (met bold T)
$pdf->setFont('HelveticaNeueBold', '', 7);
$pdf->write($lineheight, 'T');
$pdf->setFont('HelveticaNeueLight', '', 7);
$pdf->write($lineheight, ' +31 (0)20 1234566');
$pdf->ln($breakheight);
// email-adres & link
$pdf->setTextColor(0, 0, 153);
$pdf->write($lineheight, '[email protected]', 'mailto:[email protected]');
$pdf->ln();
$pdf->write($lineheight, 'http://www.insitecms.nl', 'http://www.insitecmsnl');


/* Page content */
$pdf->setLeftMargin(65.0);
$pdf->setRightMargin((595.28/(72/25.4)) - 184.8);
$pdf->setTextColor(0, 0, 0);

/* Factuurnummer */
$pdf->setFont('HelveticaNeueLight', '', 9);
$pdf->setXY(65.0, 46.5);
$pdf->write(5, sprintf('Nr. %s', $factuur->nummer));

/* Adres */
$pdf->ln(18.0);
$pdf->write(4.8,
    $bedrijf->naam . NL
    . 'T.a.v.: ' . $contactpersoon->naam . NL
    . $contactpersoon->straatnaam . ' ' . $contactpersoon->huisnummer . NL
    . $contactpersoon->postcode . ' ' . $contactpersoon->plaats
);

$pdf->setXY(65.0, 105.0);
$lineheight = 4.8;

/* Datum */
$pdf->setFont('HelveticaNeueBold', '', 9);
$pdf->write($lineheight, 'Datum ' . $factuur->verzend_datum->format('d-m-Y'));
$pdf->setFont('HelveticaNeueLight', '', 9);
$pdf->ln();

/* Projectnaam & beschrijving */

$pdf->write($lineheight, 'PROJECTNAAM: ' . $factuur->project_naam);
$pdf->ln();
$pdf->write($lineheight, 'PROJECTBESCHRIJVING: ' . $factuur->project_beschrijving);
$pdf->ln();
$pdf->write($lineheight, 'TERMIJN: ' . $factuur->termijn . ' dagen');

/* Tabel met aankopen */
$pdf->ln(12);

// Tabelbeschrijving
$pdf->setFont('HelveticaNeueBold', '', 9);
$pdf->cell(86.7, 5.65, 'Item',      'TB', 0, 'L');
$pdf->cell(16.4, 5.65, 'Aantal', 'TB', 0, 'R');
$pdf->cell(16.8, 5.65, 'Kosten', 'TB', 0, 'R');
// Tabelitems
$pdf->setFont('HelveticaNeueLight', '', 9);
$pdf->ln(6);

foreach($aankopen as $aankoop) {
    //$pdf->cell(86.7, 5.65, 'Werkuren ' . chr(224) . ' 20 euro per uur', 0, 'L');
    $pdf->cell(86.7, 5.65, $aankoop->beschrijving, 0, 0, 'L');
    $pdf->cell(16.4, 5.65, number_format($aankoop->aantal, 2),       0, 0, 'R');
    $pdf->cell(16.8, 5.65, number_format($aankoop->prijs, 2, '.', ','),   0, 0, 'R');
    $pdf->ln();
}

// Tabeltotalen
$pdf->setFont('HelveticaNeueBold', '', 9);
$pdf->cell(86.7, 5.65, 'Totaal excl. BTW', 'TB', 0, 'L');
$pdf->cell(33.2, 5.65, number_format($factuur->prijs, 2, '.', ','), 'TB', 0, 'R');
$pdf->ln();
$pdf->setFont('HelveticaNeueLight', '', 9);
$pdf->cell(86.7, 5.65, '19% BTW over totaalbedrag', 0, 0, 'L');
$pdf->cell(33.2, 5.65, number_format($factuur->btw, 2, '.', ','), 0, 0, 'R');
$pdf->ln();
$pdf->setFont('HelveticaNeueBold', '', 9);
$pdf->cell(86.7, 5.65, 'Totaal incl. BTW',    'TB', 0, 'L');
$pdf->cell(33.2, 5.65, number_format($factuur->prijs_incl, 2, '.', ','), 'TB', 0, 'R');

// Mededeling
$pdf->setFont('HelveticaNeueLight', '', 9);
$pdf->ln(12);
$pdf->write($lineheight, 'Gelieve het bovenstaande bedrag binnen het vastgestelde termijn over te maken op rekeningnummer 1234567 op naam van InsiteCMS.');
$pdf->ln(); $pdf->ln();
$pdf->write($lineheight, 'Graag onder vermelding van het factuur en debiteurnummer.');

// Headers voor PDF bestanden, zodat de browser weet dat het om een PDFje gaat.
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . $factuur->nummer . '.pdf"');
$pdf->output($factuur->nummer . '.pdf', 'I');



?>





<?php
  }

 
  // et cetera
?>


<?php
} else {
?>

Je bent op dit moment niet ingelogd.<br />
<a href="Default.php?wayf=factuur.php">inloggen</a><br />
<?php
}}}
?>

</body>
</html>

?>




Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
  }

 
  // et cetera
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
} else {
?>

Je bent op dit moment niet ingelogd.<br />
<a href="Default.php?wayf=factuur.php">inloggen</a><br />
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}}}
?>

</body>
</html>



maar het werkt niet :S
Gewijzigd op 10/07/2010 09:55:31 door Kevin van Leeuwen
 
Kevin van Leeuwen

Kevin van Leeuwen

12/07/2010 19:34:22
Quote Anchor link
iemand ?
 
Kevin van Leeuwen

Kevin van Leeuwen

13/07/2010 21:54:04
Quote Anchor link
iemand ? is inmiddels nog niet opgelost ?
 
Hipska BE

Hipska BE

13/07/2010 22:42:19
Quote Anchor link
Ja zeg, mijn glazen bol werkt ook niet hoor..
 
Marijke Hakvoort

Marijke Hakvoort

19/12/2011 11:32:17
Quote Anchor link
Dat zal ook niet werken als je klakkeloos de code van de ander hebt overgenomen.
Hoe kom jij hier bijvoorbeeld aan je naam, adres, postcode, doet je font het wel, want het is geen standaard font voor fpdf.
Hoe kom je aan je projectbeschrijving, waar haal je dit allemaal weg?
Heb je hiervoor al wel een class?
Gewijzigd op 19/12/2011 11:35:52 door Marijke Hakvoort
 
- Ariën  -
Beheerder

- Ariën -

19/12/2011 11:36:00
Quote Anchor link
En vermeld ook waar je vastloopt. Aan een 'het werkt niet!!' hebben we niks.
 
Elwin - Fratsloos

Elwin - Fratsloos

19/12/2011 11:51:59
Quote Anchor link
Iets over oude koeien en een sloot. Topic is al bijna 1,5 jaar dood.
 
Erwin H

Erwin H

19/12/2011 11:52:44
Quote Anchor link
Dit is een topic van anderhalf jaar geleden.... maar misschien heeft hij er nog iets aan, je weet nooit :-)
 
Ozzie PHP

Ozzie PHP

19/12/2011 11:54:59
Quote Anchor link
Elwin Fratsloos op 19/12/2011 11:51:59:
Iets over oude koeien en een sloot. Topic is al bijna 1,5 jaar dood.

+1

Erwin H op 19/12/2011 11:52:44:
Dit is een topic van anderhalf jaar geleden.... maar misschien heeft hij er nog iets aan, je weet nooit :-)

Ja, inderdaad... ik denk dat hij al 1,5 jaar op het antwoord aan het wachten is... NOT!
 
Marijke Hakvoort

Marijke Hakvoort

19/12/2011 13:57:03
Quote Anchor link
Je hebt er af en toe anders mensen tussen .. ;)
Misschien heeft hij het maar gewoon links laten liggen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.