Verwijder product niet als deze voorkomt op factuur

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stephan G

Stephan G

07/02/2011 00:24:11
Quote Anchor link
Het probleem
Je kunt producten niet zomaar verwijderen of aanpassen, omdat als een product op een factuur voorkomt, die factuur opeens incompleet of onjuist zou zijn. Hoe werk je daar omheen?

Mijn idee
Mijn idee is als volgt: In plaats van een product te verwijderen of (de prijs) aan te passen, zet je het product op non-actief. Het product blijft dan in de database bewaard onder hetzelfde ID, zodat alle productverwijzingen op oude facturen naar dat product, met die productprijs, juist blijven. Daarnaast maak je een kopie van het product, die je met een nieuw ID weer invoert in je tabel. Alle facturen die vanaf dat moment worden gegenereerd en dat product bevatten, maken zo gebruik van de nieuwe data.

Is dit de juiste manier van werken?
Gewijzigd op 07/02/2011 00:25:13 door Stephan G
 
PHP hulp

PHP hulp

08/11/2024 19:37:24
 

07/02/2011 00:32:13
Quote Anchor link
Correct. In principe verwijder je nooit wat uit je database (zeg nooit nooit).
Je kunt het nog verder uitbreiden, denk ik, door die prijs 'uit' het product te halen. Daar dus weer een aparte tabel voor maken. Heb je ook al nagedacht over korting?
Zoek anders eens op normaliseren.
 
Stephan G

Stephan G

07/02/2011 00:47:41
Quote Anchor link
Goed idee! Ik kan natuurlijk ook een nieuwe tabel aanmaken en daar het product naartoe kopieëren. Dan moet ik echter wel ook NOG een koppeltabel aanmaken, en ook de factuur updaten om naar die nieuwe koppeltabel en dus het nieuwe product te verwijzen. Wat zou hier wijsheid zijn, denk je? De nieuwe koppeltabel + update, of een kopie van het product in zijn eigen tabel?

Normaliseren is wel aardig gelukt ;).

Toevoeging op 07/02/2011 01:04:54:

Edit:
Nu ik er over nadenk, heb ik denk ik niet eens een nieuwe koppeltabel nodig. Wat mijn oplossing op dit moment zou zijn is:

Een nieuw veld toevoegen aan de bestaande koppeltabel tussen producten en facturen. Je krijgt dan:
factuur_id, product_id, oud_product_id (bijv.)

Waarbij steeds alleen factuur_id en product_id OF oud_product_id zijn ingevuld; van die laatste twee dus niet beide!
 
Bart Scheltinga

Bart Scheltinga

11/02/2011 14:46:07
Quote Anchor link
ik ben ook een programma aan het maken voor facturen, wat ik doe is alle data uit tabellen zoals 'product' halen en dat allemaal opslaan in de tabel 'factuur'. Dan kan er nooit data verloren gaan doordat er elders data verwijderd word of bewerkt.

straks komt de belastingdienst...moet je zeggen: "sorry mijn facturen kloppen niet meer want ik heb oude producten uit mijn systeem verwijderd" :-)
 
John D

John D

11/02/2011 15:29:22
Quote Anchor link
Allemaal prima suggesties behalve "oud_product_id" dat is sowieso fout. Zorg voor een juiste datamodellering. Neem in de tabel producten een einddatum op, dat is beter dan non-actief. In de tabel prijs neem je ook een einddatum op (datum_tot) deze laat je leeg (NULL) totdat er een prijsverhoging ingevoerd wordt. Op deze manier kan je altijd je facturen opnieuw genereren. Overigens wordt de belasting daar niet vrolijk van, opnieuw genereren is manipuleerbaar. De belasting ziet liever een pdf opgeslagen in je document management boekhoudsysteem of in een tabel of op storage of alles in de tabel factuurregels zoals Bart ongeveer voorstelt.
Gewijzigd op 11/02/2011 15:31:31 door John D
 



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.