Hej,
mam pewien problem do rozwiazania jeśli chodzi o włąściwą strukturę danych i proszę o pomoc aby to miało ręce i nogi.
Ogólnie rzecz biorąc chodzi o system który służy do prowadzenia różnego rodzaju szkoleń dla pracowników różnych firm.
Szkolenia są płatne, czasami za szkolenia płaci pracodawca, czasami płaci pracownik.
Jeśli płaci pracownik to ogólnie nie ma problemu bo mam to rozkminione jak poniżej. Zastanawiam się tylko jak nie zrobić jakiegoś potworka z tabelami aby łatwo było obsłużyć kejs gdzie za zajecia płaci pracodawca.
Strukturę mam taką jak poniżej:
course_tab
------------------
course_id: serial (PK)
name: varchar
paysource: varchar - albo STUDENT albo EMPLOYER
course_schedule_tab
-------------------
course_schedule_id: serial (PK)
course_id: int
date: date
student_tab
------------------
student_id: serial
lastname: varchar
firstname: varchar
course_participant_tab
----------------------
course_participant_id: serial
course_id: int
student_id: int
no i teraz załóżmy, że każda lekcja kosztuje 50 zł czyli miałbym coś w stylu:
course_payment_tab
-----------------------
course_payment_id: serial
student_id: int
amount: bigdecimal
due_date: date
income_tab (wplaty)
------------------
income_id: serial
student_id: int
amount: bigdecimal
date: date
Szukam teraz jakiegoś optymalnego sposobu który mi powie że na dzień xxx za zajęcia trzeba zapłacić x zł (dane z course_payment_tab generowane są z góry podczas zapisu)
Jeśli chodzi o to, że płaci pracownik / student to po prostu zliczam sobie ile wpłacił i ile ma do zapłaty na dany dzień i porównuje.
Nie wiem jak do tematu podejść jeśli za studentów / pracowników płaci pracodawca bo:
- może być albo sytuacja że opłaci za każdego osobno - wtedy pewnie miałbym sume wszystkich uczestnikow szkolenia i musiałbym zmienić tez tabelę income_tab aby supportowała wpłaty od pracodawcy a nie od studenta
- ryczałtowa kwota - xxx zł niezależnie od liczby uczestników - w takiej sytuacji course_payment_tab nie ma sensu z rozbiciem na każdego studenta osobno.
Dzięki za "świeże" spojrzenie na problem.