andere manier van facturatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stefan van Iwaarden

Stefan van Iwaarden

11/08/2006 12:53:00
Quote Anchor link
Ik ben bezig met het bestelsysteem voor mijn webshop compleet te veranderen. Tot nu toe deed ik het als volgt:

- bestelling komt binnen
- status bevestigd geven
- factuur + paklijst uitprinten
- inpakken en status wijzigen
- verzenden en status wijzigen

maar dat moet nu als volgt worden:
- bestelling komt binnen
- status bevestigd geven
- paklijst uitprinten
- inpakken en status wijzigen
- verzenden en status wijzigen
- eens in de 14 dagen alle facturen verzenden.

En deze facturen moeten dan zo opgebouwd zijn dat ze alle bestellingen bevatten die in die afgelopen periode gedaan zijn.

Ik weet alleen nog niet helemaal hoe ik dit moet gaan opbouwen.

Ik weet niet of ik nu een aparte tabel zou moeten maken waarin ik per gebruiker bijhoudt hoeveel en welke bestellingen hij wanneer gedaan heeft en hiermee dus die facturen genereren.

Iemand ideeën?

dit is de opbouw van de (belangrijkste) tabellen:
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
CREATE TABLE `besteldeproducten` (
  `id` bigint(11) NOT NULL auto_increment,
  `bestellingsID` bigint(11) NOT NULL default '0',
  `productID` int(11) NOT NULL default '0',
  `aantal` int(11) NOT NULL default '0',
  `prijs1` float NOT NULL default '0',
  `prijs2` float NOT NULL default '0',
  `prijs5` float NOT NULL default '0',
  `prijs10` float NOT NULL default '0',
  `prijs100` float NOT NULL default '0',
  `prijs250` float NOT NULL default '0',
  `prijs1000` float NOT NULL default '0',
  `aanbieding` enum('nee','ja') NOT NULL default 'ja',
  `gewicht` float NOT NULL default '0',
  `verpakking` enum('bubbeltjesenvelop','pakketje') NOT NULL default 'bubbeltjesenvelop',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 COMMENT='Hier komen alle bestelde producten te staan.' AUTO_INCREMENT=11337 ;

-- --------------------------------------------------------

--
-- Tabel structuur voor tabel `bestellingen`
--

CREATE TABLE `bestellingen` (
  `id` bigint(20) NOT NULL default '0',
  `gebruikersID` int(11) NOT NULL default '0',
  `kredietID` bigint(20) NOT NULL default '0',
  `status` set('bestelling bevestigd','wachtend op betaling','betaling bevestigd','ingepakt','ingepakt/wachtend op betaling','ingepakt/betaling bevestigd','verzonden','verzonden/wachtend op betaling','verzonden/betaling bevestigd','afgehandeld','geweigerd','wachtend op bevestiging') NOT NULL default '',
  `datum` date NOT NULL default '0000-00-00',
  `verzendkosten` enum('ja','nee') NOT NULL default 'ja',
  `opmerkingen` text NOT NULL,
  `opmerkingenadmin` text NOT NULL,
  `korting` float NOT NULL default '0',
  `land` enum('nederland','belgie','duitsland','anders') NOT NULL default 'nederland',
  `verpakking` enum('bubbeltjesenvelop','pakketje') NOT NULL default 'bubbeltjesenvelop',
  `actiecode` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Tabel structuur voor tabel `producten`
--

CREATE TABLE `producten` (
  `id` int(11) NOT NULL auto_increment,
  `naam` varchar(100) NOT NULL default '',
  `beschrijving` text NOT NULL,
  `bestelnummer` varchar(10) NOT NULL default '',
  `prijs1` float NOT NULL default '0',
  `prijs2` float NOT NULL default '0',
  `prijs5` float NOT NULL default '0',
  `prijs10` float NOT NULL default '0',
  `prijs100` float NOT NULL default '0',
  `prijs250` float NOT NULL default '0',
  `prijs1000` float NOT NULL default '0',
  `prijs1Aanbieding` float NOT NULL default '0',
  `prijs2Aanbieding` float NOT NULL default '0',
  `prijs5Aanbieding` float NOT NULL default '0',
  `prijs10Aanbieding` float NOT NULL default '0',
  `prijs100Aanbieding` float NOT NULL default '0',
  `prijs250Aanbieding` float NOT NULL default '0',
  `prijs1000Aanbieding` float NOT NULL default '0',
  `inkoopprijs` float NOT NULL default '0',
  `subcategorieID` int(11) NOT NULL default '0',
  `voorraad` int(11) NOT NULL default '0',
  `minaantal` int(11) NOT NULL default '0',
  `status` set('online','offline') NOT NULL default 'online',
  `gewicht` float NOT NULL default '0',
  `aanbieding` enum('nee','ja') NOT NULL default 'nee',
  `rang` int(11) NOT NULL default '0',
  `verpakking` set('bubbeltjesenvelop','pakketje') NOT NULL default '',
  `vaknummer` varchar(25) NOT NULL default '',
  `zoekwoord1` varchar(255) NOT NULL default '',
  `zoekwoord2` varchar(255) NOT NULL default '',
  `zoekwoord3` varchar(255) NOT NULL default '',
  `relatie1` varchar(255) NOT NULL default '',
  `relatie2` varchar(255) NOT NULL default '',
  `relatie3` varchar(255) NOT NULL default '',
  `relatie4` varchar(255) NOT NULL default '',
  `relatie5` varchar(255) NOT NULL default '',
  `relatie1_link` varchar(255) NOT NULL default '',
  `relatie2_link` varchar(255) NOT NULL default '',
  `relatie3_link` varchar(255) NOT NULL default '',
  `relatie4_link` varchar(255) NOT NULL default '',
  `relatie5_link` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `bestelnummer` (`bestelnummer`),
  UNIQUE KEY `id` (`id`),
  UNIQUE KEY `id_2` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='De tabel waar alle producten in staan' AUTO_INCREMENT=931 ;
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
 
PHP hulp

PHP hulp

17/11/2024 19:35:11
 
Robert Deiman

Robert Deiman

11/08/2006 13:09:00
Quote Anchor link
Ik kan je geen antwoord geven, maareh je databasemodel lijkt me niet correct.
Beter is het om een apparte tabel met relaties te maken, en tussen die en de producttabel een koppeltabel te maken.
 
Frank -

Frank -

11/08/2006 13:10:00
Quote Anchor link
Voordat je verder gaat, ik zou eerst nog eens even een rondje normalisatie gaan doen. Prijs1, prijs2, prijs5 etc. geeft aan dat het datamodel nog niet goed is. Waarschijnlijk betreft dit prijzen per x-aantal stuks, maar dit hoor je in een aparte tabel te zetten:
id
prijs
afname

Dit geldt voor al jouw kolommen waar je bent gaan nummeren, overal moeten aparte tabellen voor worden gemaakt. Doe je dat niet, dan ben je de **beep** op het moment dat je extra waardes/mogelijkheden in jouw systeem wilt inbouwen.

Overigens is een FLOAT geen goed plan om prijzen in op te slaan, ga er maar eens meer rekenen. Dan kom je tot vreemde resultaten... Neem een DECIMAL, dan heb je dit gedonder niet.

In de tabel 'bestellingen' zou ik nog een kolom 'factuurstatus' opnemen. Deze heeft de opties 'aangemaakt' en NULL (dus niet aangemaakt). Alleen vertrouwen op een datum lijkt mij namelijk niet verstandig.

De query zal zo iets worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
  *
FROM
  bestellingen
WHERE
  datum > DATE_SUB(CURDATE(), INTERVAL 14 DAY)
AND
  factuurstatus = NULL
 



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.