Example #1
0
echo $employeename;
?>
 -
<?php 
echo monthname($_GET["month"]) . " " . $_GET["year"];
?>
</h2>

<?php 
$res = db_query("\n\tSELECT MIN(since) AS since\n\tFROM uvazky\n\tWHERE employee='" . $_GET["employee"] . "'\n;");
$row = pg_fetch_array($res);
$since = $row["since"];
$date = getdate(strtotime($since));
$y = $date["year"];
$m = $date["mon"];
$prev_tots["plusminus"] = datetime_to_secs(db_get("employees", "plusminus", $_GET["employee"]));
$prev_tots["days_dovolena"] = 0;
if ($y == $_GET["year"]) {
    $prev_tots["days_dovolena"] += db_get("employees", "dovolene", $_GET["employee"]);
}
while ($y * 12 + $m < $_GET["year"] * 12 + $_GET["month"]) {
    $mt = month_totals($y, $m, $_GET["employee"], false);
    if ($mt["error"]) {
        echo "<p>";
        echo "Chyba v mesici " . $y . "/" . $m . "!";
        echo "</p>";
        //break;
    }
    $prev_tots["plusminus"] += $mt["plusminus"] - $mt["overtime"];
    if ($y == $_GET["year"]) {
        $prev_tots["days_dovolena"] += $mt["days_dovolena"];
Example #2
0
<tr>
	<th>datum</th>
	<th>druh dne</th>
	<th>přesčas</th>
	<th>poznamka</th>
</tr>

<?php 
$total = 0;
for ($day = 1; checkdate($_GET["month"], $day, $_GET["year"]); $day++) {
    $date = date_to_string($_GET["year"], $_GET["month"], $day);
    $time = db_get_condition("overtimes", "time", "date='" . $date . "' AND employee='" . $_GET["employee"] . "'");
    if (!$time) {
        continue;
    }
    $time = datetime_to_secs($time);
    if ($time == 0) {
        continue;
    }
    $daytype = weekdayname($_GET["year"], $_GET["month"], $day);
    if (db_get_condition("vacancies", "date", "date='" . $date . "'")) {
        $daytype .= " + svatek";
    }
    $note = db_get_condition("comments", "text", "date='" . $date . "' AND employee='" . $_GET["employee"] . "'");
    $total += $time;
    echo "<tr>";
    echo "<td>" . $day . "." . $_GET["month"] . ". " . $_GET["year"] . "</td>";
    echo "<td>" . $daytype . "</td>";
    echo "<td>" . secs_to_time($time) . "</td>";
    echo "<td>" . $note . "</td>";
    echo "</tr>";
Example #3
0
function day_totals($year, $month, $day, $employee)
{
    $at_work = false;
    $at_lunch = false;
    $at_cesta_praha = false;
    $at_cesta_mimopraha = false;
    $at_doctor = false;
    $secs_old = 0;
    $total["odpracovano"] = 0;
    $total["stravenky"] = 0;
    $total["diety_kc"] = 0;
    $total["daylog"] = "";
    $total["error"] = false;
    $str_date = $year . "-" . $month . "-" . $day;
    $res = db_query("\n\t\tSELECT time,type\n\t\tFROM actions\n\t\tWHERE\n\t\t\temployee='" . $employee . "'\n\t\t\tAND date='" . $str_date . "'\n\t\tORDER BY time ASC\n\t;");
    // This is nasty
    for (;;) {
        $row = pg_fetch_array($res);
        if (!$row) {
            if ($at_work || $at_lunch || $at_cesta_praha || $at_cesta_mimopraha || $at_doctor) {
                $total["daylog"] .= "neočekávaný konec dne";
                $total["error"] = true;
            }
            break;
        }
        // Get rid of this somehow
        if (!$at_work && !$at_lunch && !$at_cesta_praha && !$at_cesta_mimopraha && !$at_doctor && strlen($total["daylog"])) {
            $total["daylog"] .= " - nic - ";
        }
        $secs = datetime_to_secs($row["time"]);
        $total["daylog"] .= secs_to_time($secs);
        if ($row["type"] == "prichod") {
            if ($at_work) {
                $total["daylog"] .= "dvojí příchod";
                $total["error"] = true;
                break;
            }
            if ($at_cesta_mimopraha) {
                $total["odpracovano"] += $secs - $secs_old;
                if ($secs - $secs_old > 18 * 60 * 60) {
                    if ($year >= 2016) {
                        $total["diety_kc"] = 166;
                    } elseif ($year >= 2015) {
                        $total["diety_kc"] = 163;
                    } elseif ($year >= 2014) {
                        $total["diety_kc"] = 160;
                    } elseif ($year >= 2013) {
                        $total["diety_kc"] = 157;
                    } elseif ($year >= 2012) {
                        $total["diety_kc"] = 166;
                    } else {
                        $total["diety_kc"] = 150;
                    }
                } else {
                    if ($secs - $secs_old > 12 * 60 * 60) {
                        if ($year >= 2016) {
                            $total["diety_kc"] = 106;
                        } elseif ($year >= 2015) {
                            $total["diety_kc"] = 104;
                        } elseif ($year >= 2014) {
                            $total["diety_kc"] = 102;
                        } elseif ($year >= 2013) {
                            $total["diety_kc"] = 100;
                        } elseif ($year >= 2012) {
                            $total["diety_kc"] = 106;
                        } else {
                            $total["diety_kc"] = 96;
                        }
                    } else {
                        if ($secs - $secs_old > 5 * 60 * 60) {
                            if ($year >= 2016) {
                                $total["diety_kc"] = 70;
                            } elseif ($year >= 2015) {
                                $total["diety_kc"] = 69;
                            } elseif ($year >= 2014) {
                                $total["diety_kc"] = 67;
                            } elseif ($year >= 2013) {
                                $total["diety_kc"] = 66;
                            } elseif ($year >= 2012) {
                                $total["diety_kc"] = 70;
                            } else {
                                $total["diety_kc"] = 63;
                            }
                        }
                    }
                }
                $at_cesta_mimopraha = false;
            }
            if ($at_cesta_praha) {
                $total["odpracovano"] += $secs - $secs_old;
                $at_cesta_praha = false;
            }
            if ($at_lunch) {
                $at_lunch = false;
            }
            if ($at_doctor) {
                $total["odpracovano"] += $secs - $secs_old;
                $at_doctor = false;
            }
            $at_work = true;
        } else {
            if ($row["type"] == "odchod") {
                if (!$at_work) {
                    $total["daylog"] .= "odchod bez příchodu";
                    $total["error"] = true;
                    break;
                }
                $total["odpracovano"] += $secs - $secs_old;
                $at_work = false;
            } else {
                if ($row["type"] == "odchod-obed") {
                    if (!$at_work) {
                        $total["daylog"] .= "odchod na oběd bez příchodu";
                        $total["error"] = true;
                        break;
                    }
                    $total["odpracovano"] += $secs - $secs_old;
                    $at_work = false;
                    $at_lunch = true;
                } else {
                    if ($row["type"] == "odchod-sluzebne-mimopraha") {
                        if (!$at_work) {
                            $total["daylog"] .= "odchod na sl. cestu bez příchodu";
                            $total["error"] = true;
                            break;
                        }
                        $total["odpracovano"] += $secs - $secs_old;
                        $at_work = false;
                        $at_cesta_mimopraha = true;
                    } else {
                        if ($row["type"] == "odchod-sluzebne-praha") {
                            if (!$at_work) {
                                $total["daylog"] .= "odchod na sl. cestu bez příchodu";
                                $total["error"] = true;
                                break;
                            }
                            $total["odpracovano"] += $secs - $secs_old;
                            $at_work = false;
                            $at_cesta_praha = true;
                        } else {
                            if ($row["type"] == "odchod-lekar") {
                                if (!$at_work) {
                                    $total["daylog"] .= "odchod k lékaři bez příchodu";
                                    $total["error"] = true;
                                    break;
                                }
                                $total["odpracovano"] += $secs - $secs_old;
                                $at_work = false;
                                $at_doctor = true;
                            } else {
                                $total["daylog"] .= "neznamý typ průchodu";
                                $total["error"] = true;
                                break;
                            }
                        }
                    }
                }
            }
        }
        $secs_old = $secs;
        if ($at_work) {
            $total["daylog"] .= " - práce - ";
        }
        if ($at_lunch) {
            $total["daylog"] .= " - oběd - ";
        }
        if ($at_cesta_praha) {
            $total["daylog"] .= " - cesta Praha - ";
        }
        if ($at_cesta_mimopraha) {
            $total["daylog"] .= " - cesta mimo Prahu - ";
        }
        if ($at_doctor) {
            $total["daylog"] .= " - lékař - ";
        }
    }
    pg_free_result($res);
    $res = db_query("\n\t\tSELECT id,time\n\t\tFROM overtimes\n\t\tWHERE\n\t\t\tdate='" . $str_date . "'\n\t\t\tAND employee='" . $employee . "'\n\t;");
    $row = pg_fetch_array($res);
    $total["overtime_id"] = $total["overtime_time"] = 0;
    if ($row) {
        $total["overtime_id"] = $row["id"];
        $total["overtime_time"] = datetime_to_secs($row["time"]);
    }
    pg_free_result($res);
    $res = db_query("\n\t\tSELECT id,type\n\t\tFROM days\n\t\tWHERE\n\t\t\tdate='" . $str_date . "'\n\t\t\tAND employee='" . $employee . "'\n\t;");
    $row = pg_fetch_array($res);
    $total["status_id"] = 0;
    $total["status_type"] = "";
    if ($row) {
        $total["status_id"] = $row["id"];
        $total["status_type"] = $row["type"];
    }
    pg_free_result($res);
    $res = db_query("\n\t\tSELECT id,amount\n\t\tFROM diety\n\t\tWHERE\n\t\t\tdate='" . $str_date . "'\n\t\t\tAND employee='" . $employee . "'\n\t;");
    $row = pg_fetch_array($res);
    $total["diety_id"] = 0;
    if ($row) {
        $total["diety_kc"] = $row["amount"];
        $total["diety_id"] = $row["id"];
    }
    pg_free_result($res);
    $res = db_query("\n\t\tSELECT id,text\n\t\tFROM comments\n\t\tWHERE\n\t\t\temployee='" . $employee . "'\n\t\t\tAND date='" . $str_date . "'\n\t;");
    $row = pg_fetch_array($res);
    $total["comment_id"] = 0;
    $total["comment_text"] = "";
    if ($row) {
        $total["comment_id"] = $row["id"];
        $total["comment_text"] = $row["text"];
    }
    pg_free_result($res);
    $res = db_query("\n\t\tSELECT uvazek\n\t\tFROM uvazky\n\t\tWHERE\n\t\t\temployee='" . $employee . "'\n\t\t\tAND since<='" . $str_date . "'\n\t\t\tAND (till>='" . $str_date . "' OR till IS NULL)\n\t;");
    $row = pg_fetch_array($res);
    $uvazek = $row["uvazek"];
    $ratio = $uvazek / 8.0;
    $total["plusminus"] = $total["odpracovano"];
    if (is_workday($year, $month, $day) && $total["status_type"] != "nemoc" && $total["status_type"] != "dovolena" && $total["status_type"] != "nahrada" && $total["status_type"] != "neplacene_volno") {
        $total["plusminus"] -= $uvazek * 60 * 60;
        if (!$total["diety_id"] && $total["diety_kc"] == 0) {
            $total["stravenky"] += $ratio;
        }
    }
    // We don't want negative plusminus for days in the future
    if (mktime() < mktime(0, 0, 0, $month, $day, $year)) {
        $total["plusminus"] = 0;
    }
    return $total;
}