Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]System wyliczenia wypłaty pracownika - kilka pytań odnośnie tworzenia bazy.
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


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.



Ten post edytował casperii 17.01.2016, 19:40:57
Go to the top of the page
+Quote Post
Johnas
post
Post #2





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


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.' ';


Ten post edytował GodOfPeople 17.01.2016, 20:54:19


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
casperii
post
Post #3





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


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.

Ten post edytował casperii 17.01.2016, 21:02:22
Go to the top of the page
+Quote Post
Johnas
post
Post #4





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


  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

Ten post edytował GodOfPeople 17.01.2016, 22:02:03


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
casperii
post
Post #5





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


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.
Go to the top of the page
+Quote Post
Johnas
post
Post #6





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

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


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ć?


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
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 Aktualny czas: 19.08.2025 - 13:39