Toon posts:

[MySQL] Facturatiesysteem ontwerp

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste mede-tweakers,

Ik ben bezig om een facturatiesysteem op te zetten maar loop tegen een probleem aan.

Doel
Ik heb een bedrijf dat diensten verleent, bijvoorbeeld domeinnamen en hostingpakketten. Ik wil alle informatie betreffende die diensten kunnen opslaan. Ik wil daarnaast mijn debiteuren en productgroepen kunnen opslaan.

Probleemstelling
Het probleem is nu dat ik facturen wil kunnen genereren uit diensten die debiteuren afnemen. Normalerwijze zou dit op ongeveer deze manier gebeuren:

Tabellen: Debiteuren , Producten => Koppel_DebiteurenProducten , Factuur, Factuurregels

Nu wil ik echter ook alle specifieke informatie kunnen opslaan voor mijn diensten. Ik krijg dus voor elke dienst een tabel waarin deze informatie kan staan. dienst_domeinnamen, dienst_hosting, dienst_uurwerkzaamheden . De vraag is nu hoe ik dit eenvoudig kan koppelen.

Eigen research
Ik dacht zelf in het begin aan een overerving "diensten" => dienst_domeinnamen , dienst_hosting waarbij de tabel "diensten" een PK heeft waarmee ik de dienst in de specifieke tabel kan identificeren. Wat je dan krijgt (correct me if i'm wrong) is zoiets als: "diensten" = ID, debiteurnummer, childtabel, childid .

Of zou ik zon overerving in een MySQL tabel niet moeten proberen te forceren maar bijvoorbeeld de specifieke informatie scheiden van het facturatiesysteem en alleen de producten algemeen koppelen? ( de vraag dan is weer hoe ik specifieke informatie op een factuur krijg ) . Ook qua uitbreiding gezien in de toekomst lijkt mij deze oplossing erg smerig.

Hoe kan ik zon probleem het beste oplossen? Ik zie het even niet.

Kern
Hoe genereer ik een factuur uit een database met specifieke informatie voor iedere dienst?

  • Spockz
  • Registratie: Augustus 2003
  • Laatst online: 19-11 13:44

Spockz

Live and Let Live

Wat houdt die specifieke informatie in? Als het gewoon een stukje tekst is kan je daar een extra veld voor aanmaken en die opvragen. Als je informatie per dienst neemt dan stop je dat extra veld in je diensten tabel en dan vraag je die met een join of met een extra query op.

Is dit wat je bedoelt?

C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8


Verwijderd

Verwijderd schreef op maandag 19 februari 2007 @ 10:46:
Beste mede-tweakers,

Ik ben bezig om een facturatiesysteem op te zetten maar loop tegen een probleem aan.

Doel
Ik heb een bedrijf dat diensten verleent, bijvoorbeeld domeinnamen en hostingpakketten. Ik wil alle informatie betreffende die diensten kunnen opslaan. Ik wil daarnaast mijn debiteuren en productgroepen kunnen opslaan.

Probleemstelling
Het probleem is nu dat ik facturen wil kunnen genereren uit diensten die debiteuren afnemen. Normalerwijze zou dit op ongeveer deze manier gebeuren:

Tabellen: Debiteuren , Producten => Koppel_DebiteurenProducten , Factuur, Factuurregels

Nu wil ik echter ook alle specifieke informatie kunnen opslaan voor mijn diensten. Ik krijg dus voor elke dienst een tabel waarin deze informatie kan staan. dienst_domeinnamen, dienst_hosting, dienst_uurwerkzaamheden . De vraag is nu hoe ik dit eenvoudig kan koppelen.

Eigen research
Ik dacht zelf in het begin aan een overerving "diensten" => dienst_domeinnamen , dienst_hosting waarbij de tabel "diensten" een PK heeft waarmee ik de dienst in de specifieke tabel kan identificeren. Wat je dan krijgt (correct me if i'm wrong) is zoiets als: "diensten" = ID, debiteurnummer, childtabel, childid .

Of zou ik zon overerving in een MySQL tabel niet moeten proberen te forceren maar bijvoorbeeld de specifieke informatie scheiden van het facturatiesysteem en alleen de producten algemeen koppelen? ( de vraag dan is weer hoe ik specifieke informatie op een factuur krijg ) . Ook qua uitbreiding gezien in de toekomst lijkt mij deze oplossing erg smerig.

Hoe kan ik zon probleem het beste oplossen? Ik zie het even niet.

Kern
Hoe genereer ik een factuur uit een database met specifieke informatie voor iedere dienst?
Ik ben voor mijn afstudeerstage bezig met een bijna identiek systeem. Het koppelen van diensten als domeinnamen, hostingpakketten en abonnementen als een CMS of Dealerlocatie systeem.

Ik heb het op de volgende manier opgelost. Een dienst wordt gekoppeld aan een klant, bijvoorbeeld een abbonnement aan een klant, Dan wordt er in de tabel klant_abonnement het id van de klant en dat van het abonnement opgeslagen. Daarnaast wordt er in de tabel factuuregel_abonnement. Een nieuwe regel toegevoegd met klant_abonnement id uit de tabel klant_abonnement. op deze manier is elke regel indirect gekoppeld aan de klant. en de informatie over het abonnement is ook opgeslagen via het id. Als ik nu een factuur wil genereren dan selecteer ik alle factuurregels die bij een bepaalde klant horen en aan bepaalde criteria voldoen bijvoorbeeld een datum. Op deze manier kunnen facturen worden gegenereerd

Verwijderd

Topicstarter
Het gaat bijvoorbeeld bij domeinen om informatie als:

subdomein, domeinnaam, tld, registratiedatum, perode

en hostingpakketten als:

ruimte, ssl, emailaccounts,etc

Een extra veld bij de dienstentabel is geen optie omdat de specifieke gegevens hierdoor niet meer te zoeken zijn met SQL. Ik wil in de beheertool voor invoer wel kunnen ingeven om welke domeinnaam het gaat zonder daar 1 grote lap tekst van te maken en die later ook weer uit elkaar te splitten.

Verwijderd

Topicstarter
Ik heb het op de volgende manier opgelost. Een dienst wordt gekoppeld aan een klant, bijvoorbeeld een abbonnement aan een klant, Dan wordt er in de tabel klant_abonnement het id van de klant en dat van het abonnement opgeslagen. Daarnaast wordt er in de tabel factuuregel_abonnement. Een nieuwe regel toegevoegd met klant_abonnement id uit de tabel klant_abonnement. op deze manier is elke regel indirect gekoppeld aan de klant. en de informatie over het abonnement is ook opgeslagen via het id. Als ik nu een factuur wil genereren dan selecteer ik alle factuurregels die bij een bepaalde klant horen en aan bepaalde criteria voldoen bijvoorbeeld een datum. Op deze manier kunnen facturen worden gegenereerd
Wat je zegt klopt maar is denk ik geen oplossing voor mijn probleem of ik begrijp je natuurlijk verkeerd :)

Stel ik wil op de factuur de domeinnaam en iets specifieks over het hostingpakket weergeven. In jouw voorbeeld heb ik een "diensten" tabel waarin de informatie staat. Waar sla jij alle specifieke informatie op zoals "topleveldomein", "webruimte" etc? Dat kan ik niet allemaal 1 grote dienstentabel zetten.

Verwijderd

Verwijderd schreef op maandag 19 februari 2007 @ 11:00:
Het gaat bijvoorbeeld bij domeinen om informatie als:

subdomein, domeinnaam, tld, registratiedatum, perode

en hostingpakketten als:

ruimte, ssl, emailaccounts,etc

Een extra veld bij de dienstentabel is geen optie omdat de specifieke gegevens hierdoor niet meer te zoeken zijn met SQL. Ik wil in de beheertool voor invoer wel kunnen ingeven om welke domeinnaam het gaat zonder daar 1 grote lap tekst van te maken en die later ook weer uit elkaar te splitten.
Deze informatie zou je allemaal op kunnen slaan in een klant_domeinnaam tabel.
subdomeinnamen komen in dezelfde tabel alleen met een verwijzgin naar het id van het topdomein. Desnoods een extra veld waarin staat of het een topdomein is of niet

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 09:44
Verwijderd schreef op maandag 19 februari 2007 @ 11:05:
[...]


Deze informatie zou je allemaal op kunnen slaan in een klant_domeinnaam tabel.
subdomeinnamen komen in dezelfde tabel alleen met een verwijzgin naar het id van het topdomein. Desnoods een extra veld waarin staat of het een topdomein is of niet
En er bestaan geen klanten met meer dan 1 domein?
Gewoon een aparte domein tabel, met daarin alle info die daarbij hoort + het klantnummer. domeintabel id is een veld in je factuurregel tabel.

[ Voor 5% gewijzigd door onkl op 19-02-2007 11:18 ]


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

onkl schreef op maandag 19 februari 2007 @ 11:17:
[...]

En er bestaan geen klanten met meer dan 1 domein?
Gewoon een aparte domein tabel, met daarin alle info die daarbij hoort + het klantnummer. domeintabel id is een veld in je factuurregel tabel.
Je wilt per product een eigen tabel maken :o
imo kan je beter een soort ProductProperties tabel maken waarin je 3 velden hebt, het product id, het type property (bijvoorbeeld domeinnaam of aantal e-mail accounts etc) en natuurlijk de value hiervan.
Pagina: 1