Postgresql - widok z obliczeniami

0

Hej,
mam strukturę bazy danych:
employee_tab
employee_id | int
name | varchar
lastname | varchar

charge_tab
charge_id | int
period_from | date
period_to | date
employee_id | int -> foreign key

charge_line_tab
charge_line_id | int
charge_id \ int -> foreign key
name | varchar
amount | numeric

payment_tab (wplaty)
payment_id | int
employee_id | int -> foreign key
amount | double
date | date

Chcialbym widok na charge_line_tab który dodatkowo na podstawie wpłat z payment_tab określi czy dana pozyca rozliczenia jest już opłacona i jeśli tak to kiedy została opłacona i która płatonśc "zaspokoiła" ;) tą linię opłat.

Przykład:
mamy chare_line_tab który składa się z linii

  1. czynsz - 500 zl
  2. prąd - 100 zl
  3. telefon - 200 zł

i teraz tak, jeśli ktoś wpłaci:

  • 500 zł to automatyczie linia czynsz określona jest jako zapłacona (czynsz jest piewrwszy na liście)
  • 600 zł to pokrywa czynsz i prąd
  • 800 zł to pokrywa wszystko
  • 700 zł to pokrywa czynsz, prąd i 100 zł na telefon (telefon ma flage że jest częściowo opłacony)
  • 1000 zł - wszystko pokryte i 200 zł czeka na kolejne rozliczenie

W przypadku tej wpłaty 700 zł telefon będzie pokryty docelowo z 2 wpłat (bo 700 nie pokryło telefonu w całości).
W pierwszej kolejności są pokrywane są linie z najstarszych rozliczeń.

Dzięki za wskazówki, takie zaawansowane widoki przewyższają moje umiejętności a wydaje mi się, że można to swobodnie zrobić po stronie DB a nie aplikacji.

MP

0

Zaktualizowałem o DB fiddle: https://www.db-fiddle.com/f/3kFmThenys5VtTx4PcVKyn/0

@Marcin.Miga o coś takiego chodziło?

0

Brakuje tam przynajmniej tabeli, na której chcesz mieć widok + danych jakichkolwiek.
Ale generalnie, tak - o to chodziło...

0

@Marcin.Miga: Widok na tabeli charge_line_tab

Marcin.Miga napisał(a):

Brakuje tam przynajmniej tabeli, na której chcesz mieć widok + danych jakichkolwiek.
Ale generalnie, tak - o to chodziło...

1 użytkowników online, w tym zalogowanych: 0, gości: 1