Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]System wyliczenia wypłaty pracownika - kilka pytań odnośnie tworzenia bazy.
Forum PHP.pl > Forum > Przedszkole
casperii
Panowie tworzę system wyliczenia wypłaty dla pracownika. Na chwilę obecną zrobiłem tak , że każdy dzień dopisuje do pracownika.
W bazie zapisuje następujące informacje:
- placa (pracownik, data, godz_od, godz_do, stawka_godz),

Z wyświetleniem tego też nie ma problemu. Wyświetlam sobie cały miesiąc , podliczam ilość godzin x stawka i wychodzi mi kwota do wypłaty.

Teraz chciałbym dołożyć system zaliczek, premii oraz pomniejszanie kwoty zarobku o kwote w towarze o zaliczki a także doliczanie premii.

Czy w tym przypadku najlepiej było by tworzyć kolejne 3 tabele z zaliczkami i porównywać je po pracowniku , tak samo zrobić z tabelką zaliczki_w_towarze i też porównywać to z pracownikiem oraz z tabelką premie?

Ponadto system musi wyświetlić kwoty: pobrane zaliczki (w danym miesiącu), premie (w danym miesiącu) , rozliczenia w towarze (w danym miesiącu)


Dobra Panowie zrobiłem tak:
DB
- placa (pracownik, data, godz_od, godz_do, stawka_godz),
- zaliczki(pracownik, data, kwota);
- premia(pracownik, data, kwota);
- towar(pracownik, data, kwota);

Obecnie PHP mam tak:
  1. SELECT * FROM `placa` WHERE `login` = '".$row['login']."' ORDER BY `date` ASC LIMIT ".$ile_dni_ma_miesiac.""
  2.  
  3. $SumaGodzin += $IleGodzin;
  4. $stawkaRazem = $SumaGodzin * $stawkaNagodzine;
  5.  
  6. print 'Suma godzin: '.$SumaGodzin.'<br>';
  7. print 'Stawka na godzine: '.$stawkaNagodzine.'<br>';
  8. print 'Łącznie zarobiono: '.$stawkaRazem.' ';


Powyższe mam w pętli while i ładnie mi sumuje.
Jak teraz to ładnie i wydaje obrać w zapytanie tak by wyświetlić dodatkowo:
- sumę zaliczek
- sumę premii
- sumę wziętego towaru

Chodzi mi o optymalne napisanie zapytania mysql.

Johnas
Ja bym dodał to do tej samej tabeli jako zaliczki przez co sam byś dobry dostęp do informacji którego dnia kto wziął ile zaliczki... w prosty sposób do zapytania mógłbyś dodać SUM(zaliczki) przez co miałbyś przez bazę danych podliczone zaliczki a na dodatek by się mieściło to w jednym zapytaniu przez co byłoby to optymalne smile.gif

  1. SELECT *, sum(zaliczki) as zalicz FROM `placa` WHERE `login` = '".$row['login']."' ORDER BY `date` ASC LIMIT ".$ile_dni_ma_miesiac.""
  2.  
  3. $SumaGodzin += $IleGodzin;
  4. $stawkaRazem = $SumaGodzin * $stawkaNagodzine;
  5. $zaliczki = $row["zalicz"];
  6.  
  7. print 'Suma godzin: '.$SumaGodzin.'<br>';
  8. print 'Stawka na godzine: '.$stawkaNagodzine.'<br>';
  9. print 'Zaliczki: '.$zaliczki.' <br>';
  10. print 'Łącznie zarobiono: '.$stawkaRazem.' ';
  11. print 'Pozostało wypłaty: '.$stawkaRazem-$zaliczki.' ';
casperii
i tak samo zrobić dla kolejnych tabel ? tzn przenieść tabele do 1 tabeli ?
Poza tym wg. twojego rozwiązania pozostaje kwestia logistyczna. Bo jeżeli dopiszę rekord do tabeli placa z danym pracownikiem o określonej dacie, to jak później dopisywać do tabeli placa zaliczki? Rozumiem, że musiałbym pobierać rekord z daną datą i edytować z nadpisaniem zaliczki ? Gdyż nie zawsze będzie możliwość podania zaliczki w chwili dopisywania godzin pracy w danym dniu.
Johnas
  1. SELECT `pracownik`.`id`, `pracownik`.`imie`, `pracownik`.`nazwisko`, SUM(`praca`.`godzin_pracy`) AS `godziny`, SUM(`praca`.`zaliczki`) AS `zaliczki` FROM `pracownik` LEFT JOIN `praca` ON `pracownik`.`id`=`praca`.`uid` WHERE `pracownik`.`id` = 1 AND `praca`.`dzien`>=1 AND `praca`.`miesiac` = 1 AND `praca`.`rok` = 2016


zapraszam na:
https://sophie.net4um.net/phpmyadmin/

Zaraz Ci podam hasło do bazy
Login: work_job
Hasło: php.pl

Zobacz sobie jak działa zapytanie, to na szybkiego było robione to musisz dodać pensje do pobierania smile.gif
casperii
To co Ty masz w 2 tabelach ja mam w 1 tzn. nazwa_pracownika, stawka.
zaliczki, premie jednak chciałbym rozbić na kolejne tabele i w zapytaniu to jakoś połączyć
placa, zaliczki, premie.
Johnas
To Ty kombinuj dalej, ja podałem Tobie tylko prosty przykład smile.gif Ty masz to w jednej tabeli a ja mam oddzielone informacje o pracowniku od jego dnia pracy, a pobieram wszystko jednym zapytaniem, mogę pobrać od każdego dnia do każdego dnia informacje o godzinach i zaliczkach smile.gif chciałeś prosty i optymalny sposób to Ci go podałem.. Może mam za Ciebie kod php jeszcze napisać?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.