Witam. Mam stworzoną tabelę invoice, w której chciałbym umieszczać nagłowek faktury i pozycje zakupów (Użytkownik określa ile ich stworzy). Na tym etapie posiadam problem ze zdefiniowaniem w jaki sposób to zrobić. A mianowicie chodzi o to, że nie wiem jak zrobić możliwość dodawania dowolnej ilośći pozycji. Model znajduje się w załączniku.
ja bym tabelę heading
wrzucił do invoice
Nie widzę sensu trzymania tego oddzielnie I tam też trzymasz całkowity koszt zamówienia itp. Następnie oddzielną tabelą było OrderItems
(takie Twoje products). I tam był by każdy element w zamówieniu a w nim np:
- nazwa
- cena
- ilość
- może jakieś atrybuty
Przy czym OrderItems
to jest coś innego niż tabela z produktami (dlatego też się tak nazywa), bo wyobraź sobie sytuację, że zmieniasz cenę produktu.
Podobnie zrobiłbym z tabelą Customer
a raczej BillingAddress
oraz ShippingAddress
a ID użytkownika, który dokonał zakupu wrzucić do tabeli orders
. Dzięki temu bardzo łatwo wyświetlisz wszystkie zamówienia danego użytkownika.
Brakuje Ci też np statusu zamówienia, ale to jak poprzednie rzeczy ogarniesz :)
Możesz tez zrobić osobną tabelę na zamówienie, osobną na nagłówek dokumentu oraz osobną na pozycje zamówień. Tak chyba będzie najsensowniej.
Poza tym popieram to, co pisał wyżej @no_solution_found
W jaki sposób mam dodawać kilka pozycji zamówień do głównej tabeli
Tworzysz najpierw pozycję w tabeli zamówienia.
Potem tworzysz nagłówek zamówienia w tabeli z nagłówkami zamówień.
Łączysz sobie nagłówek z zamówieniem.
Tworzysz tabelę ze szczegółami zamówień - czyli (tutaj wpisz to, co będzie Ci potrzebne): produkt, ilość, jednostka miary, cena, rabat, VAT, ID zamówienia którego ta pozycja dotyczy.
Każdy element zamówienia to jeden wpis w tabeli z pozycjami, powiązany z konkretnym zamówieniem przez kolumnę wskazującą na ID konkretnego zamówienia.
Przygotowując dokument (np. do wydruku) wydajesz kilka zapytań:
- pobierasz ID konkretnego zamówienia
- pobierasz nagłówek zamówienia powiązany z tym ID
- wyłapujesz z bazy elementów składowych wszystkie pozycje, które mają podane ID tego zamówienia. Może być taka jedna pozycja, ale może równie dobrze ich być 400 ;)
To oczywiście wszystko napisałem w dużym uproszczeniu, żeby mniej-więcej oddać, jak takie rzeczy się robi. Mam nadzieję, że teraz masz pojęcie jak to ugryźć.
W części systemów jest zasada taka:
Tabela nagłówka dokumentów
Tabela pozycji na dokumencie
Dodatkowo część systemów rozbija jeszcze same rodzaje dokumentów (Zamówienia osobno, transakcje osobno, ruchy magazynowe osobno).
Dane dotyczące pozycji na dokumencie trzymane są w całości albo w większości właśnie w tabeli pozycje na dokumencie. Z tego względu, żeby po zmianie na karcie towarowej nie wpływało to również na zmianę na wystawionym dokumencie.