login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Opzet facturatie systeem.

Offline Chupskie - 08/02/2007 16:09
Avatar van ChupskieMySQL beginner Hallo allemaal,

Ik ben voor mijn bedrijf, de administratie aan het digitaliseren.
Aanmaken en beheer van facturen/offerte's. Automatische jaarlijkse rekeningen, herinneringen, enz laten versturen. En ga zo maar door.

De opzet van mijn database is op dit moment zo:
  1. id (int5)
  2. factuurnr (varchar10)
  3. klantnr (varchar10)
  4. factuurdatum (datetime)
  5. betaaldatum (datetime)
  6. betaaldop (datetime)
  7. betaalmethode (varchar50)
  8. 1steherinnering (int5)
  9. 2deherinnering (int5)
  10. 3deherinnering (int5)


Is mijn database opzet zo goed / het slimst.
En kan ik het beste gaan werken met datetime, om dadelijk automatisch elk jaar een nieuwe rekening naar de klant te laten sturen of met timestamps?

Graag jullie reactie..
-Chupskie

20 antwoorden

Gesponsorde links
Offline compudoc - 08/02/2007 16:16 (laatste wijziging 08/02/2007 16:17)
Avatar van compudoc PHP beginner misschien kan je beter meerdere tabellen maken...

1e tabel factuur gegevens enzo
2e tabel herinneringen en overige gegevens
3e tabel evt. klant gegevens die je meeverzend met de factuur
Offline Chupskie - 08/02/2007 16:25
Avatar van Chupskie MySQL beginner Adresgegevens zitten via het klantnr aan de tabel klanten gekoppeld.
Daarin staan natuurlijk alle adresgegevens.

Dus ik verdeel het wel over meerdere tabellen.
Nog meer tips?
Offline Stefan14 - 08/02/2007 16:58 (laatste wijziging 08/02/2007 16:59)
Avatar van Stefan14 PHP gevorderde zoals compudoc dus zegt, je herinneringen in een aparte tabel zetten samen met het factuurnr of id.
in deze tabel kun je er dan ook bij zetten wanneer deze verstuurd is, iets wat je nu niet hebt. Aan de hand van deze datums zou je kunnen bepalen wanneer een volgende herinnering verstuurd moet worden indien nog niet betaald.
Ook ben je niet gebonden aan een maximum van 3 herinneringen.

Daarnaast vind ik het persoonlijk prettiger werken met datetime's, met timestamps heb ik (vrijwel) geen ervaring.
Met datetime's kun je in ieder geval prima bereiken wat jij wilt.
Offline Chupskie - 08/02/2007 17:00 (laatste wijziging 08/02/2007 17:46)
Avatar van Chupskie MySQL beginner Oke dank je wel, hier heb ik al heel veel aan. 

Ik kom er niet helemaal uit met die herinneringen?
Hoe kan ik dat dan het beste in het db opslaan of berekenen?
Offline Stefan14 - 08/02/2007 22:30
Avatar van Stefan14 PHP gevorderde herinneringen
id (int)
factuurnr (int) (of varchar indien letters in factuurnr)
datumverzonden (date)

je zou eventueel het klantID er nog bij kunnen doen, maar meer heb je niet nodig denk ik.


Offline Chupskie - 09/02/2007 09:34
Avatar van Chupskie MySQL beginner Ja maar, ik zit toch met meerdere herinneringen? (1ste, 2de, 3de, enz..)

Hoe verwerk ik dat dan in mijn tabel, of hoe laat ik dat dan berekenen?
Offline Ibrahim - 09/02/2007 17:17
Avatar van Ibrahim PHP expert je hebt tabel met herinneringen

Citaat:
herinneringID
klantID
factuurID
herinneringBericht


dan heb je de tabel facturen

Citaat:
factuurID
klantID
herinneringID
....


dan selecteer je met een query makkelijk de aantal herinneringen

  1. SELECT herinneringID FROM tabel_facturen WHERE klantID = {$beveiligde_sessie['klantID']}


dan met een 2e query de herinneringen ophalen

  1. SELECT COUNT(herinneringID) FROM tabel_herinneringen WHERE herinneringID = {$fetch_tabel_facturen['herinneringID']}


met
  1. mysql_result($query_resource, int veld);
haal je dan aantal herinneringen eruit
Offline ikkedikke - 09/02/2007 17:39
Avatar van ikkedikke PHP expert klant-id hoeft niet in de tabel van herinneringen
Door middel van subqueries kun je heel makkelijk de herinneringen ophalen.
Offline Ibrahim - 09/02/2007 17:54
Avatar van Ibrahim PHP expert dat hoeft inderdaad niet, maar bij zoekopdrachten is het misschien wel handig dacht ik
Offline Berten - 09/02/2007 18:23
Avatar van Berten PHP beginner @ silicom14

waarom die herinerringID in tabel facturen?

gewoon een tabel herinneringen.
  1. herrineringID
  2. factuurID
  3. datum


zou moeten volstaan.

tip:

Chupskie, als je alles aan het digitaliseren bent, is het misschien gemakkelijk om eens naar wat designpatterns te kijken. Veel van het database-denkwerk is ooit al eens door een ander bedrijf gedaan, en over veel van deze oplossingen kan je zaken vinden op het internet.


Offline Ibrahim - 09/02/2007 18:24
Avatar van Ibrahim PHP expert omdat het misschien handig is te weten van welke factuur je een herinnering gestuurd krijgt ?
Offline Berten - 09/02/2007 18:25
Avatar van Berten PHP beginner dat weet je toch door het veld factuurID in tabel herinneringen??
Offline Chupskie - 09/02/2007 18:37
Avatar van Chupskie MySQL beginner Bedankt voor jullie tips/reacties.
Als ik het zo zou doen:

herrinneringid
factuurid
datum

Mis ik dan niet een kolom waar ik in op sla, wat de herrinering is (1ste, 2de, enz..) per jaar. (Want er kunnen elk jaar nieuwe herrinnering komen natuurlijk?)

Mis ik dan niet een kolom?
Offline Ibrahim - 09/02/2007 18:46
Avatar van Ibrahim PHP expert Je hebt genoeg aan de kolom datum.
Dan gebruik je in je query
  1. ORDER BY datum ASC (1t/m...) of DESC(...t/m1)
Offline Stefan14 - 09/02/2007 18:49
Avatar van Stefan14 PHP gevorderde volgens mij niet, want je hebt toch de kolom datum waarin staat wanneer die herinnering verstuurd is?

wil je op je herinnering vermelden de hoeveelste herinnering het al is, dan kun je gewoon een query als
  1. <?php
  2. $query = "SELECT COUNT(*) FROM herinneringen WHERE factuurID = '".$factuurID."'";
  3. ?>

uitvoeren waarna je het aantal herinneringen dat er al instaat terugkrijgt. Hier tel je er één bij op, en je hebt je antwoord.

Mocht je dit niet bedoelen, formuleer je vraag dan eens anders, want ik snap het niet helemaal.
Offline Ibrahim - 09/02/2007 19:05 (laatste wijziging 09/02/2007 19:06)
Avatar van Ibrahim PHP expert Hij wilt weten welke herinnering de 1e, 2e, 3e enz. is.
Dan kun je het best mijn manier gebruiken 

En per jaar kun je makkelijk berekenen met een query. Dat hoeft niet nog eens in PHP. Lees marten's tutorial over datum/tijd maar eens door.
Offline Chupskie - 09/02/2007 19:54 (laatste wijziging 09/02/2007 19:59)
Avatar van Chupskie MySQL beginner @siliecom14 & Stefan14,
Bedankt voor jullie hulp tot zover.

Zoals jullie beiden zeggen moet het denk ik wel lukken.
WHERE factuur = factuur AND datum = jaartal

Daar kom ik helemaal uit.. moet goedkomen 
super voor jullie hulp/tijd  

edit: nog een klein vraagje.
Als het de datum is (voor de factuur van het volgend jaar, of voor de herrineringen ofzo), hoe kan ik er dan voor zorgen dat ie een pagina aan roept waarin een pdf wordt aangemaakt. (pdf wordt al aangemaakt, dit werkt al. hij moet alleen die pagina nog aanroepen.)

Hoe kan ik dit dan doen, met cronjobs ofzo?
Offline Stefan14 - 09/02/2007 21:54
Avatar van Stefan14 PHP gevorderde ik denk dat jij bedoelt dat hij de pagina doorstuurt?

dit kan je doen met
  1. <?php
  2. header("Location: pagina.php");
  3. ?>
Offline Ibrahim - 09/02/2007 22:27
Avatar van Ibrahim PHP expert
  1. datum != jaartal
  2. ==>>
  3. DATE_FORMAT(datum, '%Y') = jaartal
Offline Chupskie - 09/02/2007 23:09
Avatar van Chupskie MySQL beginner Thanks, nu moet het helemaal gaan lukke..

Super bedankt iedereen..
Als ik nog tegen problemen aan loop horen jullie het wel.

Bedankt.
-Chupskie  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.252s