[mysql] periodes

Pagina: 1
Acties:

  • simon
  • Registratie: Maart 2002
  • Laatst online: 27-05 09:21
Beste luitjes,

Ik maak moet een factuur systeem maken voor een klant, en die heeft de eis dat er facturen op periode de deur uit gaan.

Dus na elke 3 maanden moet er bijvoorbeeld een factuur te zien zijn voor alle klanten. Die iets besteld hebben, dus na die maand, plus 3 (tot in het oneindige).

Ik kan eigenlijk nergens echt iets vinden waaraan ik een techniek voor dit zou moeten afleiden.

Ik hoop ook dat jullie mijn warrige verhaal begrijpen :)

|>


Verwijderd

Zoals ik het zie ben je niet op zoek naar techniek, maar gewoon een tutorial SQL, want dit is toch redelijk straight-forward. Wat heb je zelf al bedacht?

  • simon
  • Registratie: Maart 2002
  • Laatst online: 27-05 09:21
Verwijderd schreef op 09 maart 2004 @ 21:10:
Zoals ik het zie ben je niet op zoek naar techniek, maar gewoon een tutorial SQL, want dit is toch redelijk straight-forward. Wat heb je zelf al bedacht?
Hm ik weet niet hoe je me begrepen hebt, maar ik heb dus 1 tabel met aanvragen, met daarin de datum, en een andere met daarin het product, en de periode waarover men betaalt.

Nu ben ik bezig met een 'agenda' van de maand, waarin je per dag ziet welke factuur, er op die dag aan een nieuwe periode begint.

Ik dacht eerst aan vaste periodes, maar dat komt niet uit, dan zou ik een extra tabel kunnen maken, met daarin welke maand bij welk product hoort, en daarbij de betaling.

Maar dat werkt niet, klanten doen niet op de zelfde dag de aanvraag, maar op verschillende dagen.

Nu weet ik absoluut niet, hoe ik een query maak waarin ik selecteer op diegene die deze maand beginnen aan een nieuwe periode.

|>


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Ik begrijp echt geen hout van wat je bedoelt...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • simon
  • Registratie: Maart 2002
  • Laatst online: 27-05 09:21
drm schreef op 09 maart 2004 @ 21:23:
Ik begrijp echt geen hout van wat je bedoelt...
Dat deed ik eerst ook niet, maar ik zal het nog wat verhelderen.

User a koopt artikelen, ik wil dat voor de artikelen die user a koopt er om de 3 maanden een factuur de deur uit gaat. Nu wil ik een overzicht met alle facturen die deze maand eruit moeten.

Nu zijn er producten waarbij de factuur om de 3 maanden, maar ook om het jaar of wat dan ook de deur uit moeten.

Maar het is dus om de (zoveel) maanden, na de datum dat de klant heeft besteld. Dus ik bestel vandaag, dan krijg ik 3 maanden later nog een factuur, en 6 maanden later, en 9 maanden later enz enz...

Maar ik zoek dus een manier om van deze maand te kijken, welke mensen in aamerking komen voor die factuur, dus bij wie de periode in deze maand valt.

|>


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 20:58
Je zoekt iedere maand alle facturen op, en kijkt of deze verstuurd zijn langer dan x maanden geleden? Dat kan met date_sub e.d. kortom de mysql dat and time functions.

  • simon
  • Registratie: Maart 2002
  • Laatst online: 27-05 09:21
djluc schreef op 09 maart 2004 @ 21:31:
Je zoekt iedere maand alle facturen op, en kijkt of deze verstuurd zijn langer dan x maanden geleden? Dat kan met date_sub e.d. kortom de mysql dat and time functions.
Er is niet zo iets als status verstuurd... Het punt is, ik wil dus gewoon een automatisch e lijst generen. Zonder dat daar 'interventie' bij komt kijken...

|>


Verwijderd

Ik zou in de order/factuur regel tabel, een kolom, gefactureerd/factuurdatum opnemen, zodoende kan je alle orderregels af, om te kijken of je nog iets moet factureren. Het is wel een raar systeem, ik heb iets soortgelijks gemaakt, echter daar hing de facturatie periode niet af van de producten. Wordt wel een gezwoeg voor de database, om op deze manier de factureren eruit te gaan spugen.

Of gaat met iedere facturatie ronde even alle 'openstaande' betalingen/betalingsregels af, en alles wat voldoet gooi je naar een facturatie tabel. Vanuit die facturatie tabel, kan je dan je facturen gaan uitdraaien.

Indexeer dan in ieder geval de factuurregels op factuurnr+regelnr zodoende je snel kan zoeken of iets al gefactureerd is.

[ Voor 31% gewijzigd door Verwijderd op 09-03-2004 21:38 ]


  • simon
  • Registratie: Maart 2002
  • Laatst online: 27-05 09:21
Verwijderd schreef op 09 maart 2004 @ 21:34:
Ik zou in de order/factuur regel tabel, een kolom, gefactureerd/factuurdatum opnemen, zodoende kan je alle orderregels af, om te kijken of je nog iets moet factureren. Het is wel een raar systeem, ik heb iets soortgelijks gemaakt, echter daar hing de facturatie periode niet af van de producten. Wordt wel een gezwoeg voor de database, om op deze manier de factureren eruit te gaan spugen.
Hm, dat laatste is er mijn grootste contra bij, maar is er niet een mogelijkheid waaruit ik dit vanuit de query bekijk?

Overstappen naar PostgreSQL of een geavanceerdere DBMS is helaas niet mogelijk...

|>


Verwijderd

Volgens mij denkt Simon iets te moeilijk... ik denk dat het beter is als hij vanavond in bed een andere oplossing gaat zitten te bedenken ;)

99% kans dat het namelijk makkelijker kan....

Kan je niet 1x per maand (1e dag ofzow) bekijken welke facturen er die maand verzonden moeten worden en die klaarzetten in een aparte tabel?

[ Voor 29% gewijzigd door Verwijderd op 09-03-2004 21:40 ]


Verwijderd

Simon schreef op 09 maart 2004 @ 21:37:
[...]

Hm, dat laatste is er mijn grootste contra bij, maar is er niet een mogelijkheid waaruit ik dit vanuit de query bekijk?

Overstappen naar PostgreSQL of een geavanceerdere DBMS is helaas niet mogelijk...
Het heeft niks met de DB te maken op zich (welke gebruik je eigenlijk), meer met de opzet van jouw db structuur. Je ontkomt met dit soort constucties niet aan lange slagen om alles af te lopen. En je wilt natuurlijk in de database ergens genoteerd hebben staan wat en wanneer er iets gefactureerd is.

  • simon
  • Registratie: Maart 2002
  • Laatst online: 27-05 09:21
Verwijderd schreef op 09 maart 2004 @ 21:38:
Volgens mij denkt Simon iets te moeilijk... ik denk dat het beter is als hij vanavond in bed een andere oplossing gaat zitten te bedenken ;)

99% kans dat het namelijk makkelijker kan..
Het is niet mijn denken, maar het is mijn geld, wat ik ervoor krijg :)

Het is een van die functies die ze er 'verplicht' inwillen. En het lijkt me dat er vast veel meer facturerings-software is die het ook kan..

Andere optie is om vanuit de registratie per user te gaan bepalen wat voor maanden er gefactureerd moet worden, maar dat is te db intensief, en niet dynamisch genoeg...
Verwijderd schreef op 09 maart 2004 @ 21:40:
[...]

Het heeft niks met de DB te maken op zich (welke gebruik je eigenlijk), meer met de opzet van jouw db structuur. Je ontkomt met dit soort constucties niet aan lange slagen om alles af te lopen. En je wilt natuurlijk in de database ergens genoteerd hebben staan wat en wanneer er iets gefactureerd is.
Volgens de titel MySQL, dus dat zal wel zo zijn.

Maar, stel dat ik 10000 allemaal aftelopen klanten heb, die elk minimaal 3 producten heb.. Dan doet MySQL er uuren over om het resultaat te retouneren :)

[ Voor 33% gewijzigd door simon op 09-03-2004 21:42 ]

|>


Verwijderd

Simon schreef op 09 maart 2004 @ 21:40:
[...]

Het is niet mijn denken, maar het is mijn geld, wat ik ervoor krijg :)

Het is een van die functies die ze er 'verplicht' inwillen. En het lijkt me dat er vast veel meer facturerings-software is die het ook kan..

Andere optie is om vanuit de registratie per user te gaan bepalen wat voor maanden er gefactureerd moet worden, maar dat is te db intensief, en niet dynamisch genoeg...
euh, dat zal op hetzelfde neerkomen. Je moet gewoon alles af wat nog niet gefactureerd is. Er kan ook wat misgaan met zo'n facturatie ronde/printen bv,, en dan moet je de boel kunnen herstellen, en/of opnieuw draaien!

Verwijderd

Dit zal wel een domme oplossing zijn maargoed :p

Kan je niet een tabel maken met de 12 maanden van het jaar en als dan iemand een product aanvraagt (via zijn username oid) dan gelijk het userid + aankoopnummer oid in die database bij de goede maand proppen...

Dan hoef je alleen maar in de tabel naar de huidige maand te kijken en aan de hand van userid en aankoopnummer het product bepalen en factureren :S

Verwijderd

Simon schreef op 09 maart 2004 @ 21:40:
[...]
Volgens de titel MySQL, dus dat zal wel zo zijn.
ahum, mijn fout :)
Maar, stel dat ik 10000 allemaal aftelopen klanten heb, die elk minimaal 3 producten heb.. Dan doet MySQL er uuren over om het resultaat te retouneren :)
Daarom bijhouden in de verkoopregel tabel (of wat je daar ook voor hebt) wanneer er iets gefactureerd is, en of er gefactureerd is, op die kolommen een index gooien en van daaruit kan je dan verder werken.

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Simon schreef op 09 maart 2004 @ 21:40:
Maar, stel dat ik 10000 allemaal aftelopen klanten heb, die elk minimaal 3 producten heb.. Dan doet MySQL er uuren over om het resultaat te retouneren :)
Indexeren helpt hierbij.

De databasestructuur ligt al vast en is onwijzigbaar door andere software die hier gebruik van maakt?
Een WHERE datum>3maanden terug closule zou toch voldoende zijn?

  • simon
  • Registratie: Maart 2002
  • Laatst online: 27-05 09:21
Verwijderd schreef op 09 maart 2004 @ 21:45:
Dit zal wel een domme oplossing zijn maargoed :p

Kan je niet een tabel maken met de 12 maanden van het jaar en als dan iemand een product aanvraagt (via zijn username oid) dan gelijk het userid + aankoopnummer oid in die database bij de goede maand proppen...

Dan hoef je alleen maar in de tabel naar de huidige maand te kijken en aan de hand van userid en aankoopnummer het product bepalen en factureren :S
Het punt is, ik heb liever niet de maanden waarbij de user zijn 'factuur' moet ontvangen, in de db per user apart. Als er dan een datum veranderd per product dan moet dat allemaal mee veranderen, en dat geeft een hoop heisa...
GlowMouse schreef op 09 maart 2004 @ 21:47:
[...]

Indexeren helpt hierbij.

De databasestructuur ligt al vast en is onwijzigbaar door andere software die hier gebruik van maakt?
Een WHERE datum>3maanden terug closule zou toch voldoende zijn?
Die ligt voor een deel vast.. :( Maar, wat als ik nu niet alleen 3 maanden heb, maar ook een dedication van 1 jaar, waar je toch voor moet factureren..

[ Voor 25% gewijzigd door simon op 09-03-2004 21:49 ]

|>


  • Sayko
  • Registratie: Juni 2001
  • Laatst online: 16-05 18:56

Sayko

Knowledge Is Power

heb je de functie quarter al eens geprobeerd??
Pagina: 1