Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ciekawe pytanie o schemat bazy danych na faktury
wiewiorek
post 15.05.2010, 09:03:29
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


Mam problem z zaprojektowaniem schematu bazy danych na faktury. Chodzi o to, ze jeżeli klient kupił np. 20 klawiatur i 5 myszek i została mu wystawiona faktura, a po jakimś czasie zwrócił 5 klawiatur to trzeba mu wystawić fakturę korygującą na której będzie napisane coś w stylu:
POZYCJE KORYGOWANE
klawiatura | 20 | ....

POZYCJE PO KOREKCIE
klawiatura | 15 | .....

Tutaj macie jakąś przykładową znalezioną w google fakturę korygującą żeby to jakoś obrazowo pokazać: http://gusoft.com.pl/faktorzysta/graph/fak...kladowa_kor.pdf

Oczywiście nie można w związku z tym zmienić ilości zamówionych klawiatur w tabeli POZYCJE_ZAMOWIENIA bo potem przy tworzeniu faktury nie byłoby skąd wziąć pierwotnej liczby zamówionych klawiatur, a na fakturze muszą być pierwotne i ostateczne wartości.

W związku z tym zaprojektowałem taki schemat bazy danych:


Tabela POSITIONS_ORDER_CORRECTION - czyli pozycje zamówienia, które uległy zmianie - tabela ta jest niemal kopią tabeli POSITIONS_ORDER - czy w związku z tym ten schemat jest ok ? Bo innego sposobu na to chyba nie ma ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
JohnnyB
post 15.05.2010, 10:16:01
Post #2





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


faktura i faktura korygujące to dwa osobne dokumenty, wprowadzając fakturę korygującą nie możesz nic zmieniać na dokumencie oryginalnym (oprócz pól 'pomocniczych', np. oznaczyć, że do danej faktury istnieje faktura korygująca).
Osobiście to bym rozszerzył tabele faktury i pozycji na zamówieniu tak, aby zawierały także dane potrzebne do faktury korygującej oraz dodał pole 'typ' aby odróżnić je od siebie - łatwiej będzie wtedy robić np. sumowanie obrotów.

Przy okazji, widzę, że masz połączenie z danymi klientów poprzez customers_id - co zamierzasz zrobisz jeśli po wystawieniu faktury dane klienta ulegną zmianie (np. zmieni się adres), a ktoś będzie chciał wydrukować 'starą' fakturę, np. w celu wystawienia duplikatu?
Pytam bo sam się nad tym ostatnio zastanawiałem
http://forum.php.pl/index.php?showtopic=14...mp;#entry744708
Go to the top of the page
+Quote Post
wiewiorek
post 15.05.2010, 11:28:06
Post #3





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


To znaczy dodałbyś kolumne TYP typu BOOL - gdzie 0 oznaczałoby pozycję przed korektą a 1 pozycję po korekcie do tabeli POZYCJE_ZAMOWIENIA ? Ale wtedy na fakturze korygującej wypisałbyś wszystkie pozycje danego zamówienia gdzie typ = 0 czyli wypisałbyś także pozycje, które nie uległy zmianie - w omawianym przypadku wypisałbyś jako pozycje przed korektą nie tylko klawiatury, ale także myszki - których ilość się nie zmieniła, a tymczasem niestety na fakturze korygującej trzeba podawać TYLKO pozycje, które uległy zmianie.

Ten post edytował wiewiorek 15.05.2010, 11:29:55
Go to the top of the page
+Quote Post
JohnnyB
post 15.05.2010, 11:53:34
Post #4





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


Cytat
TYP typu BOOL - gdzie 0 oznaczałoby pozycję przed korektą a 1 pozycję po korekcie do tabeli POZYCJE_ZAMOWIENIA


nie, do tabeli faktury żeby nie robić osobnej tabeli na faktury 'zwykłe' osobnej na korygujące. A do tabeli 'pozycje na zamówieniu' dodałbym pole 'ilość korygowana', które normalnie nie byłoby używane.

Cytat
Ale wtedy na fakturze korygującej wypisałbyś wszystkie pozycje danego zamówienia


faktura korygująca to osobny dokument, z oddzielnym id
Go to the top of the page
+Quote Post
wiewiorek
post 15.05.2010, 19:43:42
Post #5





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


Zrobiłem w ten sposób - dzięki takiej strukturze nie będę mieć problemu z danymi na fakturze gdy dane klienta ulegną zmianie, gdy ilość, cena czy rabat na fakturze korygującej uległy zmianie itp. bo w tabeli pozycje_faktury mam kolumne 'korekta' typu BOOL specjalnie dla pozycji zamówień faktur korygujących, w omawianym przypadku faktura korygująca miałaby w tabeli pozycje_faktury 2. rekordy - klawiatura z ilością = 20 i korekta = 0 oraz klawiatura z ilością 15 i korekta = 1 i koniec problemów aarambo.gif



Ten post edytował wiewiorek 15.05.2010, 19:50:40
Go to the top of the page
+Quote Post
JohnnyB
post 16.05.2010, 13:24:59
Post #6





Grupa: Zarejestrowani
Postów: 76
Pomógł: 19
Dołączył: 19.01.2010

Ostrzeżenie: (0%)
-----


moim zdaniem teraz wygląda całkiem nieźle,
można by dodać jeszcze jakieś szczegóły, np. id_faktury_korygowanej do tablicy faktur aby mieć możliwość śledzenia która korekta jest do jakiej faktury (kiedyś w jednej firmie widziałem fakturę, do której było 5 faktur korygujących czyli była korekta korekty itd), ale to zależy czy chcesz mieć taką funkcjonalność.
Jeszcze taka uwaga - jeśli będziesz potrzebował jakichś sumowań (np. ile sprzedano towarów w danych okresie), to warto od razu zastanowić się jaki wpływ na to będą miały faktury korygujące, np. takie wyrażenie

sum(ilosc) from pozycje_faktury;

zadziała prawidłowo bez faktur korygujących, ale z fakturami korygującymi już niekoniecznie. Ja to rozwiązuje w ten sposób, że w przypadku faktur korygujących do kolumny ilość wpisuję różnicę pomiędzy tym ile powinno być a ile było.
Przykład (tabela pozycje_faktury):

ilosc ile_bylo ile_powinno_byc
20 NULL NULL // zwykła faktura
-5 20 15 // faktura korygująca

teraz sumowanie działa prawidłowo - faktycznie sprzedano 15 szt.
Go to the top of the page
+Quote Post
wiewiorek
post 16.05.2010, 15:17:38
Post #7





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


ok dzieki smile.gif
Go to the top of the page
+Quote Post
spolprog
post 24.01.2012, 23:47:19
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.05.2007

Ostrzeżenie: (0%)
-----


a czy ta baza jest dobrze napisana ? bo jakoś dziwne selecty mi wyświetla
Go to the top of the page
+Quote Post
przemosk
post 27.01.2012, 10:24:28
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.06.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A może jeszcze warto gdzieś wrzucić tabele odnośnie sprzedawcy ? chyba że będziesz wpisywał za każdym razem ręcznie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 09:22