first commit
This commit is contained in:
234
ajax/payroll.period.php
Normal file
234
ajax/payroll.period.php
Normal file
@ -0,0 +1,234 @@
|
||||
<?php
|
||||
if (!defined('GLPI_ROOT')) {
|
||||
define('GLPI_ROOT', dirname(__DIR__));
|
||||
}
|
||||
|
||||
include_once GLPI_ROOT . '/inc/based_config.php';
|
||||
// Init Timer to compute time of display
|
||||
$TIMER_DEBUG = new Timer();
|
||||
$TIMER_DEBUG->start();
|
||||
|
||||
// TODO try to remove them if possible
|
||||
include_once(GLPI_ROOT . "/inc/db.function.php");
|
||||
// Standard includes
|
||||
include_once(GLPI_ROOT . "/inc/config.php");
|
||||
// Disabled errors => pour le variable res (Ajax)
|
||||
ini_set('display_errors', 0);
|
||||
|
||||
Session::checkLoginUser();
|
||||
global $DB;
|
||||
|
||||
function add(array $request) {
|
||||
global $DB;
|
||||
|
||||
// Validate input data
|
||||
if (isset($request["month"], $request["year"], $request["start_date"], $request["end_date"]) &&
|
||||
!empty($request["month"]) && !empty($request["year"]) && !empty($request["start_date"]) && !empty($request["end_date"])) {
|
||||
|
||||
// Validate the year
|
||||
if (!is_numeric($request["year"]) || strlen($request["year"]) !== 4) {
|
||||
echo json_encode(["status" => "error", "message" => "Format de l'année invalide ! Veuillez entrer une année valide (par exemple, 2025)."]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Validate the month (numeric or string month name)
|
||||
if (is_numeric($request["month"])) {
|
||||
$month = (int) $request["month"];
|
||||
if ($month < 1 || $month > 12) {
|
||||
echo json_encode(["status" => "error", "message" => "Mois invalide ! Veuillez entrer un numéro de mois valide (1-12)."]);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Validate that start_date is before end_date
|
||||
$start_date = strtotime($request["start_date"]);
|
||||
$end_date = strtotime($request["end_date"]);
|
||||
|
||||
if ($start_date === false || $end_date === false) {
|
||||
echo json_encode(["status" => "error", "message" => "Format de date invalide ! Veuillez fournir des dates de début et de fin valides."]);
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($start_date > $end_date) {
|
||||
echo json_encode(["status" => "error", "message" => "La date de début doit être antérieure à la date de fin."]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check if there's already an existing record for the same year and month
|
||||
$query = $DB->prepare("SELECT COUNT(*) FROM payroll_period WHERE year = ? AND month = ? AND is_deleted = FALSE");
|
||||
$query->bind_param("ii", $request["year"], $request["month"]);
|
||||
$query->execute();
|
||||
$query->bind_result($count);
|
||||
$query->fetch();
|
||||
$query->close();
|
||||
|
||||
if ($count > 0) {
|
||||
echo json_encode(["status" => "error", "message" => "Un période de paie pour ce mois et cette année existe déjà."]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Prepare the SQL statement
|
||||
$stmt = $DB->prepare("
|
||||
INSERT INTO payroll_period (month, year, start_date, end_date, created_on, created_by)
|
||||
VALUES (?, ?, ?, ?, NOW(), ?)
|
||||
");
|
||||
|
||||
// Bind the parameters
|
||||
$stmt->bind_param(
|
||||
"iissi",
|
||||
$request["month"],
|
||||
$request["year"],
|
||||
$request["start_date"],
|
||||
$request["end_date"],
|
||||
$_SESSION["glpiID"]
|
||||
);
|
||||
|
||||
// Execute the statement
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status" => "success", "message" => "Période de paie ajoutée avec succès."]);
|
||||
} else {
|
||||
echo json_encode(["status" => "error", "message" => "Échec de l'ajout de la période de paie."]);
|
||||
}
|
||||
|
||||
// Close the statement
|
||||
$stmt->close();
|
||||
exit;
|
||||
|
||||
} else {
|
||||
// Handle validation errors
|
||||
echo json_encode(["status" => "error", "message" => "Tous les champs (Mois, Année, Date de début, Date de fin) sont requis !"]);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
function update(array $request) {
|
||||
global $DB;
|
||||
|
||||
// Validate input data
|
||||
if (isset($request["id"], $request["month"], $request["year"], $request["start_date"], $request["end_date"]) &&
|
||||
!empty($request["id"]) && !empty($request["month"]) && !empty($request["year"]) && !empty($request["start_date"]) && !empty($request["end_date"])) {
|
||||
|
||||
// Validate the year
|
||||
if (!is_numeric($request["year"]) || strlen($request["year"]) !== 4) {
|
||||
echo json_encode(["status" => "error", "message" => "Format de l'année invalide ! Veuillez entrer une année valide."]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Validate the month
|
||||
$month = (int) $request["month"];
|
||||
if ($month < 1 || $month > 12) {
|
||||
echo json_encode(["status" => "error", "message" => "Mois invalide ! Veuillez entrer un numéro de mois valide."]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Validate date range
|
||||
$start_date = strtotime($request["start_date"]);
|
||||
$end_date = strtotime($request["end_date"]);
|
||||
|
||||
if ($start_date === false || $end_date === false) {
|
||||
echo json_encode(["status" => "error", "message" => "Format de date invalide ! Veuillez fournir des dates valides."]);
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($start_date > $end_date) {
|
||||
echo json_encode(["status" => "error", "message" => "La date de début doit être antérieure à la date de fin."]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check if the record exists
|
||||
$query = $DB->prepare("SELECT id FROM payroll_period WHERE id = ? AND is_deleted = FALSE");
|
||||
$query->bind_param("i", $request["id"]);
|
||||
$query->execute();
|
||||
$query->store_result();
|
||||
|
||||
if ($query->num_rows === 0) {
|
||||
echo json_encode(["status" => "error", "message" => "Période de paie non trouvée."]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Prepare the update SQL statement
|
||||
$stmt = $DB->prepare("
|
||||
UPDATE payroll_period
|
||||
SET month = ?, year = ?, start_date = ?, end_date = ?, updated_on = NOW(), updated_by = ?
|
||||
WHERE id = ?
|
||||
");
|
||||
|
||||
// Bind the parameters
|
||||
$stmt->bind_param(
|
||||
"iissii",
|
||||
$request["month"],
|
||||
$request["year"],
|
||||
$request["start_date"],
|
||||
$request["end_date"],
|
||||
$_SESSION["glpiID"],
|
||||
$request["id"]
|
||||
);
|
||||
|
||||
// Execute the statement
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status" => "success", "message" => "Période de paie mise à jour avec succès."]);
|
||||
} else {
|
||||
echo json_encode(["status" => "error", "message" => "Échec de la mise à jour de la période de paie."]);
|
||||
}
|
||||
|
||||
// Close the statement
|
||||
$stmt->close();
|
||||
exit;
|
||||
} else {
|
||||
// Handle validation errors
|
||||
echo json_encode(["status" => "error", "message" => "Tous les champs (ID, Mois, Année, Date de début, Date de fin) sont requis."]);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
function delete(array $request) {
|
||||
global $DB;
|
||||
|
||||
if (!isset($_POST['id']) || empty($_POST['id'])) {
|
||||
echo json_encode(['status' => 'error', 'message' => 'ID invalide.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$id = intval($_POST['id']);
|
||||
$deleted_by = $_SESSION["glpiID"];
|
||||
|
||||
$stmt = $DB->prepare("
|
||||
UPDATE payroll_period
|
||||
SET is_deleted = TRUE,
|
||||
deleted_on = NOW(),
|
||||
deleted_by = ?
|
||||
WHERE id = ?
|
||||
");
|
||||
|
||||
$stmt->bind_param('ii', $deleted_by, $id);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(["status" => "success", "message" => "Période de paie supprimée avec succès."]);
|
||||
} else {
|
||||
echo json_encode(["status" => "error", "message" => "Échec de la suppression de la période de paie."]);
|
||||
}
|
||||
|
||||
// Close the statement
|
||||
$stmt->close();
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
if (isset($_POST)) {
|
||||
switch ($_GET['action']) {
|
||||
case "add":
|
||||
return add($_POST);
|
||||
break;
|
||||
case "delete":
|
||||
return delete($_POST);
|
||||
break;
|
||||
case "update":
|
||||
return update($_POST);
|
||||
break;
|
||||
default:
|
||||
echo json_encode(["status" => "error", "message" => "Action non reconnue."]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user