andere manier van facturatie
- 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)
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
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 ;
`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
Beter is het om een apparte tabel met relaties te maken, en tussen die en de producttabel een koppeltabel te maken.
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: