· 9 years ago · Feb 01, 2017, 09:52 PM
1drop procedure klient_rejestracja
2drop procedure klient_usuwanie
3drop procedure klient_przywracanie
4drop procedure klient_zmienImie
5drop procedure klient_zmienNazwisko
6drop procedure klient_zmienAdres
7drop procedure klient_zmienTelefon
8drop procedure klient_zmienMail
9drop procedure klient_awansuj
10drop procedure klient_degraduj
11drop procedure administrator_dodawanie
12drop procedure moderator_dodawanie
13drop function klient_lista
14drop function specjalni_lista
15drop procedure towar_dodawanieNowego
16drop procedure towar_wycofanie
17drop procedure towar_przywracanie
18drop procedure towar_dostawa
19drop procedure towar_zmienIlosc
20drop procedure towar_zmienCene
21drop procedure towar_zmienNazwe
22drop function towar_producent
23drop function towar_nazwa
24drop function towar_mniejNiz
25drop function towar_wiecejNiz
26drop function towar_tanszyNiz
27drop function towar_drozszyNiz
28drop function towar_tanszyNizNetto
29drop function towar_drozszyNizNetto
30drop function towar_czyDostepny
31drop procedure towar_filtrowanie
32drop procedure zamowienie_utworzNowe
33drop procedure zamowienie_dodajTowar
34drop procedure zamowienie_usunTowar
35drop procedure zamowienie_zakoncz
36GO
37drop table Zwrot
38drop table Wymiana
39drop table Reklamacja
40drop table Zamowienie_Towar
41drop table Towar
42drop table Zamowienie
43drop table Status
44drop table Klient
45drop table Uzytkownik
46drop table Rola
47GO
48
49create table Rola (
50 id smallint identity (1,1) primary key,
51 nazwa varchar(50) not null
52)
53create table Uzytkownik(
54 id int identity (1,1) primary key,
55 login varchar (50) unique not null,
56 haslo varchar (50) not null,
57 czyAktywny bit default 'true',
58 rola smallint references Rola(id)
59)
60create table Klient(
61 id int identity (1,1) primary key,
62 imie varchar (50) not null,
63 nazwisko varchar (50) not null,
64 adres text not null,
65 telefon varchar (11) not null,
66 email varchar (100),
67 idUzytkownika int references Uzytkownik(id)
68)
69create table Status (
70 id smallint identity (1,1) primary key,
71 nazwa varchar(50) not null
72)
73create table Zamowienie(
74 id int identity (1,1) primary key,
75 idKlienta int references Klient(id),
76 dataZamowiena date not null,
77 dataRealizacji date,
78 wartosc int not null default 0,
79 status smallint references Status(id)
80)
81create table Towar (
82 id int identity (1,1) primary key,
83 producent varchar (100) not null,
84 nazwa varchar (100) not null unique,
85 ilosc int not null,
86 cenaNetto money not null,
87 podatek smallint not null default '23',
88 cenaBrutto as round( (cenaNetto + cenaNetto * podatek * 0.01), 2),
89 czyDostepny bit default 'true'
90)
91create table Zamowienie_Towar(
92 idZamowienia int references Zamowienie(id),
93 idTowaru int references Towar(id),
94 ilosc int not null,
95 cena money not null default '0',
96 --imei varchar (15) not null,
97 primary key (idZamowienia, idTowaru)
98)
99create table Reklamacja(
100 id_rekamacja int identity (1,1) primary key,
101 idZamowienia int references Zamowienie(id),
102 idTowaru int references Towar(id),
103 opis text not null,
104 status smallint references Status(id)
105)
106create table Wymiana(
107 id_wymiana int identity (1,1) primary key,
108 idZamowienia int references Zamowienie(id),
109 idTowaru int references Towar(id),
110 opis text not null,
111 status smallint references Status(id)
112)
113create table Zwrot(
114 id_zwrot int identity (1,1) primary key,
115 idZamowienia int references Zamowienie(id),
116 idTowaru int references Towar(id),
117 opis text not null,
118 status smallint references Status(id)
119)
120GO
121
122--CONSTRAINTS
123
124alter table Towar
125add constraint towar_ilosc_check check (ilosc >= 0)
126GO
127alter table Towar
128add constraint towar_cenaNetto_check check (cenaNetto >= 0)
129GO
130alter table Towar
131add constraint towar_podatek_check check (podatek >= 0)
132GO
133alter table Zamowienie_Towar
134add constraint zamowienie_ilosc_check check (ilosc >= 0)
135GO
136alter table Zamowienie_Towar
137add constraint zamowienie_cena_check check (cena >= 0)
138GO
139
140-- INSERT
141
142insert into Rola (nazwa)
143values
144 ('administrator'),
145 ('klient'),
146 ('stalyKlient'),
147 ('moderator')
148GO
149insert into Uzytkownik(login, haslo, rola)
150values
151 ('JanNowak', 'poziomki', '4'),
152 ('EwaKowalska', 'kobylamamalybok', '1'),
153 ('AdamBajsztok', 'qwerty', '2'),
154 ('DanutaKos', 'ptak', '2'),
155 ('KatarzynaMaczek', 'general', '4')
156GO
157insert into Klient (imie, nazwisko, adres, telefon, email, idUzytkownika)
158values
159 ('Adam', 'Bajsztok', 'Poznań, os. Różany Potok 17', '841548143', 'AdamBajsztok@gmail.com', '3'),
160 ('Danuta', 'Kos', 'Wrocław, ul. Grunwaldzka 14/5', '741852963', 'DanKos@wp.pl', '4')
161GO
162insert into Status (nazwa)
163values
164 ('w trakcie'),
165 ('zakończono'),
166 ('przerwano')
167GO
168insert into Towar (producent, nazwa, ilosc, cenaNetto)
169values
170 ('Samsung', 'Galaxy A3 gray', 50, 600),
171 ('Smasung', 'Galaxy S7 white', 50, 2100),
172 ('Sony', 'Xperia Z5 black', 37, 1200),
173 ('LG', 'G5', 24, 1100 ),
174 ('Xiaomi', 'Redmin 3s 32GB gray', 15, 900),
175 ('Huawei', 'P9 Lite black', 20, 1100),
176 ('Samsung', 'Galaxy J5 2016 gold', 15, 900),
177 ('ASUS', 'ZenFone 3 ZE520KL', 30, 1600),
178 ('LG', 'X Power K220 dark blue', 7, 800 ),
179 ('Lenovo', 'Moto X Style white', 15, 1300),
180 ('Apple', 'iPhone 7 32GB black', 5, 3350),
181 ('HTC', 'Desire 620 LTE white', 10, 500)
182GO
183
184-- TRIGGER
185
186CREATE TRIGGER trigger_usuwanieUzytkownika ON uzytkownik
187INSTEAD OF DELETE
188AS
189BEGIN
190 DECLARE @id int
191 SELECT @id = deleted.id FROM deleted
192 UPDATE uzytkownik SET czyAktywny = 'false' WHERE id=@id
193END
194GO
195
196CREATE TRIGGER trigger_usuwanieKlienta ON klient
197INSTEAD OF DELETE
198AS
199BEGIN
200 DECLARE @id int
201 SELECT @id = deleted.idUzytkownika FROM deleted
202 UPDATE uzytkownik SET czyAktywny = 'false' WHERE id=@id
203END
204GO
205
206-- PRCEDUER
207
208CREATE PROCEDURE klient_rejestracja
209 @login varchar(45),
210 @haslo varchar(45),
211 @imie varchar(50),
212 @nazwisko varchar(50),
213 @adres varchar(300),
214 @telefon varchar(11),
215 @email varchar(100)
216AS
217 DECLARE @id int
218
219 IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
220 RAISERROR('Taki login jest już zajęty!', 11, 1)
221 ELSE IF EXISTS (SELECT * FROM klient WHERE email = @email)
222 RAISERROR('Taki mail jest już w bazie!', 11, 2)
223 ELSE
224 BEGIN
225 INSERT INTO uzytkownik
226 VALUES(@login, @haslo, 'true', 2)
227
228 SELECT @id = Uzytkownik.id FROM Uzytkownik
229
230 INSERT INTO klient
231 VALUES(@imie, @nazwisko, @adres, @telefon, @email, @id)
232 END
233GO
234
235CREATE PROCEDURE klient_usuwanie
236 @id int = NULL, --id z tabeli klient
237 @login varchar(50) = NULL
238AS
239 IF @id IS NOT NULL
240 IF @login IS NOT NULL BEGIN
241 RAISERROR('Podaj jeden parametr!', 11, 3)
242 RETURN
243 END
244
245 IF @id IS NOT NULL BEGIN
246 IF NOT EXISTS (SELECT * FROM Klient WHERE id = @id)
247 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
248 ELSE BEGIN
249 DECLARE @idU int
250 SELECT @idU = idUzytkownika FROM Klient WHERE id = @id
251 IF EXISTS (SELECT * FROM uzytkownik WHERE id = @idU AND czyAktywny = 'false')
252 RAISERROR('Ten uzytkownik jest już nieaktywny!', 11, 1)
253 ELSE BEGIN
254 UPDATE uzytkownik
255 SET czyAktywny = 'false'
256 WHERE id = @idU
257 END
258 END
259 END
260
261 IF @login IS NOT NULL BEGIN
262 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
263 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
264 ELSE IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login AND czyAktywny = 'false')
265 RAISERROR('Ten uzytkownik jest już nieaktywny!', 11, 1)
266 ELSE BEGIN
267 UPDATE uzytkownik
268 SET czyAktywny = 'false'
269 WHERE login = @login
270 END
271 END
272
273 IF @id IS NULL
274 IF @login IS NULL
275 RAISERROR('Podaj jeden parametr!', 11, 3)
276GO
277
278CREATE PROCEDURE klient_przywracanie
279 @id int = NULL,
280 @login varchar(50) = NULL
281AS
282 IF @id IS NOT NULL
283 IF @login IS NOT NULL BEGIN
284 RAISERROR('Podaj jeden parametr!', 11, 3)
285 RETURN
286 END
287
288 IF @id IS NOT NULL BEGIN
289 IF NOT EXISTS (SELECT * FROM Klient WHERE id = @id)
290 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
291 ELSE BEGIN
292 DECLARE @idU int
293 SELECT @idU = idUzytkownika FROM Klient WHERE id = @id
294 IF EXISTS (SELECT * FROM uzytkownik WHERE id = @idU AND czyAktywny = 'true')
295 RAISERROR('Ten uzytkownik jest już aktywny!', 11, 1)
296 ELSE BEGIN
297 UPDATE uzytkownik
298 SET czyAktywny = 'true'
299 WHERE id = @idU
300 END
301 END
302 END
303
304 IF @login IS NOT NULL BEGIN
305 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
306 RAISERROR('Taki użytkownik nie istnieje!', 11, 3)
307 ELSE IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login AND czyAktywny = 'true')
308 RAISERROR('Ten uzytkownik jest już aktywny!', 11, 1)
309 ELSE BEGIN
310 UPDATE uzytkownik
311 SET czyAktywny = 'true'
312 WHERE login = @login
313 END
314 END
315
316 IF @id IS NULL
317 IF @login IS NULL
318 RAISERROR('Podaj jeden parametr!', 11, 3)
319GO
320
321CREATE PROCEDURE klient_zmienImie
322 @id int = NULL,
323 @login varchar(50) = NULL,
324 @imie varchar(50)
325AS
326 IF @id IS NOT NULL
327 IF @login IS NOT NULL BEGIN
328 RAISERROR('Podaj jeden parametr!', 11, 3)
329 RETURN
330 END
331
332 IF @id IS NOT NULL BEGIN
333 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
334 RAISERROR('Taki klient nie istnieje!', 11, 3)
335 ELSE BEGIN
336 UPDATE klient
337 SET imie = @imie
338 WHERE id = @id
339 END
340 END
341
342 IF @login IS NOT NULL BEGIN
343 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
344 RAISERROR('Taki klient nie istnieje!', 11, 3)
345 ELSE BEGIN
346 DECLARE @idU int
347 DECLARE @idK int
348 SELECT @idU = id FROM Uzytkownik WHERE login = @login
349 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
350
351 UPDATE klient
352 SET imie = @imie
353 WHERE id = @idK
354 END
355 END
356
357 IF @id IS NULL
358 IF @login IS NULL
359 RAISERROR('Podaj jeden parametr!', 11, 3)
360GO
361
362CREATE PROCEDURE klient_zmienNazwisko
363 @id int = NULL,
364 @login varchar(50) = NULL,
365 @nazwisko varchar(50)
366AS
367 IF @id IS NOT NULL
368 IF @login IS NOT NULL BEGIN
369 RAISERROR('Podaj jeden parametr!', 11, 3)
370 RETURN
371 END
372
373 IF @id IS NOT NULL BEGIN
374 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
375 RAISERROR('Taki klient nie istnieje!', 11, 3)
376 ELSE BEGIN
377 UPDATE klient
378 SET nazwisko = @nazwisko
379 WHERE id = @id
380 END
381 END
382
383 IF @login IS NOT NULL BEGIN
384 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
385 RAISERROR('Taki klient nie istnieje!', 11, 3)
386 ELSE BEGIN
387 DECLARE @idU int
388 DECLARE @idK int
389 SELECT @idU = id FROM Uzytkownik WHERE login = @login
390 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
391
392 UPDATE klient
393 SET nazwisko = @nazwisko
394 WHERE id = @idK
395 END
396 END
397
398 IF @id IS NULL
399 IF @login IS NULL
400 RAISERROR('Podaj jeden parametr!', 11, 3)
401GO
402
403CREATE PROCEDURE klient_zmienAdres
404 @id int = NULL,
405 @login varchar(50) = NULL,
406 @adres varchar(300)
407AS
408 IF @id IS NOT NULL
409 IF @login IS NOT NULL BEGIN
410 RAISERROR('Podaj jeden parametr!', 11, 3)
411 RETURN
412 END
413
414 IF @id IS NOT NULL BEGIN
415 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
416 RAISERROR('Taki klient nie istnieje!', 11, 3)
417 ELSE BEGIN
418 UPDATE klient
419 SET adres = @adres
420 WHERE id = @id
421 END
422 END
423
424 IF @login IS NOT NULL BEGIN
425 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
426 RAISERROR('Taki klient nie istnieje!', 11, 3)
427 ELSE BEGIN
428 DECLARE @idU int
429 DECLARE @idK int
430 SELECT @idU = id FROM Uzytkownik WHERE login = @login
431 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
432
433 UPDATE klient
434 SET adres = @adres
435 WHERE id = @idK
436 END
437 END
438
439 IF @id IS NULL
440 IF @login IS NULL
441 RAISERROR('Podaj jeden parametr!', 11, 3)
442GO
443
444CREATE PROCEDURE klient_zmienTelefon
445 @id int = NULL,
446 @login varchar(50) = NULL,
447 @telefon varchar(11)
448AS
449 IF @id IS NOT NULL
450 IF @login IS NOT NULL BEGIN
451 RAISERROR('Podaj jeden parametr!', 11, 3)
452 RETURN
453 END
454
455 IF @id IS NOT NULL BEGIN
456 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
457 RAISERROR('Taki klient nie istnieje!', 11, 3)
458 ELSE BEGIN
459 UPDATE klient
460 SET telefon = @telefon
461 WHERE id = @id
462 END
463 END
464
465 IF @login IS NOT NULL BEGIN
466 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
467 RAISERROR('Taki klient nie istnieje!', 11, 3)
468 ELSE BEGIN
469 DECLARE @idU int
470 DECLARE @idK int
471 SELECT @idU = id FROM Uzytkownik WHERE login = @login
472 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
473
474 UPDATE klient
475 SET telefon = @telefon
476 WHERE id = @idK
477 END
478 END
479
480 IF @id IS NULL
481 IF @login IS NULL
482 RAISERROR('Podaj jeden parametr!', 11, 3)
483GO
484
485CREATE PROCEDURE klient_zmienMail
486 @id int = NULL,
487 @login varchar(50) = NULL,
488 @email varchar(100)
489AS
490 IF @id IS NOT NULL
491 IF @login IS NOT NULL BEGIN
492 RAISERROR('Podaj jeden parametr!', 11, 3)
493 RETURN
494 END
495
496 IF EXISTS (SELECT * FROM Klient WHERE email = @email) BEGIN
497 RAISERROR('Email nie jest unikalny', 11, 3)
498 RETURN
499 END
500
501 IF @id IS NOT NULL BEGIN
502 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
503 RAISERROR('Taki klient nie istnieje!', 11, 3)
504 ELSE BEGIN
505 UPDATE klient
506 SET email = @email
507 WHERE id = @id
508 END
509 END
510
511 IF @login IS NOT NULL BEGIN
512 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
513 RAISERROR('Taki klient nie istnieje!', 11, 3)
514 ELSE BEGIN
515 DECLARE @idU int
516 DECLARE @idK int
517 SELECT @idU = id FROM Uzytkownik WHERE login = @login
518 SELECT @idK = id FROM Klient WHERE idUzytkownika = @idU
519
520 UPDATE klient
521 SET email = @email
522 WHERE id = @idK
523 END
524 END
525
526 IF @id IS NULL
527 IF @login IS NULL
528 RAISERROR('Podaj jeden parametr!', 11, 3)
529GO
530
531CREATE PROCEDURE klient_awansuj
532 @id int = NULL,
533 @login varchar(50) = NULL
534AS
535 IF @id IS NOT NULL
536 IF @login IS NOT NULL BEGIN
537 RAISERROR('Podaj jeden parametr!', 11, 3)
538 RETURN
539 END
540
541 IF @id IS NOT NULL BEGIN
542 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
543 RAISERROR('Taki klient nie istnieje!', 11, 3)
544 ELSE BEGIN
545 DECLARE @idU int
546 SELECT @idU = Klient.idUzytkownika FROM Klient WHERE id = @id
547
548 UPDATE uzytkownik
549 SET rola = 3
550 WHERE id = @idU
551 END
552 END
553
554 IF @login IS NOT NULL BEGIN
555 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
556 RAISERROR('Taki klient nie istnieje!', 11, 3)
557 ELSE BEGIN
558 UPDATE uzytkownik
559 SET rola = 3
560 WHERE login = @login
561 END
562 END
563
564 IF @id IS NULL
565 IF @login IS NULL
566 RAISERROR('Podaj jeden parametr!', 11, 3)
567GO
568
569CREATE PROCEDURE klient_degraduj
570 @id int = NULL,
571 @login varchar(50) = NULL
572AS
573 IF @id IS NOT NULL
574 IF @login IS NOT NULL BEGIN
575 RAISERROR('Podaj jeden parametr!', 11, 3)
576 RETURN
577 END
578
579 IF @id IS NOT NULL BEGIN
580 IF NOT EXISTS (SELECT * FROM klient WHERE id = @id)
581 RAISERROR('Taki klient nie istnieje!', 11, 3)
582 ELSE BEGIN
583 DECLARE @idU int
584 SELECT @idU = Klient.idUzytkownika FROM Klient WHERE id = @id
585
586 UPDATE uzytkownik
587 SET rola = 2
588 WHERE id = @idU
589 END
590 END
591
592 IF @login IS NOT NULL BEGIN
593 IF NOT EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
594 RAISERROR('Taki klient nie istnieje!', 11, 3)
595 ELSE BEGIN
596 UPDATE uzytkownik
597 SET rola = 2
598 WHERE login = @login
599 END
600 END
601
602 IF @id IS NULL
603 IF @login IS NULL
604 RAISERROR('Podaj jeden parametr!', 11, 3)
605GO
606
607----
608
609CREATE PROCEDURE administrator_dodawanie
610 @login varchar(45),
611 @haslo varchar(45)
612AS
613 IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
614 RAISERROR('Taki login jest już zajęty!', 11, 1)
615 ELSE
616 BEGIN
617 INSERT INTO uzytkownik
618 VALUES(@login, @haslo, 'true', 1)
619 END
620GO
621
622----
623
624CREATE PROCEDURE moderator_dodawanie
625 @login varchar(45),
626 @haslo varchar(45)
627AS
628 IF EXISTS (SELECT * FROM uzytkownik WHERE login = @login)
629 RAISERROR('Taki login jest już zajęty!', 11, 1)
630 ELSE
631 BEGIN
632 INSERT INTO uzytkownik
633 VALUES(@login, @haslo, 'true', 4)
634 END
635GO
636
637----
638
639CREATE FUNCTION klient_lista(@czyAktywny bit)
640RETURNS TABLE
641AS
642RETURN (SELECT k.id, u.login, k.imie, k.nazwisko, k.adres, k.telefon, k.email, r.nazwa FROM Klient k
643 JOIN Uzytkownik u on u.id = k.idUzytkownika
644 JOIN Rola r on r.id = u.rola
645 WHERE u.czyAktywny = @czyAktywny)
646GO
647
648CREATE FUNCTION specjalni_lista(@czyAktywny bit)
649RETURNS TABLE
650AS
651RETURN (SELECT u.id, u.login, r.nazwa FROM Uzytkownik u
652 JOIN Rola r on r.id = u.rola
653 WHERE rola IN (1,4) AND u.czyAktywny = @czyAktywny)
654GO
655
656----
657
658CREATE PROCEDURE towar_dodawanieNowego
659 @producent varchar(100),
660 @nazwa varchar(100),
661 @ilosc int,
662 @cenaNetto money
663AS
664 IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
665 RAISERROR('Taki towar jest już w bazie!', 11, 1)
666 ELSE IF @ilosc <0
667 RAISERROR('Ilosc nie moze byc mniejsza od 0!', 11, 1)
668 ELSE IF @cenaNetto <0
669 RAISERROR('Cena nie moze byc ujemna!', 11, 1)
670 ELSE
671 BEGIN
672 INSERT INTO towar(producent, nazwa, ilosc, cenaNetto)
673 VALUES(@producent, @nazwa, @ilosc, @cenaNetto)
674 END
675GO
676
677CREATE PROCEDURE towar_wycofanie
678 @id int = NULL,
679 @nazwa varchar(100) = NULL
680AS
681 IF @id IS NOT NULL
682 IF @nazwa IS NOT NULL BEGIN
683 RAISERROR('Podaj jeden parametr!', 11, 3)
684 RETURN
685 END
686
687 IF @id IS NULL
688 IF @nazwa IS NULL BEGIN
689 RAISERROR('Podaj jeden parametr!', 11, 3)
690 RETURN
691 END
692
693 IF @id IS NOT NULL
694 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
695 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
696 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
697 RAISERROR('Ten towar ma juz status niedostepny!', 11, 1)
698 ELSE BEGIN
699 UPDATE towar
700 SET czyDostepny = 'false'
701 WHERE id = @id
702 END
703
704 IF @nazwa IS NOT NULL
705 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
706 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
707 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
708 RAISERROR('Ten towar ma juz status niedostepny!', 11, 1)
709 ELSE BEGIN
710 UPDATE towar
711 SET czyDostepny = 'false'
712 WHERE nazwa = @nazwa
713 END
714GO
715
716CREATE PROCEDURE towar_przywracanie
717 @id int = NULL,
718 @nazwa varchar(100) = NULL
719AS
720 IF @id IS NOT NULL
721 IF @nazwa IS NOT NULL BEGIN
722 RAISERROR('Podaj jeden parametr!', 11, 3)
723 RETURN
724 END
725
726 IF @id IS NULL
727 IF @nazwa IS NULL BEGIN
728 RAISERROR('Podaj jeden parametr!', 11, 3)
729 RETURN
730 END
731
732 IF @id IS NOT NULL
733 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
734 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
735 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'true')
736 RAISERROR('Ten towar ma juz status dostepny!', 11, 1)
737 ELSE BEGIN
738 UPDATE towar
739 SET czyDostepny = 'true'
740 WHERE id = @id
741 END
742
743 IF @nazwa IS NOT NULL
744 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
745 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
746 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'true')
747 RAISERROR('Ten towar ma juz status dostepny!', 11, 1)
748 ELSE BEGIN
749 UPDATE towar
750 SET czyDostepny = 'true'
751 WHERE nazwa = @nazwa
752 END
753GO
754
755CREATE PROCEDURE towar_dostawa
756 @id int = NULL,
757 @nazwa varchar(100) = NULL,
758 @ilosc int
759AS
760 IF @id IS NOT NULL
761 IF @nazwa IS NOT NULL BEGIN
762 RAISERROR('Podaj jeden parametr!', 11, 3)
763 RETURN
764 END
765
766 IF @id IS NULL
767 IF @nazwa IS NULL BEGIN
768 RAISERROR('Podaj jeden parametr!', 11, 3)
769 RETURN
770 END
771
772 DECLARE @obecnaIlosc int
773 IF @id IS NOT NULL
774 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
775 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
776 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
777 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
778 ELSE BEGIN
779 SELECT @obecnaIlosc = Towar.ilosc FROM towar WHERE id = @id
780
781 UPDATE towar
782 SET ilosc = @obecnaIlosc + @ilosc
783 WHERE id = @id
784 END
785
786 IF @nazwa IS NOT NULL
787 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
788 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
789 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
790 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
791 ELSE BEGIN
792 SELECT @obecnaIlosc = Towar.ilosc FROM towar WHERE nazwa = @nazwa
793
794 UPDATE towar
795 SET ilosc = @obecnaIlosc + @ilosc
796 WHERE nazwa = @nazwa
797 END
798GO
799
800CREATE PROCEDURE towar_zmienIlosc
801 @id int = NULL,
802 @nazwa varchar(100) = NULL,
803 @ilosc int
804AS
805 IF @id IS NOT NULL
806 IF @nazwa IS NOT NULL BEGIN
807 RAISERROR('Podaj jeden parametr!', 11, 3)
808 RETURN
809 END
810
811 IF @id IS NULL
812 IF @nazwa IS NULL BEGIN
813 RAISERROR('Podaj jeden parametr!', 11, 3)
814 RETURN
815 END
816
817 IF @id IS NOT NULL
818 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
819 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
820 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
821 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
822 ELSE BEGIN
823 UPDATE towar
824 SET ilosc = @ilosc
825 WHERE id = @id
826 END
827
828 IF @nazwa IS NOT NULL
829 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
830 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
831 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
832 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
833 ELSE BEGIN
834 UPDATE towar
835 SET ilosc = @ilosc
836 WHERE nazwa = @nazwa
837 END
838GO
839
840CREATE PROCEDURE towar_zmienCene
841 @id int = NULL,
842 @nazwa varchar(100) = NULL,
843 @cenaNetto money
844AS
845 IF @id IS NOT NULL
846 IF @nazwa IS NOT NULL BEGIN
847 RAISERROR('Podaj jeden parametr!', 11, 3)
848 RETURN
849 END
850
851 IF @id IS NULL
852 IF @nazwa IS NULL BEGIN
853 RAISERROR('Podaj jeden parametr!', 11, 3)
854 RETURN
855 END
856
857 IF @id IS NOT NULL
858 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
859 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
860 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
861 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
862 ELSE BEGIN
863 UPDATE towar
864 SET cenaNetto = @cenaNetto
865 WHERE id = @id
866 END
867
868 IF @nazwa IS NOT NULL
869 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
870 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
871 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
872 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
873 ELSE BEGIN
874 UPDATE towar
875 SET cenaNetto = @cenaNetto
876 WHERE nazwa = @nazwa
877 END
878GO
879
880CREATE PROCEDURE towar_zmienNazwe
881 @id int = NULL,
882 @nazwa varchar(100) = NULL,
883 @nowaNazwa varchar(100)
884AS
885 IF @id IS NOT NULL
886 IF @nazwa IS NOT NULL BEGIN
887 RAISERROR('Podaj jeden parametr!', 11, 3)
888 RETURN
889 END
890
891 IF @id IS NULL
892 IF @nazwa IS NULL BEGIN
893 RAISERROR('Podaj jeden parametr!', 11, 3)
894 RETURN
895 END
896
897 IF @id IS NOT NULL
898 IF NOT EXISTS (SELECT * FROM towar WHERE id = @id)
899 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
900 ELSE IF EXISTS (SELECT * FROM towar WHERE id = @id AND czyDostepny = 'false')
901 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
902 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nowaNazwa)
903 RAISERROR('Ta nazwa towaru jest juz zajeta!', 11, 1)
904 ELSE BEGIN
905 UPDATE towar
906 SET nazwa = @nowaNazwa
907 WHERE id = @id
908 END
909
910 IF @nazwa IS NOT NULL
911 IF NOT EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa)
912 RAISERROR('Takiego towaru nie ma w bazie!', 11, 1)
913 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nazwa AND czyDostepny = 'false')
914 RAISERROR('Ten towar ma status niedostepny! Najpierw nalezy przywrocic produkt!', 11, 1)
915 ELSE IF EXISTS (SELECT * FROM towar WHERE nazwa = @nowaNazwa)
916 RAISERROR('Ta nazwa towaru jest juz zajeta!', 11, 1)
917 ELSE BEGIN
918 UPDATE towar
919 SET nazwa = @nowaNazwa
920 WHERE nazwa = @nazwa
921 END
922GO
923
924----
925
926CREATE FUNCTION towar_producent(@producent varchar(100))
927RETURNS TABLE
928AS
929RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
930 WHERE t.producent = @producent)
931GO
932
933CREATE FUNCTION towar_nazwa(@nazwa varchar(100))
934RETURNS TABLE
935AS
936RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
937 WHERE t.nazwa LIKE + '%' + @nazwa + '%')
938GO
939
940CREATE FUNCTION towar_mniejNiz(@ilosc int)
941RETURNS TABLE
942AS
943RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
944 WHERE t.ilosc < @ilosc)
945GO
946
947CREATE FUNCTION towar_wiecejNiz(@ilosc int)
948RETURNS TABLE
949AS
950RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
951 WHERE t.ilosc > @ilosc)
952GO
953
954CREATE FUNCTION towar_tanszyNiz(@cenaBrutto money)
955RETURNS TABLE
956AS
957RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
958 WHERE t.cenaBrutto < @cenaBrutto)
959GO
960
961CREATE FUNCTION towar_drozszyNiz(@cenaBrutto money)
962RETURNS TABLE
963AS
964RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
965 WHERE t.cenaBrutto > @cenaBrutto)
966GO
967
968CREATE FUNCTION towar_tanszyNizNetto(@cenaNetto money)
969RETURNS TABLE
970AS
971RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
972 WHERE t.cenaNetto < @cenaNetto)
973GO
974
975CREATE FUNCTION towar_drozszyNizNetto(@cenaNetto money)
976RETURNS TABLE
977AS
978RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
979 WHERE t.cenaNetto > @cenaNetto)
980GO
981
982CREATE FUNCTION towar_czyDostepny(@czyDostepny bit)
983RETURNS TABLE
984AS
985RETURN (SELECT t.id, t.producent, t.nazwa, t.ilosc, t.cenaNetto, t.cenaBrutto, t.czyDostepny FROM Towar t
986 WHERE czyDostepny = @czyDostepny)
987GO
988
989----
990
991CREATE PROCEDURE towar_filtrowanie
992 @producent varchar(100) = NULL,
993 @nazwa varchar(100) = NULL,
994 @ilosc int = NULL,
995 @ilosc_mniejNiz int = NULL,
996 @ilosci_wiecejNiz int = NULL,
997 @cenaNetto money = NULL,
998 @cenaNetto_mniejNiz money = NULL,
999 @cenaNetto_wiecejNiz money = NULL,
1000 @cenaBrutto money = NULL,
1001 @cenaBrutto_mniejNiz money = NULL,
1002 @cenaBrutto_wiecejNiz money = NULL,
1003 @czyDostepny bit = NULL
1004AS
1005 DECLARE @Query nvarchar(2000)
1006 DECLARE @Params nvarchar(2000)
1007
1008 SET @Query = 'SELECT * FROM towar WHERE 1=1'
1009 SET @Params = '@producent varchar(100),
1010 @nazwa varchar(100),
1011 @ilosc int,
1012 @ilosc_mniejNiz int,
1013 @ilosci_wiecejNiz int,
1014 @cenaNetto money,
1015 @cenaNetto_mniejNiz money,
1016 @cenaNetto_wiecejNiz money,
1017 @cenaBrutto money,
1018 @cenaBrutto_mniejNiz money,
1019 @cenaBrutto_wiecejNiz money,
1020 @czyDostepny bit'
1021
1022 IF @producent IS NOT NULL
1023 SET @Query = @Query + 'AND (producent = @producent)'
1024 IF @nazwa IS NOT NULL
1025 SET @Query = @Query + 'AND (nazwa like ''%' + @nazwa + '%'')'
1026 IF @ilosc IS NOT NULL
1027 SET @Query = @Query + 'AND (ilosc = @ilosc)'
1028 IF @ilosc_mniejNiz IS NOT NULL
1029 SET @Query = @Query + 'AND (ilosc < @ilosc_mniejNiz)'
1030 IF @ilosci_wiecejNiz IS NOT NULL
1031 SET @Query = @Query + 'AND (ilosc > @ilosci_wiecejNiz)'
1032
1033 IF @cenaNetto IS NOT NULL
1034 SET @Query = @Query + 'AND (cenaNetto = @cenaNetto)'
1035 IF @cenaNetto_mniejNiz IS NOT NULL
1036 SET @Query = @Query + 'AND (cenaNetto < @cenaNetto_mniejNiz)'
1037 IF @cenaNetto_wiecejNiz IS NOT NULL
1038 SET @Query = @Query + 'AND (cenaNetto > @cenaNetto_wiecejNiz)'
1039
1040 IF @cenaBrutto IS NOT NULL
1041 SET @Query = @Query + 'AND (cenaBrutto = @cenaBrutto)'
1042 IF @cenaBrutto_mniejNiz IS NOT NULL
1043 SET @Query = @Query + 'AND (cenaBrutto < @cenaBrutto_mniejNiz)'
1044 IF @cenaBrutto_wiecejNiz IS NOT NULL
1045 SET @Query = @Query + 'AND (cenaBrutto > @cenaBrutto_wiecejNiz)'
1046
1047 IF @czyDostepny IS NOT NULL
1048 SET @Query = @Query + 'AND (czyDostepny = @czyDostepny)'
1049
1050 execute sp_executesql @Query, @Params,
1051 @producent, @nazwa,
1052 @ilosc, @ilosc_mniejNiz, @ilosci_wiecejNiz,
1053 @cenaNetto, @cenaNetto_mniejNiz, @cenaNetto_wiecejNiz,
1054 @cenaBrutto, @cenaBrutto_mniejNiz, @cenaBrutto_wiecejNiz,
1055 @czyDostepny
1056GO
1057
1058----
1059
1060CREATE PROCEDURE zamowienie_utworzNowe
1061 @idKlienta int = NULL,
1062 @login varchar(50) = NULL,
1063 @dataZamowienia date = NULL
1064AS
1065 IF @idKlienta IS NOT NULL
1066 IF @login IS NOT NULL BEGIN
1067 RAISERROR('Podaj idKlienta LUB login!', 11, 1)
1068 RETURN
1069 END
1070
1071 IF @idKlienta IS NULL
1072 IF @login IS NULL BEGIN
1073 RAISERROR('Podaj idKlienta lub login!', 11, 1)
1074 RETURN
1075 END
1076
1077 DECLARE @status smallint
1078 DECLARE @data date
1079
1080 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
1081 SELECT @data = CONVERT (date, getdate())
1082
1083 IF @idKlienta IS NOT NULL
1084 IF NOT EXISTS (SELECT * FROM Klient WHERE id = @idKlienta)
1085 RAISERROR('Taki klient nie istnieje w bazie', 11, 1)
1086 ELSE IF @dataZamowienia IS NULL BEGIN
1087 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1088 VALUES(@idKlienta, @data, @status)
1089 PRINT('idZamowienia: ')
1090 PRINT(SCOPE_IDENTITY())
1091 END ELSE BEGIN
1092 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1093 VALUES(@idKlienta, @dataZamowienia, @status)
1094 PRINT('idZamowienia: ')
1095 PRINT(SCOPE_IDENTITY())
1096 END
1097
1098 IF @login IS NOT NULL
1099 IF NOT EXISTS (SELECT * FROM Uzytkownik WHERE login = @login)
1100 RAISERROR('Klient z takim loginem nie istnieje w bazie', 11, 1)
1101 ELSE BEGIN
1102 DECLARE @idK int
1103 SELECT @idK = id FROM Klient WHERE idUzytkownika = (SELECT id FROM Uzytkownik WHERE login = @login)
1104
1105 IF @dataZamowienia IS NULL BEGIN
1106 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1107 VALUES(@idK, @data, @status)
1108 PRINT('idZamowienia: ')
1109 PRINT(SCOPE_IDENTITY())
1110 END ELSE BEGIN
1111 INSERT INTO Zamowienie(idKlienta, dataZamowiena, status)
1112 VALUES(@idK, @dataZamowienia, @status)
1113 PRINT('idZamowienia: ')
1114 PRINT(SCOPE_IDENTITY())
1115 END
1116 END
1117GO
1118
1119CREATE PROCEDURE zamowienie_dodajTowar
1120 @idZamowienia int,
1121 @idTowaru int = NULL,
1122 @nazwaTowaru varchar(100) = NULL,
1123 @ilosc int
1124AS
1125 IF @idZamowienia IS NULL BEGIN
1126 RAISERROR('Podaj id zamowienia!', 11, 1)
1127 RETURN
1128 END
1129
1130 IF NOT EXISTS (SELECT * FROM Zamowienie WHERE id = @idZamowienia) BEGIN
1131 RAISERROR('Zamowienie z takim id nie istnieje', 11, 1)
1132 RETURN
1133 END
1134
1135 IF @idTowaru IS NULL
1136 IF @nazwaTowaru IS NULL BEGIN
1137 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1138 RETURN
1139 END
1140
1141 IF @idTowaru IS NOT NULL
1142 IF @nazwaTowaru IS NOT NULL BEGIN
1143 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1144 RETURN
1145 END
1146
1147 DECLARE @kwota money
1148 DECLARE @status varchar(50)
1149 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
1150
1151 IF (SELECT status FROM Zamowienie WHERE id = @idZamowienia) != @status BEGIN
1152 RAISERROR('Nie da sie edytowac tego zamowienia. Sprawdz status zamowienia.', 11, 1)
1153 RETURN
1154 END
1155
1156 IF @idTowaru IS NOT NULL
1157 IF NOT EXISTS (SELECT * FROM Towar WHERE id = @idTowaru)
1158 RAISERROR('Towar z takim id nie istnieje', 11, 1)
1159 ELSE IF EXISTS (SELECT * FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru)
1160 RAISERROR('W zamowieniu o danym id znajduje sie juz towar o danym id', 11, 1)
1161 ELSE IF (SELECT czyDostepny FROM Towar WHERE id = @idTowaru) = 'false'
1162 RAISERROR('Towar wycofany', 11, 1)
1163 ELSE IF (SELECT ilosc FROM Towar WHERE id = @idTowaru) < @ilosc
1164 RAISERROR('Nie ma takiej ilosci w magazynie!', 11, 1)
1165 ELSE BEGIN
1166 SELECT @kwota = @ilosc * cenaNetto FROM Towar WHERE id = @idTowaru
1167
1168 INSERT INTO Zamowienie_Towar(idZamowienia, idTowaru, ilosc, cena)
1169 VALUES (@idZamowienia, @idTowaru, @ilosc, @kwota)
1170
1171 UPDATE Zamowienie
1172 SET wartosc = wartosc + @kwota
1173 WHERE id = @idZamowienia
1174
1175 UPDATE Towar
1176 SET ilosc = ilosc - @ilosc
1177 WHERE id = @idTowaru
1178 END
1179
1180 IF @nazwaTowaru IS NOT NULL
1181 IF NOT EXISTS (SELECT * FROM Towar WHERE nazwa = @nazwaTowaru)
1182 RAISERROR('Towar z taka nazwa nie istnieje', 11, 1)
1183 ELSE IF EXISTS (SELECT * FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = (SELECT id FROM Towar WHERE nazwa = @nazwaTowaru))
1184 RAISERROR('W zamowieniu o danym id znajduje sie juz towar o danej nazwie', 11, 1)
1185 ELSE IF (SELECT czyDostepny FROM Towar WHERE nazwa = @nazwaTowaru) = 'false'
1186 RAISERROR('Towar wycofany', 11, 1)
1187 ELSE IF (SELECT ilosc FROM Towar WHERE nazwa = @nazwaTowaru) < @ilosc
1188 RAISERROR('Nie ma takiej ilosci w magazynie!', 11, 1)
1189 ELSE BEGIN
1190 SELECT @kwota = @ilosc * cenaNetto FROM Towar WHERE nazwa = @nazwaTowaru
1191
1192 DECLARE @idT int
1193 SELECT @idT = id FROM Towar WHERE nazwa = @nazwaTowaru
1194
1195 INSERT INTO Zamowienie_Towar(idZamowienia, idTowaru, ilosc, cena)
1196 VALUES (@idZamowienia, @idT, @ilosc, @kwota)
1197
1198 UPDATE Zamowienie
1199 SET wartosc = wartosc + @kwota
1200 WHERE id = @idZamowienia
1201
1202 UPDATE Towar
1203 SET ilosc = ilosc - @ilosc
1204 WHERE nazwa = @nazwaTowaru
1205 END
1206GO
1207
1208CREATE PROCEDURE zamowienie_usunTowar
1209 @idZamowienia int,
1210 @idTowaru int = NULL,
1211 @nazwaTowaru varchar(100) = NULL
1212AS
1213 IF @idZamowienia IS NULL BEGIN
1214 RAISERROR('Podaj id zamowienia!', 11, 1)
1215 RETURN
1216 END
1217
1218 IF NOT EXISTS (SELECT * FROM Zamowienie WHERE id = @idZamowienia) BEGIN
1219 RAISERROR('Zamowienie z takim id nie istnieje', 11, 1)
1220 RETURN
1221 END
1222
1223 IF @idTowaru IS NULL
1224 IF @nazwaTowaru IS NULL BEGIN
1225 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1226 RETURN
1227 END
1228
1229 IF @idTowaru IS NOT NULL
1230 IF @nazwaTowaru IS NOT NULL BEGIN
1231 RAISERROR('Podaj id towaru lub jego nazwe', 11, 1)
1232 RETURN
1233 END
1234
1235 DECLARE @kwota money
1236 DECLARE @ilosc int
1237
1238 DECLARE @status varchar(50)
1239 SELECT @status = id FROM Status WHERE nazwa = 'w trakcie'
1240
1241 IF (SELECT status FROM Zamowienie WHERE id = @idZamowienia) != @status
1242 RAISERROR('Nie da sie edytowac tego zamowienia. Sprawdz status zamowienia.', 11, 1)
1243
1244 IF @idTowaru IS NOT NULL
1245 IF NOT EXISTS (SELECT * FROM Towar WHERE id = @idTowaru)
1246 RAISERROR('Towar z takim id nie istnieje', 11, 1)
1247 ELSE IF NOT EXISTS (SELECT * FROM Zamowienie_Towar WHERE idTowaru = @idTowaru AND idZamowienia = @idZamowienia)
1248 RAISERROR('W tym zamowieniu nie ma takiego towaru', 11, 1)
1249 ELSE BEGIN
1250 SELECT @kwota = cena FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru
1251 SELECT @ilosc = ilosc FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru
1252
1253 DELETE FROM Zamowienie_Towar
1254 WHERE idZamowienia = @idZamowienia AND idTowaru = @idTowaru
1255
1256 UPDATE Zamowienie
1257 SET wartosc = wartosc - @kwota
1258 WHERE id = @idZamowienia
1259
1260 UPDATE Towar
1261 SET ilosc = ilosc + @ilosc
1262 WHERE id = @idTowaru
1263 END
1264
1265 IF @nazwaTowaru IS NOT NULL BEGIN
1266 DECLARE @idT int
1267 SELECT @idT = id FROM Towar WHERE nazwa = @nazwaTowaru
1268
1269 IF NOT EXISTS (SELECT * FROM Towar WHERE nazwa = @nazwaTowaru)
1270 RAISERROR('Towar z taka nazwa nie istnieje', 11, 1)
1271 ELSE IF NOT EXISTS (SELECT * FROM Zamowienie_Towar WHERE idTowaru = @idT AND idZamowienia = @idZamowienia)
1272 RAISERROR('W tym zamowieniu nie ma takiego towaru', 11, 1)
1273 ELSE BEGIN
1274 SELECT @kwota = cena FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idT
1275 SELECT @ilosc = ilosc FROM Zamowienie_Towar WHERE idZamowienia = @idZamowienia AND idTowaru = @idT
1276
1277 DELETE FROM Zamowienie_Towar
1278 WHERE idZamowienia = @idZamowienia AND idTowaru = @idT
1279
1280 UPDATE Zamowienie
1281 SET wartosc = wartosc - @kwota
1282 WHERE id = @idZamowienia
1283
1284 UPDATE Towar
1285 SET ilosc = ilosc + @ilosc
1286 WHERE id = @idT
1287 END
1288 END
1289GO
1290
1291CREATE PROCEDURE zamowienie_zakoncz
1292 @idZamowienia int
1293AS
1294 IF @idZamowienia IS NULL BEGIN
1295 RAISERROR('Podaj id zamowienia!', 11, 1)
1296 RETURN
1297 END
1298
1299 IF NOT EXISTS (SELECT * FROM Zamowienie WHERE id = @idZamowienia) BEGIN
1300 RAISERROR('Zamowienie z takim id nie istnieje', 11, 1)
1301 RETURN
1302 END
1303
1304 DECLARE @status varchar(50)
1305 SELECT @status = id FROM Status WHERE nazwa = 'zakończono'
1306
1307 IF EXISTS (SELECT * FROM Zamowienie WHERE id = @idZamowienia AND status = @status) BEGIN
1308 RAISERROR('Zamowienie jest juz zrealizowane', 11, 1)
1309 END
1310
1311 UPDATE Zamowienie
1312 SET status = @status
1313 WHERE id = @idZamowienia
1314GO
1315
1316----